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

Я не могу запретить доступ к файловой системе сервера с помощью настраиваемого DocumentRoot в Apache?

CentOS 7.1 - Apache 2.4.6

Конфигурация по умолчанию содержит следующее:

....
<Directory />
    AllowOverride none
    Require all denied
</Directory>
...
DocumentRoot "/var/www/html"

Если я изменю DocumentRoot, я получу:

403 - У вас нет разрешения на доступ / на этом сервере.

После нескольких часов четырехкратной проверки конфигурации каталога и разрешений файловой системы я попытался удалить блок выше ... УСПЕХ! Все работает.


Все мои изменения заменяют раздел по умолчанию на:

DocumentRoot "/srv/http"
<Directory "/srv/http">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Apache 2.2 использует следующую конфигурацию для объявления доступа к определенным каталогам:

Order deny,allow
Deny from all

Apache 2.4 использует следующее:

Require all denied

Больше информации Вот. Довольно странно, что вам удается заставить его работать с 1-м стилем конфигурации, потому что он работает только на apache 2.2. Попробуйте запустить это:

httpd -v

Он выведет используемую вами версию apache и может быть это поможет вам прояснить некоторые вещи в своей голове.

Похоже, что в Directory конфигурация для DocumentRoot путь, доступ потребности должен быть указан следующим образом, чтобы он переопределил отказ верхнего уровня:

Require all granted

Думаю, мне нужно еще кое-что почитать ... согласно Документы Apache:

В Allow Deny, и Order директивы, предоставленные mod_access_compat, устарели и исчезнут в будущей версии. Вам следует избегать их использования и избегать устаревших руководств, рекомендующих их использование.