getfacl 输出中的 mask 和 effective 是什么意思?

getfacl 输出中的 mask 和 effective 是什么意思?

getfacl 输出中的 mask 和 effective 是什么意思?

getfacl /var/www

getfacl: Removing leading '/' from absolute path names

file: var/www
owner: Name
group: Name
user::-wx

user:Test:rwx           
effective:r--
group::rw-          
effective:r--

mask::r--

other::rwx

答案1

ACL 是权限的扩展集。

POSIX 权限是每个文件或目录都有一个所有者、组和其他具有读、写和可执行位的权限。

ACL 添加额外的访问权限或“掩码”,可用于定义额外的组/用户和扩展权限。

因此,您看到的是 POSIX 权限 + ACL“掩码”,将它们放在一起时,您就获得了有效的访问权限。

例如,如果您具有rwxPOSIX 权限并且 ACL 授予您r--,则您的有效权限是只读的。

如果 posix 给予您r--并且 ACL 给予您rwx,您的有效权限仍然是 RO。

因此,您会看到 POSIX 权限、ACL 掩码以及结果或有效权限。然后,您可以根据需要修改 POSIX 或 ACL 访问权限,以获得所需的有效访问权限 ;)

表:权限屏蔽

条目类型 文本形式 权限

命名用户 user:joe:rx rx

掩码 mask::rw- rw-

有效权限 r-

http://www.vanemery.com/Linux/ACL/POSIX_ACL_on_Linux.html

特别是我上面试图引用的“表格:权限屏蔽”和第一部分“ACL 的工作原理”

答案2

我花了一段时间才弄清楚这一点,所以也许这会有所帮助。

考虑一下 的输出ls -l。如果你对 POSIX 足够熟悉,你就会习惯解释这样的内容:

drwxr-x--x 2 root plebs ...

  • 第一个字母是类型:d表示它是一个目录。
  • 接下来的三个是所有者的权限:rwx表示所有者可以读取、写入和执行(搜索)。
  • “中间三个”是所属组的权限:r-x表示该组只能读取和执行(搜索)。
  • 最后三个是“其他”或“世界”权限:--x表示其他人只能执行(搜索)。
  • 有一个链接数与本次讨论无关。
  • 所有者 ( root) 已命名。
  • 拥有组(plebs)已命名。

当 ACL 生效时,“中间三个”会发生变化:它们不再是拥有组的权限,而是授予 ACL 中提到的非所有者的最大权限

例如,假设我对上面的目录执行以下操作:

setfacl --modify user:hero:7 thedir

这将授予访问权限rwxhero现在ls -l输出将如下所示:

drwxrwx--x+ 2 root plebs ...

表示+现在有一个 ACL。

我没有更改该plebs组的权限,并将getfacl thedir确认这一点,显示如下内容:

user::rwx
user:hero:rwx
group::r-x
mask::rwx
other::--x

所属组仍然只具有r-x权限,但是“中间三个”显示的其实是面具。

我可以用普通的方式chmod来改变它。

chmod 651 thedir

看起来它起作用了ls -l

drwxr-x--x+ 2 root plebs ...

getfacl thedir

user::rwx
user:hero:rwx    #effective:r-x
group::r-x
mask::r-x
other::--x

啊,看,因为我更改了掩码,这是授予 ACL 中提到的非所有者的最大权限,因此hero无法再授予rwx任何权限。即使他们rwx在 ACL 中有条目,由于掩码已被限制,他们也只能获得r-x(仅r-x有效)。

掩码只会限制权限,而不会添加权限。即使掩码rwx以前是这样的,拥有者组仍然只能r-x根据 ACL 条目获得权限。

这种行为很方便,因为“中间三个”为您提供了 ACL 中授予的权限的上限,并且由于 ACL 通常用作临时组,因此当它们生效时,它们通常比拥有组更受关注。

相关内容