第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx

上传人:b****5 文档编号:5979554 上传时间:2023-01-02 格式:DOCX 页数:35 大小:28.21KB
下载 相关 举报
第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx_第1页
第1页 / 共35页
第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx_第2页
第2页 / 共35页
第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx_第3页
第3页 / 共35页
第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx_第4页
第4页 / 共35页
第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx

《第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx》由会员分享,可在线阅读,更多相关《第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx(35页珍藏版)》请在冰豆网上搜索。

第 8 章 使用 ACL 保护 Oracle Solaris ZFS 文件.docx

第8章使用ACL保护OracleSolarisZFS文件

第8章使用ACL保护OracleSolarisZFS文件

本章介绍有关使用访问控制列表(accesscontrollist,ACL)保护ZFS文件的信息。

ACL提供的权限比标准UNIX权限更详尽。

本章包含以下各节:

新SolarisACL模型

设置ZFS文件的ACL

以详细格式设置和显示ZFS文件的ACL

以缩写格式设置和显示ZFS文件的ACL

新SolarisACL模型

SolarisOS的旧版本支持主要基于POSIX草案ACL规范的ACL实现。

基于POSIX草案ACL用来保护UFS文件,并通过NFSv4之前的NFS版本进行转换。

引入NFSv4后,新ACL模型完全支持NFSv4在UNIX和非UNIX客户机之间提供的互操作性。

如NFSv4规范中所定义,这一新的ACL实现提供了更丰富的基于NT样式ACL的语义。

新ACL模型的主要差别如下所列:

此新ACL模型基于NFSv4规范,并与NT样式的ACL类似。

新模型提供更为详尽的访问权限集。

有关更多信息,请参见表 8–2。

ACL分别使用chmod和ls命令(而非setfacl和getfacl命令)进行设置和显示。

新模型提供更为丰富的继承语义,以指定如何将目录的访问权限应用到子目录,等等。

有关更多信息,请参见ACL继承。

两种ACL模型均可比标准文件权限提供更精细的访问控制。

与POSIX草案ACL非常相似,新ACL也由多个访问控制项(AccessControlEntry,ACE)构成。

基于POSIX草案ACL使用单个项来定义允许和拒绝的权限。

而新ACL模型包含两种类型的ACE,用于进行访问检查:

ALLOW和DENY。

因此,不能根据任何定义一组权限的单个ACE来推断是否允许或拒绝该ACE中未定义的权限。

NFSv4ACL与POSIX草案ACL之间的转换如下:

如果使用可识别ACL的实用程序(如cp、mv、tar、cpio或rcp命令)将具有ACL的UFS文件传送到ZFS文件系统,则POSIX草案ACL会转换为等效的NFSv4ACL。

一些NFSv4ACL会转换为POSIX草案ACL。

如果NFSv4ACL未转换为POSIX草案ACL,则会显示以下类似消息:

#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/...[:

inheritance-flags]:

deny|allowfile...

chmod[options]A[index]-file

用于设置非普通ACL的语法

chmod[options]A[index]{+|=}user|group:

name:

access-permissions/...[:

inheritance-flags]:

deny|allowfile

chmod[options]A-user|group:

name:

access-permissions/...[:

inheritance-flags]:

deny|allowfile...

chmod[options]A[index]-file

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。

有关ACL项类型的说明,请参见表 8–1。

access-permissions/.../

标识授予或拒绝的访问权限。

有关ACL访问权限的说明,请参见表 8–2。

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:

group@:

write_data/append_data/execute:

deny

本示例中的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

p

占位符。

当前未实现。

 

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

r

读取文件内容的权限。

 

read_xattr

R

读取文件的扩展属性或在文件的扩展属性目录中执行查找的权限。

 

synchronize

s

占位符。

当前未实现。

 

write_xattr

W

创建扩展属性或向扩展属性目录进行写入的权限。

 

向用户授予此权限意味着用户可为文件创建扩展属性目录。

属性文件的权限可以控制用户对属性的访问。

 

write_data

w

修改或替换文件内容的权限。

 

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

d

从父目录继承ACL,但仅适用于该目录中的子目录。

 

