奇技淫巧 | 还有root删不掉的文件?
众所周知,root用户是最高权限的用户,那么为什么有的文件root也删不掉呢?
可以看到上图中的文件夹,权限是777,不属于任何用户和用户组,但是无论使用普通用户还是sudo还是root都无法对它进行删除操作。
这里需要介绍一下chattr和lsattr命令:
chattr是比chmod更加强大的权限管理工具,而lsattr是查看文件/文件夹属性(attribute)的命令,还是刚才这个案例:
可以看到这个文件夹的attribute为—-i———e—- ,这里的i代表无法修改(Immutable),e代表使用了extend format(ext2、ext3、ext4)的特性。
通过chattr -i 命令可以将i属性(Immutable)去除:
如需增加i属性,则可以通过chattr +i 的方式增加:
chattr的具体语法为:
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
#参数
# -R 递归处理,将指定目录下的所有文件及子目录一并处理。
# -v<版本编号> 设置文件或目录版本。
# -V 显示指令执行过程。
# +<属性> 开启文件或目录的该项属性。
# -<属性> 关闭文件或目录的该项属性。
# =<属性> 指定文件或目录的该项属性。
除i属性之外,chattr还还支持下面各种属性:
a:让文件或目录仅供附加用途。(只能追加文件,多用于日志系统)
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
另外,需要注意的是,chattr一般只支持extend format文件系统(ext2/ext3/ext4),像fat32、exfat、ntfs、tmpfs这些常见的文件系统都不支持通过chattr修改文件属性。
参考: