Запуск сервера в рамках поддерева chroot
Запуск сервера в рамках поддерева chroot
Если сервер осуществляет вызов функции chroot(), вероятнее всего, что в его конфигурационном файле содержится одна или несколько опций, предназначенных для управления выполнением в рамках поддерева chroot. Например, для ProFTPd предусмотрена директива <Anonymous>, которая задает имя каталога, используемого в качестве корневого каталога поддерева chroot. Чтобы обеспечить выполнение сервера с использованием поддерева chroot, необходимо выяснить, какие опции управляют данным режимом работы, и правильно установить их значения.
Если сервер не вызывает chroot(), необходимо в первую очередь убедиться, что он способен работать в обычном окружении Linux, для чего следует запустить сервер за пределами поддерева chroot. Затем надо скопировать исполняемые файлы сервера и конфигурационные файлы в каталоги поддерева и удостовериться, что это не повлияло на работу сервера. После настройки среды поддерева вы можете запускать сервер с помощью утилиты chroot. Соответствующая команда имеет следующий вид:
chroot новый_корневой_каталог имя_сервера [опции_сервера]
Здесь под новым корневым каталогом подразумевается каталог, который выполняет роль корня поддерева chroot. Кроме того, при вызове команды задаются имя сервера, предназначенного для запуска, и его опции; путь к серверу определяется относительно корневого каталога поддерева. Например, если исполняемый файл сервера имеет имя /opt/chroot/bin/server, где /opt/chroot — корневой каталог поддерева, то вызов chroot будет выглядеть следующим образом:
# chroot /opt/chroot /bin/server
Если в обычных условиях сервер запускается с помощью сценария SysV или локального сценария запуска, вы должны модифицировать сценарий, включив в него команду chroot. Вы также можете запретить выполнение сценария и организовать запуск сервера другим способом. Если в системе предусмотрен запуск сервера посредством суперсервера, необходимо разместить в поддереве chroot не только сервер, предназначенный для запуска, но и суперсервер. Кроме того, надо изменить команду запуска суперсервера, реализовав его запуск посредством chroot. Если такое решение вас не устраивает, измените способ запуска сервера, например, запустите его с помощью сценария SysV или локального сценария.