14.4. 微调和管理

您可以为 jail 设置许多不同的选项, 并让 FreeBSD 宿主系统以不同的方式与 jail 交互, 以支持更高级别的应用。 这一节将介绍:

14.4.1. FreeBSD 提供的用于微调 jail 的系统工具

对于 jail 的配置微调, 基本上都是通过设置 sysctl(8) 变量来完成的。 系统提供了一个特殊的 sysctl 子树, 全部相关的选项均在这棵子树中; 这就是 FreeBSD 内核的 security.jail.* 选项子树。 下面是与 jail 有关的主要 sysctl, 以及这些变量的默认值。 这些名字都比较容易理解, 如欲了解进一步的详情, 请参阅联机手册 jail(8)sysctl(8)

  • security.jail.set_hostname_allowed: 1

  • security.jail.socket_unixiproute_only: 1

  • security.jail.sysvipc_allowed: 0

  • security.jail.enforce_statfs: 2

  • security.jail.allow_raw_sockets: 0

  • security.jail.chflags_allowed: 0

  • security.jail.jailed: 0

系统管理员可以在 宿主系统 中, 透过设置这些变量的值来默认为 root 用户增加或取消限制。 需要注意的是, 某些限制是不能够取消的。 在 jail(8) 中的 root 用户, 无法挂载或卸下文件系统, 此外在 jail 中的 root 用户也不能加载或卸载 devfs(8) 规则集、 配置防火墙规则, 或执行其他需要修改内核数据的管理操作, 例如设置内核的 securelevel 等等。

FreeBSD 的基本系统包含一系列用于查看目前在使用的 jail 信息, 以及接入 jail 并执行管理命令所需的基本工具。 jls(8)jexec(8) 命令都是 FreeBSD 基本系统的一部分, 并可用于执行简单的任务:

  • 列出在用的 jail 以及对应的 jail 标识 (JID)、 IP 地址、 主机名和路径。

  • 从宿主系统中接入正在运行的 jail, 并在其中执行命令, 以完成一系列 jail 管理任务。 这在 root 希望干净地关闭 jail 时非常有用。 jexec(8) 工具也可以用于在 jail 中启动 shell 以便对其进行管理; 例如:

    # jexec 1 tcsh

14.4.2. 由 FreeBSD Ports 套件提供的高级管理工具

在监狱管理的许多第三方实用程序中,最完整、最有用的是sysutils/ezjail。它是一组有助于jail(8)管理的脚本。更多信息请参阅the handbook section on ezjail

14.4.3. 保持 jail 更新

Jail 应该从主机操作系统中保持更新,因为试图在 Jail 中为 userland 打补丁可能会失败,因为 FreeBSD 的默认行为是不允许在 Jail 中使用 chflags(1),这将阻止某些文件的替换。可以改变这种行为,但建议使用 freebsd-update(8)来维护 Jail。使用 -b 来指定要更新的 Jail 的路径。

使用主机中最新的 FreeBSD 补丁更新 jail,请在主机中执行以下命令:

# freebsd-update -b /here/is/the/jail fetch
# freebsd-update -b /here/is/the/jail install

要将 jail 升级到新的主要或次要版本,首先升级主机系统,如第 23.2.3 节 “执行主要及次要版号升级”中所述。一旦主机被升级并重新启动,jail 就可以升级。例如要从 12.0-RELEASE 升级到 12.1-RELEASE,在主机上运行:

# freebsd-update -b /here/is/the/jail --currently-running 12.0-RELEASE -r 12.1-RELEASE upgrade
# freebsd-update -b /here/is/the/jail install
# service jail restart myjail
# freebsd-update -b /here/is/the/jail install

如果主版本号更新了,重新安装所有软件包并重启 jail。由于FreeBSD 主版本号更新时 ABI 版本也将改变,这部是必须的,在 Host 上执行:

# pkg -j myjail upgrade -f
# service jail restart myjail

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.