У меня есть несколько пользователей, запускающих сценарии PHP на сервере, и я хотел бы заблокировать его, чтобы их сценарии могли получать доступ только к файлам в своем каталоге www (он не использует учетные записи пользователей Linux, поэтому нет домашнего каталога) .
open_basedir
кажется очевидным выбором, но как я могу установить этот параметр в зависимости от того, откуда запускается скрипт? Очевидно значение для open_basedir
будет отличаться для каждого пользователя.
Я запускаю PHP5-FPM - PHP5 как процесс FastCGI, к которому подключается nginx - в Ubuntu 11.04
Любая помощь или совет приветствуются!
Я нашел решение - директивы php.ini на основе пути к файлу или хоста запроса. Из документация:
[HOST=dev.site.com]
open_basedir = /var/www/dev.site.com
или
[PATH=/var/www/dev.site.com]
open_basedir = /var/www/dev.site.com
Предполагая, что вы используете Apache, вы можете установить его в каждом экземпляре VirtualHost с помощью: -
php_admin_value open_basedir /path/to/restrict/to
Не поддавайтесь искушению использовать .
, поскольку пользователь все еще может сменить каталог с помощью chdir
.
http://php.net/manual/en/ini.core.php есть немного больше информации.