[APACHE] Interdire l'accès à un dossier

Fermé
Tranquille Emil - 24 avril 2008 à 18:13
atoross Messages postés 3 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 10 novembre 2010 - 10 nov. 2010 à 11:10
Bonjour,

J'aimerais générer une erreur 403 pour un de mes dossiers. J'ai fouillé un peu partout, et à chaque fois que j'essayais des choses, ok le dossier était interdit au public ... mais les fichiers aussi !
J'aimerais donc savoir comment faire (au lieu de mettre un fichier index.html contenant "403 forbidden") interdire l'accès au dossier mais autoriser tous les fichiers (un peu comme ici : http://www.siteduzero.com/Templates/ ) : on a accès aux fichiers mais pas au dossier.

Merci à tous ceux qui me répondront et qui m'aidront !

8 réponses

atoross Messages postés 3 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 10 novembre 2010 11
10 nov. 2010 à 00:03
Je donne ici une nouvelle explication, plus complète et plus explicite, suite à la réaction de Shiroky ! J'avais écris sous le pseudo Arthur et je n'ai reçu qu'un mail pour m'alerter sur ce sujet. Maintenant je me suis inscrit sur le site.

Vous pouvez aussi tester en ligne ma proposition (voir plus loin). J'espère que j'ai bien répondu à vos questions :-)

Le texte que je donne ici, se trouve également, en version plus colorée, sur https://wiki.bht.fr/index.php/Interdire_l'acc%c3%a8s_aux_r%c3%a9pertoires_d'un_site_web_avec_Apache

Il s'agit ici de montrer comment interdire de voir le contenu d'un répertoire (ne pas pouvoir lire la liste des fichiers ou des sous répertoires) tout en donnant la possibilité d'accéder aux fichiers ou sous répertoires.

Vous pourrez tester mes solutions directement sur http://wiki.bht.fr/apache_tuto/ et http://wiki.bht.fr/apache_tuto2/.

On écarte aussi la solution qui consiste à déposer un fichier tel que index.html, index.php, .htaccess, etc. car pratiquement il faudrait le faire dans tous les répertoires concernés.

Prenons l'exemple de deux arborescences identiques, apache_tuto et apache_tuto2 de répertoires et fichiers suivants :

Les fichiers fic(i).txt contiennent le texte "fic(i)".

apache_tuto
??? dir1
? ??? fic1.txt
? ??? fic2.txt
??? dir2
? ??? fic1.txt
? ??? fic2.txt
??? fic1.txt
??? fic2.txt

apache_tuto2
??? dir1
? ??? fic1.txt
? ??? fic2.txt
??? dir2
? ??? fic1.txt
? ??? fic2.txt
??? fic1.txt
??? fic2.txt

Pour apache_tuto nous allons interdire l'accès au contenu des répertoires mais on peut accéder aux fichiers. Pour apache_tuto2, nous autorisons tout.

Mes illustrations sont données pour un apache2 (2.2.16-3) tournant sous linux(debian). Les fichiers de configuration se trouvent sous /etc/apache2/.

En général la configuration se fait dans /etc/apache2/httpd.conf ou /etc/apache2/sites-enabled/000-default.

Et les configurations restant à faire doivent en général se trouver entre les directive <VirtualHost>, comme par exemple :

<VirtualHost 192.168.0.10:80 >

# ... autre config existant...

<Directory /CheminAbsoluVersLaRacine/apache_tuto>
# je configure ici les droits de apache_tuto
</Directory>
<Directory //CheminAbsoluVersLaRacine/apache_tuto2>
# je configure ici les droits de apache_tuto
</Directory>

# ... autre config existant...

</VirtualHost>

En ajoutant la configuration voulue nous avons alors :

<VirtualHost 192.168.0.10:80 >

# ... autre config existant...

<Directory /CheminAbsoluVersLaRacine/apache_tuto>
Options -Indexes
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory //CheminAbsoluVersLaRacine/apache_tuto2>
Options Indexes
AllowOverride None
Order allow,deny
allow from all
</Directory>

# ... autre config existant...

</VirtualHost>

La seule différence est l'option Indexes ou -Indexes. L'option -Indexes interdit de voir le contenu du répertoire.

Maintenant on peut tester cette configuration en cliquant sur les liens suivants :

cas 1 : on interdit l'accès aux contenu des répertoire mais on accède aux fichiers :

* http://wiki.bht.fr/apache_tuto/
* http://wiki.bht.fr/apache_tuto/fic1.txt
* http://wiki.bht.fr/apache_tuto/dir1
* http://wiki.bht.fr/apache_tuto/dir1/fic1.txt

