Я имею, столкнулся на этой проблеме, у меня есть разъединять рабочий апач и php. У нас есть много виртуальных хостов, но мы заметили, что потенциально злонамеренный пользователь мог использовать свое интернет-пространство для просмотра файлов другого пользователя (с помощью простого сценария PHP) и даже системные файлы, это могло происходить из-за php полномочий. Способ избежать его состоит в том, чтобы установить open_basedir var в php.ini, yhis очень прост в единственной хост-системе, но в случае виртуальных хостов был бы basebir на каждый хост.
Ho я могу установить скидку basedir на каждого пользователя/хост? есть ли способ позволить апачскому hereditate php полномочия php файла, который требовали
НАПРИМЕР,/home/X_USER/index.php имеет как владелец X_USER, когда апачи читают файл index.php, он проверяет свой путь и владельца, просто я ищу системный php набора basedir переменная к тому пути.
Благодарность заранее Lopoc
Можно установить open_basedir
на основе каждого каталога, используя директиву php_admin_value
Apache.
Пример из руководства:
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
По поводу вашего комментария: да, на внешние команды не влияет open_basedir
- при вызове ls /
это делается с правами учетной записи пользователя, под которой работает PHP (часто называемой www
или подобной). Насколько я знаю, невозможно распространить open_basedir
на внешние команды.
В таком случае, я не думаю, что защита, которую вы ищете, возможна в обычной установке Apache/PHP. Единственное, что может быть ближе, это запуск Apache в chroot jail. Я сам этого не делал, поэтому не могу ничего об этом сказать - вам придется покопаться и, возможно, задать вопрос конкретно об этом.
Вы можете установить множество параметров php.ini с помощью конфигурационного файла Apache.
Смотрите эти связанные страницы из руководства по PHP: - http://php.net/manual/en/configuration.changes.php - http://www.php.net/manual/en/ini.core.php#ini.sect.path-directory - http://www.php.net/manual/en/configuration.changes.modes.php