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

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

Это то, что у меня есть в моем 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

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

getenforce

если результат "Принуждение"

временно изменить его на разрешающий

setenforce 0

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

Отключить 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/

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

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

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

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

снова включить selinux было так же просто, как

setenforce 1

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

<Directory /home/mcmoddr/www>
  Order allow,deny
  Allow from all
</Directory>

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

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

вы можете проверить с помощью ls -ld

Добавьте следующую строку в существующий код.

restorecon -r /home/mcmoddr/www/

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