chmod 与 ACL 之间的区别

mFe*_*ein 24 linux acl permissions chmod

我的理解chmodchown如何权限位的工作,但还有另一种许可系统内部的Linux,ACLsetfaclgetfacl,所以这让我不知道。

这两个权限控制系统有什么区别?他们互相干扰吗?

Zul*_*rib 11

一个并不比另一个更好,它们只是不同的方法和思维方式。

您可以在同一路径上使用两个权限系统而不会出现问题。

它们在修改所有者、拥有组和其他权限时会相互干扰:当从 setfacl 设置这些当前值时,它实际上会设置 posix 权限,而不是 ACL 权限。

Posix 权限仅允许拥有者、拥有组和“所有人”权限,而 ACL 允许多个“拥有”用户和组。ACL 还允许为文件夹中的新文件设置默认权限。

您可以使用 apparmor 或 selinux 在两者之上添加更多权限管理以进行更严格的控制。

  • @mFeinstein 视情况而定。在 Linux 下,`ls -l` 在权限字符的末尾放置一个 `+` 来表示存在 ACL。如果存在 ACL,则基本权限并不能说明全部情况:ACL 覆盖 POSIX 权限。 (8认同)
  • 我是否正确假设当我运行 `ls -l` 时我只会看到 posix 权限和进一步限制文件的 ACL 不会显示?或者无论如何都会尊重posix权限? (2认同)

Gil*_*il' 6

chmod 设置的经典 Unix 权限(读/写/执行、用户/组/其他)比 ACL 存在的时间更长。如果 ACL 从一开始就存在,那么就不会有我们所知道的 chmod。但是由于chmod已经存在很长时间了,很多应用都调用它,很多存档格式都支持经典的权限等等。你可以用ACL来表达chmod的权限;它们充当 ACL 的起点。

看到的用户和组所有者优先于文件的权限访问控制列表的优先级,当用户属于多个组的访问控制是如何工作的ACL中的存在的更详细的处理。

chmod命令还控制一些不是真正权限的标志,但通常仍称为权限:setuid、setgid粘性位。这些并不是真正的权限,因为它们不会影响对文件授权的访问权限,但会影响文件的某些操作在获得授权后如何工作。ACL 没有这样的东西。

  • 因此,为了真正了解文件的权限,我必须检查 ACL 和 `ls -l`? (2认同)
  • @mFeinstein 查看`ls`显示的权限末尾是否有多余的`+`,或者运行`getfacl`命令显示包括ACL在内的所有权限。 (2认同)
  • 只是`getfacl myFile`? (2认同)