是否可以制作一个对所有人都具有完全权限但无法删除的文件?


Answers:


3

尝试:

chattr +i filename

但是,这样做会使文件甚至无法被root用户删除-请谨慎使用。


5
这样做时touch test && chattr +i test会引发错误;chattr: Operation not permitted while setting flags on test。您需要sudo这个。下一步:仍然可以删除文件:sudo chattr -i test && rm test有效。
Rinzwind

23

不,这是不可能的。普通用户无法删除文件:确定。

  1. 您将需要sudo防止用户删除文件。您的管理员将始终能够删除文件。

  2. sudo chattr +i test可以防止删除,但确实需要删除sudo。一个简单的方法sudo chattr -i test可以删除文件。除了admin之外,没有其他用户可以使用chattr

并且...只需重新启动并进入救援模式,该人便可以删除该文件。如果有一种永远无法删除文件的方法,将会带来安全风险。


8

有点粗略,但这很接近-如果您删除目录上的写访问权限,则无法删除其中的文件。它并不需要sudo您是否拥有它:

=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme 
=^_^= izkata@izein:~$ cat test/delme 
Hello
=^_^= izkata@izein:~$ rm test/delme 
rm: cannot remove `test/delme': Permission denied

因此,您可以根据需要设置文件本身的权限。

另外,正如@Rinzwind所说,围绕它肯定有很多方法。


看起来正是OP想要的。(尽管不确定为什么要这么做,但我不确定。)用户可以读取,更改和运行文件,但无法取消链接(删除)。
伊莱亚·卡根

8

要删除文件,您需要对该文件链接到的所有目录具有写权限。要将其从一个目录取消链接,您需要对该目录具有写权限。

因此,只要您授予文件写入权限(甚至所有权),但不授予文件所链接的目录的写权限,则无法删除该文件。

实现此目标的最佳方法是将文件链接到root拥有的目录,该目录不能被任何人写入。您可以改为拥有它,这意味着您和root都可以删除它。

这样仍然可以使其他用户将该文件链接到其他目录,然后再从该目录取消链接,但是他们仍然无法删除该文件,因为他们可以从您自己的目录取消链接。

请注意,要使此功能充分发挥作用,必须控制每个路径组件对文件的写入权限。因为例如,如果文件是,/a/b/the-file并且您/a/b不是任何人都可以写的/a,但是每个人都可以对进行写访问,那么他们可以将其重命名/a/b为其他文件,然后重新创建自己的文件/a/b并在其中创建自己的文件/a/b/the-file

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.