Alors que je testais différentes choses pour m'assurer que mon installation d'Apache était aussi sécurisée que possible, j'ai décidé de vérifier si je verrais une liste de répertoires de fichiers. J'ai donc créé un répertoire de test et ajouté quelques fichiers:
/var/www/domain/public_html/test
/var/www/domain/public_html/test/a.txt
/var/www/domain/public_html/test/b.txt
À ma grande surprise, lorsque je suis allé dans ce répertoire de test, j'ai vu a.txt
et b.txt
répertoriés.
Je suis retourné à mon fichier d'installation et j'avais le programme d'installation Options -Indexes
, alors je me demandais pourquoi je verrais les fichiers a.txt
et b.txt
Seule ma configuration ressemblait à ceci:
<VirtualHost domain:80>
...
Options -Indexes
...
</VirtualHost>
En regardant documentation de la commande Options , il est clairement indiqué:
Context: server config, virtual Host, directory, .htaccess
Pourtant, lorsque je mets cette option spécifique directement au niveau VirtualHost
, elle ne fait rien.
J'ai changé la configuration pour déplacer le Options
dans une balise Directory
et cela fonctionne.
<VirtualHost domain:80>
...
<Directory "/var/www/domain/public_html/">
Options -Indexes
</Directory>
...
</VirtualHost>
Est-ce juste un gros Gotcha!? Quelque chose qu'il faut savoir pour éviter de NE PAS désactiver l'option que l'on veut désactiver ???
Vous pouvez utiliser Options -Indexes
directement dans le conteneur VirtualHost. Cependant, si cela aura l'effet désiré une fois défini ici ou non, cela dépendra du fait que Options
ait été défini ailleurs dans la configuration du serveur. Par exemple, toutes les sections <Directory>
définies n'importe où else (relatives au répertoire auquel vous accédez) risquent de remplacer cette option, car elles sont traitées ultérieurement dans la demande.
Options
défini directement dans le conteneur VirtualHost ne remplacera que Options
défini directement dans la configuration du serveur.
Puisque la directive Options
"contrôle les fonctionnalités du serveur disponibles dans un répertoire particulier", il est beaucoup plus courant de voir cela dans les conteneurs <Directory>
. Définir Options
directement dans le serveur config/VirtualHost ne convient que pour définir un valeur par défaut. Cependant, il est courant de voir les valeurs par défaut définies dans un conteneur <Directory />
dans la configuration du serveur qui contrôlera l’ensemble du serveur - une directive Options
remplacerait ici tout Options
déclaré directement dans VirtualHost. (Notez que "serveur par défaut" ne doit pas être déclaré avec les préfixes +
/-
, donc ne sera pas fusionné.)
La documentation Apache liée à la question fait référence à Apache 2.4. Sur Apache 2.4, Indexes
ne sont pas activés par défaut (default:Options FollowSymLinks
), donc pour que cela soit activé sur le serveur, il faut qu'il soit explicitement défini quelque part.
Sur Apache 2.2, Indexes
sont activés par défaut (default:Options All
), mais ceci peut être remplacé dans le conteneur VirtualHost (à condition qu'il ne soit pas définis ailleurs).
J'ai rencontré ce problème dans le passé. D'après la documentation d'aide à proprement parler, la directive options -indexes
devrait fonctionner dans le bloc vhost principal, mais d'après mon expérience et sur la base de tous les exemples disponibles sur l'utilisation de cette directive lors de la désactivation de l'indexation des répertoires <Directory ""></Directory>
dans le fichier vhost.