In diesem Beispiel möchten wir einen Benutzer (genannt "test") auf einem Linux-System anlegen der nur Dateiübertragungen per SFTP durchführen kann, und das zusätzlich nur innerhalb eines bestimmten Verzeichnisses. Er ist also in diesem Verzeichnis "gefangen" und kann nicht in höher gelegene Verzeichnisse wechseln.
Zuerst fügen wir einen neuen Benutzer hinzu. Dieser braucht keinen Shell-Zugang:
sudo adduser test --shell=/bin/false
Jetzt wird die SSH-Konfigurationsdatei bearbeitet
sudo nano /etc/ssh/sshd_config
diesen Teil auskommentieren:
#Subsystem sftp /usr/lib/openssh/sftp-server
diesen Teil direkt darunter einfügen:
Subsystem sftp internal-sftp
und diesen Teil ganz unten einfügen:
Match User test
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
SSH-Dienst neu starten:
sudo systemctl restart sshd
Jetzt muss root der Besitzer des Home-Pfads von test werden, sonst gelingt die Anmeldung nicht:
sudo chown root:root /home/test/
sudo chmod 0755 /home/test/
Damit der Benutzer Dateien hoch- und runterladen kann, benötigen wir jetzt noch einen Unterordner:
sudo mkdir /home/test/daten
sudo chown test:test /home/test/daten
Nun kann man sich mit dem Benutzer test mit einem SFTP-Client am Server anmelden. Der Benutzer kann nun Dateien im Ordner "daten" anlegen, aber sein Home-Verzeichnis nicht verlassen.