Вызов chroot в PHP

По соображениям безопасности некоторые приложения изолированы в среде chroot. Мне нужно вызвать эти приложения через PHP-скрипт. Что-то вроде того :

exec('chroot /path/to/chroot command') 

Мне нужно быть root для использования chroot . В руководстве PHP есть chroot (), но для этой функции также требуются привилегии root.

Итак, как использовать команды chroot ed в PHP?

chroot может вызываться только привилегированными пользователями. В противном случае обычные пользователи могут обманывать приложения setuid, такие как passwd или sudo доступа к файлам в непредвиденном месте.

Поэтому, если ваше приложение php не работает от имени пользователя root, одна вещь, которую вы можете сделать, – это установить сценарий оболочки setuid и вызвать это из php. Он должен немедленно отказаться от привилегий после вызова chroot, поскольку root может тривиально вырваться из chroots .

Кроме того, вы можете настроить sudo, чтобы пользователь php мог выполнить chroot /path/to/chroot command и добавить sudo к вызову exec в php.

Вы можете использовать возможности Linux. См. Возможности CAP_SYS_CHROOT для возможностей man capabilities .

ПРЕДУПРЕЖДЕНИЕ! Используя sudo, после chrooting вы root!

Трюк здесь состоит в том, чтобы использовать sudo и файл sudoers, чтобы просмотреть man-страницу sudo .

В основном, что бы вы сделали, это предоставить вашему PHP-пользователю доступ к утилите sudo для команды chroot и ваш код будет выглядеть следующим образом:

 exec('sudo chroot /path/to/chroot command')