Linux ACL 权限之高级进阶篇(2)

有两种格式来描述 ACL 条目,分别是长格式和短格式。它们非常类似,都是通过两个冒号把一个 ACL 条目分为三个部分:
ACL 条目的类型:ACL 条目 qualifier:权限信息

我们在前面已经介绍过 ACL 条目的类型,权限信息就是用 rwx 来表示的信息,不支持某个权限的话可以使用 - 表示。这里介绍一下 ACL 条目 qualifier(不知道该咋翻译这货)。

当 ACL 条目的类型为 ACL_USER 或 ACL_GROUP 时,ACL 条目 qualifier 包含与 ACL 条目关联的用户和组的标识符。

当 ACL 条目的类型为其它时,ACL 条目 qualifier 为空。

其中的用户标识符可以是用户名也可以是 user ID,组标识符可以是组名也可以是 group ID。

下面是一组长格式的示例:
user::rw-
user:tester:rw- #effective:r--
group::r--
group:tester1:rw- #effective:r--
mask::r--
other::r--

下面是一组短格式的示例:
u::rw-,u:tester:rw-,g::r--,g:tester1:rw-,m::r--,o::r--
g:tester1:rw,u:tester:rw,u::wr,g::r,o::r,m::r

解释几个常见的权限变化的例子

前文我们的重点是介绍 ACL 权限的基本用法。有了本文前面介绍的基础内容,我们就可以解释前文中出现的一些比较怪异的现象。
创建用户 tester, tester1:

$ sudo adduser tester
$ sudo adduser tester1

先创建文件 aclfile,检查其默认的 ACL 权限信息:

Linux ACL 权限之高级进阶篇

然后为 tester 用户赋予读写 aclfile 文件的权限:

$ setfacl -m u:tester:rw aclfile

此时查看 aclfile 文件的权限:

$ ll aclfile

貌似并没有发生什么变化,只是在描述权限的地方多出了一个 "+" 号。下面再看看 acl 权限:

$ getfacl aclfile

Linux ACL 权限之高级进阶篇

上图的黄框中出现了 ACL_MASK 条目,这就是我们的第一个问题:
**************************************************************
我们并没有显式的设置 ACL_MASK 条目,为什么它出现了?
An ACL that contains entries of ACL_USER or ACL_GROUP tag types must contain exactly one entry of the ACL_MASK tag type. If an ACL contains no entries of ACL_USER or ACL_GROUP tag types, the ACL_MASK entry is optional.
上面的解释大意是当添加了 ACL_USER 或 ACL_GROUP 后,必须有一个对应的 ACL_MASK 条目。在当前的情况下,ACL_MASK 是被自动创建的,它的权限被设置成了 group(其实是 group class) 的权限即 rw-。
**************************************************************

下面我们接着更新 aclfile 的 ACL 权限:

$ setfacl -m u:tester:rwx,g:tester1:r aclfile

查看文件权限:

在修改了 tester 的权限并添加了 tester1 group 的权限后,我们看到的组权限居然变成了 rwx !
这是我们的第二个问题:
**************************************************************
为什么 aclfile 文件的组权限变成了 rwx?
这是因为我们设置了  u:tester:rwx 导致的:
在设置了 ACL 权限后,group 显示的权限为 ACL_MASK 条目中的权限。而 ACL_MASK 条目中的权限表示 ACL_USER、ACL_GROUP_OBJ 和 ACL_GROUP 条目能够被授予的最大权限,所以当 tester 被设置了 rwx 权限时,ACL_MASK 条目中的权限也发生了相应的变化。并最终导致我们看到了上面的结果:-rw-rwxr--+。
**************************************************************

接下来我们看看 acl 权限:

Linux ACL 权限之高级进阶篇

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12460.html