Вызов chroot в PHP - PullRequest
       15

Вызов chroot в PHP

1 голос
/ 26 июня 2011

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 15 января 2013

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

ВНИМАНИЕ!Используя sudo, после chroot вы являетесь пользователем root!

2 голосов
/ 26 июня 2011

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

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

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

0 голосов
/ 26 июня 2011

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

. По сути, вы должны предоставить пользователю PHP доступ к утилите sudo дляchroot команда и ваш код будет выглядеть так:

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