Конфигурация CentOS Apache HTTPD (403 запрещено)

8

Это то, что у меня есть в моем httpd.conf

<VirtualHost *:80>
        ServerAdmin spero78@spero78.com
        ServerName mcmoddr.com
        ServerAlias www.mcmoddr.com
        DocumentRoot /home/mcmoddr/www/
        ErrorLog /mcmoddr/logs/error.log
        CustomLog /mcmoddr/logs/accesslog combined
</VirtualHost>

При посещении этого сайта я получаю ошибку 403 Forbidden, файлы добавляются с помощью vsftpd и имеют разрешения drwxr-xr-x

Патт-Том МакДоннелл
источник

Ответы:

12

Вы используете стандартную установку CentOS, если это правильно, проверьте, находится ли SELinux в принудительном режиме

getenforce

если результат «Принудительный»

временно изменить его на разрешительный

setenforce 0

и попробуйте еще раз, вы также можете указать состояние веб-содержимого для файлов в вашем домашнем каталоге.

Freaktor
источник
Это добилось цели в моем случае. Но если я впоследствии снова подкреплю (с помощью setenforce 1 ), ошибка 403 больше не будет отображаться, даже если конфигурация такая же, как и раньше, когда она использовалась для отображения.
damix911
это не более чем грязный хак. Это, конечно, не правильный способ просто отключить функции безопасности. Вы должны настроить их вместо этого.
Дурак
9

Отключить SELinux или запустить в ROOT

setsebool -P httpd_enable_homedirs on
chcon -R -t httpd_sys_content_t /home/
chcon -R -t httpd_sys_rw_content_t /home/
IgoRRius
источник
5

Ответ Freaktor на «setenforce 0» сработал для меня (спасибо!)

Но чтобы он работал и снова включил SELinux, мне нужно было

sudo chcon -Rv --type=httpd_t /path/to/my/files

... это дало моему каталогу и всем файлам и каталогам в нем контекст безопасности "httpd_t", который является неуклюжим способом сказать, что SELinux позволяет httpd читать эти файлы.

снова включить selinux

setenforce 1
jg3
источник
2
Это просто временно; любые новые файлы, которые вы создаете, будут иметь свой первоначальный контекст, а SELinux по-прежнему будет запрещать доступ к новым файлам. Для постоянного решения см. Этот ответ .
Майкл Хэмптон
3

У вас, вероятно, есть запрет на все где-то в глобальном конфиге. Попробуйте добавить это в раздел vhost:

<Directory /home/mcmoddr/www>
  Order allow,deny
  Allow from all
</Directory>
Алекс Хованский
источник
+1, также @ Spero78 должен убедиться, что в корне вашего vhost нет файла .htaccess с ограничительными директивами
0

вам нужно использовать <Directory>контейнер, как указано выше.

И тогда вам нужно проверить по своему DocumentRootпути. Каждый каталог должен иметь разрешение на чтение, чтобы пользователь Apache мог получить к нему доступ.

Вы можете проверить, используя ls -ld

user533968
источник
-1

Пожалуйста, добавьте строку ниже в ваш существующий код.

restorecon -r /home/mcmoddr/www/

Это должно исправить вашу проблему.

Ниранджай Сингх
источник