是否可以使用 Linux 权限或 ACL 撤销删除权限?

是否可以使用 Linux 权限或 ACL 撤销删除权限?

如果我想创建一个由用户拥有的目录don,并且组所有者是一个名为 的组bob,是否有任何方法可以:

  • 允许组 ( bob) 具有创建和写入文件的权限
  • 只允许目录的所有者 ( don) 删除文件,除了所有者之外任何人都不能删除它们

我尝试过使用标准的linux权限chmod等。但这似乎是一个非常棘手的任务,因为授予写入权限允许组读取和写入,但它也授予他们删除我不想要的内容。

我怎样才能通过标准 Linux 权限甚至 ACL 来实现这一点?

答案1

为此,您可以结合使用标准 Linux 权限和访问控制列表 (ACL)。

首先,您可以创建一个具有以下所有权和权限的目录:

mkdir testdir
chown don:bob testdir
chmod 2770 testdir

这会将目录设置为用户 don 和组 bob 所拥有,并授予组 bob 读取、写入和执行权限,但限制组所有者的删除。粘性位 2 确保只有文件所有者或超级用户才能删除目录中的文件。

接下来,您可以向目录添加 ACL,以将删除限制仅限于文件所有者:

setfacl -m u:don:rwx testdir
setfacl -m g::--- testdir
setfacl -m o::--- testdir
setfacl -m d:u:don:rwx testdir
setfacl -m d:g::--- testdir
setfacl -m d:o::--- testdir

这为用户提供了对该目录的完全访问权限,并删除了该组和其他用户的任何权限。 d 标志为目录中创建的新文件设置默认 ACL。

通过这些设置,组 bob 可以在目录中创建和写入文件,但无法删除它们。只有所有者不可以删除目录中的文件。

相关内容