Das ist ganz einfach. Legen Sie einfach einen neuen Benutzer an, dessen Home-Verzeichnis auf dasjenige gesetzt ist, auf das er Zugriff haben soll (dieser Befehl muss unter sudo
oder in der Root-Shell ausgeführt werden):
adduser --home /restricted/directory restricted_user
Dies erstellt einen Benutzer restricted_user
, das Verzeichnis /restricted/directory
und dann werden die Rechte für das Verzeichnis so gesetzt, dass der Benutzer darin schreiben kann. Er wird standardmäßig nicht in der Lage sein, in ein anderes Verzeichnis zu schreiben.
Wenn Sie das Verzeichnis bereits haben, können Sie den Befehl adduser
mit angehängter Option --no-create-home
ausführen und die Berechtigungen manuell setzen (auch mit Root-Rechten), etwa so:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Wenn Sie auch weltschreibbare Verzeichnisse für diesen Benutzer unzugänglich machen wollen, gibt es zwei Varianten.
1) Wenn Sie dem Benutzer eine interaktive Shell-Sitzung zur Verfügung stellen wollen, dann sollten Sie diese Anleitung zum Erstellen eines chroot-Gefängnisses (in Ihrem /restricted/directory
) befolgen.
Fügen Sie danach Folgendes zu Ihrem sshd_config
hinzu:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Wenn Sie ihn nur brauchen, um Dateien zwischen seinem Verbindungsendpunkt und Ihrem Host zu kopieren, ist alles viel einfacher. Fügen Sie diese Zeilen am Ende Ihrer sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Dann kommentieren Sie das Subsystem sftp /usr/lib/openssh/sftp-server
aus, indem Sie ein Rautezeichen (#
) an den Anfang setzen.
Nach dem Neustart Ihres SSH-Servers (er beendet interaktive Sitzungen beim Neustart nicht, so dass es sicher ist, selbst wenn Sie etwas falsch konfiguriert haben; außerdem wird Ihre laufende Sitzung nicht geschlossen, bevor Sie überprüft haben, dass Sie sich noch anmelden können), sollte alles wie vorgesehen funktionieren.