`chattr +i FILE` 和 `chmod -w FILE` 有什么区别?

24
如果文件的写权限被禁用,则无人能更改该文件。
使用“chattr +i FILE”也可以保护文件不被更改。
请告诉我它们的区别,以及何时应该使用“chattr +i”而不是“chown -w”。
3个回答

23

chattr +i 命令可以在文件上设置 immutable 文件系统属性。它不同于访问控制规则,访问控制规则适用于文件属性,而 immutable 是一个文件系统扩展文件属性,可能并非所有文件系统都支持此属性。只有具备超级用户权限的用户才能设置或取消此扩展属性。即使是文件所有者或拥有写入权限的用户,也无法对该文件进行写入操作。没有写入文件权限的用户可以创建常规文件的硬链接,但如果文件标记为不可变,则用户无法创建硬链接,因为文件系统无法更改对此不可变文件的引用计数。

chattr +i 对于防止 root 的意外删除很有用。同时,不可变文件也无法从一个目录重命名或移到另一个目录中。


1
我发现使用“chattr -i”的好处。我们可以保护文件,而不必关心所有者、权限以及其他任何事情。只需执行“chattr -i”。 - Effective Bugs
1
那么,您有强烈的理由对一个文件执行“chattr -i”操作(root root chmod==444)吗? - Effective Bugs
@EffectiveBugs 如果你想要保护一个文件,即使是root用户也无法删除,那么使用chattr +i命令是非常有用的。 - 273K

6

以下内容来自chattr的手册页面:

带有'i'属性的文件不能被修改:无法删除或重命名,无法创建到该文件的链接,也无法向文件中写入数据。只有超级用户或拥有CAP_LINUX_IMMUTABLE能力的进程才能设置或清除此属性。

可以看出,chattrchmod更强大。 chmod -w仅移除对文件内容的'写入'权限。而且您需要使用chattr +i来保护/锁定文件,然后使用chattr -i来解锁。


1

chmod -w file 可在所有 UNIX 环境下使用,但是使用扩展文件属性的 chattr -i FILE 可能在您的系统上不可用,这取决于文件系统/发行版的类型!

除此之外,请查看此链接,了解使用扩展文件属性的优缺点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接