JavaScript is required to for searching.
跳过导航链接
退出打印视图
Sun QFS 文件系统 5.3 配置和管理指南     Sun QFS and Sun Storage Archive Manager 5.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  文件系统概述

2.  关于主配置文件

3.  mcf 文件示例

4.  配置文件系统

5.  配置共享文件系统

6.  管理文件系统配额

7.  高级文件系统主题

8.  SAM-QFS 中的 SMB 服务

Oracle Solaris SMB 服务入门

share 命令

不区分大小写支持

DOS 属性支持

使用 ACL 保护 Sun QFS 和 SAM-QFS 文件

映射 SAM-QFS 中的用户和组身份

创建并转换文件系统以支持 NFSv4 ACL

用于设置 ACL 的语法描述

ACL 继承

9.  配置 WORM-FS 文件系统

10.  可调参数

11.  将 QFS 文件系统与 SANergy 一起使用 (SAN-QFS)

12.  共享文件系统中的挂载选项

13.  使用 samu 操作员实用程序

使用 ACL 保护 Sun QFS 和 SAM-QFS 文件

Oracle Solaris 的以前版本支持的 ACL 实现主要基于 POSIX ACL 规范。基于 POSIX 的 ACL 用于保护 UFS 文件,并通过 NFSv4 之前的 NFS 版本进行转换。

引入 NFSv4 之后,新的 Oracle Solaris ACL 模型完全支持 NFSv4 在 UNIX 和非 UNIX 客户机之间提供的互操作性。如 NFSv4 规范中所定义,这一新的 ACL 实现提供了更丰富的基于 NT 样式 ACL 的语义。

与旧模型相比,新的 ACL 模型的主要变化如下:

两种 ACL 模型均可比标准文件权限提供更精细的访问控制。与 POSIX ACL 非常相似,新 ACL 也由多个访问控制项 (Access Control Entry, ACE) 构成。

POSIX 样式的 ACL 使用单个项来定义允许和拒绝的权限。新的 ACL 模型包含两种可影响访问检查的 ACE:ALLOW 和 DENY。因此,不能根据任何定义一组权限的单个 ACE 来推断该 ACE 中未定义的权限是被允许还是被拒绝。

有关新的 Oracle Solaris ACL 模型的更多信息,请参见《Oracle Solaris Administration: ZFS File Systems》中的"New Solaris ACL Model"

映射 SAM-QFS 中的用户和组身份

当前,SAM-QFS 不支持临时 ID 或 SID。因此,必须使用 idmap 服务显式定义所有 Windows 身份或必须由 Active Directory 服务提供所有 Windows 身份。SMB 服务器遇到的未定义显式映射的身份将自动默认为 nobody 身份。

有关身份映射管理的更多信息,请参见 《Oracle Solaris Administration: SMB and Windows Interoperability》中的第 2  章 "Identity Mapping Administration (Tasks)"

创建并转换文件系统以支持 NFSv4 ACL

POSIX ACL 是 SAM-QFS 文件系统中存在的默认 ACL。为了支持 SMB 服务,SAM-QFS 文件系统还必须支持 NFSv4 ACL。

用于设置 ACL 的语法描述

提供的两种基本 ACL 格式如下所示:

用于设置普通 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 的语法

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

owner@, group@, everyone@

标识普通 ACL 语法的 ACL-entry-type。有关 ACL-entry-type 的说明,请参见表 8-2

user or group:ACL-entry-ID=username or groupname

标识显式 ACL 语法的 ACL-entry-type。用户和组 ACL-entry-type 还必须包含 ACL-entry-IDusernamegroupname。有关 ACL-entry-type 的说明,请参见表 8-2

access-permissions/.../

标识被授予或拒绝的访问权限。有关 ACL 访问特权的说明,请参见表 8-3

inheritance-flags

标识 ACL 继承标志的可选列表。有关 ACL 继承标志的说明,请参见表 8-4

deny | allow

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

在以下示例中,与 ACL-entry-ID 值无关。

group@:write_data/append_data/execute:deny

以下示例包含一个 ACL-entry-ID,因为在 ACL 中包含一个特定用户 (ACL-entry-ID)。

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

显示 ACL 条目时,它与以下内容类似:

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

该示例中的 2index-ID 标志标识较大的 ACL 中的 ACL 条目,该 ACL 可能具有多个对应于属主、特定 UID、组和每个人的条目。可以使用 chmod 命令指定 index-ID 以标识要修改的 ACL 部分。例如,在 chmod 命令中可以将索引 ID 3 标识为 A3,与下面的内容类似:

chmod A3=user:venkman:read_acl:allow filename

下表介绍了 ACL 条目类型(属主、组和其他项的 ACL 表示形式)。

表 8-2 ACL 条目类型

ACL 条目类型
说明
owner@
指定访问权限授予对象属主。
group@
指定访问权限授予对象所属组。
everyone@
指定访问权限授予与任何其他 ACL 条目不匹配的任何用户或组。
user
使用用户名指定访问权限授予对象的其他用户。必须包含 ACL-entry-ID,ACL-entry-ID 包含 usernameuser-ID。如果值不是有效的数字 UID 或 username,则 ACL 条目类型无效。
group
使用组名指定访问权限授予对象的其他组。必须包含 ACL-entry-ID,ACL-entry-ID 包含 groupnamegroup-ID。如果值不是有效的数字 GID 或 groupname,则 ACL 条目类型无效。

