SFTP Only und chroot direkt mit OpenSSH
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