Apache всегда получает разрешение 403 после изменения DocumentRoot

Я просто новичок в Apache. Я только что установил apache 2.2 на компьютер с FreeBSD в своем домашнем офисе. Инструкция по документации FreeBSD заключается в том, что я могу изменить директиву DocumentRoot, чтобы использовать настроенные данные каталога. Поэтому заменил...

/usr/local/www/apache22/data

с

/usr/home/some_user/public_html

но что-то не так. Внутри каталога есть файл index.html, но кажется, что apache не смог прочитать каталог/файл.

Forbidden
You don't have permission to access / on this server.

Разрешение

public_html

is

drwxr-xr-x

Интересно, что здесь может быть не так. Кроме того, в моем случае я не собираюсь размещать более одного веб-сайта для этой коробки FreeBSD, поэтому я вообще не рассматривал возможность использования VirtualHost. Это хорошая практика просто изменить директиву DirectoryRoot?


person Kann    schedule 27.08.2012    source источник
comment
Что в логе ошибок апача? Обычно это довольно подробно. Также возможно, что вам нужно указать o+r в вашем домашнем каталоге.   -  person Jonas Schäfer    schedule 27.08.2012
comment
Попробуйте и su пользователю, владеющему процессами httpd (обычно apache) - можно cat /usr/home/some_user/public_html/index.html?   -  person f_puras    schedule 27.08.2012
comment
@Jonas Просмотрел журнал ошибок, и там написано... client denied by server configuration: /usr/home/webmaster/public_html/   -  person Kann    schedule 27.08.2012
comment
@f_puras В этом файле нет ничего, кроме приветствия, мир.   -  person Kann    schedule 27.08.2012
comment
Это нормально. Мне было интересно, действительно ли Apache разрешено читать файл. Значит проблема должна быть в другом...   -  person f_puras    schedule 27.08.2012


Ответы (2)


Где-то в конфиге апача есть строчка типа:

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/usr/local/www/apache22/data">

Вы также должны изменить этот путь, чтобы он работал. Эта директива содержит, например:

Order allow,deny
Allow from all

Которые дают начальный доступ пользователя к каталогу.

person Jonas Schäfer    schedule 27.08.2012
comment
Спасибо большое! Это работает отлично. Я думал, что настройки ‹DocumentRoot› достаточно для перемещения каталога данных. Видимо, мне нужно проверить и «Каталог». - person Kann; 27.08.2012

Одна из возможностей, которая приходит на ум, — это блокировка SELinux веб-процессом доступа к этой папке. Если это так, вы увидите это в журнале selinux. Вам нужно будет проверить контекст для вашего исходного веб-корня с помощью:

ls -Zl

а затем примените его к своей новой веб-папке:

chcon whatevercontextyousaw public_html

Или вместо этого, если это не производственный сервер, требующий безопасности (например, машина разработки за брандмауэром), вы можете просто отключить selinux.

Всего одна идея. Может быть ряд других вещей.

person Tuncay Göncüoğlu    schedule 27.08.2012
comment
Действительно ли FreeBSD имеет SELinux? - person Jonas Schäfer; 27.08.2012
comment
ну, я давно не пользовался freebsd, сам являюсь пользователем федоры. хотя, поскольку это происходит из ядра, я думаю, что так и будет. - person Tuncay Göncüoğlu; 27.08.2012
comment
@Tungcay Я только что проверил контекст оригинального веб-сайта и получил... drwxr-xr-x 6 корневое колесо - 1024 авг 27 16:24 данные, и это public_html drwxr-xr-x 6 веб-мастер веб-мастер - 1024 авг 27 16 :27 public_html Я не вижу тут никаких отличий... - person Kann; 27.08.2012
comment
немного поздно, но ваш вывод показывает «ls -l», а не «ls -lZ». Обратите внимание на букву «З». Параметр -Z дает вам контекст selinux. - person Tuncay Göncüoğlu; 04.08.2015