一些系统管理员喜欢将 jail 分为两类: “完整的” jail, 通常包含真正的 FreeBSD 系统, 以及 “服务” jail, 专用于执行一个可能使用特权的应用或服务。 这只是一种概念上的区分, 并不影响如何建立 jail 的过程。 在联机手册 jail(8) 中对如何创建 jail 进行了清晰的阐述:
#
setenv D /here/is/the/jail
#
mkdir -p $D
#
cd /usr/src
#
make buildworld
#
make installworld DESTDIR=$D
#
make distribution DESTDIR=$D
#
mount -t devfs devfs $D/dev
第一步就是为 jail 选择一个位置。 这个路径是在宿主系统中 jail
的物理位置。 一种常用的选择是 | |
如果你已经通过使用 | |
这个命令将在 jail 目录中安装所需的可执行文件、 函数库以及联机手册等。 | |
| |
在 jail 中不是必须要挂接 devfs(8) 文件系统。 而另一方面, 几乎所有的应用程序都会需要访问至少一个设备, 这主要取决于应用程序的性质和目的。 控制 jail 中能够访问的设备非常重要, 因为不正确的配置, 很可能允许攻击者在 jail 中进行一些恶意的操作。 通过 devfs(8) 实施的控制, 可以通过由联机手册 devfs(8) 和 devfs.conf(5) 介绍的规则集配置来实现。 |
一旦装好了 jail, 就可以使用
jail(8) 工具来安装它了。 jail(8) 工具需要四个必填参数,
这些参数在 第 16.3.1 节 “Jail 是什么” 中进行了介绍。 除了这四个参数之外,
您还可以指定一些其他参数, 例如, 以特定用户身份来在 jail 中运行程序等等。
这里,
参数取决于您希望建立的 jail
的类型; 对于 虚拟系统, 可以选择
command
/etc/rc
, 因为它会完成真正的 FreeBSD 系统启动所需的操作。 对于
服务 jail, 执行的命令取决于将在 jail
中运行的应用程序。
Jail 通常应在系统启动时启动, 因此, FreeBSD
rc
机制提供了一些很方便的机制来简化这些工作。
在引导时需要启动的 jail 列表应写入 rc.conf(5) 文件:
jail_enable="YES" # 如果设为 NO 则表示不自动启动 jail
jail_list="www
" # 以空格分隔的 jail 名字列表
在 jail_list
中的名字中,
可以使用字母和数字, 而不应使用其他字符。
对于 jail_list
中列出的 jail,
还应指定一系列对应的 rc.conf(5) 设置, 用以描述具体的 jail:
jail_www
_rootdir="/usr/jail/www" # jail 的根目录 jail_www
_hostname="www
.example.org" # jail 的主机名 jail_www
_ip="192.168.0.10" # jail 的 IP 地址 jail_www
_devfs_enable="YES" # 在 jail 中挂接 devfs jail_www
_devfs_ruleset="www_ruleset
" # 在 jail 中应用的devfs 规则集
默认情况下, 在
rc.conf(5) 中配置启动的 jail 会执行其中的 /etc/rc
脚本, 也就是说, 默认情况下将 jail 作为虚拟系统方式来启动。
对于服务 jail, 您应另外指定启动命令, 方法是设置对应的
jail_
配置。jailname
_exec_start
如欲了解全部可用的选项, 请参阅联机手册 rc.conf(5)。
/etc/rc.d/jail
脚本也可以用于手工启动或停止
rc.conf
中配置的 jail:
#
/etc/rc.d/jail start www
#
/etc/rc.d/jail stop www
目前, 尚没有一种方法来很干净地关闭 jail(8)。 这是因为通常用于正常关闭系统的命令, 目前尚不能在 jail 中使用。 目前, 关闭 jail 最好的方式, 是在 jail 外通过 jexec(8) 工具, 在 jail 中执行下列命令:
#
sh /etc/rc.shutdown
更进一步的详细说明, 请参见联机手册 jail(8)。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<[email protected]>.
关于本文档的问题请发信联系
<[email protected]>.