什么是掩码,在getfacl输出中是有效的?
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
发布于 2013-02-18 20:20:04
ACL是一组扩展的权限。
POSIX权限是每个文件或目录都有一个所有者、组和其他具有读、写和可执行位的文件或目录。
ACL添加附加访问或“掩码”,并可用于定义其他组/用户和扩展权限。
因此,您看到的是POSIX权限+ ACL“掩码”,当您将它们放在一起时,您将获得有效的访问。
例如,如果您具有rwx
POSIX权限,并且ACL为您提供了r--
,则将只读取您的有效权限。
如果posix为您提供了r--
,而ACL为您提供了rwx
,那么您的有效权限仍然是RO。
因此,您将看到POSIX权限、ACL掩码以及结果或有效权限。然后,您可以根据需要修改POSIX或ACL访问,以使您获得所需的有效访问;)
表:掩蔽权限输入类型文本表单权限命名用户:joe: r-x r- x掩码掩码::rw- rw-有效权限r-
看见
http://www.vanemery.com/Linux/ACL/POSIX_ACL_在……上面_Linux.html
特别是“表:权限的掩蔽”,我试图引用上面的内容,以及第一节“ACL如何工作”。
发布于 2023-04-22 15:00:21
我花了一段时间才弄明白这件事,所以这可能会有帮助。
考虑一下来自ls -l
的输出。如果您对POSIX相当熟悉,您将习惯于这样解释:
drwxr-x--x 2 root plebs ...
d
表示它是一个目录。rwx
意味着所有者可以读取、写入和执行(搜索)。r-x
意味着组只能读取和执行(搜索)。--x
意味着其他人只能执行(搜索)。root
)被命名。plebs
)被命名。当ACL生效时,“中间三层”更改:它们不是拥有组的权限,而是授予ACL中提到的非所有者的最大权限。
例如,假设我对上面的目录执行此操作:
setfacl --modify user:hero:7 thedir
这将访问rwx
授予hero
,现在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
权限了。即使他们在ACL中有一个rwx
条目,因为掩码已经被限制了,但是他们只能获得r-x
(只有r-x
是有效的)。
掩码只会限制权限,不会添加权限。即使掩码以前是rwx
,根据ACL条目,拥有组仍然只获得r-x
权限。
这种行为很方便,因为“中间三层”为您提供了在ACL中授予的权限的上限,而且由于ACL通常用作临时组,因此当它们生效时,它们通常比所属组更感兴趣。
https://askubuntu.com/questions/257896
复制相似问题