Bonsoir,

Je suis dans un colloc avec des amis, et j'aimerai installer un serveur web en local sur lequel chacun d'entre nous pourrait développer ses propres sites, et sans pouvoir aller farfouiller dans les dossiers des autres. Ce que j'ai fait pour le moment, c'est de mettre en place un serveur SFTP : chacun d'entre nous a un accès à un répertoire perso sur le serveur, dans lequel ce trouve un dossier www/ où seront sauvegardés les fichiers de nos sites respectifs ; par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
/sftp/pierre/home/www
/sftp/jacques/home/www
J'installe ensuite Apache et PHP. Ce que j'ai fait pour configurer le serveur comme exposé plus haut, c'est utilisé le module userdir, que j'ai configuré de la sorte :
Code shell : 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
<IfModule mod_userdir.c>
#       UserDir public_html
        UserDir disabled root
        UserDir /home/*/home/www
        <Directory /home/*/home/www>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                AuthType Basic
                AuthName "Authentifiez-vous :"
                AuthBasicProvider file
                AuthUserFile "/home/pierre/passwd" #fichier dans lequel sont sauvegardés les couples (id;mdp) cryptés (1)
                Require valid-user
        </Directory>
</IfModule>
 
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Et j'ai mis dans /etc/apache2/apache2.conf :
Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<Directory />
        Require all denied
</Directory>

Et ça marche presque ! Si je vais sur 192.168.*.*/~pierre, je tombe bien sur le fichier /sftp/pierre/home/www/index/php, après m'être identifier !
Le problème que je rencontre, c'est que si Pierre fais un petit bout de PHP pour aller fouiller dans les dossiers parents, rien ne l'en empêche... :/
Par exemple :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
                <?php
                        if($dossier=opendir('../../../../'))
                        {
                                echo 'Open ! <br/>';
                                while($fichier=readdir($dossier))
                                {
                                        echo $fichier, '<br/>';
                                }
                        }
 
                        echo 'Done.<br/>';
                        echo realpath('index.php');
                ?>
Ca affiche tout ce qu'il y a à la racine du serveur.

Comment borner l'accès de chaque utilisateur à sa zone ?
Merci beaucoup !