inherit_only

i

从父目录继承ACL,但仅适用于新创建的文件或子目录,而不适用于该目录自身。

该标志要求使用file_inherit标志或dir_inherit标志,或同时使用两者来表示要继承的内容。

no_propagate

n

仅将ACL从父目录继承到该目录的第一级内容,而不是第二级或后续内容。

该标志要求使用file_inherit标志或dir_inherit标志,或同时使用两者来表示要继承的内容。

-

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:

deny

1:

owner@:

read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:

allow

2:

group@:

write_data/append_data/execute:

deny

3:

group@:

read_data:

allow

4:

everyone@:

write_data/append_data/write_xattr/execute/write_attributes

/write_acl/write_owner:

deny

5:

everyone@:

read_data/read_xattr/read_attributes/read_acl/synchronize

:

allow

请注意,本例中每个用户类别(owner@,group@,everyone@)有两个ACL项。

一个项用于deny权限,一个项用于allow权限。

此文件ACL的说明如下:

0:

owner@

拒绝属主对文件的执行权限(execute:

deny)。

1:

owner@

属主可以读取和修改文件的内容(read_data/write_data/append_data)。

属主还可以修改文件的属性,如时间戳、扩展属性和ACL(write_xattr/write_attributes/write_acl)。

此外,属主还可以修改文件的拥有权(write_owner:

allow)。

2:

group@

拒绝组对文件的修改和执行权限(write_data/append_data/execute:

deny)。

3:

group@

授予组对文件的读取权限(read_data:

allow)。

4:

everyone@

拒绝非文件属主或非文件所属组成员执行或修改文件内容以及修改文件任何属性的权限(write_data/append_data/write_xattr/execute/write_attributes/write_acl/write_owner:

deny)。

5:

everyone@

授予非文件属主或非文件所属组成员读取文件和文件属性的权限(read_data/read_xattr/read_attributes/read_acl/synchronize:

allow)。

synchronize访问权限当前未实现。

创建新目录时,根据umask值将应用类似如下的缺省目录ACL:

$ls-dvdir.1

drwxr-xr-x2rootroot2May2014:

11dir.1

0:

owner@:

:

deny

1:

owner@:

list_directory/read_data/add_file/write_data/add_subdirectory

/append_data/write_xattr/execute/write_attributes/write_acl

/write_owner:

allow

2:

group@:

add_file/write_data/add_subdirectory/append_data:

deny

3:

group@:

list_directory/read_data/execute:

allow

4:

everyone@:

add_file/write_data/add_subdirectory/append_data/write_xattr

/write_attributes/write_acl/write_owner:

deny

5:

everyone@:

list_directory/read_data/read_xattr/execute/read_attributes

/read_acl/synchronize:

allow

此目录ACL的说明如下:

0:

owner@

目录的属主deny列表为空(:

:

deny)。

1:

owner@

属主可以读取和修改目录内容(list_directory/read_data/add_file/write_data/add_subdirectory/append_data),搜索内容(execute)以及修改时间戳、扩展属性和ACL等目录属性(write_xattr/write_attributes/write_acl)。

此外,属主还可以修改目录的拥有权(write_owner:

allow)。

2:

group@

组不能添加或修改目录内容(add_file/write_data/add_subdirectory/append_data:

deny)。

3:

group@

组可以列出并读取目录内容。

此外,组还具有搜索目录内容的执行权限(list_directory/read_data/execute:

allow)。

4:

everyone@

拒绝非文件属主或非文件所属组成员添加或修改目录内容的权限(add_file/write_data/add_subdirectory/append_data)。

此外还拒绝修改目录任何属性的权限(write_xattr/write_attributes/write_acl/write_owner:

deny)。

5:

everyone@

授予非文件属主或非文件所属组成员对目录内容和目录属性的读取和执行权限(list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:

allow)。

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

-rw-r--r--1rootroot206663May2014:

09file.1

0:

owner@:

execute:

deny

1:

owner@:

read_data/write_data/append_data/write_xattr/write_attributes

/write_acl/write_owner:

allow

2:

group@:

write_data/append_data/execut

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1