Существует ли инструмент для управления джейлами 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.

Другие вопросы по тегам