我想让文件或文件夹无法删除,即使超级用户也无法删除该文件。Chattr
仅当文件位于 Linux 文件系统中时,命令才会使文件无法删除 ( ext2,ext4
)。但我想让ntfs
文件系统中存在的文件无法删除。
答案1
root
不存在“ ”不能删除的东西。就像告诉上帝他不能做或撤销某件事。root
你可以把你的机器倒过来,让它变成 1+1=3,如果它愿意的话,你无法阻止它。所以,你无法阻止 root 删除他喜欢的任何文件,就是不能。也不是 NTFS,也不是 ext2/3/4,也不是 HSF+,也不是 FAT16/32/64,也不是任何其他由操作系统统治的文件系统。
又长又无聊的答案
除非没有其他人可以root
访问你的系统,否则是不可能的但是还有一些方法可以让用户更进一步删除文件,其中之一是chattr
:
chattr 改变 Linux 文件系统上的文件属性。
[...]
具有该属性的文件
i
无法修改:无法删除或重命名,无法创建指向该文件的链接,也无法向该文件写入任何数据。只有超级用户或拥有该CAP_LINUX_IMMUTABLE
权限的进程才能设置或清除该属性。
所以,如果没有人有root
访问权或能力使用另一个操作系统进行启动,那么该文件是不可删除的,否则任何用户都可以(并且将会)删除您的文件。如果文件系统被格式化和/或固件技术删除磁盘数据,情况也是一样。
怎么做?
创建文件:
$ touch deletemeifyoucan
保护它:
$ sudo chattr +i deletemeifyoucan
[sudo] password for braiam:
尝试删除它
$ rm deletemeifyoucan
rm: remove write-protected regular empty file ‘deletemeifyoucan’? y
rm: cannot remove ‘deletemeifyoucan’: Operation not permitted
现在用 root 身份尝试:
$ sudo rm deletemeifyoucan
rm: cannot remove ‘deletemeifyoucan’: Operation not permitted
取消保护:
$ sudo chattr -i deletemeifyoucan
离开了:
$ rm deletemeifyoucan
$ #POOF!