Hello,
je profite du confinement pour me plonger un peu dans le paramètrage d'un serveur Apache2.
Dans le livre "Apache2.4 Installation et Configuration" de Nicolas Martinez, je vois ces lignes :
<Directory />
Options None
AllowOverride None
Require all denied
</Directory>
<Directory /opt/prod/apache2.4/htdocs/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
J'aurais aimé avoir le retour de quelqu'un de plus expérimenté que moi sur la signification et la portée de ces lignes.
1) Les directives Directory sont
additives et la directory de plus long chemin aura le dernier mot ? Dans l'exemple donné, on interdit tout accès à n'importe quel répertoire (première directive Directory) SAUF dans le cas particulier où on tape dans /opt/prod/apache2.4/htdocs/ (seconde directive Directory).
Je crois comprendre que les règles de préséance sont logiques (le chemin de plus long chemin a le dernier mot) plutôt que chronologique (a directive définie en dernier dans le fichier de conf aura le dernier mot); ainsi que semble l'indiquer la
doc :
doc Apache a écritSi plusieurs sections <Directory> (sans expression rationnelle) correspondent au répertoire (ou à un de ses parents) qui contient le document, les directives de la section <Directory> dont le chemin est le plus court sont appliquées en premier, en s'intercalant avec les directives des fichiers .htaccess.
En particulier, je suppose que ceci est équivalent à l'exemple du livre (même si ça pique un peu les yeux de lire ça dans cet ordre) :
<Directory /opt/prod/apache2.4/htdocs/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory />
Options None
AllowOverride None
Require all denied
</Directory>
2) Pour chacun des répertoires, on peut définir un certain nombre de comportement par défaut d'Apache
Options
Indexes : si index.html n'existe pas lorsqu'on pointe sur le répertoire en question, on affichera plutôt un listing dudit du répertoire. Mais si on ne met pas Indexes, il se passe quoi ???
Options
FollowSymlinks : on autorise Apache à suivre les liens symboliques. Ce faisant, est-il possible de 1/ sortir de /opt/prod/apache2.4/htdocs/ ? 2/ taper dans un répertoire qui n'appartient pas au user qui fait tourner le serveur Apache ?
Options
None : on ne définit aucune option. Je ne vois pas en quoi cette option est utile dans le cas de la direction "/" : de toute façon, nous ne pouvons pas y accéder non ?
3) AllowOverride None : on ne permet pas à d'éventuels fichiers de modif (par défaut les ".htaccess") de venir modifier le comportement par défaut du serveur
4) Require all denied/granted : formulation la plus simple de la directive Require : on autorise ou on interdit.
5) Je découvre qu'on peut faire plein de trucs sympa avec Require et notamment mettre en place une authentification basique. Néanmoins cette dernière repose sur un certain nombre de modules que je n'arrive pas à différencier... Savez-vous quelles sont les différences entre authz_core, authz_user, authn_core, authn_file et auth_basic ???
Merci d'avance pour vos retours 🙂
Donut