web-dev-qa-db-fra.com

Correction de 403 Interdit sur un répertoire d'alias avec Apache

J'essaie de configurer un alias pour qu'il pointe vers un répertoire sur mon système de fichiers, pas dans DocumentRoot Maintenant, je reçois une réponse 403 Forbidden. Voici les étapes suivies: 1. éditez http.conf, en ajoutant:

Alias /example "/Users/user/Documents/example"

puis...

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all</Directory>

2. configuration des autorisations avec chmod dans le terminal:

chmod 755 /Users/user/Documents/example

Maintenant ça devrait marcher? à la place, l'accès est interdit. Voici le résultat de error_log:

[Sun Jul 24 06:57:57 2011] [error] [client xx.xx.xx.xx] (13)Permission denied: access to /example denied
30
sjking

J'avais aussi ce problème sous OS X. Il s'est avéré que gliptak avait raison, mais j'ai encore quelques détails à ajouter.

Nous essayons tous les deux de configurer un répertoire virtuel pour un dossier situé dans le dossier personnel de l'utilisateur. Je pense que c'est pourquoi nous avons le problème. Dans mon cas, j'avais la configuration suivante:

  • Le dossier de départ est /Users/calrion.
  • Le dossier de répertoire virtuel est /Users/calrion/Path/to/www.
  • Il existe un lien symbolique /Users/calrion/Path pointant vers /Volumes/Other/Users/calrion/Path.

Le problème était que l'utilisateur et le groupe _www (qu'Apache exécute sous OS X) ne disposaient pas d'un accès d'exécution à /Users/calrion et /Volumes/Other/Users/calrion.

L'exécution de chmod o+x /Users/calrion et chmod o+x /Volumes/Other/Users/calrion a résolu le problème (sous OS X 10.7.4).

La règle ici est que Apache requiert un accès en exécution aux tous dossiers du chemin pour pouvoir servir les fichiers. Sans cela, vous obtiendrez un HTTP 403 (interdit).

26
Calrion

La dernière paille;) Requis local dans l'entrée de répertoire ...

comme

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Require local
   Order allow,deny
   Allow from all
</Directory>

si tout le reste ne fonctionne pas (alias correct, entrée de répertoire dans httpd.conf et mod/usr/grp correct).

n'oubliez pas que si vous placez votre site dans l'espace utilisateur, l'utilisateur Apache (exécutant httpd) doit pouvoir accéder à votre domicile!

13
Mirco Ellmann

Ce sont toutes de très bonnes réponses… .. Aucune d’entre elles n’a fonctionné pour moi.

J'ai un alias spécifié dans le serveur OSX pointant vers un répertoire d'utilisateurs. J'ai passé beaucoup de temps à modifier et à bricoler l'utilisateur _www, à ajouter des autorisations exécutables de manière récursive, à désinstaller Macports et toutes sortes de choses qui tentaient de le faire fonctionner. J'ai essayé 777. Nope. Aucune idée pourquoi cela ne fonctionnait pas.

Finalement, je viens de cocher la case "dossier partagé" dans le Finder pour ce dossier, et cela fonctionnait, sur le domaine spécifié, avec php actif, comme je le voulais. :/... donc c'était facile.

9
greenland

Vérifiez l'autorisation sur /Users/user/Documents/, /Users/user/ (les autorisations de niveau supérieur sont appliquées en premier ...)

/bin/su dans l'utilisateur exécutant Apache (comme www, www-data) et cat un fichier dans le répertoire /Users/user/Documents/example. Cela pourrait vous indiquer des problèmes d’autorisation avec votre configuration.

9
gliptak

Je venais d'avoir exactement le même problème. Ce que j'ai trouvé, c'est que SE_Linux était activé et que le contexte de sécurité des fichiers de mon répertoire Alias ​​était incorrect. Httpd_sys_content_t manquait. 

Vous pouvez afficher le contexte de sécurité avec ls -Z. Si vos fichiers/dossiers n'ont pas httpd_sys_content_t, Apache ne les servira pas! Vous pouvez ajouter le contexte approprié avec quelque chose comme chcon -R --type=httpd_sys_content_t /new_html_directory. Cela modifiera le contexte des fichiers actuellement dans le répertoire, mais pas ceux ajoutés ultérieurement (pour cela, vous devrez travailler avec semanage). Votre autre option est de simplement laisser les fichiers sous/var/www.

6
sudol

Après avoir perdu beaucoup de temps, j'ai résolu le problème et je voulais partager pour vous faire gagner du temps.

Tous les gentelmen ci-dessus et sur d'autres postes ont des parties correctes dans leurs réponses mais en dessous est la somme

Dans votre fichier "/etc/Apache2/httpd.conf":

1- changer la racine de votre document

Original: DocumentRoot "/Library/WebServer/Documents"
Change to: DocumentRoot "/Users/yourname/www"

2- changement

Original: 

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

Changer en: 

<Directory /Users/yourname/www>
    Options FollowSymLinks Includes ExecCGI
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

3- Changement: 

Original: 

<Directory "/Library/WebServer/Documents">

Changer en:

<Directory "/Users/yourname/www">

4- Enfin, vous n’aurez peut-être pas besoin de cette étape si vous êtes l’utilisateur du dîner, c’est pour définir la bonne permission sur votre nouveau dossier racine.

chmod 755 /Users/yourname/www

J'espère que cela aidera

3
Razmig

SELinux était le coupable pour moi. Si vous rencontrez ce problème sur une boîte Linux et que les autorisations de votre alias et de votre fichier sont correctes, essayez de définir "setenforce 0" pour mettre SELinux en mode permissif. Cela a fait le tour pour moi.

0
ktbiz

Solution rapide:

Utilisez ces commandes en tant que root sous Linux:

find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
0
Israelmikan

Je devais restaurer mon fichier de configuration Apache, puis configurer à nouveau le serveur. a trouvé ceci utile: https://Apple.stackexchange.com/questions/41143/how-to-revert-default-mac-Apache-install-to-original

0
TacoEater

Effectivement, faites un contrôle de santé mentale.

  • vous avez redémarré Apache

  • vérifier la propriété du groupe et de l'utilisateur

  • Je pense que les citations peuvent être supprimées

  • il y a quelque chose dans/Users/user/Documents/example? 

  • essayez 777

-sean

0
Sean Kimball