# mkdir -p /opt/chroot/sbin /opt/chroot/var/run
# cp /usr/sbin/ndc /opt/chroot/usr/sbin
# cp /sbin/start-stop-daemon /opt/chroot/sbin
При редактировании сценария запуска SysV перед каждым вхождением start-stop-daemon
и ndc
надо добавить последовательность символов chroot /opt/chroot
. Однако на этом работа не заканчивается, поскольку start-stop-daemon
обращается к файловой системе /proc
, которая не доступна из поддерева chroot
. Чтобы обеспечить доступ к ней, необходимо внести изменения в файл /etc/fstab
— скопировать строку, содержащую /proc
, и изменить ее на /opt/chroot/proc
. Затем вы должны вызвать команду mount -а
, чтобы смонтировать /proc
в поддереве chroot
.
Внимание
Поскольку файловая система /proc
предоставляет контроль над компьютером, дублировать ее нежелательно. Лучше отредактировать сценарий запуска SysV так, чтобы он не использовал start-stop-daemon
, либо отказаться от сценария SysV и организовать запуск сервера другим способом.
Выполнив все описанные выше действия, вы можете запустить сервер с помощью сценария SysV и проверить его работу.
# /etc/init.d/bind start
# host awl.com localhost
awl.com A 165.193.123.224
Если вы хотите удостовериться в том, что сервер выполняется в среде поддерева chroot
, вам надо удалить исполняемый файл сервера из каталога /usr/sbin
и конфигурационные файлы из каталога /etc/bind
, а потом перезапустить сервер. Если сервер работает, то выполняться он может только в рамках поддерева chroot
.
Вместо того чтобы запускать сервер BIND посредством утилиты chroot
, вы можете использовать опцию -t
программы named, которая разрешает вызов функции chroot()
сервером имен. Соответствующая команда имеет следующий вид:
# /usr/sbin/named -t /opt/chroot
Данный подход намного проще описанного выше, так как при этом вам придется копировать в каталоги поддерева chroot
гораздо меньше файлов, в частности, вы можете оставить программу named
и библиотеки в тех каталогах, в которых они были записаны при инсталляции. Скопировать конфигурационные файлы необходимо, поскольку сервер имен читает их уже после вызова chroot()
. При использовании опции -t
упрощается подготовка сервера для запуска посредством сценария SysV, так как при нет необходимости дублировать файловую систему /proc
.
Детали подготовки сервера к выполнению в рамках поддерева chroot
зависят от типа сервера и версии Linux, однако общий ход процедуры остается прежним. Возможно, вам придется немного модифицировать среду поддерева chroot
, например, изменить права доступа к каталогам или настроить сервер для запуска от имени пользователя, отличного от root
.
Поддерево chroot
представляет собой чрезвычайно полезный инструмент, однако требует выполнения определенных действий по поддержке. Ниже перечислены вопросы, которым администратор должен уделять внимание при поддержке поддерева chroot
.
• Ротация. Во всех версиях Linux реализован механизм ротации файлов протоколов. Если сервер записывает файлы протоколов в каталог поддерева chroot
, необходимо настроить средства ротации для работы с файлами, находящимися в этом каталоге. В качестве альтернативного решения при вызове mount
можно указать опцию --bind
, при этом файл, предназначенный для хранения файлов протоколов, станет доступным из поддерева chroot
. Однако такой подход можно применять только в тех системах в которых используется версия ядра не ниже 2.4.x. Если вы не уделите внимания файлам протоколов, они будут неограниченно расти и в конце концов займут все доступное дисковое пространство.
• Обновление программ. При обновлении программного обеспечения дополнительные файлы приходится копировать в каталоги поддерева chroot
. Если вы не сделаете этого, на компьютере будет выполняться старый вариант сервера, т.е. в результате установки дополнений ошибки в программе не будут устранены. Необходимо также следить за изменениями в сценариях запуска, иначе может произойти так, что сервер будет выполняться за пределами поддерева chroot
.
• Обеспечение доступа к файлам. Если ваш сервер использует файлы с данными, вы должны разместить их в поддереве chroot
. Обычно при копировании таких файлов не возникает проблем. Вам необходимо лишь следить за тем, чтобы права доступа к файлам были установлены в соответствии с используемой вами схемой защиты.
Читать дальше