在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

ACL 设置语法的说明

提供以下两种基本的 ACL 格式:

  • 普通 ACL-只包含传统的 UNIX usergroupowner 条目。

    使用以下命令语法设置普通 ACL。

    chmod [options] A[index]{+|=}owner@ |group@ |everyone@: \
      access-permissions/...[:inheritance-flags]:deny | allow file
    chmod [options] A-owner@, group@, everyone@: \
      access-permissions/...[:inheritance-flags]:deny | allow file ...
    chmod [options] A[index]- file
  • 非普通 ACL-不仅包含 owner、group 和 everyone 条目,还包含其他条目,或者包含一组继承标志,或者是其中的条目以非传统顺序排列。

    使用以下命令语法设置非普通 ACL。

    chmod [options] A[index]{+|=}user|group:name: \
    access-permissions/...[:inheritance-flags]:deny | allow file
    chmod [options] A-user|group:name: \
    access-permissions/...[:inheritance-flags]:deny | allow file ...
    chmod [options] A[index]- file

以下列表说明了设置普通和非普通 ACL 的命令所使用的选项。

owner@, group@, everyone@

标识用于普通 ACL 语法的 ACL-entry-type。有关 ACL-entry-type 的说明,请参见Table 7–1

user|group:ACL-entry-ID(username 或 groupname)

标识用于显式 ACL 语法的 ACL-entry-type。用户和组的 ACL-entry-type 还必须包含 ACL-entry-IDusernamegroupname。有关 ACL-entry-type 的说明,请参见Table 7–1

access-permissions/.../

标识授予或拒绝的访问权限。有关 ACL 访问特权的说明,请参见Table 7–2

inheritance-flags

标识一组可选的 ACL 继承标志。有关 ACL 继承标志的说明,请参见Table 7–4

deny |allow

标识授予还是拒绝访问权限。

在以下示例中,owner@group@everyone@ 不存在 ACL-entry-ID 值。

group@:write_data/append_data/execute:deny

由于 ACL 中包括特定用户 (ACL-entry-type),因此以下示例中包括 ACL-entry-ID

0:user:joe:list_directory/read_data/execute:allow

显示的 ACL 项类似于以下内容:

2:group@:write_data/append_data/execute:deny

本示例中指定的2索引 ID 用于标识较大 ACL 中的 ACL 项,较大的 ACL 中可能包含对应于所有者、特定 UID、组和各用户的多个项。可以使用 chmod 命令指定索引 ID,以标识 ACL 要修改的部分。例如,可将索引 ID 3 标识为 chmod 命令中的 A3,与以下内容类似:

chmod A3=user:venkman:read_acl:allow filename

下表说明了 ACL 项类型,即所有者、组和其他用户的 ACL 表示形式。

表 7-1  ACL 项类型
ACL 项类型
说明
owner@
指定授予对象所有者的访问权限。
group@
指定授予对象所属组的访问权限。
everyone@
指定向不与其他任何 ACL 项匹配的任何用户或组授予的访问权限。
user
通过用户名指定向对象的其他用户授予的访问权限。必须包括 ACL-entry-ID,其中包含 usernameuserID。如果该值不是有效的数字 UID 或 username,则该 ACL 项的类型无效。
group
通过组名指定向对象的其他组授予的访问权限。必须包括 ACL-entry-ID,其中包含 groupnamegroupID。如果该值不是有效的数字 UID 或 groupname,则该 ACL 项的类型无效。

下表介绍了 ACL 访问特权。

表 7-2  ACL 访问特权
访问特权
缩写访问特权
说明
add_file
w
向目录中添加新文件的权限。
add_subdirectory
p
在目录中创建子目录的权限。
append_data
p
当前未实现。
delete
d
删除文件的权限。有关特定的 delete 权限行为的更多信息,请参见Table 7–3
delete_child
D
删除目录中的文件或目录的权限。有关特定的 delete_child 权限行为的更多信息,请参见Table 7–3
execute
x
执行文件或搜索目录内容的权限。
list_directory
r
列出目录内容的权限。
read_acl
c
读取 ACL 的权限 (ls)。
read_attributes
a
读取文件的基本属性(非 ACL)的权限。将基本属性视为 stat 级别属性。允许此访问掩码位意味着该实体可以执行 ls(1) 和 stat(2)。
read_data
r
读取文件内容的权限。
read_xattr
R
读取文件的扩展属性或在文件的扩展属性目录中执行查找的权限。
synchronize
s
当前未实现。
write_xattr
W
创建扩展属性或向扩展属性目录进行写入的权限。
向用户授予此权限意味着用户可为文件创建扩展属性目录。属性文件的权限可以控制用户对属性的访问。
write_data
w
修改或替换文件内容的权限。
write_attributes
A
将与文件或目录关联的时间更改为任意值的权限。
write_acl
C
编写 ACL 的权限或使用 chmod 命令修改 ACL 的能力。
write_owner
o
更改文件的所有者或组的权限,或者对文件执行 chownchgrp 命令的能力。
获取文件所有权的权限或将文件的组所有权更改为由用户所属组的权限。如果要将文件或组的所有权更改为任意用户或组,则需要 PRIV_FILE_CHOWN 特权。

下表提供了有关 ACL deletedelete_child 行为的其他详细信息。

表 7-3  ACL deletedelete_child 权限行为
父目录权限
目标对象权限
ACL 允许 delete
ACL 拒绝 delete
未指定 delete 权限
ACL 允许 delete_child
允许
允许
允许
ACL 拒绝 delete_child
允许
拒绝
拒绝
ACL 仅允许 writeexecute
允许
允许
允许
ACL 拒绝 writeexecute
允许
拒绝
拒绝

ZFS ACL 集合

可以在 ACL 集合中应用以下 ACL 组合,而不需要分别设置各个权限。有以下 ACL 集合可用。

ACL 集合名称
包括的 ACL 权限
full_set
所有权限
modify_set
write_aclwrite_owner 外的所有权限
read_set
read_dataread_attributesread_xattrread_acl
write_set
write_dataappend_datawrite_attributeswrite_xattr

这些 ACL 集合是预定义的,不能修改。