Viele Kunden wünschen sich einen SFTP Benutzer gefangen in einem Ordner, ohne Shell (SSH) Zugang.
OpenSSH bietet ab Version 4.9p1 eigene Bordmittel um die Chroot-Umgebung umzusetzen.
OpenSSH konfigurieren
Zu Beginn muss OpenSSH mitgeteilt werden, dass Benutzer der Gruppe sftp anders behandelt werden sollen. Hierzu nehmen wir in der Datei /etc/ssh/sshd_config zwei Einstellungen vor:
1 2 3 4 5 6 7 |
#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no |
Die erste Zeile kommentiert den Standardwert aus, in der Zweiten wird das neue Subsystem internal-sftp bestimmt. Es entfällt somit das Installieren unnötiger Bibliotheken im Chroot-Verzeichnis.
Die dritte Anweisung greift jedes mal wenn sich ein Benutzer der Gruppe sftp authentifiziert. Er wird in sein Home-Directory (%h) eingesperrt und es wird nochmal explizit der internal-sftp geforced. TCP-Forwarding soll ebenfalls abgeschaltet sein.
Benutzer Einstellungen
Es kann nun ein Benutzer angelegt werden, als Beispiel nehmen wir sftptest.
Das Home-Directory wird mit der Variable -m automatisch erzeugt, der Benutzer soll keinen Shell-Zugang bekommen -s /bin/false und er soll der Gruppe sftp angehören -G sftp:
1 2 |
addgroup sftp useradd -m -s /bin/false -G sftp sftptest |
Das Passwort für den Benutzer sftptest setzen wir wie folgt:
1 |
passwd sftptest |
Es folgt ein Prompt bei dem ein Passwort angegeben werden muss. Anschließend muss das Passwort nochmal bestätigt werden.
Wurde bereits ein Benutzer angelegt und Du möchtest Ihm SFTP-Zugang gewähren,
führst Du folgendes aus:
1 2 |
usermod -G sftp sftptest usermod -s /bin/false sftptest |
Das Home-Directory
Das Home-Directory benötigt untypische Berechtigungen. Der Benutzer root muss den Besitz über das Home-Directory haben, andernfalls wird kein Login möglich sein:
1 2 |
chown root:root /home/sftptest/ chmod 0755 /home/sftptest/ |
Damit der Benutzer Dateien samt Ordnern hochladen kann, müssen wir ihm noch ein Verzeichnis anlegen das ihm gehört.
1 2 |
mkdir /home/sftptest/upload chown sftptest:sftptest /home/sftptest/upload |
Das war es. Nun kann der Kunde die Login Daten erhalten.
-Dominion
Unterstütze unsere Arbeit mit einer Spende. |