В корне документа vhost отказано в доступе

У меня проблема с настройкой vhost на Apache 2.4, используя CentOS 6.3.

На этот вопрос, кажется, несколько раз отвечали на этом форуме, но ни одно из решений не работает для меня.

По сути, я настроил vhost с определенным корнем документа. Когда я пытаюсь получить доступ к сайту, я получаю ошибку разрешения. Но у меня нет проблем, если я использую другой рут.

Точнее говоря, если я установил для root значение /volume1/web / xxx, я получу 503 из-за проблемы с правами на index.html.

Но если я установлю его в /volume1/web, index.html появится без проблем.

Детали:

  • Я установил разрешения для тома 1, веб и ххх 755.
  • Я установил разрешения для файлов index.html на 777.
  • Я копирую файл index.html как в /volume1/web, так и /volume1/web / xxx, чтобы они имели идентичные индексные файлы с одинаковыми разрешениями.

В httpd.conf я установил параметры VirtualHost, чтобы можно было легко переключать корень документа, изменяя 2 комментария

У меня есть следующие строки в файле Conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    #DocumentRoot /volume1/web
    DocumentRoot /volume1/web/xxx

    #<Directory /volume1/web>
    <Directory /volume1/web/xxx>
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order Allow,Deny
      Allow from all
    </Directory>

    ErrorLog logs/localhost-error_log
    CustomLog logs/localhost-access_log common
</VirtualHost>

Эти строки содержат все предложения, которые работали для других людей с той же проблемой.

Что я получу при вводе localhost в браузере, зависит от корня документа.

  1. Если корнем является /volume1/web, появится страница index.html.
  2. если корнем является /volume1/web / xxx, то я получаю ошибку 503, и журнал ошибок apache имеет следующую строку:

    [Чт. 19 июля, 17:17:52 2012] [ошибка] [клиент::1] (13) Отказано в доступе: доступ к /index.html запрещен

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

Я также попытался установить для user: group значение apache: apache для каталогов и файлов. Это не помогло.

Я сделал все, что мог придумать, чтобы исправить разрешения, но безрезультатно.

У кого-нибудь есть представление о том, что здесь происходит?

Благодарю.

3 ответа

Решение

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

Когда вы делаете это, SELinux не знает о вашей пользовательской структуре каталогов и не знает, что Apache (httpd) должен иметь к ней доступ. Вы увидите сообщения в /var/log/audit/audit.log показывая отказы в этом случае.

Чтобы действительно решить проблему, вы должны сообщить SELinux, что Apache может получить доступ к каталогу. Сделайте это с помощью команды semanage fcontext:

semanage fcontext -a -t httpd_sys_content_t "/volume1/web(/.*)?"

Сопоставление с образцом выполняется с помощью регулярных выражений, поэтому это будет соответствовать /volume1/web и все под ним. Тот факт, что он использует регулярные выражения, также означает, что вам нужно заключить его в кавычки, как показано выше.

Затем перемаркируйте файлы:

restorecon -r -v /volume1/web

SELinux теперь разрешит Apache доступ к файлам в /volume1/web,

Я покажу виноватому в SELinux. Проверьте, запустив setenforce 0 и повторная попытка.

- Desabilitar SELINUX e Reiniciar

SELINUX = отключено

SELINUXTYPE= таргетированный

#

grep ^ SELINUX / и т.д. / sysconfig / selinux

{ T=/tmp/OLD.selinux.$RANDOM$RANDOM$$ ;
  cp -f /etc/sysconfig/selinux $T ;
  sed -e 's@^SELINUX=.*@SELINUX=disabled@' \
      -e 's@^SELINUXTYPE=.*@SELINUXTYPE=targeted@' \
      < $T > /etc/sysconfig/selinux ;
} ;

xreboot;

Другие вопросы по тегам