下表介绍了 ACL 访问特权。

表 8-3 ACL 访问特权

访问特权
说明
add_file
用于将新文件添加到目录的权限。
add_subdirectory
用于在目录中创建子目录的权限。
delete
用于删除文件的权限。
delete_child
用于删除目录中的文件或子目录的权限。
execute
用于执行文件或搜索目录内容的权限。
list_directory
用于列出目录内容的权限。
read_acl
用于读取 ACL 的权限 (ls)。
read_attributes
用于读取文件基本属性(非 ACL)的权限。(将基本属性视为 stat 级别属性)。允许此访问掩码位意味着实体可以执行 ls(1) 和 stat(2)。
read_data
用于读取文件内容的权限。
read_xattr
用于读取文件扩展属性或在文件扩展属性目录中执行查找的权限。
write_xattr
用于创建扩展属性或写入扩展属性目录的权限。

将该权限授予用户意味着用户可创建文件的扩展属性目录。属性文件的权限可控制用户对该属性的访问。

write_data
用于修改或替换文件内容的权限。
write_attributes
用于将与文件或目录关联的时间更改为任意值的权限。
write_acl
用于编写 ACL 的权限或能够使用 chmod 命令修改 ACL。
write_owner
用于更改文件属主或组的权限,或能够对文件执行 chownchgrp 命令。

用于获取文件所有权的权限,或用于将文件的组所有权更改为用户是其成员的组的权限。如果希望将文件或组所有权更改为任意用户或组,则需要 PRIV_FILE_CHOWN 特权。

示例 8-3 修改 SAM-QFS 文件上的普通 ACL

以下示例中,普通 ACL 存在于 file.1 中:

# ls -v file.1
-rw-r--r--   1 root     root      206674 Jun 14 10:54 file.1
     0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
         /read_attributes/write_attributes/read_acl/write_acl/write_owner
         /synchronize:allow
     1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
     2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

ACL 继承

使用 ACL 继承的目的是使新创建的文件或目录可以继承相应的 ACL,而不忽略父目录上的现有权限位。

默认情况下,ACL 不进行传播。如果在目录中设置非普通 ACL,则不会将其继承到任何后续目录中。必须在文件或目录中指定 ACL 的继承。

下表介绍了可选继承标志。

表 8-4 ACL 继承标志

继承标志
说明
file_inherit
仅将 ACL 从父目录继承到目录的文件中。
dir_inherit
仅将 ACL 从父目录继承到目录的子目录中。
inherit_only
从父目录继承 ACL。此选项仅应用于新创建的文件或子目录,而不应用于目录本身。此标志需要 file_inherit 标志和/或 dir_inherit 标志来表示要继承的内容。
no_propagate
仅将 ACL 从父目录继承到目录的第一级内容中,而不继承到第二级或后续内容中。此标志需要 file_inherit 标志和/或 dir_inherit 标志来表示要继承的内容。

默认情况下,ACL 不会通过目录结构传播。

示例 8-4 授予默认 ACL 继承

在以下示例中,在 test.dir 上为用户 gozer 应用了非普通 ACE read_data/write_data/execute

# chmod A+user:gozer:read_data/write_data/execute:allow test.dir
# ls -dv test.dir
drwxr-xr-x+  2 root     root           2 Jun 15 10:40 test.dir
     0:user:gozer:list_directory/read_data/add_file/write_data/execute:allow
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/read_attributes
         /write_attributes/read_acl/write_acl/write_owner/synchronize:allow
     2:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

如果创建了 test.dir 的子目录,则不会传播用户 gozer 的 ACE。仅当 sub.dir 上的权限授予用户 gozer 文件属主、组成员或 everyone@ 访问权限,该用户对 sub.dir 才具有访问权限。

# mkdir test.dir/sub.dir
# ls -dv test.dir/sub.dir
drwxr-xr-x   2 root     root           2 Jun 15 10:41 test.dir/sub.dir
     0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/read_xattr/write_xattr/execute/read_attributes
         /write_attributes/read_acl/write_acl/write_owner/synchronize:allow
     1:group@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow
     2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

示例 8-5 对目录内的文件授予 ACL 继承

在以下示例中,某些权限应用于目录中新创建的所有文件,但不应用于目录本身。file_inherit 标志表明权限针对文件,inherit_only 标志表明权限针对继承,而不应用于目录本身。

# chmod A+user:bob:read_data/execute:file_inherit/inherit_only:deny mydir
# ls -vd mydir
dr-xr-xr-x+     2     root     root        4096 Jul 5 19:10 mydir 
   0:user:bob:list_directory/read_data/execute:file_inherit/inherit_only:deny
   1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
      /append_data/read_xattr/write_xattr/execute/delete_child
      /read_attributes/write_attributes/read_acl/write_acl/write_owner
      /synchronize:allow
   2:group@:list_directory/read_data/read_xattr/execute/read_attributes
      /read_acl/synchronize:allow
   3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
      /read_acl/synchronize:allow  

如果在 mydir 目录中创建 myfile 文件,则 myfile 文件将自动继承所有访问权限。

# cd mydir
# touch myfile
# ls -v myfile
-r--r--r--+     1     root     root        0 Jul 5 19:11 myfile

   0:user:bob:read_data/execute:file_inherit/inherit_only:deny
   1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
      /read_attributes/write_attributes/read_acl/write_acl/write_owner
      /synchronize:allow
   2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
   3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow