Автор Тема: Как реализована работа служб в chroot  (Прочитано 1006 раз)

Оффлайн SUNNY

  • Участник
  • *
  • Сообщений: 61
Подскажите одну вещь. Вот в документации к пакету bind, в частности в файле  /usr/share/doc/bind-9.9.3/README.ALT сказано, что bind настроен для запуска в chroot. Я никак не могу понять как это реализовано. В скрипте /etc/rc.d/init.d/bind нигде не упомянается команда chroot и каталог /var/lib/bind в который чрутается процесс.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Я никак не могу понять как это реализовано.
http://packages.altlinux.org/en/Sisyphus/srpms/bind/patches:
0004-bind-9.9.1-alt-owl-chroot.patch
0005-bind-9.8.3-owl-checkconf-chroot.patch
0003-bind-9.9.1-openbsd-owl-chroot-defaults.patch
(если ничего не пропустил)

В скрипте /etc/rc.d/init.d/bind нигде не упомянается команда chroot и каталог /var/lib/bind в который чрутается процесс.
Эта команда, сама по себе, и не используется тут.

Оффлайн SUNNY

  • Участник
  • *
  • Сообщений: 61
Понятно. Чрутинг реализован на уровне кода программы. Если перекомпилировать программу без патчей - то получится без чрутинга, но это вроде как бы не нужно.
А вот ещё есть пакет dhcd-server. Там вроде реализован чрутинг в /var/lib/dhcp/dhcpd. Тогда почему конфиг dhcpd.conf программа читает не из /var/lib/dhcp/dhcpd/etc, а из /etc/dhcp, но данные dhcpd.leases пишет в /var/lib/dhcp/dhcpd/state?

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
А вот ещё есть пакет dhcd-server.
Не смотрел - не было необходимости dhcpd в Linux использовать. Но условие простое: если программа уже выполнила chroot, то абсолютный путь (например, /etc/dhcp) считается уже от нового корня. Соответственно, надо смотреть, кто и когда это выполняет. dhcpd.leases - отдельный процесс ? Если да, он может и не chroot-иться.

Оффлайн grumbler

  • alt linux team
  • ***
  • Сообщений: 126
В случае выполнения системного вызова chroot() в программе:
- файлы, открытые до вызова chroot() так и остаются открытыми, файловый дескриптор никуда не девается :), программа может писать и читать данные несмотря на то, что после чрутования все пути изменились;
- файлы, открываемые после вызова chroot(), располагаются только внутри нового корня.
В случае dhcpd получается:
1) демон открывает и читает /etc/dhcpd.conf;
2) вызывает chroot( "/var/lib/dhcp/dhcpd/" ); (с путём могу ошибиться);
3) открывает или создаёт /state/dhcpd.leases и пишет в него.