GeekHub

奇技淫巧 | 还有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属性后,文件/文件夹便可以正常修改或删除

如需增加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修改文件属性。

参考:

https://en.wikipedia.org/wiki/Chattr

https://www.runoob.com/linux/linux-comm-chattr.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注