root 用户删除的文件时显示:Operation not permitted

最近在折腾服务器时遇到了一件怪事,如下图:

在使用 root 用户的情况下竟然还有无法删除的文件!

这着实有点超出我的认知,root 用户不是拥有最高的权限吗?连他都无法删除的文件到底是何方神圣呢?

问题原因

所幸,在经过一番查找资料,还是很快的发现了罪魁祸首:这个文件被使用 chattr 命令锁定了(第一次知道这个命令)。

不同于 chmod 命令改变文件的读写、执行权限,chattr 控制的是一些更底层的属性,依靠内核来直接实现。

可以使用 lsattr 命令来查看 chattr 给文件设置的属性:

1
lsattr 70-persistent-net.rules

如下图所示,我们之所以无法删除上面的那个文件就是因为它包含了一个 i 属性,从而不允许被修改和删除。

解决方案

既然是由于这个 i 属性导致的文件无法删除,那我们将这一属性去除就可以了:

1
2
chattr -i 70-persistent-net.rules
rm 70-persistent-net.rules

可以看到,在移除了该文件的 i 属性后就可以正常删除它了。

顺便记录了一下 chattrlsattr 命令的详细用法,有需要的话可以看看:Linux 的 chattr 与 lsattr 命令详解