ACL 和普通旧权限

ACL 和普通旧权限

我读了很多文章,但仍然不明白 ACL,所以我有以下问题。

  1. ACL使用旧权限(例如 0777)和更改文件所有者、组等有什么好处? (对我来说只有一个,因为我猜多个用户可以对一个文件拥有不同的权限)
  2. ACL是如何实现的?它使用 inode 数据吗?
  3. 扩展属性(xattr)之间有什么联系吗?
  4. 是否VFS支持扩展属性?或者这是FS特定的功能?

请帮助理解这一点,也许有一些关于此的好文章?
谢谢

答案1

ACL 允许向多个人和多个组授予权限。例如,您可能有一个 SA 团队和一个 DBA 团队。您想要授予 SA 对文件的“读+写”访问权限,但 DBA 仅具有读访问权限。由于一个文件只能有一个组所有者,因此很难做到这一点。但使用 ACL 就很容易了。

ACL 实现是特定于文件系统的。通常它们与索引节点相关联。例如

$ echo test > file
$ setfacl -m g:dbus:rw file
$ getfacl file 
# file: file
# owner: sweh
# group: sweh
user::rw-
group::r--
group:dbus:rw-
mask::rw-
other::r--

这里我们可以看到该文件设置了两个组权限,权限不同。

让我们在文件之间建立硬链接(不同的文件名,相同的索引节点)并查看结果:

$ ln file file2
$ getfacl file2
# file: file2
# owner: sweh
# group: sweh
user::rw-
group::r--
group:dbus:rw-
mask::rw-
other::r--

因此,我们在文件之间建立硬链接,并且 ACL 在新文件名上可用,表明它们与 inode 相关联,而不是与文件名相关联。

ACL 与扩展属性不同,但它们可以存储在 xattr 名称空间中。 xattr 属性依赖于文件系统。

相关内容