Trusted Extensions 配置和管理

退出打印视图

更新时间: 2014 年 7 月
 
 

如何创建和共享多级别数据集

当降级或升级信息时,多级别数据集是很有用的容器。有关更多信息,请参见需要为文件重新设置标签的多级别数据集。对于多级别 NFS 文件服务器为大量 NFS 客户机提供使用许多标签的文件,多级别数据集也很有用。

开始之前

要创建多级别数据集,您必须在全局区域中承担 root 角色。

  1. 创建多级别数据集。
    # zfs create -o mountpoint=/multi -o multilevel=on rpool/multi

    rpool/multi 是在全局区域的 /multi 上挂载的多级别数据集。

    要限制数据集的上限标签范围,请参见Example 4–7

  2. 验证是否已挂载多级别数据集以及挂载点是否具有 ADMIN_LOW 标签。
    # getlabel /multi
    /multi: ADMIN_LOW
  3. 保护父文件系统。

    为池中的所有文件系统将以下 ZFS 属性设置为 off

    # zfs set devices=off rpool/multi
    # zfs set exec=off rpool/multi
    # zfs set setuid=off rpool/multi
  4. (u53ef选)设置池的压缩属性。

    通常,压缩是在 ZFS 中的文件系统级别设置的。但是,由于此池中的所有文件系统都是数据文件,因此会在顶级数据集为池设置压缩。

    # zfs set compression=on rpool/multi

    另请参见在 Oracle Solaris 11.2 中管理 ZFS 文件系统 中的ZFS 压缩、重复数据删除和加密属性之间的交互

  5. 为要包含在多级别数据集中的每个标签创建顶层目录。
    # cd /multi
    # mkdir public internal
    # chmod 777 public internal
    # setlabel PUBLIC public
    # setlabel "CNF : INTERNAL" internal
  6. 使用 LOFS 在已批准具有访问权限的每个有标签区域中挂载多级别数据集。

    例如,以下 zonecfg 命令系列可在 public 区域中挂载数据集。

    # zonecfg -z public
    zonecfg:public> add fs
    zonecfg:public:fs> set dir=/multi
    zonecfg:public:fs> set special=/multi
    zonecfg:public:fs> set type=lofs
    zonecfg:public:fs> end
    zonecfg:public> exit

    多级别数据集允许在与挂载区域标签相同的标签处写入文件以及读取较低级别的文件。可以查看和设置挂载文件的标签。

  7. 要使用 NFS 与其他系统共享多级别数据集,请执行以下操作:
    1. 将全局区域中的 NFS 服务设置成多级别服务。
      # tncfg -z global add mlp_private=2049/tcp
      # tncfg -z global add mlp_private=111/udp
      # tncfg -z global add mlp_private=111/tcp
    2. 重新启动 NFS 服务。
      # svcadm restart nfs/server
    3. 共享多级别数据集。
      # share /multi

    已挂载 NFS 的多级别数据集允许在与挂载区域标签相同的标签处写入文件以及读取较低级别的文件。无法可靠地查看或设置已挂载文件的标签。有关更多信息,请参见挂载来自其他系统的多级别数据集

示例 4-7  使用低于 ADMIN_HIGH 的最高级别标签创建多级别数据集

在以下示例中,管理员将使用低于缺省值 ADMIN_HIGH 的上界标签或最高级别标签创建多级别数据集。创建数据集时,管理员在 mslabel 属性中指定标签上界。此上界可阻止全局区域进程在多级别数据集中创建任何文件或目录。只有有标签区域才能在数据集中创建目录和文件。由于 multilevel 属性为 on,因此 mlslabel 属性会为单标签数据集设置上界而非标签。

# zfs create -o mountpoint=/multiIUO -o multilevel=on \
   -o mlslabel="CNF : INTERNAL" rpool/multiIUO

然后,管理员登录到每个有标签区域,在已挂载数据集中以该标签创建目录。

# zlogin public
# mkdir /multiIUO
# chmod 777 /multiIUO
# zlogin internal
# mkdir /multiIUO
# chmod 777 /multiIUO

重新引导区域后,多级别数据集以挂载区域的标签对已授权用户可见。

接下来的步骤

要使用户能够对文件重新设置标签,请参见如何在有标签区域中允许重新为文件设置标签

有关重新设置文件标签的说明,请参见Trusted Extensions 用户指南 中的如何升级多级别数据集中的数据Trusted Extensions 用户指南 中的如何降级多级别数据集中的数据