et

cas 2 : on autorise l'accès aux contenu des répertoire (en fait apache fabrique à la volée une sorte de index.html dans lequel nous avons les liens html vers les fichiers et sous répertoires) et on accède aux fichiers :

* http://wiki.bht.fr/apache_tuto2/
* http://wiki.bht.fr/apache_tuto2/fic1.txt
* http://wiki.bht.fr/apache_tuto2/dir1
* http://wiki.bht.fr/apache_tuto2/dir1/fic1.txt
12
atoross Messages postés 3 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 10 novembre 2010 11
10 nov. 2010 à 11:10
En utilisant un .htaccess bien placé !

voir aussi ce même texte sur https://wiki.bht.fr/index.php/Interdire_l'acc%c3%a8s_aux_r%c3%a9pertoires_d'un_site_web_avec_Apache#En_utilisant_.htaccess

Cette méthode peut être utile à ceux qui sont hébergés et qui n'ont pas accès fichiers de configuration d'Apache tels que /etc/apache2/httpd.conf.

Reprenons la même arborescence de fichiers et répertoires qui cette fois-ci est nommée apache_tuto3 :

apache_tuto3
??? dir1
?   ??? fic1.txt
?   ??? fic2.txt
??? dir2
?   ??? fic1.txt
?   ??? fic2.txt
??? fic1.txt
??? fic2.txt


Supposons que votre hébergeur a configuré Apache pour vos répertoire de la façon suivante :

<VirtualHost 192.168.0.10:80 >
 
        # ... autre config existant...
 
	<Directory /CheminAbsoluVersLaRacine/apache_tuto3>
		Options Indexes
		AllowOverride All
		Order allow,deny
		allow from all	
        </Directory>
 
        # ... autre config existant...
 
</VirtualHost>

Notez deux différences avec apache_tuto et une différence apache_tuto2 :

* "Options Indexes" autorise l'accès au contenu des répertoires;
* "AllowOverride All" autorise au fichiers .htaccess déposés dans certains de vos répertoires pour vous permettre de configurer localement le comportement d'Apache.

Déposons donc un fichier .htaccess dans /CheminAbsoluVersLaRacine/apache_tuto3 qui contient les lignes suivantes :

Options -Indexes

Nous obtenons alors le même comportement d'Apache que le cas de /CheminAbsoluVersLaRacine/apache_tuto !

Maintenant on peut tester cette configuration en cliquant sur les liens suivants :

cas 3 : on interdit l'accès aux contenu des répertoire mais on accède aux fichiers :

* http://wiki.bht.fr/apache_tuto3/
* http://wiki.bht.fr/apache_tuto3/fic1.txt
* http://wiki.bht.fr/apache_tuto3/dir1
* http://wiki.bht.fr/apache_tuto3/dir1/fic1.txt
0
Voici un exemple interdisant l'accès au contenu du répertoire mais autorisant l'accès au fichiers :
dans les fichiers config de apache :

<Directory "/Mon/web/repertoire/">
Order deny,allow
Allow from all
Options -Indexes
</Directory>

ou dans le répertoire concerné dans le fichier .htaccess :

Options -Indexes
5
atoross Messages postés 3 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 10 novembre 2010 11
10 nov. 2010 à 00:37
J'ai (arthur) ajouté une nouvelle explication plus complète : voir atoross 10 nov 2010 à 00:03
0
Ephares Messages postés 102 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 29 avril 2009 32
24 avril 2008 à 18:32
cherche à créer un petit .htacess a la racine du répertoire concerné avec à l'intérieur du fichier htaccess un petit deny all

Voilà
++
3
Tranquille Emil
24 avril 2008 à 19:32
Bonjour,

Justement, avec un Deny from all, les fichiers aussi sont interdits aux visiteurs ...
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tranquille Emil
24 avril 2008 à 23:36
personne ne sait ? :(
2
Tranquille Emil
25 avril 2008 à 15:05
UP SVP
1
Tranquille Emil
27 avril 2008 à 13:08
Up svp j'en ai besoin
1
Voir la documentation apache :

http://httpd.apache.org/docs/2.2/mod/core.html#options

où l'on trouve :

Indexes
If a URL which maps to a directory is requested, and there is no DirectoryIndex (e.g., index.html) in that directory, then mod_autoindex will return a formatted listing of the directory.

Il faut donc ajouter :

Options -Indexes
1