В разрешении 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:httpd_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