如果我想创建一个由用户拥有的目录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 可以在目录中创建和写入文件,但无法删除它们。只有所有者不可以删除目录中的文件。