Freebsd

是否有用於管理了解 ZFS 的 FreeBSD 監獄的工具?

  • March 27, 2022

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>

並且還需要暴露zfs監獄內的設備節點。

與此同時,似乎有大量的工具(ezjail、jailer、warden 和一般來說/usr/ports/sysutils/*jail*)聲稱更容易/更好/更強大/等等,但其中大多數似乎只是輕微維護而不是與標準監獄腳本相比,這確實是一場胜利。

我想避免重新發明輪子。是否有與 ZFS 良好集成的監獄管理工具?我正在尋找可以在啟動監獄時設置必要的 devfs 規則、sysctl 設置和 zfs 屬性的東西……並且理想情況下允許對監獄的基於名稱的引用,雖然許多第三方支持 -庫存監獄腳本中悲慘地缺少派對工具。

經過一番摸索,事實證明,最新版本的ezjail已經有了這個支持。關鍵部分是以下配置選項/usr/local/etc/ezjail.conf

ezjail_use_zfs="YES"
ezjail_jailzfs="tank/jails"

-c zfs在創建監獄時使用,如下所示:

ezjail-admin create -c zfs myjail 192.168.1.10

您可以使用以下命令將 ZFS 數據集與監獄相關聯ezjail-admin config(您不能將其作為create命令的一部分執行):

ezjail-admin config -z tank/data/myjail myjail

這假設您已設置 ZFS 數據集並配置了適當的 sysctl 設置和 devfs 規則以使其工作。

您的 ZFS 數據集需要jailed設置選項:

zfs set jailed=on tank/data/myjail

您需要以下內容/etc/sysctl.conf

# support zfs in jails
security.jail.mount_allowed=1
security.jail.enforce_statfs=0

我對使用 ezjail 配置的監獄使用以下 devfs 規則集:

[devfsrules_zfsjail=100]
add include $devfsrules_jail
add path zfs unhide

引用自:https://serverfault.com/questions/278013