J'essaie de créer un utilisateur kake_sftp qui peut se connecter au serveur Web situé dans/var/www/html ou similaire. Je sais que chroot a besoin de quelques sous-répertoires supplémentaires pour que les autorisations fonctionnent, donc je suis d'accord avec l'ajout de nouveaux dossiers ou la modification de la disposition des dossiers.
J'ai créé l'utilisateur dans le groupe www-data et avec le répertoire personnel dans/var/www/html
$ cat /etc/passwd | grep kake_sftp
kake_sftp:x:1001:1001::/var/www/html:/bin/bash
$ groups kake_sftp
kake_sftp : kake_sftp www-data
Ensuite, j'ai fait quelques changements dans/etc/ssh/sshd_config. J'ai remplacé "Subsystem sftp/usr/lib/openssh/sftp-server" par "Subsystem sftp internal-sftp" et j'ai ajouté les lignes suivantes à la fin
Match User kake_sftp
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTcpForwarding no
Les autorisations du dossier www sont définies comme suit.
$ ls -la /var/www
drwxrwxr-x 3 root root 4096 Apr 7 12:17 .
drwxr-xr-x 12 root root 4096 Apr 4 10:17 ..
drwxr-xr-x 2 root www-data 4096 Apr 4 11:34 html
Lorsque j'essaie maintenant de me connecter avec Filezilla défini sur sftp. J'obtiens l'erreur suivante.
Error: Network error: Software caused connection abort
Error: Could not connect to server
Lorsque j'essaie de me connecter avec mon utilisateur principal via sftp, cela fonctionne comme un charme. Il n'y a donc pas de problème avec le client.
La raison pour laquelle cela n'a pas fonctionné était que le répertoire chrooté avait des autorisations d'écriture. En révoquant toutes les autorisations d'écriture, j'ai réussi à me connecter.
chmod 555 /var/www