系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。比如曾经在生产环境中碰到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容的情况,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件权限也保障了 Linux 系统的安全性。既然叫隐藏权限,那么使用常规的 ls 命令肯定不能看到它的真面目。隐藏权限的专用查看命令是 lsattr,专用设置命令是 chattr。
chattr 命令
chattr 命令用于设置文件的隐藏权限,英文全称为 change attributes,语法格式为“ chattr [参数] 文件名称 ”。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加 “ +参数 ” ,如果想要把某个隐藏功能移出文件,则需要追加 “ -参数 ” 。chattr 命令中可供选择的隐藏权限参数非常丰富,具体如表所示。
参数 | 作用 |
---|---|
i | 无法对文件进行修改;若对目录设置,该参数则仅能修改其中的子文件内容而不能新建或删除文件 |
a | 仅允许补充(追加)内容,无法覆盖和删除内容(Append Only) |
S | 文件内容在变更后立即同步到硬盘 |
s | 彻底从硬盘中删除,不可恢复(用零块填充源文件所在的硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(Atime) |
b | 不再修改文件或目录的存储时间 |
D | 检查压缩文件中错误 |
d | 使用dump命令备份时忽略文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-merging) |
x | 可以直接访问压缩文件中的内容 |
[root@servera ~]# echo "123" > chatt
[root@servera ~]# chattr +a chatt //设置“不允许删除与覆盖”(+a 参数)权限
[root@servera ~]# rm -rf chatt //下面返回不能删除此文件
[root@servera ~]# echo "123" > chatt //下面返回不允许追加内容
[root@servera ~]# echo "123" >> chatt //可以追加内容
[root@servera ~]# chattr -a chatt //取消文件的隐藏权限
lsattr 命令
lsattr 命令用于查看文件的隐藏权限,英文全称为“list attributes”,语法格式为“ lsattr [参数] 文件名称 ”。一般会将 -a 参数设置到日志文件(/var/log/messages)上,这样可在不影响系统正常写入日志的前提下,防止被擦除。如果希望彻底地保护某个文件,不允许任何人修改和删除它的话,不妨加上 -i 参数试试,效果特别好。
- -a 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
- -d 显示,目录名称,而非其内容。
- -l 此参数目前没有任何作用。
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v 显示文件或目录版本。
- -V 显示版本信息。
[root@servera ~]# echo "HEllo" > test
[root@servera ~]# chattr +a test //添加 不允许删除与覆盖 权限
[root@servera ~]# lsattr test //查看此文件权限
-----a------------ test
原创文章,作者:張旭,如若转载,请注明出处:http://www.zxbke.cn/41.html/
过来踩踩。。。