我明白chmod
和chown
以及权限位是如何工作的,但是 Linux 内部还有另一个权限系统,ACL
带有setfacl
和getfacl
,所以这让我想知道。
这两种权限控制系统有什么区别?他们互相干扰吗?
答案1
没有谁比谁好,只是方法和思维方式不同而已。
您可以在同一路径上使用这两种权限系统,不会出现任何问题。
当修改所有者、所属组和其他权限时,它们会相互干扰:当从 setfacl 为这些权限设置当前值时,它实际上会设置 posix 权限,而不是 ACL 权限。
Posix 权限仅允许所有者、拥有组和“所有人”权限,而 ACL 允许多个“拥有”用户和组。 ACL 还允许为文件夹中的新文件设置默认权限。
您可以使用 apparmor 或 selinux 在两者之上添加更多权限管理,以实现更严格的控制。
答案2
由 chmod 设置的经典 Unix 权限(读/写/执行、用户/组/其他)比 ACL 存在的时间要长得多。如果 ACL 从一开始就存在,那么就不会有我们所知的 chmod。但是,由于 chmod 已经存在了很长时间,许多应用程序都调用它,许多存档格式都支持经典权限等。您可以使用 ACL 来表达 chmod 权限;它们充当 ACL 的某种起点。
看文件权限中用户和组所有者的优先级和用户属于多个组时 ACLS 的优先级更详细地了解访问控制在存在 ACL 的情况下如何工作。
该chmod
命令还控制一些并非真正权限的标志,但通常称为权限:setuid、setgid和粘性位。这些并不是真正的权限,因为它们不会影响文件上的哪些访问被授权,而是影响文件上的某些操作在被授权后如何工作。 ACL 没有这样的事情。