Как отключить доступ к родительскому каталогу DocumentRoot?

У меня есть система Ubuntu, на которой размещены несколько сайтов. DocumentRoot Папка каждого веб-сайта является отдельной и имеет другого пользователя. Пути такие:

/<path_from_root>/websites/websiteA
/<path_from_root>/websites/websiteB

Давайте предположим, что соответствующие пользователи ПользовательА а также USERB. Хотя USERB не имеет доступа для чтения к папке websiteA, апаш пользователь имеет доступ. USERB можно просто написать php-файл в своем каталоге:

<?php
$x=file_get_contents('../websiteA/config.php');
echo $x;
?>

Этот файл выставит config.php подать в USERB. Ключевой вопрос заключается в том, что апаш должен иметь доступ на чтение к обеим папкам для запуска веб-служб, но USERB может использовать это для доступа ПользовательАфайлы. Как предотвратить это?

0

Решение

Вы можете использовать директиву php open_basedir в ваших конфигурационных файлах apache или vhost для индивидуальные настройки.

<VirtualHost *:80>
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
<VirtualHost>

поэтому сценарии в этом пути не могут открывать файлы за его пределами.

1

Другие решения

Возможно, вы захотите посмотреть, как Apache и PHP связаны на вашем компьютере. Если вы используете модуль Apache mod_php, насколько я знаю, весь код PHP выполняется так же, как и сам пользователь Apache. Если вы подключите PHP с CGI (fcgi, fastcgi или что-то из этого диапазона), вы можете использовать Suexec. С помощью suEXEC вы можете указать пользователю, что PHP должен запускаться для каждого виртуального хоста.

0

По вопросам рекламы [email protected]