Я не могу запретить доступ к файловой системе сервера с помощью настраиваемого 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>
1
задан 8 November 2015 в 14:09
2 ответа

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

Order deny,allow
Deny from all

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

Require all denied

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

httpd -v

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

.
1
ответ дан 3 December 2019 в 23:57

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

Require all granted

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

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

0
ответ дан 3 December 2019 в 23:57

Теги

Похожие вопросы