Apache: chmod 755 n'est-il pas suffisant pour configurer un lien symbolique ou un alias sur Apache httpd sur Mac OS 10.5?

15

Sur ma machine Mac OS 10.5, je voudrais mettre en place un sous - dossier ~/Documentscomme ~/Documents/foo/htmlêtre http: // localhost / foo .

La première chose que j'ai pensé à faire est d'utiliser Alias ​​comme suit:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

Cela m'a fait interdire 403. Dans le error_log, j'ai obtenu:

[error] [client ::1] (13)Permission denied: access to /foo denied

Le sous-dossier en question dispose d'un accès chmod 755. J'ai essayé de spécifier des likes comme http: //localhost/foo/test.php , mais cela n'a pas fonctionné non plus. Ensuite, j'ai essayé la route du lien symbolique.

Entré dans /Library/WebServer/Documentset fait un lien symbolique vers ~/Documents/foo/html. La racine du document a

Options Indexes FollowSymLinks MultiViews

Cela m'a toujours fait interdire 403:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

De quoi d'autre ai-je besoin pour configurer cela?

Solution :

$ chmod 755 ~/Documents

En général, le dossier à partager et l'ensemble de son dossier ancêtre doivent être visibles par l' wwwutilisateur du service.

Eugene Yokota
la source
Merci beaucoup d'avoir posté cette solution - cela m'a vraiment aidé après avoir passé des années à chercher la réponse
Tomba
@Tomba Pas de problème.
Eugene Yokota

Réponses:

24

Je parie que certains répertoires au-dessus de celui auquel vous souhaitez accéder n'ont pas les autorisations pour autoriser Apache à le parcourir. Devenez l'utilisateur sous lequel Apache est exécuté ( sudo -i -u apacheou quoi que ce soit), puis essayez de le changer dans le répertoire d'intérêt et lsainsi de suite. Si vous ne pouvez pas (comme prévu), essayez d'entrer dans les répertoires au-dessus, un par un, jusqu'à ce que l'on vous laisse entrer. Le sous-répertoire de celui-ci est celui qui doit avoir été o+xdéfini. Faire mousser, rincer, répéter au besoin.

womble
la source
1
Oui, si "Sites" fonctionne, vous avez probablement un problème correct sur Documents, si "Sites" ne fonctionne pas, vous avez probablement un problème correct sur votre répertoire utilisateur (cela peut s'ajouter à Filevault)
radius
1
~ / Documents était de 700.
Eugene Yokota
Si je fonctionne sudo -i -u _wwwsous OS X (puisque l'utilisateur Apache est _www by dans la configuration par défaut d'apache sous OS X), alors je le fais whoami, j'obtiens toujours mon nom d'utilisateur, pas _www
Jason S
Pour passer complètement à un autre utilisateur avec sudo, j'utilise '-' par lui-même: sudo - www-data(pour Ubuntu).
Alexis Wilke
2

Utilisation +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>
Dave Cheney
la source
Selon httpd.apache.org/docs/2.0/en/mod/core.html#options , "si toutes les options de la directive Options sont précédées d'un symbole + ou -, les options sont fusionnées." Comment cela va-t-il aider ~ / Documents à 700?
Eugene Yokota
AFAIK FollowSymLinks n'active pas l'option, permet seulement de l'activer à un niveau inférieur de la hiérarchie d'annuaire.
Dave Cheney
1
C'était la bonne réponse pour moi. J'ai modifié le fichier conf dans / etc / apache2 / users et j'ai autorisé FollowSymLinks (sans le +). N'oubliez pas de redémarrer.
superluminaire
1

Vérifiez que le coffre-fort de fichiers n'est pas activé. J'ai eu le même problème. J'ai essayé tout le reste que j'ai pu trouver. Rien n'a fonctionné. Mais après une heure à essayer de comprendre cela, je me suis rappelé que j'avais activé le coffre-fort.

Le désactiver a résolu le problème.

Bob
la source
1

Vérifiez la propriété du lien symbolique. Puisque vous êtes sous Mac OS X, les propriétaires de liens symboliques peuvent être modifiés. À /Library/WebServer/Documentsfairels -l

Si votre lien symbolique ~/Documents/foo/htmlest appeléfoo et dispose d'autorisations telles que

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Ensuite, par défaut sur OS X Apache s'exécute en tant qu'utilisateur _www et groupe _www, donc dans le cas mentionné ci-dessus, il ne pourra pas traverser le lien symbolique vers ~/Documents/foo/html

Courir man 8 chown sur votre terminal système, ou de regarder en ligne homme chown

Vous verrez qu'en utilisant le -h option changera la propriété du lien symbolique lui-même, plutôt que le fichier vers il pointe (c'est sa source). Ensuite, vous pouvez faire quelque chose comme

sudo chown -h :_www foo 

Cela changera le lien sim en

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

et le groupe Apache _www pourra traverser le lien.

Jason S
la source
0

Vérifiez votre répertoire / Users (ls -l / Users) pour voir les droits de votre utilisateur (quelqu'un).
Le répertoire "Sites" est-il également correctement disponible sur localhost / ~ quelqu'un?

rayon
la source
localhost / ~ quelqu'un travaille.
Eugene Yokota