Apache ne peut pas accéder à mes liens symboliques

a marqué ce sujet comme résolu.

Salut.

J’essaie de placer mes sites web sur mon disque dur externe par simple organisation (j’aime pas l’idée de laisser tout traîner sur la centrale, on ne sait jamais :) ) et je souhaite créer un softlink pour permettre à Apache d’accéder à leurs dossiers.

Mais en dépit de toutes les tentatives effectuées avec "setfactl" et "chmod" pour résoudre ce problème (en donnant les bonnes permissions à l’utilisateur "http"), Apache ne détecte pas le lien symbolique et par conséquent mes sites ne sont pas accessibles.

Rien ne semble pourtant clocher dans mon fichier de configuration Apache, en me fiant à ce que j’ai pu trouver sur le net. C’est assez frustrant, je ne vous le cache pas. La seule chose que j’ai trouvé en relation avec mon problème, c’est cette ligne de code..

[Wed Feb 09 07:55:49.881549 2022] [core:error] [pid 6920] [client ::1:34104] AH00037: Symbolic link not allowed or link target not accessible: /srv/http/siteweb

.. qui confirme que Apache a remarqué mes liens symboliques mais ne peut pas y accéder pour Dieu sait quelle raison.

Quelqu’un, une idée ?

Je suis sur Arch, au passage. Et évidemment, tout est à jour.

+0 -0

http a bien les droits d’accès sur le dossier qui est sur le disque externe ?

Moté

J’ai même mis des permissions globales de 777 pour m’en assurer. Rien n’y fait, mais logiquement tout le monde devrait pouvoir accéder à ces fichiers. Et comme dit, j’ai tenté de lui donner (à l’utilisateur http lui-même) les permissions "r-x" qui devraient lui permettre de lire et d’exécuter.

Avant toute chose, Apache est configuré pour autoriser à les suivre ? (FollowSymLinks en valeur d'Options)

vibrice

En effet, en voici la preuve dans mon httpd.conf:

DocumentRoot "/srv/http"
<Directory "/srv/http">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
	
	DirectoryIndex index.php
	
	#
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

+0 -0

Quel est le lien symbolique ? (je ne sais pas si le message d’erreur d’Apache référence le lien symbolique ou sa destination et tu ne l’as pas précisé)

Parce que c’est l’origine (le répertoire où il est situé au départ) qui doit avoir Options FollowSymLinks (ou une valeur qui la comprend), pas la destination (celui où il mène).

Je ne pense pas que ce soit un problème de permissions (ou alors ça en deviendra un par la suite), le message d’erreur serait totalement différent (système, lié à errno = EPERM).

ls -l du lien symbolique lui-même ?

+1 -0

Quel est le lien symbolique ? (je ne sais pas si le message d’erreur d’Apache référence le lien symbolique ou sa destination et tu ne l’as pas précisé)

Un softlink, fait avec ln -s.

Parce que c’est l’origine (le répertoire où il est situé au départ) qui doit avoir Options FollowSymLinks (ou une valeur qui la comprend), pas la destination (celui où il mène).

Euh, c’est la configuration du serveur Apache qui a ces paramètres, donc je te parle bel et bien de l’origine.

ls -l du lien symbolique lui-même ?

vibrice

Désolé, mais je ne suis pas sûr de tout comprendre…

ls -l du lien symbolique lui-même ?

vibrice

Désolé, mais je ne suis pas sûr de tout comprendre…

Chauvin

La question était : que donne un ln -l avec en argument le fichier du lien symbolique ? (Pas le dossier cible, bien le ficher qui fait le lien)

$ ln -l /chemin/vers/le/lien/symbolique/dans/le/dossier/dorigine

Ça permettra de vérifier qu’il n’y a pas de souci à ce niveau là :)

+0 -0

D’après les sources d’Apache, /srv/http/siteweb est le lien symbolique, non [jamais] la cible.

Que donnent realpath /srv/http/siteweb et ls -l /srv/http/siteweb ?

D’après mes quelques tests pour tenter de la reproduire :

  • j’obtiens la même erreur (AH00037) sans FollowSymLinks
  • avec un chmod o-r (bien que ce soit loin de couvrir tous les aspects de droits), c’est une "AH00132: file permissions deny server access" qui se présente
  • j’obtiens également la même (AH00037) quand la cible n’existe pas

A priori FollowSymLinks n’est pas écrasé (.htaccess ou répertoire enfant - il n’y en a pas), erreur sur la cible du lien symbolique ? (elle est relative et suivant le répertoire courant, elle en est fausse ?)

+1 -0

ls -l du lien symbolique lui-même ?

vibrice

Désolé, mais je ne suis pas sûr de tout comprendre…

Chauvin

La question était : que donne un ln -l avec en argument le fichier du lien symbolique ? (Pas le dossier cible, bien le ficher qui fait le lien)

$ ln -l /chemin/vers/le/lien/symbolique/dans/le/dossier/dorigine

Ça permettra de vérifier qu’il n’y a pas de souci à ce niveau là :)

Amaury
lrwxrwxrwx 1 byjove byjove 50  9 févr. 14:22 siteweb -> [chemin vers le dossier cible]

Voilà. :)

D’après les sources d’Apache, /srv/http/siteweb est donc le lien symbolique, non la cible.

Que donnent realpath /srv/http/siteweb et ls -l /srv/http/siteweb ?

D’après mes tests :

  • j’obtiens la même erreur (AH00037) sans FollowSymLinks
  • avec un chmod o-r, c’est une "AH00132: file permissions deny server access" qui se présente
  • j’obtiens également la même (AH00037) quand la cible n’existe pas

A priori FollowSymLinks n’est pas écrasé, erreur sur la cible du lien symbolique ? (elle est relative et suivant le répertoire courant, elle en est fausse ?)

vibrice

En effet, "siteweb" est aussi le nom du dossier cible mais cela va de soi pour éviter les problèmes de confusion. realpath renvoie, comme ls -l, le chemin du dossier cible de mon lien symbolique. Pour avoir refait deux ou trois fois le lien, je ne pense pas qu’il soit incorrect.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte