GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Chroot SFTP - Es ist möglich, dem Benutzer zu erlauben, in das aktuelle (Chroot-) Verzeichnis zu schreiben

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.


Linux
  1. Weisen Sie einem Benutzer Lese-/Schreibzugriff auf ein bestimmtes Verzeichnis in Linux zu

  2. Die Funktion von User Group Root??

  3. $pwd? (im Vergleich zum aktuellen Arbeitsverzeichnis)?

  4. Ist das Mounten und Ändern einer Loopback-Datei ohne sudo/root möglich?

  5. Gechrootete SFTP-Benutzerschreibberechtigungen

So erstellen Sie einen SFTP-Benutzer für einen Webserver Document Root

Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

Wie ändere ich die Berechtigungen vom Root-Benutzer auf alle Benutzer?

So beschränken Sie den Root-Benutzer in CentOS

push/pop aktuelles Verzeichnis?

SFTP mit Chroot abhängig vom öffentlichen Schlüssel des verbindenden Benutzers