Я столкнулся с этой проблемой, у меня есть работающий apache и php. У нас много виртуальных хостов, но мы заметили, что потенциально злонамеренный пользователь может использовать свое веб-пространство для просмотра файлов других пользователей (через простой скрипт php) и даже системных файлов, это может произойти из-за прав на php. Способ избежать этого состоит в том, чтобы установить open_basedir var в php.ini, yhis очень прост в одной системе хоста, но в случае виртуальных хостов на каждом хосте будет basebir.
Могу ли я установить это на основе каждого пользователя / хоста? есть ли способ разрешить apache присвоить php-привилегии php-файла, который был запрошен
EG /home/X_USER/index.php имеет владельца X_USER, когда apache читает файл index.php, он проверяет свой путь и владельца, просто я ищу системный набор переменной php basedir для этого пути.
Заранее благодарю Lopoc
Можно установить open_basedir
для каждого каталога, используя директиву Apache php_admin_value
.
Пример из руководства :
<Directory /docroot> php_admin_value open_basedir /docroot </Directory>
Повторите свой комментарий: да, внешние команды не затрагиваются open_basedir
– при вызове ls /
это делается с правами, которыми управляет PHP PHP (часто называемый www
или подобным). Насколько я знаю, расширение open_basedir
для внешних команд невозможно.
В этом случае я не думаю, что вид защиты, который вы ищете, возможен в обычной настройке Apache / PHP. Единственное, что может приблизиться, – это запустить Apache в тюрьме chroot . Я не делал этого сам, поэтому ничего не могу сказать об этом – вам придется вникать и, возможно, задать вопрос именно об этом.
Вы можете установить множество настроек 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
chroot – хорошая идея. И теперь докер более эффективен.
и open_basedir с «/ docroot» не является безопасностью, вы должны заканчивать «/», или PHP может получить доступ / docroot1