![配置共享文件系统目录的最佳方法是什么? (超出标准 UNIX 权限)](https://linux22.com/image/41928/%E9%85%8D%E7%BD%AE%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9B%AE%E5%BD%95%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%20%EF%BC%88%E8%B6%85%E5%87%BA%E6%A0%87%E5%87%86%20UNIX%20%E6%9D%83%E9%99%90%EF%BC%89.png)
我的系统上有多个用户。我想要共享目录,例如音乐、视频。图片等。问题是我希望用户能够将任何新文件写入任何目录,但不能删除或修改他们不拥有的任何文件。使用标准的 UNIX 权限,如果您可以将文件添加到目录中,那么您也可以删除其他文件。我还想确保用户组始终可以读取这些目录中的所有文件。
我可以使用 POSIX ACL 执行此操作吗?或者我是否需要一些更高级的东西,例如 SELinux(或其他安全框架)。
我不想工作的例子。
su - root
mkdir /home/music
chmod 775 /home/music
chgrp users /home/music
su - user1 /home/music
touch /home/music/testfile
ll /home/music/testfile
su - user2
rm /home/music/testfile
ll /home/music
答案1
如果我理解正确的话,您希望音乐/视频等目录具有与 /tmp 相同的语义。
为此,您可以将粘性位放在目录上。引用 chmod 手册页:
限制删除标志或粘性位 限制删除标志或粘性位是单个位,其解释取决于文件类型。对于目录,它可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在 /tmp 等全局可写目录中找到。