Solution 1 :
Hey @emmdee Il m'a fallu une éternité pour réaliser qu'il y avait une astuce simple et agréable à cela. Il vous suffit de faire de root le propriétaire d'un dossier parent vers lequel vous voulez sFTP, puis d'utiliser la commande force pour dire à un utilisateur spécifique de charger un DIR spécifique dans le répertoire CHROOT.
Dans votre cas au cas où vous voudriez /home/sftpuser
pour être le répertoire inscriptible, vous devrez faire de root le propriétaire de /home
répertoire puis continuez et forcez la commande he /sftpuser
comme répertoire de destination pour cet utilisateur ou un groupe.
Votre /etc/ssh/sshd_conf
ressemblera à ceci :
Match User sftpuser
ChrootDirectory /home
ForceCommand internal-sftp -d /sftpuser
AllowTCPForwarding no
X11Forwarding no
Une fois cela fait, vous devez donner les bonnes autorisations comme indiqué précédemment, la racine doit posséder le répertoire parent (chroot) /home
tandis que l'utilisateur doit posséder le répertoire final(-d) /sftpuser
. Je vais supposer que vous avez un groupe d'utilisateurs sFTP appelé sftpusers , sinon; omettez simplement le groupe des commandes suivantes ou remplacez-le par les utilisateurs à la place (root dans le premier et sftpusers dans la seconde). Comme nous utilisons -R dans la ligne de commande pour l'héritage, vous devrez commencer par la propriété racine avant la propriété utilisateur comme suit :
sudo chown -R root:sftpusers /home
alors pour l'utilisateur vous pouvez exécuter :
sudo chown -R sftpuser:sftpusers /home/sftpuser
Je ne suis pas certain que cela soit nécessaire, mais vous pouvez toujours redémarrer le service sshd pour vous assurer que tous les paramètres sont rechargés :
sudo systemctl restart sshd.service
J'espère que cela devrait fonctionner comme un charme, j'ai eu un problème similaire et la solution était là, me regardant dans les yeux la plupart du temps.
Santé !
Solution 2 :
Je sais que cela fait quelques années, mais cet article m'a permis d'atteindre 98 % du chemin. après une longue recherche.
Pour faire en sorte que je puisse chrooter les utilisateurs et les placer automatiquement dans leur propre répertoire avec des autorisations d'écriture, j'ai utilisé la méthode suggérée par African Idiot, et j'ai également créé le répertoire chroot d'origine appartenant à l'utilisateur root et au groupe ftp.
Mais la clé pour moi de les garder dans ce dossier et de ne pas pouvoir .. et essayer de parcourir les dossiers des autres utilisateurs, était de créer le dossier chmod 710 (rwx--x---)
de sorte que le groupe ftp ait exécuté pour faire le internal-sftp -d /%u (c'est-à-dire cd dans le sous-répertoire des utilisateurs) et maintenant si j'essaie de cd ..
dans le répertoire supérieur, car il n'y a pas de lecture pour personne d'autre que root, cela échoue.
drwx--x--- 6 root sftpusers uarch 6 Feb 19 15:34 ./
drwxr-xr-x 5 root root uarch 5 Feb 4 09:13 ../
drwxrwx--- 3 anotheruser anotheruser uarch 3 Feb 24 15:34 anotheruser/
drwxrwx--- 3 ftpuser ftpuser uarch 12 Feb 25 10:55 ftpuser/
j'espère que cela aidera quelqu'un d'autre aussi.