你应该听说过,Linux 里 root 用户就是上帝。
想删什么删什么,想改什么改什么,没有任何权限能拦住它。
但你错了。
跟你讲个事。
我前阵子折腾一台服务器,想删一个日志文件。sudo rm -rf 一把梭。
结果提示:Operation not permitted。
我以为是权限问题,又 check 了一遍,root 没错。
又试了一次,还是删不掉。
后来查了半天才明白——Linux 里有个叫 chattr 的命令,能给文件加一把锁。加了锁之后,别说普通用户,连 root 都动不了它。
用法很简单:
chattr +i 文件名加了这个 immutable(不可变)属性之后,这个文件就变成了"铁打的":
唯一的解除方法:
chattr -i 文件名没了这个 -i,连 root 都拿它没办法。
试想一下,如果黑客拿了你服务器的 root 权限,想植入后门。他写了一个恶意脚本进去,然后 chattr +i。
你作为管理员,明知道这是个坏东西,但就是删不掉。root 密码在你手里,权限全开,但就是删不掉。
细思极恐。
你可能要问,搞个连 root 都管不了的属性,不是自找麻烦吗?
恰恰相反。 这个设计是 Linux 最聪明的安全机制之一。
你想,如果黑客能拿到 root 权限,常规的文件他都能随便改。但如果关键系统文件被设成了 immutable:
/etc/passwd — 用户账户文件/etc/shadow — 密码文件 /bin/ 下面的关键二进制 就算黑客拿到 root,他也改不了这些文件,改不了用户密码,改不了系统配置。
需要改的时候怎么办?管理员先 chattr -i,改完再加回去。
在安全领域,这个机制叫做"纵深防御"的一环——就算攻击者突破了第一道防线(root 权限),还有第二道防线等着他。
chattr 不只有 +i。
最常用的是 +i 和 +a,生产环境下基本是标配。
想知道自己的系统里有没有这种文件,可以执行:
lsattr /etc/passwd /etc/shadowLinux 的 root 从来不是真正的"万能"。
权限之上还有权限,控制之上还有控制。操作系统在设计的时候,就已经假设"最坏情况"——假设管理员会犯错,假设系统会被入侵。
所以它留下了后手。这个后手就是 chattr。
一个大多数 Linux 用户一辈子都用不到的命令。但真正懂它的人,把它当作最后一道防线。
你可以在自己的 Linux 上试试看:
touch test.txt
sudo chattr +i test.txt
sudo rm -f test.txt——你会发现,root 原来也有办不到的事。
这大概就是 Linux 的魅力吧。
你以为自己懂了,但其实总有一些角落,连上帝都管不着。
你有没有遇见过其他 Linux 里反直觉的东西?来评论区聊聊。