我有一个 Unix 文件系统,我想在其中模拟一个 OS X 之类的 Home 文件夹,其中我有一个“公共”子文件夹,它对所有人都是可写的,但不能删除任何文件。
我在系统上安装了 ACL 并修改了 /etc/fstab 以使用 acl 权限安装它。
当我现在查看 OS X 主文件夹的权限时ls -le
0 drwxr-xr-x+ 5 cb0 staff 170 17 Nov 23:46 Public
0: group:everyone deny delete
我的第一个问题是 Linux 上是否有相等的命令来获取此列表,因为-e
Linux 系统上不存在该选项。
下一个问题是 option group:everyone deny delete
,我认为这告诉 OS X 上的 ACL 只有该组的用户才能删除其中的文件。
如何在 Linux 机器上实现这一点?我无法向其中添加其他信息setfacl
,或者是否有任何其他命令可以实现这一点?
确实感谢
对应的linux命令是:
现在,我不太了解 OSx,但是当我阅读这些 ACL 时,我看到了一些不同的东西。对我来说,“组:每个人都拒绝删除”将是一条规定“每个人”组的成员都被拒绝删除文件的规则。
然而,在 linux 上,没有“拒绝删除”之类的东西。删除的能力是由写的能力授予的。因此,如果您想拒绝删除,您还必须拒绝写入,这可能不是您想要的。话又说回来,你必须弄清楚这是有道理的......如果我可以写入文件,从技术上讲,没有什么能阻止我将文件内容归零。
但是,有了如此广泛的规则,看起来就像一个陷阱,你根本就不需要 ACL。只需将“其他”权限设置为 r-- ( 0600 ),既不是所有者也不是所属组的用户将无法写入或执行文件。在您的示例中,这意味着既不是用户 cb0 也不是组人员的任何人。
话虽如此,如果您对有关 ACL 及其各自命令的更多信息感兴趣,我建议您花点时间仔细阅读 POSIX 访问控制文档:http ://www.suse.de/~agruen/acl /linux-acls/在线/
您可能需要在目录上的“其他”上设置粘性位。
例如 chmod o+t
这允许文件的所有者删除它,但不能删除其他人(当然特权用户除外)。
据我所知,在 unix 文件系统上,它不可能阻止文件所有者删除它(在创建文件后不更改包含的目录权限)。
delerious010:仅供参考 OSX 已将附加 ACL 移植到其文件系统许可模型中,而大多数 unix 文件系统均不可用。