Bonjour,

Je cherche, je cherche mais ne trouve point..

Configuration: Apache 2.4 sur Debian Jessie
Le tout fraîchement installé, suivis d'apt-get upgrade && apt-get update

J'ai cree un dossier '/var/www/http' contenant le dossier 'test', lui même contenant les dossiers 'public', 'private' et 'resource'
Toute l'arborescence depuis '/var/www' inclut, appartient au groupe 'www-data' et possède des droits de type '755' (lecture + exécution pour tout le monde, mais écriture uniquement pour l'owner).

Les règles définis dans apache2.conf:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
<Directory /var/www/>
        FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>
Les règles définis dans mon virtualhost 'test.conf' définissent:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
DocumentRoot /var/www/http/test/public
DirectoryIndex index.php index.html
Alias /resource "/var/www/http/test/resource"
 
<Directory /var/www/http/test>
        Require all denied
</Directory>
 
<Directory /var/www/http/test/private>
        Require all denied
</Directory>
 
<Directory /var/www/http/test/resource>
        Require all granted
</Directory>
 
<Directory /var/www/http/test/public>
        Require all granted
</Directory>
Dans public j'ai un fichier index.html et dans resource le fichier index.css associé.
Dans la section head de l'index il y a:


<link rel='stylesheet' content='text/css' href='/resource/index.css'>
Tout marche à merveille! Seulement je me suis rendu compte que d'enlever le mot Indexes d'apache2.conf me permet en effet de recevoir le message 'forbidden' lorsque que j'essaie d'acceder à "localhost/resource" mais je peut toujours afficher le contenu de "localhost/resource/index.css".

Pas bien méchant pour du css.. Seulement ça m'embête quand même, surtout quand je voudrais avoir du contenu plus sensible dans 'private' par exemple, sur lequel il y aura aussi un alias (pour que php puisse y accéder de la même manière que <link> pour le css).

J'ai donc modifié dans le virtualhost la section:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
<Directory /var/www/http/test/resource>
        Require all granted
</Directory>
en:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
<Directory /var/www/http/test/resource>
        Require all denied
</Directory>
Je n'ai plus accès à "localhost/resource/index.css", c'est très bien, mais malgré les droits octroyés à l'arborescence, il semblerait que www-data soit lui aussi bloqué, parce que le css d'index.html ne se charge plus du tout...

Donc ma question (qui revient partout sur le web mais dont je ne trouve pas de réponses satisfaisante) : Peut-on protéger un accès grâce à 'Require all denied' sans pour autant bloquer l'execution de la balise <link> ou l'accès par un script php par exemple?

Merci, et bon dimanche à tous