Apache2 userdir включен, но все еще не имеет доступа


9

Я пытаюсь настроить сервер Apache на своем ноутбуке Kubuntu 13.04. Я установил пакет apache2 и sudo a2enmod userdir; sudo service apache2 restart, но все же, когда я посещаю http://localhost/~user, он говорит что-то вроде этого:

Forbidden

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

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

Результат tail /var/log/apache2/access.log

127.0.0.1 - - [02/Aug/2013:16:22:01 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:16:22:02 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"

Результат tail /var/log/apache2/error.log

[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico

У вас есть public_htmlкаталог для пользователя? Имеет ли пользователь, работающий с Apache, разрешение на его чтение?
Иордания

@jordanm Да, я установил 755, также попробовал 777.
Qed

Ответы:


8

У public_htmlкаталогов должны быть свои разрешения, подобные этому, чтобы пользователь, работающий с Apache, мог получить к нему доступ:

$ chmod -R 755 ~/public_html

все еще не работает?

Если вы посмотрите в журналах ошибок Apache, вы можете увидеть следующую строку:

[Пт Авг 02 21:06:59 2013] [ошибка] [клиент 127.0.0.1] (13) Отказано в доступе: доступ к / ~ kaiyin запрещен

Это говорит о том, что в этом примере Apache не имеет разрешений для перехода в каталог вашего пользователя (~ kaiyin).

Как это исправить?

Вы должны убедиться, что биты read + execute установлены для группы, членом которой является Apache, или что остальные биты read + execute установлены в каталоге пользователя, чтобы Apache мог получить доступ к public_htmlпапке ниже.

пример

/home
|-- [drwxr-x---]  /home/sam

/home/sam
|-- [drwxr-xr-x]  /home/sam/public_html

Ссылки


Я уже сделал это, но я все еще получил 403 запрета.
Qed

@CravingSpirit - подключите журналы apache ( /var/log/httpd/access.log) и ( /var/log/httpd/error.log), чтобы увидеть, есть ли какие-либо дополнительные сообщения.
SLM

Я добавил журнал в пост.
Qed

@CravingSpirit - заметили, что доступ к ~ kaiyin` запрещен? Пользователь Apache не имеет доступа к каталогам пользователей верхнего уровня. Вам нужны права на чтение и выполнение, чтобы он мог получить к ним доступ.
slm

2
На самом деле, вам почти наверняка не нужно 755; 711 или даже 710 группы www-данные должны делать на родителей public_html; это также будет работать с public_html, если вам не нужны списки файлов, в противном случае Apache тоже будет нуждаться в чтении (например, 755/750, а не 711/710).
CVN

1
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

  <Directory /home/*/public_html>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch
    <Limit GET POST OPTIONS>
      # Apache <= 2.2:
      #Order allow,deny
      #Allow from all

      # Apache >= 2.4:
      Require all granted
    </Limit>
    <LimitExcept GET POST OPTIONS>
      # Apache <= 2.2:
      #Order deny,allow
      #Deny from all

      # Apache >= 2.4:
      Require all denied
    </LimitExcept>
  </Directory>
</IfModule>

Убедитесь в правильности настроек в /etc/apache2/mods-enabled/userdir.conf. Я получил отказано в разрешении после chmodding мой public_html, а затем решил проверить userdir.conf. Я заметил, что есть настройки для более ранних версий Apache, а также более новых. Я знал, что у меня установлена ​​последняя версия, поэтому включил новые настройки, и теперь все работает нормально.


0

Также вы можете использовать /etc/hostsфайл, чтобы устранить необходимость временного URL. Если в теме или плагине есть ссылка на полный URL (если есть), сайт не будет отображать содержимое в правильном формате.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.