Назад | Перейти на главную страницу

Защита PHP через open_basedir на основе пути к скрипту

У меня есть несколько пользователей, запускающих сценарии 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 есть немного больше информации.