类似 Linux 的特殊 OS X ACL 权限

类似 Linux 的特殊 OS X ACL 权限

我有一个 Unix 文件系统,我想在其中模拟类似 OS X 的主文件夹,其中我有一个“公共”子文件夹,该子文件夹可供所有人写入,但不能删除任何文件。

我在系统上安装了 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 上是否有一个相等的命令来获取此列表,因为-eLinux 系统上不存在该选项。

下一个问题是选项group:everyone deny delete,我认为这会告诉 OS X 上的 ACL,只有该组的用户才能删除其中的文件。

如何在 Linux 机器上实现此目的?我无法添加其他信息setfacl,或者是否有其他命令可以实现此目的?

确实感谢

答案1

相应的linux命令是:

  • ls :权限后带有 + 的任何行都有 ACL ( rwxrwxrwx+ )。
  • setfacl :添加/修改文件的 ACL
  • getfacl :读取文件的 ACL

现在,我对 OSx 不太了解,但当我阅读这些 ACL 时,我看到了不同的东西。对我来说,“group: everyone 拒绝删除”应该是一条规则,规定“everyone”组的成员被拒绝删除文件。

然而,在 Linux 上,没有“拒绝删除”这样的东西。删除的能力是由写入的能力授予的。因此,如果你想要拒绝删除,你也必须拒绝写入,这可能不是你想要的。不过,你必须弄清楚这是有道理的……如果我可以写入文件,从技术上讲,没有什么可以阻止我将文件的内容清零。

但是,有了这样一条看似包罗万象的宽泛规则,您实际上根本不需要 ACL。只需将“其他”权限设置为 r-- ( 0600 ),既不是所有者也不是所有者组成员的用户将无法写入或执行该文件。在您的示例中,这意味着既不是用户 cb0 也不是组 staff 成员的任何人。

话虽如此,如果您对 ACL 及其各自命令的详细信息感兴趣,我建议您花点时间仔细阅读 POSIX 访问控制文档:http://www.suse.de/~agruen/acl/linux-acls/online/

答案2

您可能需要在目录中设置“其他”的粘性位。

例如 chmod o+t

这允许文件所有者删除它,但其他任何人则不能删除它(当然特权用户除外)。

据我所知,在unix文件系统上,不可能阻止文件所有者删除它(在文件创建后不更改包含目录的权限)。

delerious010:仅供参考,OSX 在其文件系统权限模型中加入了额外的 ACL,而大多数 unix 文件系统并不具备这种 ACL。

相关内容