跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理 Oracle Solaris 11.1 Information Library (简体中文) |
19. 安装、引导、关闭、停止、卸载和克隆非全局区域(任务)
23. 迁移 Oracle Solaris 系统和迁移非全局区域(任务)
24. 关于安装了区域的 Oracle Solaris 11.1 系统上的自动安装和软件包
25. Oracle Solaris Zones 管理(概述)
共享 IP 区域中的 Oracle Solaris IP 过滤器
专用 IP 区域中的 Oracle Solaris IP 过滤器
26. 管理 Oracle Solaris Zones(任务)
28. 各种 Oracle Solaris Zones 问题的故障排除
29. Oracle Solaris 10 Zones 介绍
30. 评估 Oracle Solaris 10 系统和创建归档文件
31. (可选)将 Oracle Solaris 10 native 非全局区域迁移到 Oracle Solaris 10 Zones
本节介绍有关安装了区域的 Oracle Solaris 系统上文件系统问题的相关信息。每个区域都有自己的文件系统分层结构部分,根目录称为区域 root。区域中的进程仅可访问区域根目录下的分层结构部分中的文件。chroot 实用程序可以在区域中使用,但是仅用于将进程限制在区域内的根路径。有关 chroot 的更多信息,请参见 chroot(1M)。
mount 实用程序的 -o nosuid 选项具有以下功能:
在使用 nosetuid 选项挂载的文件系统上,setuid 二进制命令中的进程无法使用 setuid 二进制命令特权运行。而是使用执行此二进制命令的用户特权运行。
例如,如果用户执行属于 root 的 setuid 二进制命令,则进程使用此用户的特权运行。
不允许打开文件系统中的特定设备项。此行为相当于指定 nodevices 选项。
所有可使用 mount 实用程序(如 mount(1M) 手册页中所述)挂载的 Oracle Solaris 文件系统都可以使用这一特定于文件系统的选项。在本指南中,这些文件系统在在区域中挂载文件系统中列出。同时也对挂载功能进行了说明。有关 -o nosuid 选项的更多信息,请参见《Oracle Solaris 管理:网络服务》中的“访问网络文件系统(参考信息)”。
从区域中挂载文件系统时,将应用 nodevices 选项。例如,如果区域被授予访问对应于 UFS 文件系统的块设备 (/dev/dsk/c0t0d0s7) 和原始设备 (/dev/rdsk/c0t0d0s7) 的权限,则从区域中挂载此文件系统时,会自动使用 nodevices 选项挂载。此规则不适用于通过 zonecfg 配置指定的挂载。
下表介绍用于在非全局区域中挂载文件系统的选项。其他挂载方法过程在配置、检验并提交区域和在正在运行的非全局区域中挂载文件系统中介绍。
对于未在此表中列出的任意文件系统类型,如果它在 /usr/lib/fstype/mount 中具有挂载二进制命令,则可以在配置中指定此文件系统类型。
要挂载除了非全局区域中 HSFS 和 NFS 之外的文件系统类型,也使用 zonecfg fs-allowed 属性将文件系统类型添加到配置。
如果允许挂载缺省文件系统之外的其他文件系统,则区域管理员可以影响系统。
|
有关更多信息,请参见如何配置区域、在正在运行的非全局区域中挂载文件系统和 mount(1M) 手册页。
卸载文件系统的能力将取决于执行初始挂载的人员。如果使用 zonecfg 命令将文件系统指定为区域配置的一部分,则全局区域将拥有此挂载,而非全局区域管理员无法卸载该文件系统。如果从非全局区域内挂载文件系统(例如在区域 /etc/vfstab 文件中指定挂载),则非全局区域管理员可以卸载该文件系统。
在区域中挂载某些文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。已修改的文件系统列表如下。
Autofs 是一项可自动挂载相应文件系统的客户端服务。当客户机尝试访问目前未挂载的文件系统时,AutoFS 文件系统会拦截请求并调用 automountd 以挂载请求的目录。在区域中建立的 AutoFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。有关 AutoFS 的更多信息,请参见《Oracle Solaris 管理:网络服务》中的"Autofs 如何工作"。
每个区域都运行自己的 automountd 副本。自动映射和超时由区域管理员控制。不能跨越非全局区域的 AutoFS 挂载点从全局区域触发其他区域中的挂载。
触发其他挂载时,便会在内核中创建某些 AutoFS 挂载。此类挂载不能使用常规 umount 接口删除,因为它们必须作为一个组进行挂载或卸载。请注意,提供此功能是为了关闭区域。
MNTFS 是一款虚拟文件系统,可提供本地系统中已挂载文件系统表的只读访问权限。在非全局区域中使用 mnttab 可查看的一组文件系统是该区域中已挂载的一组文件系统和一个根 (/) 项。具有无法在区域中访问的特殊设备的挂载点(例如 /dev/rdsk/c0t0d0s0)都将其特殊设备的挂载点设置为与此挂载点相同。系统中的所有挂载都可从全局区域的 /etc/mnttab 表中查看。有关 MNTFS 的更多信息,请参见《Oracle Solaris 11.1 管理:设备和文件系统》中的"挂载和取消挂载 Oracle Solaris 文件系统"。
在区域中建立的 NFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。
在区域中,NFS 挂载如同使用 nodevices 选项进行挂载。
nfsstat 命令输出仅与运行此命令的区域有关。例如,如果在全局区域中运行此命令,则仅报告有关此全局区域的信息。有关 nfsstat 命令的更多信息,请参见 nfsstat(1M)。
/proc 文件系统(或 PROCFS)提供进程可见性和访问限制,同时还提供有关进程的区域关联的信息。通过 /proc 只能查看同一区域中的进程。
全局区域中的进程可以查看非全局区域中的进程和其他对象。这样,此类进程便可查看整个系统范围的内容。
在区域中,procfs 挂载如同使用 nodevices 选项进行挂载。有关 procfs 的更多信息,请参见 proc(4) 手册页。
通过 LOFS 进行挂载的范围被限制为区域中可见的文件系统部分。因此,对区域中的 LOFS 挂载没有任何限制。
使用 zonecfg 命令配置具有 fsck 二进制命令的基于存储的文件系统(例如 UFS)时,区域管理员必须指定 raw 参数。该参数指明原始(字符)设备,如 /dev/rdsk/c0t0d0s7。zoneadmd 守护进程自动在清理模式下运行 fsck 命令 (fsck -p),该命令在挂载文件系统之前以非交互方式检查并修复文件系统。如果 fsck 失败,则 zoneadmd 无法使区域达到就绪状态。由 raw 指定的路径不能是相对路径。
对于没有在 /usr/lib/fs/ fstype/fsck 中提供 fsck 二进制代码的文件系统,不能为 fsck 指定设备。如果此文件系统具有 fsck 二进制命令,则必须为 fsck 指定设备。
有关更多信息,请参见zoneadmd 守护进程和 fsck(1M) 命令。
除了在区域中挂载的文件系统中所述的缺省数据集外,您还可以使用 zonecfg 命令以及 add dataset 资源将 ZFS 数据集添加到非全局区域。此数据集在非全局区域中进行挂载并显示,并且在全局区域中也可见。区域管理员可以在此数据集中创建和销毁文件系统,并可修改此数据集的属性。
zfs 的 zoned 属性指明是否已将数据集添加到非全局区域。
# zfs get zoned tank/sales NAME PROPERTY VALUE SOURCE tank/sales zoned on local
通过数据集资源委托到非全局区域中的每个数据集都具有别名。数据集布局在区域内不可见。每个具有别名的数据集在区域中的显示方式与在池中一样。数据集的缺省别名是数据集名称中最后的部分。例如,如果委托数据集 tank/sales 使用缺省别名,则区域将看到名为 sales 的虚拟 ZFS 池。在数据集资源内设置别名属性,可以将别名定制为其他值。
每个非全局区域的 zonepath 数据集中都有一个名为 rpool 的数据集。对于所有非全局区域,该区域 rpool 数据集别名为 rpool。
my-zone# zfs list -o name,zoned,mounted,mountpoint NAME ZONED MOUNTED MOUNTPOINT rpool on no /rpool rpool/ROOT on no legacy rpool/ROOT/solaris on yes / rpool/export on no /export rpool/export/home on no /export/home
数据集别名的名称限制与 ZFS 池的名称限制相同。这些限制在 zpool(1M) 手册页中介绍。
如果要共享全局区域中的数据集,可以使用具有 add fs 子命令的 zonecfg 命令来添加通过 LOFS 方式挂载的 ZFS 文件系统。全局管理员或授予了相应权限的用户负责设置和控制数据集的属性。
有关 ZFS 的更多信息,请参见《Oracle Solaris 11.1 管理:ZFS 文件系统》中的第 9 章 "Oracle Solaris ZFS 高级主题"。
区域可以是 NFS 客户机。支持版本 2、版本 3 和版本 4 协议。有关这些 NFS 版本的信息,请参见《Oracle Solaris 管理:网络服务》中的"NFS 服务的功能"。
缺省版本为 NFS 版本 4。可以使用以下方法之一在客户机上启用其他 NFS 版本:
可以使用 sharectl(1M) 设置属性。设置 NFS_CLIENT_VERSMAX=number,以使区域在缺省情况下使用指定的版本。请参见《Oracle Solaris 管理:网络服务》中的"设置 NFS 服务"。按照《在 Oracle Solaris 11.1 中管理网络文件系统》中的"如何在客户机上选择不同的 NFS 版本"过程操作。
可以手动创建版本挂载。该方法将覆盖 sharectl 设置。请参见《Oracle Solaris 管理:网络服务》中的"设置 NFS 服务"。按照《在 Oracle Solaris 11.1 中管理网络文件系统》中的"如何在客户机上选择不同的 NFS 版本"过程操作。
请注意,不能使用 mknod(1M) 手册页中所述的 mknod 命令在非全局区域中创建特殊文件。
区域的文件系统名称空间是可从全局区域访问的名称空间的子集。可以通过以下方式,防止全局区域中的非特权进程遍历非全局区域的文件系统分层结构:
指定区域根目录的父目录仅可由根拥有、读取、写入和执行
限制访问由 /proc 导出的目录
请注意,尝试访问为其他区域挂载的 AutoFS 节点将失败。全局管理员不必具有向下派生到其他区域的自动映射。
安装了非全局区域之后,除了系统备份实用程序之外,此区域永远不能通过其他任何命令从全局区域中直接访问。此外,当非全局区域向未知环境公开之后,便不再将其视为安全区域。例如放置在可公共访问的网络上的区域,这种情况下可能会危及区域的安全并且可能会改变其文件系统的内容。如果存在任何危及区域安全的可能性,全局管理员便应将此区域视为不可信区域。
任何可通过 -R 或 -b 选项(或等效选项)接受备用根的命令,在以下情况成立时不得使用:
命令在全局区域中运行。
备用根指非全局区域中的任何路径,此路径既可以是当前运行的系统的全局区域的相对路径,也可以是备用根中全局区域的相对路径。
例如通过非全局区域根路径在全局区域中运行的 pkgadd 实用程序的 -R root_path 选项。
以下是通过备用根路径使用 -R 的命令、程序和实用程序的列表:
auditreduce
bart
installf
localeadm
makeuuid
metaroot
pkg
prodreg
removef
routeadm
showrev
syseventadm
以下是通过备用根路径使用 -b 的命令和程序的列表:
add_drv
pprosetup
rem_drv
roleadd
update_drv
useradd