第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件文档格式.docx
- 文档编号:18972412
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:35
- 大小:28.21KB
第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件文档格式.docx
《第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件文档格式.docx》由会员分享,可在线阅读,更多相关《第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
#cp-pfilea/var/tmp
cp:
failedtosetaclentrieson/var/tmp/filea
如果在运行当前Solaris发行版的系统上使用保留的ACL选项(tar-p或cpio-P)创建UFStar或cpio归档文件,则在运行先前的Solaris发行版的系统中提取该归档文件时将丢失ACL。
所有文件都以正确的文件模式提取,但会忽略ACL项。
可以使用ufsrestore命令将数据恢复至ZFS文件系统中。
如果原始数据包括POSIX草案ACL,则这些ACL会被转换为NFSv4ACL。
如果尝试对UFS文件设置NFSv4ACL,则会显示以下类似消息:
chmod:
ERROR:
ACLtype'
saredifferent
如果尝试对ZFS文件设置POSIX草案ACL,则会显示以下类似信息:
#getfaclfilea
Filesystemdoesn'
tsupportaclent_tstyleACL'
s.
Seeacl(5)formoreinformationonSolarisACLsupport.
有关对ACL和备份产品的其他限制信息,请参见使用其他备份产品保存ZFS数据。
ACL设置语法的说明
基本的ACL格式有如下两种:
用于设置普通ACL的语法
ACL很普通,因为它仅表示传统的UNIXowner/group/other项。
chmod[options]A[index]{+|=}owner@|group@|everyone@:
access-permissions/...[:
inheritance-flags]:
deny|allowfile
chmod[options]A-owner@,group@,everyone@:
access-permissions/...[:
deny|allowfile...
chmod[options]A[index]-file
用于设置非普通ACL的语法
chmod[options]A[index]{+|=}user|group:
name:
deny|allowfile
chmod[options]A-user|group:
owner@,group@,everyone@
标识用于普通ACL语法的ACL-entry-type。
有关ACL项类型的说明,请参见表
8–1。
user|group:
ACL-entry-ID(username或groupname)
标识用于显式ACL语法的ACL-entry-type。
用户和组的ACL-entry-type还必须包含ACL-entry-ID、username或groupname。
access-permissions/.../
标识授予或拒绝的访问权限。
有关ACL访问权限的说明,请参见表
inheritance-flags
标识一组可选的ACL继承标志。
有关ACL继承标志的说明,请参见表
8–3。
deny|allow
标识授予还是拒绝访问权限。
在以下示例中,ACL-entry-ID值无意义。
group@:
write_data/append_data/execute:
deny
由于ACL中包括特定用户(ACL-entry-type),因此以下示例中包括ACL-entry-ID。
0:
user:
gozer:
list_directory/read_data/execute:
allow
显示的ACL项与以下内容类似:
2:
本示例中的2为索引ID,用于标识较大ACL中的ACL项,较大的ACL中可能包含对应于属主、特定UID、组和各用户的多个项。
可以使用chmod命令指定索引ID,以标识ACL要修改的部分。
例如,可将索引ID3标识为chmod命令语法中的A3,与以下内容类似:
chmodA3=user:
venkman:
read_acl:
allowfilename
下表介绍了ACL项类型,即属主、组和其他对象的ACL表示形式。
表
8–1ACL项类型
ACL项类型
说明
owner@
指定授予对象属主的访问权限。
group@
指定授予对象所属组的访问权限。
everyone@
指定向不与其他任何ACL项匹配的任何用户或组授予的访问权限。
user
通过用户名指定向对象的其他用户授予的访问权限。
此项必须包括ACL-entry-ID,其中包含username或userID。
如果该值不是有效的数字UID或username,则该ACL项的类型无效。
group
通过组名指定向对象的其他组授予的访问权限。
此项必须包括ACL-entry-ID,其中包含groupname或groupID。
如果该值不是有效的数字UID或groupname,则该ACL项的类型无效。
下表介绍了ACL访问权限。
8–2ACL访问权限
访问权限
缩写访问权限
add_file
w
向目录中添加新文件的权限。
add_subdirectory
p
在目录中创建子目录的权限。
append_data
占位符。
当前未实现。
delete
d
删除文件的权限。
delete_child
D
删除目录中的文件或目录的权限。
execute
x
执行文件或搜索目录内容的权限。
list_directory
r
列出目录内容的权限。
read_acl
c
读取ACL的权限(ls)。
read_attributes
a
读取文件的基本属性(非ACL)的权限。
将基本属性视为状态级别属性。
允许此访问掩码位意味着该实体可以执行ls
(1)和stat
(2)。
read_data
读取文件内容的权限。
read_xattr
R
读取文件的扩展属性或在文件的扩展属性目录中执行查找的权限。
synchronize
s
write_xattr
W
创建扩展属性或向扩展属性目录进行写入的权限。
向用户授予此权限意味着用户可为文件创建扩展属性目录。
属性文件的权限可以控制用户对属性的访问。
write_data
修改或替换文件内容的权限。
write_attributes
A
将与文件或目录关联的时间戳更改为任意值的权限。
write_acl
C
编写ACL或使用chmod命令修改ACL的权限。
write_owner
o
更改文件的属主或组的权限,或者对文件执行chown或chgrp命令的能力。
获取文件拥有权的权限或将文件的组拥有权更改为由用户所属组的权限。
如果要将文件或组的拥有权更改为任意用户或组,则需要PRIV_FILE_CHOWN权限。
ACL继承
使用ACL继承的目的是使新创建的文件或目录可以继承其本来要继承的ACL,但不忽略父目录的现有权限。
缺省情况下,不会传播ACL。
如果设置某个目录的非普通ACL,则任何后续目录不会继承该非普通ACL。
必须对文件或目录指定ACL的继承。
下表介绍了可选的继承标志。
8–3ACL继承标志
继承标志
缩写继承标志
file_inherit
f
从父目录继承ACL,但仅适用于该目录中的文件。
dir_inherit
从父目录继承ACL,但仅适用于该目录中的子目录。
inherit_only
i
从父目录继承ACL,但仅适用于新创建的文件或子目录,而不适用于该目录自身。
该标志要求使用file_inherit标志或dir_inherit标志,或同时使用两者来表示要继承的内容。
no_propagate
n
仅将ACL从父目录继承到该目录的第一级内容,而不是第二级或后续内容。
-
N/A
未授予权限。
此外,还可以使用aclinherit文件系统属性对文件系统设置更为严格或更为宽松的缺省ACL继承策略。
有关更多信息,请参见下一节。
ACL属性
ZFS文件系统有两个与ACL相关的属性。
aclinherit-此属性可确定ACL继承的行为。
包括以下属性值:
discard-对于新对象,创建文件或目录时不会继承任何ACL项。
新文件或目录的ACL等效于该文件或目录的权限。
noallow-对于新对象,仅继承访问类型为deny的可继承ACL项。
restricted-对于新对象,继承ACL项时将删除write_owner和write_acl权限。
passthrough-当属性值设置为passthrough时,会使用由可继承ACE确定的权限来创建文件。
如果不存在影响权限的可继承ACE,则会根据应用程序要求的权限设置权限。
passthrough-x-此属性与passthrough语义相同,只不过如果启用passthrough-x,将使用执行(x)权限创建文件,但前提是必须在文件创建模式和影响该模式的可继承ACE中设置执行权限。
aclinherit属性的缺省值为restricted。
aclmode-最初创建文件时或每次用chmod命令修改文件或目录的权限时,该属性都会修改ACL行为。
discard-删除所有ACL项,但定义文件或目录的模式所需的项除外。
groupmask-除非用户项与文件或目录的属主具有相同的UID,否则将减少用户或组的ACL权限,以使其不会大于组权限。
然后,减少ACL权限,以使其不会大于属主权限。
passthrough-在chmod操作期间,除owner@、group@或everyone@以外的ACE不会以任何方式进行修改。
owner@、group@或everyone@ACE会被禁用以按chmod操作的要求设置文件模式。
aclmode属性的缺省值为groupmask。
设置ZFS文件的ACL
正如ZFS所实现的那样,ACL由ACL项构成。
ZFS提供了一个纯ACL模型,其中所有文件都包括ACL。
通常,ACL很普通,因为它仅表示传统的UNIXowner/group/other项。
如果更改文件的权限,该文件的ACL也会相应地更新。
此外,如果删除授予用户对文件或目录的访问权限的非普通ACL,则由于该文件或目录的权限位会将访问权限授予组或各用户,因此该用户仍可访问这一文件或目录。
所有访问控制决策都由文件或目录的ACL中表示的权限来管理。
对于ZFS文件,ACL访问权限的主要规则如下:
ZFS按照ACL项在ACL中的排列顺序从上至下对其进行处理。
仅处理具有与访问权限的请求者匹配的“对象”的ACL项。
一旦授予allow权限,同一ACL权限集当中的后续ACLdeny项即不能拒绝此权限。
无条件地授予文件属主write_acl权限,即使显式拒绝此权限时也是如此。
否则,将拒绝仍未指定的所有权限。
如果是deny权限或缺少文件访问权限,权限子系统将确定为文件属主或超级用户授予的访问请求。
此机制可以防止文件属主无法访问其文件,并允许超级用户修改文件以进行恢复。
如果设置某个目录的非普通ACL,则该目录的子目录不会自动继承该ACL。
如果设置了非普通ACL并希望目录的子目录继承该ACL,则必须使用ACL继承标志。
8–3和以详细格式对ZFS文件设置ACL继承。
创建新文件时,根据umask值将应用类似如下的缺省的普通ACL:
$ls-vfile.1
-rw-r--r--1rootroot206663May2014:
09file.1
0:
owner@:
execute:
1:
read_data/write_data/append_data/write_xattr/write_attributes
/write_acl/write_owner:
2:
3:
read_data:
4:
everyone@:
write_data/append_data/write_xattr/execute/write_attributes
5:
read_data/read_xattr/read_attributes/read_acl/synchronize
:
请注意,本例中每个用户类别(owner@,group@,everyone@)有两个ACL项。
一个项用于deny权限,一个项用于allow权限。
此文件ACL的说明如下:
拒绝属主对文件的执行权限(execute:
deny)。
1:
属主可以读取和修改文件的内容(read_data/write_data/append_data)。
属主还可以修改文件的属性,如时间戳、扩展属性和ACL(write_xattr/write_attributes/write_acl)。
此外,属主还可以修改文件的拥有权(write_owner:
allow)。
拒绝组对文件的修改和执行权限(write_data/append_data/execute:
3:
授予组对文件的读取权限(read_data:
4:
拒绝非文件属主或非文件所属组成员执行或修改文件内容以及修改文件任何属性的权限(write_data/append_data/write_xattr/execute/write_attributes/write_acl/write_owner:
5:
授予非文件属主或非文件所属组成员读取文件和文件属性的权限(read_data/read_xattr/read_attributes/read_acl/synchronize:
synchronize访问权限当前未实现。
创建新目录时,根据umask值将应用类似如下的缺省目录ACL:
$ls-dvdir.1
drwxr-xr-x2rootroot2May2014:
11dir.1
:
list_directory/read_data/add_file/write_data/add_subdirectory
/append_data/write_xattr/execute/write_attributes/write_acl
/write_owner:
add_file/write_data/add_subdirectory/append_data:
add_file/write_data/add_subdirectory/append_data/write_xattr
/write_attributes/write_acl/write_owner:
list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:
此目录ACL的说明如下:
目录的属主deny列表为空(:
属主可以读取和修改目录内容(list_directory/read_data/add_file/write_data/add_subdirectory/append_data),搜索内容(execute)以及修改时间戳、扩展属性和ACL等目录属性(write_xattr/write_attributes/write_acl)。
此外,属主还可以修改目录的拥有权(write_owner:
组不能添加或修改目录内容(add_file/write_data/add_subdirectory/append_data:
组可以列出并读取目录内容。
此外,组还具有搜索目录内容的执行权限(list_directory/read_data/execute:
拒绝非文件属主或非文件所属组成员添加或修改目录内容的权限(add_file/write_data/add_subdirectory/append_data)。
此外还拒绝修改目录任何属性的权限(write_xattr/write_attributes/write_acl/write_owner:
授予非文件属主或非文件所属组成员对目录内容和目录属性的读取和执行权限(list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:
以详细格式设置和显示ZFS文件的ACL
可以使用chmod命令修改ZFS文件的ACL。
以下用于修改ACL的chmod语法使用acl规范来确定ACL的格式。
有关acl规范的说明,请参见ACL设置语法的说明。
添加ACL项
为用户添加ACL项
%chmodA+acl-specificationfilename
按index-ID添加ACL项
%chmodAindex-ID+acl-specificationfilename
此语法用于在指定的index-ID位置插入新的ACL项。
替换ACL项
%chmodA=acl-specificationfilename
%chmodAindex-ID=acl-specificationfilename
删除ACL项
按index-ID删除ACL项
%chmodAindex-ID-filename
由用户删除ACL项
%chmodA-acl-specificationfilename
从文件中删除所有非普通ACE
%chmodA-filename
详细ACL信息是通过使用ls-v命令来显示的。
#ls-vfile.1
write_data/append_data/execut
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 ACL 保护 Oracle Solaris ZFS 文件