пʼятниця, 10 вересня 2010 р.

named in jail

Скрипт запуска named в базовой системе FreeBSD по умолчанию запускает его в chroot /var/named . Для своей работы named-у нужен /dev/null и /dev/random , поэтому этот же скрипт запуска монтирует в chroot devfs с рулесетами, оставляющими только эти устройства. Естественно в jail подобный фокус не получится ввиду того, что по умолчанию в jail вообще запрещен mount, и разрешить его можно только для определенных "jail-friendly file systems"
Выходов 3:
  1. не запускать named в jail :)
  2. выключить chroot, выставив named_chrootdir=""
  3. предварительно подготовить dev/ для named: стартовый скрипт при запуске внутри jail не пытается сам примонтировать devfs, а проверяет не примонтирован ли он уже для него.
Вообще наличие 3-го пункта (благодаря r188293) намекает на наличие какой-то "стандартной" процедуры делать это предварительное монтирование, но я эту процедуру не нашел. Поэтому соорудил сам:
jail_levsha_named_dev="${jail_levsha_rootdir}/var/named/dev"
jail_levsha_exec_prestart0="devfs_domount ${jail_levsha_named_dev} devfsrules_hide_all"
jail_levsha_exec_prestart1="devfs -m ${jail_levsha_named_dev} rule apply path null unhide"
jail_levsha_exec_prestart2="devfs -m ${jail_levsha_named_dev} rule apply path random unhide"
jail_levsha_exec_poststop0="umount ${jail_levsha_named_dev}"

2 коментарі:

blog сказав...

Чет вы батенька гоните, для старта jail уже давно можно описывать devfs и подключать их да и маунт тоже уже возможен:

в /etc/rc.conf

jail_jail01_mount_enable="YES"
jail_jail01_devfs_enable="YES"
jail_jail01_devfs_ruleset="devfsrules_jail"


в /etc/devfs.rules

# Devices usually found in a jail.
#
[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login

levsha сказав...

Чет Вы, батенька, совсем не внимательно читаете. Речь не о /dev для jail, а о /var/named/dev
И насчет "майнт тоже уже возможен" тоже не внимательно читаете: я написал какой именно манут можно разрешить для jail