Il est préférable et plus simple d'utiliser aujourd'hui le transfert de fichiers par sftp plutôt que ftp/ftps, notamment parce que :
- Le protocole FTP est vraiment mal conçu,
- Il n'y a pas besoin de service supplémentaire autre que SSH,
D'une manière générale, il est plus simple de passer par des ACL, c'est à dire de pouvoir appliquer une configuration type à un ensemble d'utilisateurs, pour SSH nous allons utiliser les groupes. Cette manipulation a été réalisée sur une distribution de type Debian/Ubuntu.
On commence d'abord par basculer "root" le temps de faire les manipulations :
toto@server ~$ sudo -i |
On ajoute un groupe dédié :
root@server:~# groupadd sftpusers |
Ensuite, nous allons configurer SSH pour "enfermer" les utilisateurs qui appartiennent à ce groupe dans leur répertoire de connexion. Ainsi ils ne pourront pas se rendre dans le reste du système et accéder à d'autres fichiers.
Il faut se rendre dans le fichier de configuration à l'aide d'un éditeur de texte (vi ou nano) /etc/ssh/sshd_config :
... # Modifiez le ligne suivante #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # Ajoutez ceci à la fin Match Group sftpusers |
On redémarre le service :
root@server:~# systemctl restart sshd |
Pour cet exemple, nous allons créer un utilisateur "webmaster" qui pourra mettre à jour les pages Web se situant dans le répertoire "/var/www/html", vous noterez par contre que le répertoire de connexion ne sera pas directement ce répertoire, mais le répertoire du dessus. En effet, le répertoire dans lequel l'utilisateur est enfermé doit appartenir à "root". De plus, nous lui donnons un shell restreint car c'est suffisant pour ce type de connexion :
root@server:~# useradd -G sftpusers -g www-data -s /usr/sbin/nologin -c "WebMaster" -d /var/www webmaster |
L'utilisateur sera membre du groupe www-data car c'est le groupe utilisé par le serveur Web sous Debian/Ubuntu.
Il faut ensuite lui donner un mot de passe :
root@server:~# passwd webmaster |
Nous allons "donner" les fichiers web à cet utilisateur
root@server:~# chown -R webmaster.www-data /var/www/html |
Nous pouvons tester en local et bien constater que l'utilisateur n'a pas accès à la racine du système :
root@server:~# sftp webmaster@localhost |
Il est possible maintenant d'utiliser un logiciel de transfert de fichier comme FileZilla pour mettre à jour son site Web de manière sécurisé !!
Il faut bien penser à quitter le sudo à la fin :
root@server:~# exit toto@server ~$ |