sandbox - 在受限环境中执行程序
sandbox -s sandboxname [command]
sandbox [-n] [-l clearance] [command]
sandbox 命令可用于在受限环境中执行程序。缺省情况下,它会启动一个受限 shell,并降低进程安全许可。
如果使用 –s 选项指定 sandboxname,则该命令启动时会带有进程属性以及与指定沙箱关联的起始目录。这些沙箱是使用 sandboxadm(8) 命令创建的。尽管进入沙箱不需要任何特权,但是调用进程还必须具有相应的用户 ID 和安全许可。有关概述,请参见 sandboxing(7)。
本节的余下部分适用于不指定 sandboxname 的情况。应在用户起始目录中不包含敏感文件的子目录中执行 sandbox 命令。
受限 shell 会在一个新的会话中启动。缺省情况下,它会降低当前的基本特权集。它会删除 proc_info 和 proc_session 进程特权以阻止访问以该用户身份运行的其他程序。它会针对 proc_exec 特权设置扩展策略以阻止执行程序,除非程序位于当前目录或 /usr 目录下。
如果指定 –n 选项,该命令还会删除 net_access 特权以阻止以任何形式使用网络的情况。
缺省情况下,它会将用户的进程安全许可降为 ADMIN_LOW 以阻止访问带标签的文件(例如多级别 ZFS 数据集中带标签的文件)。此外,用户可以指定由安全许可支配的任何标签。
启动 sandbox 之前,用户可以使用 setlabel(1) 命令升级起始目录中的文件和目录,以便于沙箱中运行的进程不能对其进行访问。
~alice:$ cd playground ~alice/playground:$ sandbox firefox示例 2 检查进程凭证
~alice:$ cd playground ~alice/playground:$ sandbox -n ~alice/playground:$ ppriv $$ 103889: /usr/bin/bash --login flags = PRIV_XPOLICY Extended policies: {proc_exec}:/export/home/alice/playground {proc_exec}:/usr/* E: basic,!net_access,!proc_exec,!proc_info,!proc_session I: basic,!net_access,!proc_exec,!proc_info,!proc_session P: basic,!net_access,!proc_exec,!proc_info,!proc_session L: all ~alice/playground:$ plabel $$ 103889: ADMIN_LOW
有关下列属性的说明,请参见 attributes(7):
|
plabel(1), setlabel(1), privileges(7), sandboxing(7), sandboxadm(8)
The sandbox command was added in Solaris 11.4.0.