По соображениям безопасности некоторые приложения изолированы в среде 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')