Apache2 userdir activé, mais n'a toujours pas accès

9

J'essaie de configurer un serveur apache sur mon ordinateur portable Kubuntu 13.04. J'ai installé le paquet apache2 et sudo a2enmod userdir; sudo service apache2 restart, mais quand je visite http://localhost/~user, il dit quelque chose comme ceci:

Forbidden

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

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

Résultat de 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"

Résultat de 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
qed
la source
Avez-vous un public_htmlrépertoire pour l'utilisateur? L'utilisateur exécutant apache est-il autorisé à le lire?
jordanm
@jordanm Oui, je l'ai fixé à 755, j'ai également essayé 777.
qed

Réponses:

8

Les public_htmlrépertoires doivent avoir leurs autorisations comme ceci pour que l'utilisateur qui exécute Apache puisse y accéder:

$ chmod -R 755 ~/public_html

ne fonctionne toujours pas?

Si vous regardez dans vos journaux d'erreurs Apache, vous pourriez voir une ligne comme celle-ci:

[Ven 02 août 21:06:59 2013] [erreur] [client 127.0.0.1] (13) Autorisation refusée: accès à / ~ kaiyin refusé

Cela vous indique qu'Apache n'a pas les autorisations pour naviguer vers le répertoire de votre utilisateur (~ kaiyin) dans cet exemple.

Comment régler ceci?

Vous devez vous assurer que les bits de lecture + exécution sont définis pour un groupe dont Apache est membre ou que les autres bits de lecture + exécution sont également définis dans le répertoire de l'utilisateur afin qu'Apache puisse accéder au public_htmldossier ci-dessous.

Exemple

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

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

Références

slm
la source
Je l'ai déjà fait, mais j'ai toujours obtenu un 403 interdit.
qed
@CravingSpirit - suivez les journaux apache ( /var/log/httpd/access.log) et ( /var/log/httpd/error.log) pour voir s'il y a des messages supplémentaires.
slm
J'ai ajouté le journal au message.
qed
@CravingSpirit - remarquez l'accès refusé sur le ~ kaiyin`? L'utilisateur d'Apache n'a pas accès aux répertoires de niveau supérieur des utilisateurs. Vous avez besoin des droits de lecture + exécution pour qu'il puisse y accéder.
slm
2
En fait, vous n'avez certainement pas besoin du 755; 711 ou même 710 groupe www-data devrait faire sur les parents de public_html; il le fera aussi sur public_html si vous n'avez pas besoin de listes de fichiers, sinon Apache devra également être lu (donc 755/750 plutôt que 711/710).
un 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>

Assurez-vous que les paramètres sont corrects /etc/apache2/mods-enabled/userdir.conf. J'obtenais une autorisation refusée après avoir modifié mon public_html, puis j'ai décidé de vérifier le userdir.conf. J'ai remarqué qu'il y avait des paramètres pour les versions antérieures d'Apache, ainsi que pour les plus récentes. Je savais que j'exécutais la dernière version, j'ai donc activé les nouveaux paramètres et maintenant tout fonctionne bien

Darryl
la source
0

Vous pouvez également utiliser un /etc/hostsfichier pour éliminer le besoin d'une URL temporaire. S'il existe une référence pour l'URL complète dans le thème ou le plugin (si vous en avez), le site n'affichera pas le contenu au format approprié.

Karthik
la source