本章介绍以下常规区域管理主题:
有关 lx 标记区域的信息,请参见第 3 部分, lx 标记区域。
Solaris 10 1/06: 新增了在区域中卸载文件系统一节。
Solaris 10 1/06: 新增了有关区域备份和恢复过程的几节内容。请参见关于备份安装了区域的 Solaris 系统。
Solaris 10 6/06: ZFS 条目已添加到在区域中挂载文件系统中的表内。
Solaris 10 8/07: 以下信息是此发行版中的新增或更新内容:
使用本发行版,非全局区域可以使用两种 IP 类型。新增了有关每种 IP 类型中可用功能的信息。请参见共享 IP 非全局区域中的联网和Solaris 10 8/07:专用 IP 非全局区域中的联网。
现在,Solaris IP 过滤器可在共享 IP 区域中使用。有关更多信息,请参见共享 IP 区域中的 Solaris IP 过滤器。
已对区域中权限设置的相关信息进行了修订。请参见表 27–1。
更新了在安装了区域的 Solaris 系统上使用的命令中的信息。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
全局区域既可作为系统的缺省区域,也可作为在系统范围内实施管理控制的区域。这种双重角色会引起管理问题。由于全局区域内的应用程序有权访问其他区域中的进程和其他系统对象,因此,管理操作的影响范围会比预期的范围更广。例如,服务关闭脚本通常使用 pkill 来通知退出具有给定名称的进程。在全局区域中运行此脚本时,将通知退出系统中所有区域内的所有此类进程。
通常需要将整个系统作为考虑范围。例如,要监视系统范围内的资源使用情况,必须查看整个系统中的进程统计信息。如果仅查看全局区域活动,则会遗漏系统中可能正在共享部分或全部系统资源的其他区域的相关信息。在没有使用资源管理功能对系统资源(如 CPU)进行严格分区的情况下,此类查看尤为重要。
因此,全局区域中的进程可以查看非全局区域中的进程和其他对象。这样,此类进程便可查看整个系统范围的内容。控制信号或将信号发送到其他区域中进程的功能由权限 PRIV_PROC_ZONE 加以限制。此权限类似于 PRIV_PROC_OWNER,因为它允许进程覆盖对非特权进程设定的限制。在这种情况下,所谓的限制是指全局区域中的非特权进程无法向其他区域中的进程发送信号或控制这些进程。即使进程的用户 ID 相匹配或者正在运行的进程拥有 PRIV_PROC_OWNER 权限,也会存在上述限制。可以删除其他特权进程的 PRIV_PROC_ZONE 权限,以将操作限制为仅对全局区域有效。
有关使用 zoneidlist 匹配进程的信息,请参见 pgrep(1) 和 pkill(1) 手册页。
只有同一区域中的进程才能通过使用进程 ID 的系统调用接口(例如 kill 和 priocntl 命令)进行查看。有关信息,请参见 kill(1) 和 priocntl(1) 手册页。
对 ps 命令进行了以下修改:
-o 选项用于指定输出格式。使用此选项,可以列显进程的区域 ID 或运行此进程的区域名称。
-z zonelist 选项用于仅列出指定区域中的进程。可以通过区域名称或区域 ID 指定区域。只有在全局区域中执行命令时,此选项才有用。
-Z 选项用于列显与进程关联的区域名称。区域名称在列标题 ZONE 下列显。
有关更多信息,请参见 ps(1) 手册页。
已将 -z zonename 选项添加到以下 Solaris 实用程序。可以使用此选项将信息过滤为仅包括指定的一个或多个区域。
ipcs(请参见 ipcs(1) 手册页)
pgrep(请参见 pgrep(1) 手册页)
ptree(请参见 proc(1) 手册页)
prstat(请参见 prstat(1M) 手册页)
有关对命令所做的更改的完整列表,请参见表 27–5。
区域管理员可以设置 /etc/nodename 中由 uname -n 返回的节点名称。节点名称必须是唯一的。
本节介绍有关安装了区域的 Solaris 系统上文件系统问题的相关信息。每个区域都有自己的文件系统分层结构部分,根目录称为区域 root。区域中的进程仅可访问区域根目录下的分层结构部分中的文件。chroot 实用程序可以在区域中使用,但是仅用于将进程限制在区域内的根路径。有关 chroot 的更多信息,请参见 chroot(1M)。
mount 实用程序的 -o nosuid 选项具有以下功能:
在使用 nosetuid 选项挂载的文件系统上,setuid 二进制命令中的进程无法使用 setuid 二进制命令权限运行。而是使用执行此二进制命令的用户权限运行。
例如,如果用户执行属于 root 的 setuid 二进制命令,则进程使用此用户的权限运行。
不允许打开文件系统中的特定设备项。此行为相当于指定 nodevices 选项。
所有可使用 mount 实用程序(如 mount(1M) 手册页中所述)挂载的 Solaris 文件系统都可以使用这一特定于文件系统的选项。在本指南中,这些文件系统在在区域中挂载文件系统中列出。同时也对挂载功能进行了说明。有关 -o nosuid 选项的更多信息,请参见《系统管理指南:网络服务》中的“访问网络文件系统(参考)”。
从区域中挂载文件系统时,将应用 nodevices 选项。例如,如果区域被授予访问对应于 UFS 文件系统的块设备 (/dev/dsk/c0t0d0s7) 和原始设备 (/dev/rdsk/c0t0d0s7) 的权限,则从区域中挂载此文件系统时,会自动使用 nodevices 选项挂载。此规则不适用于通过 zonecfg 配置指定的挂载。
下表介绍用于在非全局区域中挂载文件系统的选项。其他挂载方法过程在配置、检验并提交区域和在正在运行的非全局区域中挂载文件系统中介绍。
对于未在此表中列出的任意文件系统类型,如果它在 /usr/lib/fstype/mount 中具有挂载二进制命令,则可以在配置中指定此文件系统类型。
文件系统 |
非全局区域中的挂载选项 |
---|---|
AutoFS |
不能使用 zonecfg 挂载,不能从全局区域中手动挂载到非全局区域。可以在区域中挂载。 |
CacheFS |
不能在非全局区域中使用。 |
FDFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
HSFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
LOFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
MNTFS |
不能使用 zonecfg 挂载,不能从全局区域中手动挂载到非全局区域。可以在区域中挂载。 |
NFS |
不能使用 zonecfg 挂载。当前区域所支持的版本 V2、V3 和 V4 可以在区域中挂载。 |
PCFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
PROCFS |
不能使用 zonecfg 挂载,不能从全局区域中手动挂载到非全局区域。可以在区域中挂载。 |
TMPFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
UDFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
UFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 |
XMEMFS |
可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。 在未来的发行版中,将从 Solaris 系统中删除对此文件系统的支持。 |
ZFS |
可以使用 zonecfg dataset 和 fs 资源类型进行挂载。 |
有关更多信息,请参见如何配置区域、在正在运行的非全局区域中挂载文件系统和 mount(1M) 手册页。
卸载文件系统的能力将取决于执行初始挂载的人员。如果使用 zonecfg 命令将文件系统指定为区域配置的一部分,则全局区域将拥有此挂载,而非全局区域的区域管理员无法卸载该文件系统。如果在非全局区域中挂载文件系统(例如指定区域 /etc/vfstab 文件中的挂载),则非全局区域的区域管理员可以卸载该文件系统。
在区域中挂载某些文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。已修改的文件系统列表如下。
Autofs 是一项可自动挂载相应文件系统的客户端服务。当客户机尝试访问目前未挂载的文件系统时,AutoFS 文件系统会拦截请求并调用 automountd 以挂载请求的目录。在区域中建立的 AutoFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。有关 AutoFS 的更多信息,请参见《系统管理指南:网络服务》中的“Autofs 如何工作”。
每个区域都运行自己的 automountd 副本。自动映射和超时由区域管理员控制。不能跨越非全局区域的 AutoFS 挂载点从全局区域触发其他区域中的挂载。
触发其他挂载时,便会在内核中创建某些 AutoFS 挂载。此类挂载不能使用常规 umount 接口删除,因为它们必须作为一个组进行挂载或卸载。请注意,提供此功能是为了关闭区域。
MNTFS 是一款虚拟文件系统,可提供本地系统中已挂载文件系统表的只读访问权限。在非全局区域中使用 mnttab 可查看的一组文件系统是该区域中已挂载的一组文件系统和一个根 (/) 项。具有无法在区域中访问的特殊设备的挂载点(例如 /dev/rdsk/c0t0d0s0)都将其特殊设备的挂载点设置为与此挂载点相同。系统中的所有挂载都可从全局区域的 /etc/mnttab 表中查看。有关 MNTFS 的更多信息,请参见《系统管理指南:设备和文件系统》中的第 19 章 “挂载和取消挂载文件系统(任务)”。
在区域中建立的 NFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。
如 mount_nfs(1M) 手册页中所述,NFS 服务器不应尝试挂载自己的文件系统。因此,区域不应对由全局区域导出的文件系统执行 NFS 挂载。区域不能是 NFS 服务器。在区域中,NFS 挂载如同使用 nodevices 选项进行挂载。
nfsstat 命令输出仅与运行此命令的区域有关。例如,如果在全局区域中运行此命令,则仅报告有关此全局区域的信息。有关 nfsstat 命令的更多信息,请参见 nfsstat(1M)。
如果 zlogin 命令的打开文件或其地址空间的任意部分驻留在 NFS 上,此命令将失败。有关更多信息,请参见zlogin 命令。
/proc 文件系统(或 PROCFS)提供进程可见性和访问限制,同时还提供有关进程的区域关联的信息。通过 /proc 只能查看同一区域中的进程。
全局区域中的进程可以查看非全局区域中的进程和其他对象。这样,此类进程便可查看整个系统范围的内容。
在区域中,procfs 挂载如同使用 nodevices 选项进行挂载。有关 procfs 的更多信息,请参见 proc(4) 手册页。
通过 LOFS 进行挂载的范围被限制为区域中可见的文件系统部分。因此,对区域中的 LOFS 挂载没有任何限制。
使用 zonecfg 命令配置具有 fsck 二进制命令的基于存储的文件系统(例如 UFS)时,区域管理员必须指定 raw 参数。该参数指明原始(字符)设备,如 /dev/rdsk/c0t0d0s7。zoneadmd 在挂载文件系统之前,会自动以非交互、仅检查的模式 (fsck -m) 在此设备上运行 fsck 命令。如果 fsck 失败,则 zoneadmd 无法使区域达到就绪状态。由 raw 指定的路径不能是相对路径。
对于没有在 /usr/lib/ fstype/fsck 中提供 fsck 二进制代码的文件系统,不能为 fsck 指定设备。如果此文件系统具有 fsck 二进制命令,则必须为 fsck 指定设备。
有关更多信息,请参见zoneadmd 守护进程和 fsck(1M)。
可以使用带有 add dataset 资源的 zonecfg 命令将 ZFS 数据集添加到非全局区域。此数据集将在非全局区域中进行挂载并显示,并且在全局区域中不再可见。区域管理员可以在此数据集中创建和销毁文件系统、创建和销毁克隆对象以及修改此数据集的属性。
zfs 的 zoned 属性指明是否已将数据集添加到非全局区域。
# zfs get zoned tank/sales NAME PROPERTY VALUE SOURCE tank/sales zoned on local |
如果要共享全局区域中的数据集,可以使用具有 add fs 子命令的 zonecfg 命令来添加通过 LOFS 方式挂载的 ZFS 文件系统。全局管理员负责设置和控制数据集的属性。
有关 ZFS 的更多信息,请参见《Oracle Solaris ZFS 管理指南》中的第 10 章 “Oracle Solaris ZFS 高级主题”。
区域可以是 NFS 客户机。支持版本 2、版本 3 和版本 4 协议。有关这些 NFS 版本的信息,请参见《系统管理指南:网络服务》中的“NFS 服务的功能”
缺省版本为 NFS 版本 4。可以使用以下方法之一在客户机上启用其他 NFS 版本:
可以编辑 /etc/default/nfs 以设置 NFS_CLIENT_VERSMAX=number,从而使区域在缺省情况下使用指定的版本。请参见《系统管理指南:网络服务》中的“设置 NFS 服务”。请使用任务图中的“如何通过修改 /etc/default/nfs 文件在客户机上选择不同的 NFS 版本”过程。
可以手动创建版本挂载。此方法会覆盖 /etc/default/nfs 的内容。请参见《系统管理指南:网络服务》中的“设置 NFS 服务”。使用任务图中的“如何使用命令行在客户机上选择不同的 NFS 版本”过程。
请注意,不能使用 mknod(1M) 手册页中所述的 mknod 命令在非全局区域中创建特殊文件。
区域的文件系统名称空间是可从全局区域访问的名称空间的子集。可以通过以下方式,防止全局区域中的非特权进程遍历非全局区域的文件系统分层结构:
指定区域根目录的父目录仅可由根拥有、读取、写入和执行
限制访问由 /proc 导出的目录
请注意,尝试访问为其他区域挂载的 AutoFS 节点将失败。全局管理员不必具有向下派生到其他区域的自动映射。
安装了非全局区域之后,除了系统备份实用程序之外,此区域永远不能通过其他任何命令从全局区域中直接访问。此外,当非全局区域向未知环境公开之后,便不再将其视为安全区域。例如放置在可公共访问的网络上的区域,这种情况下可能会危及区域的安全并且可能会改变其文件系统的内容。如果存在任何危及区域安全的可能性,全局管理员便应将此区域视为不可信区域。
任何可通过 -R 或 -b 选项(或等效选项)接受备用根的命令,在以下情况成立时不得使用:
命令在全局区域中运行。
备用根指非全局区域中的任何根路径,此路径既可以是当前运行的系统的全局区域的相对路径,也可以是备用根中全局区域的相对路径。
例如通过非全局区域根路径在全局区域中运行的 pkgadd 实用程序的 -R root_path 选项。
以下是通过备用根路径使用 -R 的命令、程序和实用程序的列表:
auditreduce
bart
flar
flarcreate
installf
localeadm
makeuuid
metaroot
patchadd
patchrm
pkgadd
pkgadm
pkgask
pkgchk
pkgrm
prodreg
removef
routeadm
showrev
syseventadm
以下是通过备用根路径使用 -b 的命令和程序的列表:
add_drv
pprosetup
rem_drv
roleadd
sysidconfig
update_drv
useradd
在安装了区域的 Solaris 系统上,区域可通过网络相互通信。所有区域都有单独的绑定或连接,并且所有区域都可运行自己的服务器守护进程。这些守护进程可以侦听相同的端口号而不会引起冲突。IP 栈通过分析传入连接的 IP 地址来解决冲突。IP 地址标识区域。
在支持区域的系统中,IP 栈对区域之间的网络通信流量执行隔离。接收 IP 通信流量的应用程序只能接收发送到同一区域的通信流量。
系统上的每个逻辑接口都属于特定的区域,缺省情况下属于全局区域。借助 zonecfg 实用程序指定给区域的逻辑网络接口用于在网络上进行通信。每个流和连接都属于打开它的进程所在的区域。
上层流和逻辑接口之间的绑定会受到限制。流只能与同一区域中的逻辑接口建立绑定。同样,来自逻辑接口的包只能传递到此逻辑接口所在区域中的上层流。
每个区域都有自己的一组绑定。每个区域都可以运行侦听同一端口号的相同应用程序,而且绑定不会失败,因为地址已处于使用状态。每个区域都可以运行自己版本的以下服务:
具有完整配置文件的 Internet 服务守护进程(请参见 inetd(1M) 手册页)
sendmail(请参见 sendmail(1M) 手册页)
apache(请参见 apache(1M) 手册页)
除全局区域之外的区域拥有受限的网络访问权限。标准 TCP 和 UDP 套接字接口均可用,但是 SOCK_RAW 套接字接口被限制为网际控制报文协议 (Internet Control Message Protocol, ICMP)。ICMP 是检测和报告网络错误状态或使用 ping 命令时所必需的。
每个需要网络连接的非全局区域都有一个或多个专用 IP 地址。这些地址与可以使用 ifconfig 命令放入区域中的逻辑网络接口关联。引导区域时,将在其中自动设置并放置通过 zonecfg 配置的区域网络接口。运行区域时,可使用 ifconfig 命令添加或删除逻辑接口。只有全局管理员才能修改接口配置和网络路由。
在非全局区域内,只有此区域的接口才能通过 ifconfig 进行查看。
有关更多信息,请参见 ifconfig(1M) 和 if_tcp(7P) 手册页。
在同一计算机上的两个区域之间,仅当转发表中的目标和区域具有“匹配的路由”时,才允许传送包。
匹配信息按如下方式执行:
在由匹配路由指定的输出接口上选择包的源地址。
缺省情况下,允许地址位于同一子网上的两个区域之间进行通信。在这种情况下,匹配路由即为子网的接口路由。
如果给定区域具有缺省路由,并且网关位于此区域的一个子网上,则允许此区域与所有其他区域进行通信。在这种情况下,匹配路由即为缺省路由。
如果匹配路由具有 RTF_REJECT 标志,则包会触发 ICMP 不可访问的消息。如果匹配路由具有 RTF_BLACKHOLE 标志,则会放弃包。全局管理员可以使用下表所述的 route 命令选项来创建具有这些标志的路由。
修饰符 |
标志 |
说明 |
---|---|---|
-reject |
RTF_REJECT |
匹配时会发出 ICMP 不可访问的消息。 |
-blackhole |
RTF_BLACKHOLE |
在更新过程中以静默方式放弃包。 |
有关更多信息,请参见 route(1M)。
Solaris IP 过滤器可提供有状态包过滤和网络地址转换 (network address translation, NAT) 功能。有状态包过滤器可以监视活动连接的状态,并使用获得的信息确定允许哪些网络包通过防火墙。Solaris IP 过滤器还包括无状态包过滤以及创建和管理地址池的功能。有关其他信息,请参见《系统管理指南:IP 服务》中的第 25 章 “Oracle Solaris : IP 过滤器(概述)”。
在非全局区域中,可以通过打开回送过滤来启用 Solaris IP 过滤器,如《系统管理指南:IP 服务》中的第 26 章 “yaraOracle Solaris : IP 过滤器(任务)”所述。
Solaris IP 过滤器是从开放源代码的 IP 过滤器软件衍生而来的。
IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。IPMP 还为具有多个接口的系统提供了包负荷分配。
所有网络配置均在全局区域中完成。可以在全局区域中配置 IPMP,然后将功能扩展到非全局区域。当配置非全局区域时,将此区域的地址放入 IPMP 组中即可实现功能扩展。此后,如果全局区域中有一个接口出现故障,则非全局区域地址将迁移到其他网络接口卡。共享 IP 区域可拥有多个 IP 地址,它可以是多个 IPMP 组的组成部分,而且多个共享的 IP 区域可使用指定的同一 IPMP 组。
在给定的非全局区域中,只有与此区域关联的接口才能通过 ifconfig 命令进行查看。
请参见如何将 IP 网络多路径功能扩展到共享 IP 非全局区域。区域配置过程在如何配置区域中介绍。有关 IPMP 功能、组件和用法的信息,请参见《系统管理指南:IP 服务》中的第 30 章 “IPMP 介绍(概述)”。
专用 IP 区域具有自己的与 IP 相关的状态和调节变量。配置该区域时,系统会为该区域分配其自己的数据链路集合。
有关可在专用 IP 非全局区域中使用的功能的信息,请参见Solaris 10 8/07:专用 IP 非全局区域。有关调节 IP ndd 变量的信息,请参见《Oracle Solaris Tunable Parameters Reference Manual》。
专用 IP 区域具有单独的 TCP/IP 栈,因此可以隔离数据链路层及其上的所有层。全局管理员可以将一个或多个数据链路名称(可以是 NIC 或 NIC 上的 VLAN)分配给一个专用 IP 区域。区域管理员可以配置这些数据链路上的 IP,其灵活性和选项与全局区域中的相同。
必须以独占方式将一个数据链路名称分配给单个区域。
可以使用 dladm show-link 命令显示分配给正在运行的区域的数据链路。
有关更多信息,请参见 dladm(1M)。
专用 IP 区域之间不存在 IP 数据包内部回送。所有包都向下发送到数据链路。通常,这意味着包通过网络接口发出。然后,类似以太网交换机或 IP 路由器的设备可将包转发到其目的地,该目的地可能位于发送者所用的同一台计算机上的不同区域。
在专用 IP 区域中可以使用在全局区域中使用的相同 IP 过滤器功能。而且在专用 IP 区域中配置 IP 过滤器的方法与在全局区域中使用的方法相同。
IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。除了容错功能以外,IPMP 还为具有多个接口的系统提供了包负荷分配。
数据链路配置在全局区域中完成。首先,使用 zonecfg 将多个数据链路接口分配给某个区域。这些数据链路接口必须连接到相同的 IP 子网。然后,区域管理员便可在专用 IP 区域内配置 IPMP。多个 IPMP 组可分配给指定的专用 IP 区域,但这些 IPMP 组无法与其他区域共享。
对区域中可用的一组设备进行了限制,以防止某个区域中的进程干扰在其他区域中运行的进程。例如,区域中的进程不能修改内核内存,也不能修改根磁盘的内容。因此,缺省情况下,只提供被视为可以在区域中安全使用的特定伪设备。在特定区域内,可使用 zonecfg 实用程序使其他设备变得可用。
Solaris 系统使用 devfs(7FS) 手册页中所述的 devfs 文件系统来管理 /devices。此名称空间中的每个元素都表示指向硬件设备、伪设备或 nexus 设备的物理路径。名称空间是设备树的一种表现形式。同样,文件系统由目录和特定于设备的文件分层结构填充。
现在作为 /(根)文件系统一部分的 /dev 文件分层结构由指向 /devices 中的物理路径的符号链接或逻辑路径组成。应用程序引用指向 /dev 中设备的逻辑路径。/dev 文件系统使用只读挂载回送挂载到区域。
/dev 文件分层结构由以下列出的组件所组成的系统进行管理:
devfsadm(请参见 devfsadm(1M) 手册页)
syseventd(请参见 syseventd(1M) 手册页)
libdevinfo 设备信息库(请参见 libdevinfo(3LIB) 手册页)
devinfo 驱动程序(请参见 devinfo(7D) 手册页)
重新配置协调管理器 (Reconfiguration Coordination Manager, RCM)(请参见《系统管理指南:设备和文件系统》中的“重新配置调整管理器 (Reconfiguration Coordination Manager, RCM) 脚本概述”)
在建立 /dev 路径名之前,依赖于 /devices 路径名的子系统不能在非全局区域中运行。
可能拥有需要指定给特定区域的设备。允许非特权用户访问块设备可能会导致通过使用这些设备造成系统出现紧急情况、总线复位或其他不良影响。在进行此类指定之前,请考虑以下问题:
在为特定区域指定 SCSI 磁带设备之前,请查看 sgen(7D) 手册页。
将物理设备放入多个区域可以在区域之间创建隐藏通道。使用此类设备的全局区域应用程序可能会存在非全局区域危及数据或损坏数据的风险。
在非全局区域中,可以使用 modinfo(1M) 手册页中所述的 modinfo 命令来检查已装入的内核模块的列表。
大多数与内核、设备和平台管理相关的操作都不能在非全局区域内部执行,因为修改平台硬件配置会破坏区域安全模型。这些操作包括:
添加和删除驱动程序
明确装入和卸载内核模块
启动动态重新配置 (dynamic reconfiguration, DR) 操作
使用影响物理平台状态的功能
以下实用程序无法在区域中使用,因为它们所依赖的设备通常不存在:
cdrecord(请参见 /usr/share/man/man1 目录中的手册页。)
cdrw(请参见 cdrw(1) 手册页)
rmformat(请参见 rmformat(1) 手册页)
add_drv(请参见 add_drv(1M) 手册页)
disks(请参见 disks(1M) 手册页)
prtconf(请参见 prtconf(1M) 手册页)
prtdiag(请参见 prtdiag(1M) 手册页)
rem_drv(请参见 rem_drv(1M) 手册页)
eeprom 实用程序可用于查看区域中的设置,但不能用于更改设置。有关更多信息,请参见 eeprom(1M) 和 openprom(7D) 手册页。
通常,所有应用程序均可在非全局区域中运行。但是,以下应用程序类型可能不适用于此环境:
使用影响系统整体的特权操作的应用程序。例如设置全局系统时钟或锁定物理内存的操作。
依赖于非全局区域中不存在的某些设备的极少数应用程序,例如 /dev/kmem。
预期在运行时或者在安装、修补或升级后能够写入 /usr 的应用程序。这是因为在缺省情况下,/usr 对于非全局区域而言是只读的。有时,无需更改应用程序本身,便可缓解与此应用程序类型关联的问题。
在共享 IP 区域中,应用程序依赖于 /dev/ip 中的设备。
有关在区域中使用资源管理功能的其他信息,另请参阅本指南第 1 部分中介绍此功能的章节。
资源管理章节中所述的任何资源控制和属性都可以在全局和非全局区域 /etc/project 文件、NIS 映射或 LDAP 目录服务中设置。给定区域的设置仅影响此区域。在不同区域中独立运行的项目可以在每个区域中分别设置控制。例如,项目 A 在全局区域中可以设置 project.cpu-shares=10,而在非全局区域中可以设置 project.cpu-shares=5。系统中可能同时运行若干个 rcapd 实例,而每个实例都仅在自己的区域中运行。
某个区域中用于在该区域中控制项目、任务和进程的资源控制和属性还要满足其他与池和区域范围资源控制相关的要求。
“一个区域,一个池”规则适用于非全局区域。多个非全局区域可以共享一个池的资源。但是,全局区域中的进程可以由拥有足够权限的进程绑定到任意池。资源控制器 poold 仅在全局区域中运行,它可以在其中的多个池中运行。在非全局区域中运行的 poolstat 实用程序仅显示与该区域关联的池的相关信息。在非全局区域中运行的不带参数的 pooladm 命令仅显示与此区域关联的池的相关信息。
区域范围的资源控制在 project 文件中设置时不会生效。区域范围的资源控制通过 zonecfg 实用程序设置。
本节介绍如何在区域中使用公平份额调度器 (fair share scheduler, FSS)。
区域的 FSS CPU 份额是分层的。全局和非全局区域的份额由全局管理员通过区域范围的资源控制 zone.cpu-shares 设置。然后,可以为该区域中的每个项目定义 project.cpu-shares 资源控制,以便进一步细分通过区域范围的控制设置的份额。
要使用 zonecfg 命令分配区域份额,请参见如何在全局区域中设置 zone.cpu-shares。有关 project.cpu-shares 的更多信息,请参见可用的资源控制。有关说明如何设置临时份额的示例过程,另请参见在安装了区域的 Solaris 系统上使用公平份额调度器。
可以使用 zone.cpu-shares 为全局区域和非全局区域分配 FSS 份额。如果 FSS 是您系统中的缺省调度程序,并且尚未分配份额,则缺省情况下,会分配给每个区域(包括全局区域)一个份额。如果系统上有一个非全局区域,则将通过 zone.cpu-shares(定义非全局区域将相对于全局区域接到的 CPU 比例)为此区域提供两个份额。这两个区域之间的 CPU 比例为 2:1。
当扩展记帐子系统在全局区域中运行时,它会收集和报告整个系统(包括非全局区域)的信息。全局管理员还可以确定每个区域的资源占用情况。
扩展记帐子系统允许每个区域针对基于进程和基于任务的记帐具有不同的记帐设置和文件。对于进程,exacct 记录可以使用区域名称 EXD PROC ZONENAME 进行标记;对于任务,则可以使用区域名称 EXD TASK ZONENAME 进行标记。记帐记录将写入全局区域的记帐文件以及每个区域的记帐文件。EXD TASK HOSTNAME、EXD PROC HOSTNAME 和 EXD HOSTNAME 记录包含用于执行进程或任务的区域的 uname -n 值,而不是全局区域的节点名称。
有关 IPQoS 流记帐的信息,请参见 《系统管理指南:IP 服务》中的第 36 章 “使用流记帐和统计信息收集功能(任务)”。
仅允许进程拥有部分权限。权限限制可防止某个区域执行可能会影响其他区域的操作。通过权限设置,可以限制区域内特权用户的功能。要显示区域内可用权限的列表,请使用 ppriv 实用程序。
下表列出了所有 Solaris 权限以及相对于区域每个权限的状态。缺省权限集不包含可选权限,但可以通过 limitpriv 属性指定它们。最终的权限集中必须包含必需权限。最终的权限集中不能包含禁止权限。
从 Solaris 10 11/06 发行版开始,limitpriv 属性就已经可用了。
表 27–1 区域中权限的状态
权限 |
状态 |
说明 |
---|---|---|
cpc_cpu |
可选 |
访问某些 cpc(3CPC) 计数器的权限 |
dtrace_proc |
可选 |
fasttrap 和 pid 提供器;plockstat(1M) |
dtrace_user |
可选 |
profile 和 syscall 提供器 |
graphics_access |
可选 |
访问 agpgart_io(7I) 的 ioctl(2) |
graphics_map |
可选 |
访问 agpgart_io(7I) 的 mmap(2) |
net_rawaccess |
在共享 IP 区域中为可选。 在专用 IP 区域中为缺省值。 |
原始 PF_INET/PF_INET6 包访问权限 |
proc_clock_highres |
可选 |
使用高精度计时器 |
proc_priocntl |
可选 |
调度控制;priocntl(1) |
sys_ipc_config |
可选 |
增加 IPC 消息队列缓冲区大小 |
sys_time |
可选 |
系统时间处理;xntp(1M) |
dtrace_kernel |
禁止 |
当前不支持 |
proc_zone |
禁止 |
当前不支持 |
sys_config |
禁止 |
当前不支持 |
sys_devices |
禁止 |
当前不支持 |
sys_linkdir |
禁止 |
当前不支持 |
sys_net_config |
禁止 |
当前不支持 |
sys_res_config |
禁止 |
当前不支持 |
sys_suser_compat |
禁止 |
当前不支持 |
proc_exec |
必需,缺省 |
用于启动 init(1M) |
proc_fork |
必需,缺省 |
用于启动 init(1M) |
sys_mount |
必需,缺省 |
需要用于挂载必需的文件系统 |
sys_ip_config |
在专用 IP 区域中为必需、缺省权限。 在共享 IP 区域中为禁止权限。 |
在专用 IP 区域中需要用于引导和初始化 IP 联网 |
contract_event |
缺省值 |
供合约文件系统使用 |
contract_observer |
缺省值 |
合约调查,不考虑 UID |
file_chown |
缺省值 |
文件所有权更改 |
file_chown_self |
缺省值 |
拥有文件的属主/组更改 |
file_dac_execute |
缺省值 |
执行访问权限,不考虑模式/ACL |
file_dac_read |
缺省值 |
读取访问权限,不考虑模式/ACL |
file_dac_search |
缺省值 |
搜索访问权限,不考虑模式/ACL |
file_dac_write |
缺省值 |
写入访问权限,不考虑模式/ACL |
file_link_any |
缺省值 |
链接访问权限,不考虑属主 |
file_owner |
缺省值 |
其他访问权限,不考虑属主 |
file_setid |
缺省值 |
更改 setid、setgid 和 setuid 文件的权限 |
ipc_dac_read |
缺省值 |
IPC 读取访问权限,不考虑模式 |
ipc_dac_owner |
缺省值 |
IPC 写入访问权限,不考虑模式 |
ipc_owner |
缺省值 |
IPC 其他访问权限,不考虑模式 |
net_icmpaccess |
缺省值 |
ICMP 包访问权限: ping(1M) |
net_privaddr |
缺省值 |
绑定到特权端口 |
proc_audit |
缺省值 |
生成审计记录 |
proc_chroot |
缺省值 |
更改 root 目录 |
proc_info |
缺省值 |
检查进程 |
proc_lock_memory |
缺省值 |
锁定内存;shmctl(2) 和 mlock(3C) 如果系统管理员要将此权限分配给非全局区域,请同时考虑设置 zone.max-locked-memory 资源控制以防止区域锁定所有内存。 |
proc_owner |
缺省值 |
控制进程,不考虑属主 |
proc_session |
缺省值 |
控制进程,不考虑会话 |
proc_setid |
缺省值 |
任意设置用户/组 ID |
proc_taskid |
缺省值 |
将任务 ID 分配给调用方 |
sys_acct |
缺省值 |
记帐管理 |
sys_admin |
缺省值 |
简单的系统管理任务 |
sys_audit |
缺省值 |
审计管理 |
sys_nfs |
缺省值 |
NFS 客户端支持 |
sys_resource |
缺省值 |
资源限制处理 |
下表列出了区域中所有 Solaris Trusted Extensions(高可靠扩展版)权限,以及每个权限的状态。缺省权限集不包含可选权限,但可以通过 limitpriv 属性指定它们。
仅当使用 Solaris Trusted Extensions(高可靠扩展版)配置了系统时,才会解释这些权限。
Solaris Trusted Extensions(高可靠扩展版)权限 |
状态 |
说明 |
---|---|---|
file_downgrade_sl |
可选 |
将文件或目录的敏感度标签设置为不影响现有敏感度标签的敏感度标签 |
file_upgrade_sl |
可选 |
将文件或目录的敏感度标签设置为影响现有敏感度标签的敏感度标签 |
sys_trans_label |
可选 |
转换优先级低于敏感度标签的标签 |
win_colormap |
可选 |
颜色映射限制覆盖 |
win_config |
可选 |
配置或销毁 X 服务器永久保留的资源 |
win_dac_read |
可选 |
从非客户机用户 ID 拥有的窗口资源中进行读取 |
win_dac_write |
可选 |
写入或创建非客户机用户 ID 拥有的窗口资源 |
win_devices |
可选 |
在输入设备上执行操作。 |
win_dga |
可选 |
使用直接图形访问 X 协议扩展;需要帧缓冲权限 |
win_downgrade_sl |
可选 |
将窗口资源的敏感度标签更改为优先级低于现有标签的新标签 |
win_fontpath |
可选 |
添加其他字体路径 |
win_mac_read |
可选 |
从其标签优先级高于客户机标签的窗口资源中进行读取 |
win_mac_write |
可选 |
写入其标签优先级与客户机标签优先级不同的窗口资源 |
win_selection |
可选 |
请求移动数据,而无需确认者介入 |
win_upgrade_sl |
可选 |
将窗口资源的敏感度标签更改为优先级不低于现有标签的新标签 |
net_bindmlp |
缺省值 |
允许绑定到多级端口 (MLP) |
net_mac_aware |
缺省值 |
允许通过 NFS 向下读取 |
要在配置非全局区域过程中更改权限,请参见配置、检验并提交区域。
要检查权限集,请参见使用 ppriv 实用程序。有关权限的更多信息,请参见 ppriv(1) 手册页和《系统管理指南:安全性服务》。
可提供 IP 数据报保护的 Internet 协议安全体系结构 (Internet Protocol Security Architecture, IPsec) 将在《系统管理指南:IP 服务》中的第 19 章 “IP 安全体系结构(概述)”进行介绍。Internet 密钥交换 (Internet Key Exchange, IKE) 协议用于自动管理进行验证和加密所需的加密材料。
有关更多信息,请参见 ipsecconf(1M) 和 ipseckey(1M) 手册页。
IPsec 可以在全局区域中使用。但是,非全局区域中的 IPsec 不能使用 IKE。因此,您必须在全局区域中使用 Internet 密钥交换 (Internet Key Exchange, IKE) 协议来为非全局区域管理 IPsec 密钥和策略。请使用对应于要配置的非全局区域的源地址。
IPsec 可以在专用 IP 区域中使用。
Solaris 审计将在《系统管理指南:安全性服务》中的第 27 章 “Solaris 审计(概述)”进行介绍。有关与审计关联的区域注意事项,请参见以下各节:
审计记录用于介绍事件,例如登录到系统或写入文件。记录由作为审计数据集合的标记组成。使用 zonename 标记,可以配置 Solaris 审计来标识每个区域的审计事件。使用 zonename 标记,可以生成以下信息:
审计记录,使用生成记录的区域名称进行标记
特定区域的审计日志,全局管理员使此日志可用于区域管理员。
Solaris 审计跟踪在全局区域中配置。审计策略在全局区域中设置并应用于所有区域中的进程。审计记录可以使用发生事件的区域名称进行标记。要在审计记录中包括区域名称,必须在安装任何非全局区域之前编辑 /etc/security/audit_startup 文件。区域名称选择区分大小写。
要在全局区域中将审计配置为包括所有区域审计记录,请将以下行添加到 /etc/security/audit_startup 文件:
/usr/sbin/auditconfig -setpolicy +zonename |
以全局区域中全局管理员的身份执行 auditconfig 实用程序:
global# auditconfig -setpolicy +zonename |
有关其他信息,请参见 audit_startup(1M) 和 auditconfig(1M) 手册页以及《系统管理指南:安全性服务》中的“配置审计文件(任务列表)”。
安装了非全局区域之后,便可将全局区域中的 audit_control 文件和 audit_user 文件复制到此区域的 /etc/security 目录。这些文件可能需要进行修改以反映此区域的审计需求。
例如,可以将每个区域配置为以不同的方式审计某些用户。要按用户应用不同的预选条件,必须编辑 audit_control 和 audit_user 文件。如有必要,还可能需要修改非全局区域中的 audit_user 文件以反映区域的用户基础。由于可以针对审计用户以不同的方式配置每个区域,因此,audit_user 文件可能为空。
有关其他信息,请参见 audit_control(4) 和 audit_user(4) 手册页。
通过如在全局区域中配置审计中所述包括 zonename 标记,可以按区域对 Solaris 审计记录进行分类。然后,可以使用 auditreduce 命令收集来自不同区域的记录,从而为特定区域创建日志。
有关更多信息,请参见 audit_startup(1M) 和 auditreduce(1M) 手册页。
coreadm 命令用于指定因异常终止进程而生成的核心转储文件的名称和位置。通过指定 %z 变量,可以生成核心转储文件路径,此路径包括执行进程的区域的 zonename。路径名相对于区域的根目录。
有关更多信息,请参见 coreadm(1M) 和 core(4) 手册页。
只需要 dtrace_proc 和 dtrace_user 权限的 DTrace 程序可以在非全局区域中运行。要将这些权限添加到非全局区域中的可用权限的集合中,请使用 zonecfg limitpriv 属性。有关说明,请参见如何使用 DTrace。
通过 dtrace_proc 支持的提供器是 fasttrap 和 pid。通过 dtrace_user 支持的提供器是 profile 和 syscall。DTrace 提供器和操作的范围限制在区域内。
有关更多信息,请参见非全局区域中的权限。
可以在单个非全局区域中执行备份,也可以在全局区域中备份整个系统。
由于许多非全局区域通过使用回送文件系统只读挂载(通常为 /usr、/lib、/sbin 和 /platform)与全局区域共享文件,因此,必须使用全局区域备份方法来备份 lofs 目录。
请不要在非全局区域中备份与全局区域共享的 lofs 文件系统。如果非全局管理员尝试从非全局区域中恢复 lofs 文件系统,则可能会导致严重问题。
在以下情况下,可能会选择在全局区域中执行备份:
需要备份非全局区域的配置以及应用程序数据。
主要关注从灾难中恢复的功能。如果需要恢复系统上的所有内容或者绝大部分内容(包括区域的根文件系统及其配置和全局区域中的数据),则应在全局区域中执行备份。
要使用 ufsdump 命令来执行数据备份。由于将物理磁盘设备导入非全局区域将更改区域的安全配置文件,因此,应仅在全局区域中使用 ufsdump。
有商业网络备份软件。
如有可能,网络备份软件应配置为跳过所有继承的 lofs 文件系统。应在区域及其应用程序处于静态时对要备份的数据执行备份。
在以下情况下,可能会决定在非全局区域内执行备份。
非全局区域管理员要求可以从不太严重的故障中恢复,或者恢复特定于某区域的应用程序数据或用户数据。
使用区域中运行的特定应用程序或服务的备份软件。可能很难在全局区域中执行备份软件,因为全局区域和非全局区域中的应用程序环境(例如目录路径和已安装的软件)不同。
如果应用程序可以按照自己的备份计划在每个非全局区域中执行快照,并将这些备份存储在从全局区域导出的可写目录中,则作为备份策略的一部分,全局区域管理员可以从全局区域中选取这些单个备份。
可以在非全局区域中备份所有内容,或者,如果区域的配置更改并不频繁,也可以仅对应用程序数据执行备份。
如果应用程序数据保存在文件系统的特定部分,则可以决定仅对此数据执行常规备份。可以不必经常备份区域的根文件系统,因为其更改并不频繁。
必须确定应用程序放置其文件的位置。可以存储文件的位置如下:
用户的起始目录
/etc(对于配置数据文件)
/var
假设应用程序管理员知道数据的存储位置,则可以创建一个系统,其中每个区域均可使用其各自的可写目录。然后,每个区域可以存储自己的备份数据,并且全局管理员可以将此位置作为系统上的备份位置之一。
如果数据库应用程序数据不在自己的目录下,则应用以下规则:
首先确保数据库处于一致的状态。
数据库必须处于静态,因为它们具有要刷新到磁盘的内部缓冲区。请确保非全局区域中的数据库处于静态,然后从全局区域中开始备份。
在每个区域内,使用文件系统功能对数据执行快照,然后直接从全局区域中备份快照。
此进程将最大程度缩短备份窗口所用的时间,并且不需要备份所有区域中的客户机/模块。
每个非全局区域都可以对自己的专用文件系统捕获快照,前提是此区域便于执行快照并且应用程序处于暂时静止状态。随后,全局区域可以备份每个快照,并在应用程序再次使用之后将备份放置在磁带上。
此方法具有如下优点:
需要较少的磁带设备。
不需要在非全局区域之间进行协调。
不需要直接为区域指定设备,从而提高了安全性。
通常,此方法保持在全局区域中执行系统管理,这是首选方法。
如果恢复在全局区域中执行的备份,则全局管理员可以重新安装受影响的区域,然后恢复该区域的文件。请注意,上述情况以下面的假设为前提:
所要恢复的区域的配置与执行备份时的配置相同。
在执行备份到恢复区域这段时间内,未升级或修补全局区域。
否则,恢复操作可能会覆写某些应手动合并的文件。
例如,如果全局区域在备份之后和恢复非全局区域之前已进行修补,则可能需要手动合并文件。在这种情况下,恢复已备份的区域文件时必须谨慎,因为备份文件可能与新安装的区域(此区域在将修补程序应用到全局区域之后生成)不兼容。在这种情况下,必须逐个检查文件并将它们与新安装的区域中的副本进行比较。在多数情况下,会发现可以直接在区域中复制文件,但在某些情况下,必须将最初对文件所做的更改合并到区域中新安装或修补的副本中。
如果全局区域中的所有文件系统均已丢失,则只要备份非全局区域各自的根文件系统,恢复全局区域中的所有内容时也会恢复非全局区域。
表 27–3 中列出的命令提供了区域功能的主要管理接口。
表 27–3 用于管理区域的命令
命令参考 |
说明 |
---|---|
登录到非全局区域 |
|
显示当前区域的名称 |
|
管理系统上的区域 |
|
用于设置区域配置 |
|
用于在区域 ID 和区域名称之间进行映射 |
|
提供区域功能的说明 |
|
区域控制台设备驱动程序 |
zoneadmd 守护进程是管理区域虚拟平台的主要进程。zoneadmd 守护进程的手册页为 zoneadmd(1M)。此守护进程并没有构成编程接口。
下表中的命令可与资源上限设置守护进程结合使用。
表 27–4 用于 rcapd 的命令
命令参考 |
说明 |
---|---|
监视具有上限的项目的资源利用率。 |
|
配置资源上限设置守护进程,显示已配置的资源上限设置守护进程的当前状态,以及启用或禁用资源上限设置。还可用于设置临时内存上限。 |
|
资源上限设置守护进程。 |
下表中介绍的命令已被修改为可在安装了区域的 Solaris 系统上使用。这些命令具有的选项特定于区域或者以不同的方式显示信息。这些命令将在手册页中列出。
表 27–5 修改为可在安装了区域的 Solaris 系统上使用的命令
命令参考 |
说明 |
---|---|
添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
添加了 -z zoneidlist 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
添加了表达式 zone,以便与 -l 选项一起使用来列出当前区域中的所有可用权限。还可以在 zone 后使用选项 -v 来获取详细输出。 |
|
可以在 idlist 和 -i idtype 中使用区域 ID 来指定进程。在非全局区域中,可以使用 priocntl -i zoneid 命令将正在运行的进程移至其他调度类。 |
|
仅向 ptree 中添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
向与 -o 选项一起使用的已识别 format 名称的列表中添加了 zonename 和 zoneid。 添加了 -z zonelist 以便仅列出指定区域中的进程。可以通过区域名称或区域 ID 指定区域。只有在全局区域中执行命令时,此选项才有用。 添加了 -Z 以便显示与进程关联的区域的名称。区域名称在另一个列标题 ZONE 下显示。 |
|
向与 -i 选项一起使用的有效参数的列表中添加了 zoneid。 |
|
如果在启用了池功能的非全局区域中执行,则 -b、-c、-g、-m、-p、-u、-w 和 -y 选项仅针对绑定有区域的池的处理器集中的处理器显示值。 |
|
添加了 zonename 标记。 |
|
添加了 -z zone-name 选项。新增了获取区域审计日志的功能。 |
|
添加了变量 %z 以便标识执行进程的区域。 |
|
添加了 -Z 选项以便显示所有可见区域中的挂载。 |
|
添加了 zone 选项以用于全局区域(缺省设置),添加了 -zone zonename 以用于非全局区域。 |
|
如果在启用了池功能的非全局区域中执行,则仅针对绑定有区域的池的处理器集中的那些处理器提供信息。 |
|
如果在全局区域中执行,将针对所有区域显示 kstat。如果在非全局区域中执行,则只显示具有匹配 zoneid 的 kstat。 |
|
如果在启用了池功能的非全局区域中执行,则命令仅针对绑定有区域的池的处理器集中的处理器显示行。 |
|
在全局区域中使用时,会显示所有区域的信息。在专用 IP 区域中,对 TCP/IP 模块执行的 ndd 只显示该区域的信息。 |
|
仅显示当前区域的信息。 |
|
仅显示当前区域的统计信息。 |
|
添加了 zoneid 列表。有关使用具有资源池的区域的信息,另请参见区域中使用的资源池。 |
|
添加了 -z zoneidlist 选项。还添加了 -Z 选项。 如果在启用了池功能的非全局区域中执行,则仅针对绑定有区域的池的处理器集中的处理器显示进程所用最近 CPU 时间的百分比。 -a、-t、-T、-J 和 -Z 选项的输出显示 SWAP,而不是 SIZE 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择合理的 zone.max-swap 设置。 |
|
如果在非全局区域中执行,则仅显示有关区域可见的处理器的信息。 |
|
用法更改。在非全局区域中指定时,-F 选项不起作用,因为始终设置了“不要分段”位。 |
|
在启用了池功能的非全局区域中执行时,仅针对绑定有区域的池的处理器集中的处理器报告统计信息。应用于 -p 选项以及 page、faults 和 cpu 等报告字段的输出。 |
|
添加了 AUDIT_ZONENAME 以便生成每个审计记录的区域 ID 标记。 |
|
添加了 P_ZONEID id 参数。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
添加了 P_ZONEID 作为 idtype。添加了区域作为可能的 P_MYID 规范选项。向 EINVAL 错误说明中的有效 idtype 列表中添加了 P_ZONEID。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
将 PRIV_SYS_CONFIG 更改为 PRIV_SYS_ADMIN。 |
|
如果 file 指向的文件不是绝对路径,则会返回 ENOENT。 |
|
如果调用方位于非全局区域中并且启用了池功能,则此行为相当于使用 PS_MYID 的 psetid 进行调用。 |
|
向可以指定的目标进程中添加了区域 ID。向 EINVAL 错误说明中添加了区域 ID。 |
|
针对调用方区域内的所有可用权限的集合添加了 "zone" 字符串。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,则 sysconf(_SC_NPROCESSORS_CONF) 和 sysconf(_SC_NPROCESSORS_ONLN) 将返回绑定有区域的池的处理器集中的处理器数。 |
|
添加了 ucred_getzoneid() 函数,此函数将返回处理器的区域 ID 或 -1(如果未提供区域 ID)。 |
|
添加了 n_type: NT_ZONENAME。此项包含一个描述运行进程的区域名称的字符串。 |
|
现在,提供了可选参数和一个环境变量来支持区域。 |
|
添加了获取区域中所运行进程的相关信息的功能。 |
|
添加了在设置 zonename 审计策略时使用的 in<zone name > 字段。 |
|
添加了 PRIV_PROC_ZONE,它允许某个进程跟踪其他区域中的进程或向这些进程发送信号。请参见 zones(5)。 |
|
添加了区域 ioctl() 调用。 |
|
添加了区域参数。 |
|
添加了 crgetzoneid(),它将从 cr 指向的用户证书中返回区域 ID。 |