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каталог для користувача? Чи має користувач, що працює з апачем, дозволити його читати?
Йорданм

@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) у цьому прикладі.

Як це виправити?

Вам потрібно переконатися, що біти читання та виконання виконуються для групи, членом якої є Apache, або інші біти для читання та виконання виконуються у каталозі користувача, а також, щоб 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, а також новіших. Я знав, що я запускаю останні, тому ввімкнув нові налаштування, і тепер все працює нормально


Дякуємо, що включили інформацію про Apache <= 2.2, тому це не працювало для мене і саме це мені потрібно!
Wowfunhappy

0

Також ви можете використовувати /etc/hostsфайл, щоб усунути необхідність тимчасової URL-адреси. Якщо в темі чи плагіні є посилання на повну URL-адресу (якщо у вас є), сайт не відображатиме вміст у належному форматі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.