[EDIT] Apache : Où placer les directives <directory> ?

Bonjour,

[Tout d’abord, je vous prie de bien vouloir m’excuser, je me rends bien compte que c’est contraire aux usages de proposer un (presque) nouveau sujet sous un même post. Cependant, je ne me voyais pas non plus créer un nouveau sujet (quasi) identique. Et comme personne n’avait répondu au précédent. Bref]

Donc, je débroussaille en ce moment la configuration d’un serveur apache. Mon souci à présent, est de savoir où placer les balises et de comprendre comment elles “s’héritent”

J’en trouve donc :

Bon, très bien renseignons donc dans chaque fichier_config_vhost. Tiens, voyons comment est foutu celui du site par défaut :

[code]<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
	Options FollowSymLinks
	AllowOverride None
</Directory>
<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order deny,allow
	deny from all
	allow from 192.168.19.0/24
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
	AllowOverride None
	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
	Order allow,deny
	Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

[/code]
Alors là, excusez-moi, mais je ne comprends plus rien :

  • pourquoi donner de directives pour / ? Est-ce bien le / ou un autre, relatif ?

  • pourquoi redonner la même directive pour /var/www ? Ça veut dire qu’elles ne s’héritent pas ? Dans ce cas, pourquoi faire une directive / ? Et une pour /var/www ?

Bon, je m’arrête là, mais je peine vraiment. J’ai beaucoup de mal à trouver une doc de référence, vu que la doc officielle indique de renseigner httpd.conf qui n’est plus utilisé.

Désolé, un ancien message que je n’arrive pas supprimer …

Bonjour, juste au cas ou quelqu’un chercherait la même réponse, voici la solution que j’ai adoptée :
dans chaque fichier de configuration de vhost, je place les lignes suivantes que j’ai recopiées depuis /etc/apache2/conf.d/security.

[code]# Disable access to the entire file system except for the directories that

are explicitly allowed later.

Options none AllowOverride None Order Deny,Allow Deny from all [/code] Lignes auxquelles j'ai ajouté Options none.

Comme je ne suis pas sûr d’avoir bien compris la manière dont ces règles sont héritées, ces mêmes lignes se retrouvent quand même pour chaque répertoire.
Puis je lève les options petit à petit, exactement comme pour les autorisations de connexions.

Par exemple :

<Directory /var/www/site> Options FollowSymLinks AllowOverride None Order deny,allow deny from all # Accès réseau local allow from 192.168.0.0/24 # Accès spécifique allow from xxx.xxx.xxx.xxx </Directory>

Il y a redondance (AllowOverride None / Order deny,allow / deny from all) mais je ne veux pas prendre de risque.