SFTP Only und chroot direkt mit OpenSSH

Aus Laub-Home Wiki

Wer auf einem System Benutzern das Übertragen von Dateien ermöglichen will, ohne diesen Zugriff auf das ganze System zu geben, sollte man den Benutzern nur SFTP erlauben und sie dann noch am Besten in ihrem Homefolder einsperren (chroot). Dies kann mittels OpenSSHd ermöglicht werden.
Die Vorgehensweise ist sehr simpel, wir legen als erstes eine Gruppe an:

groupadd sftponly

Dieser Gruppe fügen wir dann den gewünschten Benutzer hinzu, oder legen einen Neuen Benutzer an. Die folgenden Befehle geben dem Benutzer /srv/data als Homefolder und fügen den Benutzer der sftponly Gruppe hinzu.

usermod -d /srv/data -G sftponly -s /bin/false benutzer1
useradd -d /srv/data -G sftponly -s /bin/false benutzer1

Dann ist es ganz wichtig dem Verzeichnis folgende Rechte zu geben:

chown root.root /srv/data
chmod 755 /srv/data

Nun wird noch der SSH Daemon angepasst, hier wird allen Benutzern der Gruppe sftponly eine chroot Umgebung zugewiesen und die umask 007 eingerichtet.
/etc/ssh/sshd_config

Subsystem       sftp    internal-sftp
Match Group sftponly
        ChrootDirectory %h
        ForceCommand internal-sftp -u 007
        AllowTcpForwarding no

Dannach den SSH Daemon neu starten:

/etc/init.d/sshd restart

Nun muss dem Benutzer noch ein Verzeichnis in das er schreiben darf angelegt werden:

mkdir /srv/data/benutzer1
chown benutzer1.benutzer1 /srv/data/benutzer1