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
узел устройства внутри тюрьмы.
В то же время, похоже, существует множество инструментов (эзджайль, тюремщик, надзиратель и вообще /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
И я использую следующий набор правил devfs для тюрем, настроенных с помощью ezjail:
[devfsrules_zfsjail=100]
add include $devfsrules_jail
add path zfs unhide
CBSD (в http://www.bsdstore.ru/en/about.html) хорошо знает ZFS.