В разрешении 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. По какой-то прихоти я перешел по адресу http://sub.domain.com/index.html; и браузер сказал, что у меня нет разрешения на доступ к странице - то же самое для http://sub.domain.com/index2.txt. Для URL http://sub.domain.com/index2.html браузер сказал, что файл не существует. Это говорит о том, что мои "пальцы" все указывают в правильных направлениях. Есть идеи, в чем может быть моя проблема?

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

3 ответа

Решение

Проблема была с SELinux. При подключении общего ресурса контекст безопасности SELinux не позволил бы Apache получить доступ к файлам в общем ресурсе. Пример в SELinux Как Тос просто оказался для 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 доступ к файлам.

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

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

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

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

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

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

setsebool -P httpd_use_cifs 1
Другие вопросы по тегам