Lösung 1:
Hey @emmdee Ich habe ewig gebraucht, um zu erkennen, dass es dafür einen einfachen und netten Trick gibt. Sie müssen nur root zum Besitzer eines übergeordneten Ordners machen, zu dem Sie sFTP verwenden möchten, und dann den Befehl force verwenden, um einem bestimmten Benutzer mitzuteilen, dass er ein bestimmtes DIR in das CHROOT-Verzeichnis laden soll.
In Ihrem Fall, falls Sie /home/sftpuser
möchten um das beschreibbare Verzeichnis zu sein, müssen Sie root machen der Besitzer von /home
Verzeichnis, dann gehen Sie vor und Force Command er /sftpuser
als Zielverzeichnis für diesen Benutzer oder eine Gruppe.
Ihre /etc/ssh/sshd_conf
sieht so aus:
Match User sftpuser
ChrootDirectory /home
ForceCommand internal-sftp -d /sftpuser
AllowTCPForwarding no
X11Forwarding no
Sobald dies erledigt ist, müssen Sie, wie bereits erwähnt, die richtigen Berechtigungen erteilen, der Root sollte das übergeordnete Verzeichnis (Chroot) /home
besitzen während der Benutzer das Verzeichnis final(-d) /sftpuser
besitzen sollte . Ich gehe davon aus, dass Sie eine sFTP-Benutzergruppe namens sftpusers haben , wenn nicht; Lassen Sie die Gruppe einfach bei den nächsten Befehlen weg oder ersetzen Sie sie stattdessen durch die Benutzer (root in den ersten und sftpusers in dieser Sekunde). Da wir -R in der Befehlszeile für die Vererbung verwenden, müssen Sie wie folgt mit dem Root-Eigentum vor dem Benutzer-Eigentum beginnen:
sudo chown -R root:sftpusers /home
dann können Sie für den Benutzer Folgendes ausführen:
sudo chown -R sftpuser:sftpusers /home/sftpuser
Ich bin mir nicht sicher, ob dies erforderlich ist, aber Sie können den sshd-Dienst jederzeit neu starten, um sicherzustellen, dass alle Einstellungen erneut geladen werden:
sudo systemctl restart sshd.service
Das sollte hoffentlich wie ein Zauber funktionieren, ich hatte ein ähnliches Problem und die Lösung sah mir die meiste Zeit in die Augen.
Prost!
Lösung 2:
Ich weiß, es ist ein paar Jahre her, aber dieser Beitrag hat mich zu 98 % dorthin gebracht. nach langer Suche.
Um es so zu machen, dass ich Benutzer chrooten lassen und sie automatisch mit Schreibrechten in ihr eigenes Verzeichnis bringen kann, habe ich die von African Idiot vorgeschlagene Methode verwendet und auch das ursprüngliche Chroot-Verzeichnis erstellt, das dem Root-Benutzer und der FTP-Gruppe gehört.
Aber der Schlüssel für mich, sie in diesem Ordner zu behalten und nicht in der Lage zu sein, die Ordner anderer Benutzer zu durchsuchen, war, den Ordner chmod 710 (rwx--x---)
zu erstellen so dass die ftp-Gruppe ausführen musste, um das internal-sftp -d /%u (dh cd in das Benutzer-Unterverzeichnis) auszuführen, und jetzt, wenn ich versuche, cd ..
in das obere Verzeichnis, da es für niemanden außer root Lesezugriff gibt, schlägt dies fehl.
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/
hoffe, das hilft auch jemand anderem.