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

Tranquille Emil -  
atoross Messages postés 3 Statut Membre -
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 !
Configuration: Windows XP
Firefox 2.0.0.14

8 réponses

  1. atoross Messages postés 3 Statut Membre 11
     
    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
    1. atoross Messages postés 3 Statut Membre 11
       
      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
  2. arthur
     
    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
    1. atoross Messages postés 3 Statut Membre 11
       
      J'ai (arthur) ajouté une nouvelle explication plus complète : voir atoross 10 nov 2010 à 00:03
      0
  3. Ephares Messages postés 110 Date d'inscription   Statut Membre 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
  4. Tranquille Emil
     
    Bonjour,

    Justement, avec un Deny from all, les fichiers aussi sont interdits aux visiteurs ...
    3
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. arthur
     
    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