web-dev-qa-db-fra.com

Le contexte de la commande Options Apache2 varie-t-il en fonction des indicateurs utilisés?

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 ???

4
Alexis Wilke

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).

1
MrWhite

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.

2
Chris Rutherfurd