是否有用于管理了解 ZFS 的 FreeBSD jails 的工具?

lar*_*sks 6 freebsd zfs jail

FreeBSD 下的 ZFS 允许将文件系统分配给监狱,这样监狱中具有适当权限的帐户可以访问文件系统,创建新的从属文件系统,等等。至少在 8-STABLE 中,这些功能没有集成到现有/etc/rc.d/jail脚本中。基本流程类似于:

sysctl -w security.jail.enforce_statfs=0
sysctl -w security.jail.mount_allowed=1
zfs set jailed=on <filesystem>
zfs jail <jid> <filesystem>
Run Code Online (Sandbox Code Playgroud)

并且还需要暴露zfs监狱内的设备节点。

与此同时,似乎有大量工具(ezjail、jailer、warden 和一般/usr/ports/sysutils/*jail*)声称更容易/更好/更强大/等等,但其中大多数似乎只是轻微维护而不是与标准监狱脚本相比,这确实是一场胜利。

我想避免重新发明轮子。是否有与 ZFS 集成良好的监狱管理工具?我正在寻找一些可以在启动 jail 时设置必要的 devfs 规则、sysctl 设置和 zfs 属性的东西……并且理想情况下允许对 jails 进行基于名称的引用,尽管许多第三方都支持这种引用 -可悲的是,库存监狱脚本中缺少派对工具。

lar*_*sks 4

经过一番研究,发现最新版本的ezjail已经有了这个支持。关键部分是以下配置选项/usr/local/etc/ezjail.conf

ezjail_use_zfs="YES"
ezjail_jailzfs="tank/jails"
Run Code Online (Sandbox Code Playgroud)

-c zfs在创建监狱时使用,如下所示:

ezjail-admin create -c zfs myjail 192.168.1.10
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令将 ZFS 数据集与监狱关联起来ezjail-admin config(您不能将其作为create命令的一部分执行此操作):

ezjail-admin config -z tank/data/myjail myjail
Run Code Online (Sandbox Code Playgroud)

这假设您已经设置了 ZFS 数据集并配置了适当的 sysctl 设置和 devfs 规则来完成此工作。

您的 ZFS 数据集需要设置选项jailed

zfs set jailed=on tank/data/myjail
Run Code Online (Sandbox Code Playgroud)

您想要以下内容/etc/sysctl.conf

# support zfs in jails
security.jail.mount_allowed=1
security.jail.enforce_statfs=0
Run Code Online (Sandbox Code Playgroud)

我对使用 ezjail 配置的监狱使用以下 devfs 规则集:

[devfsrules_zfsjail=100]
add include $devfsrules_jail
add path zfs unhide
Run Code Online (Sandbox Code Playgroud)