有没有办法防止从用户拥有的目录中删除某些文件?

bak*_*ytn 46 permissions directory rm

假设用户有Directory1并且它包含File1 File2 CantBeDeletedFile 如何使用户永远不会被允许删除CantBeDeletedFile

如果我更改Directory1的所有权并删除写入权限,用户将无法删除任何文件。他们也无法添加新文件等。

我只是希望能够设置一些永远不会被删除的文件。

更具体的描述。

我正在创建用户配置文件。我正在他们的Desktop 中创建应用程序启动器文件。所以我想设置一些启动器文件 (.desktop) 并让它们让用户只能启动它们而他们不能重命名或删除,只需启动。

当前,如果用户拥有包含任何文件的目录。他可以删除。

如果没有适用于所有 *nix 的通用方法,那就是 Linux 和 ext4 FS。

Kei*_*ith 69

使用i属性使文件不可变。

chattr +i file.desktop
Run Code Online (Sandbox Code Playgroud)

man chattr有关更多信息,请参阅。

  • 我添加了此注释,因为我无法从提到的手册页中推断出它:`chattr` 仅适用于 ext2/ext3/ext4 文件系统。 (8认同)

Sté*_*nez 42

(我不喜欢闯入用户的家,我认为他们应该被允许对他们的家做任何他们想做的事情......但无论如何......)

这应该适用于 linux(至少)。我假设user已经是该组的成员user。一种解决方案是更改目录的所有权Directory1并在目录上设置粘滞位:

chown root:user Directory1
chmod 1775 Directory1
Run Code Online (Sandbox Code Playgroud)

然后使用:

chown root Directory1/CantBeDeletedFile
Run Code Online (Sandbox Code Playgroud)

现在,user由于粘滞位¹ ,将无法删除此文件。将user仍然能够在添加/删除自己的文件Directory1。但请注意,他们将无法删除,Directory1因为它永远不会被清空。


1. 当目录上启用粘滞位时,用户(所有者除外)只能删除目录中自己的文件。这用于/tmp权限为1777= 的目录rwxrwxrwt