root 用户删除的文件时显示:Operation not permitted
最近在折腾服务器时遇到了一件怪事,如下图:
在使用 root 用户的情况下竟然还有无法删除的文件!
这着实有点超出我的认知,root 用户不是拥有最高的权限吗?连他都无法删除的文件到底是何方神圣呢?
问题原因
所幸,在经过一番查找资料,还是很快的发现了罪魁祸首:这个文件被使用 chattr
命令锁定了(第一次知道这个命令)。
不同于 chmod
命令改变文件的读写、执行权限,chattr
控制的是一些更底层的属性,依靠内核来直接实现。
可以使用 lsattr
命令来查看 chattr
给文件设置的属性:
1 | lsattr 70-persistent-net.rules |
如下图所示,我们之所以无法删除上面的那个文件就是因为它包含了一个 i
属性,从而不允许被修改和删除。
解决方案
既然是由于这个 i
属性导致的文件无法删除,那我们将这一属性去除就可以了:
1 | chattr -i 70-persistent-net.rules |
可以看到,在移除了该文件的 i
属性后就可以正常删除它了。
顺便记录了一下 chattr
和 lsattr
命令的详细用法,有需要的话可以看看:Linux 的 chattr 与 lsattr 命令详解 。