什么是jail
BSD-类的操作系统从 4.2BSD 开始即提供了 chroot(8)。 我们可以创建一个子系统,Jails便是这种。类似Linux中的Docker.
配置jail
使用的系统
sh
root@freebsd_node1:~ # uname -a
FreeBSD freebsd_node1 14.3-RELEASE FreeBSD 14.3-RELEASE releng/14.3-n271432-8c9ce319fef7 GENERIC amd64
配置jail目录
根据我们的系统版本下载base系统,我们可以到ustc镜像站下载, mirrors.ustc.edu.cn/freebsd/rel...

下载完成后加压到/usr/myjail
目录,这个目录可以自己指定。
sh
root@freebsd_node1:~ # mkdir /usr/myjail
root@freebsd_node1:~ # tar -xvf base.txz -C /usr/myjail/
系统启用jail
将 jail_ebable="YES"
写入/etc/rc.conf
中。
sh
sysrc jail_ebable="YES"
创建jail配置
在/etc/jail.conf
中写入如下内容
sh
www {
host.hostname =www.example.org; # 主机名
ip4.addr = 192.168.0.99; # IP 地址
path ="/usr/myjail"; # jail 位置
devfs_ruleset = "4"; # devfs ruleset
mount.devfs; # 挂载 devfs 文件系统到 jail
exec.start = "/bin/sh /etc/rc"; # 启动命令
exec.stop = "/bin/sh /etc/rc.shutdown"; # 关闭命令
}
启动jail
启动名称为www
的jail,该名称为我们在配置文件设置的名称
sh
service jail start www
查看运行的jail
使用jls
命令可以查看到我们的jail正常运行了。
sh
root@freebsd_node1:~ # jls
JID IP Address Hostname Path
1 192.168.0.99 www.example.org /usr/myjail
登陆jail
使用id登陆
sh
root@freebsd_node1:~ # jexec 1
root@www:/ #
root@www:/ #
使用名称登陆
sh
root@freebsd_node1:~ # jexec www
root@www:/ #
root@www:/ #
root@www:/ #
停止jail
sh
root@freebsd_node1:~ # service jail stop www
Stopping jails: www.