Назад | Перейти на главную страницу

Есть ли инструмент для управления тюрьмами 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 узел устройства внутри тюрьмы.

В то же время, похоже, существует множество инструментов (эзджайль, тюремщик, надзиратель и вообще /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.