是否可以创建一个对每个人都具有完全权限但不可删除的文件?

不使用sudo,最好?

尝试:

chattr +i filename 

尽管如此,即使是root用户也会使文件无法删除 – 请谨慎使用。

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

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

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

并且……只需重新启动并进入救援模式将允许该人能够删除该文件。 如果存在永远无法删除文件的方法,则存在安全风险。

这有点粗糙,但这很接近 – 如果删除目录上的写访问权限,则无法删除其中的文件。 如果你拥有它,它不需要sudo

 =^_^= izkata@izein:~$ mkdir test =^_^= izkata@izein:~$ touch test/delme =^_^= izkata@izein:~$ chmod aw 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所说,它肯定有很多方法。

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

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

实现它的最佳方法是将该文件链接到root拥有的目录,并且任何人都无法写入。 你可以让它归你所有,这意味着你和root都可以删除它。

这仍然允许其他用户将该文件链接到其他目录并在此后取消链接,但是他们仍然无法删除该文件,因为他们可以将文件与您自己的目录取消链接。

请注意,要使其完全正常工作,必须控制每个路径组件对文件的写入权限。 因为例如如果文件是/a/b/the-file并且你有/a/b不能被任何人写,但是每个人都有/a写访问权,那么他们可以将/a/b重命名为其他东西并重新创建他们自己的/a/b/a/b/the-file那里创建自己的/a/b/the-file