抱歉,如果这个问题已经被问过,我只是找不到答案。如果我做:
touch file.txt
chomd 444 file.txt
原则上,每个人(除了ROOT)都只能读取该文件。但是如果我这样做:
rm file.txt
尽管显示了:我仍然可以删除该文件:
rm: remove write-protected regular empty file 'file.txt'? y
即使它受到保护。有没有办法真正保护这个文件?我看到有人可以chattr +i file.txt
但只有你能做到这一点才有效sudo
;我不是管理员(与 99% 的用户一样)。
干杯。
答案1
在 Unix 文件系统中,您并不真正删除文件,而是“取消链接”它:文件数据位于“inode”中,并且目录具有对该 inode 的引用(这就是为什么您可以拥有“硬链接”:这些是多个引用到多个目录中的相同 inode)。当最后一个引用消失时,inode 被破坏并恢复空间。
rm
只是删除父目录中的引用,并意味着对该父目录而不是文件的写入权限。因此,为了保护文件引用,您需要删除目录的写入权限。