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.