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

В разрешении Apache отказано

Я пытаюсь развернуть веб-сервер с помощью CentOS 6 и Apache. Файлы для веб-сайтов размещаются в общей папке Windows. Вот строчка из fstab файл для монтирования веб-файлов: \\192.168.1.10\apache /var/www/html cifs credentials=/root/secret.txt,uid=apache,gid=apache 0 0. Кажется, все работает нормально.

Вот файл vhost.conf:

Listen 80
<VirtualHost *:80>
    ServerAdmin webmaster@domain.com
    ServerName sub.domain.com
    DocumentRoot "/var/www/html/domain.com/sub/public_html"
    #ErrorLog /var/www/html/domain.com/sub/logs/error.log
    #CustomLog /var/www/html/domain.com/sub/logs/access.log combined
</VirtualHost>

Я выполнил команду ls -l /var/www/html/domain.com/sub/public_html и вот результат:

total 1
-rwxr-xr-x. 0 apache apache  0 Jan 26 20:43 index2.txt
-rwxr-xr-x. 0 apache apache 45 Jan 26 19:33 index.html

Команда ls -l /var/www/html/domain.com/sub вывод:

total 0
drwxr-xr-x. 0 apache apache 0 Jan 26 20:00 logs
drwxr-xr-x. 0 apache apache 0 Jan 26 20:43 public_html

Когда я иду в http://sub.domain.com, Я получаю общий экран Apache. По прихоти я пошел по URL http://sub.domain.com/index.html; и браузер сказал, что у меня нет разрешения на доступ к странице - то же самое для http://sub.domain.com/index2.txt. Для URL http://sub.domain.com/index2.html, браузер сказал, что файл не существует. Это говорит мне, что все мои «пальцы» указывают в правильном направлении. Есть идеи, в чем моя проблема?

Строки журнала в vhost.conf файл закомментирован, потому что httpd не перезапустился бы с ними. Думаю, это та же проблема.

Поскольку явных проблем с самими настройками Apache нет, это, должно быть, проблема с разрешениями, установленными ОС.

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

Поскольку CentOS поставляется с SELinux, это тоже может быть проблемой. Возможно, вы не сделали активную настройку разрешений с помощью SELinux, но в самом Linux есть настройки SELinux по умолчанию для удаленного монтирования.

Вы можете проверить с ls -Z.

Вот интересный OP в askubuntu: https://askubuntu.com/questions/451922/apache-access-denied-because-search-permissions-are-missing

Проблема была в SELinux. Как я смонтировал общий ресурс, контекст безопасности SELinux не позволял Apache получать доступ к файлам в общей папке. Пример на SELinux Как Tos как раз случилось для Apache.

Я использовал команду ls -Z, не просто ls -l, и я увидел, что контекст безопасности SELinux смонтированных файлов был неправильным. Я изменил строчку в fstab файл в

\\192.168.1.100\apache /var/www/html cifs credentials=/root/apache.pass,uid=apache,gid=apache,context=‌​system_u:object_r:ht‌​tpd_sys_content_t:s0 0 0

Этот дополнительный параметр контекста мне нужен для SELinux, чтобы разрешить Apache доступ к файлам.

В вашем вопросе мы видим, что вы используете SELinux и пытаетесь заставить Apache читать веб-контент из общего ресурса CIFS. По умолчанию это не разрешено SELinux, но вы можете включить его, установив соответствующее логическое значение.

setsebool -P httpd_use_cifs 1