Существует ли инструмент для управления джейлами FreeBSD, который знает о ZFS?
ZFS под FreeBSD позволяет назначать файловые системы тюрьме, так что учетная запись в тюрьме с соответствующими привилегиями может обращаться к файловой системе, создавать новые подчиненные файловые системы и так далее. По крайней мере, с 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 при загрузке тюрьмы... и в идеале разрешит ссылки на тюрьмы на основе имен, которые хотя и поддерживаются многими третьими Утилиты party tools трагически отсутствуют в скрипте стоковой тюрьмы.
3 ответа
После того, как немного поковырялся, оказалось, что в недавней версии 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
И я использую следующий набор правил devfs для джейлов, настроенных с помощью ezjail:
[devfsrules_zfsjail=100]
add include $devfsrules_jail
add path zfs unhide
Принятый ответ (ezjail) не поддерживается с 2015 года. Активно поддерживается несколько проектов:
- CBSD
- iocage
- мой собственный Mail Toaster 6 , с 2001 года. Версии MT <6 были на Perl. MT6 полностью основан на bash и зависит от ZFS.
CBSD (на http://www.bsdstore.ru/en/about.html) хорошо знает ZFS.