Das ist ganz einfach. Erstellen Sie einfach einen neuen Benutzer, dessen Ausgangsverzeichnis auf das Verzeichnis festgelegt 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
Dadurch wird ein Benutzer erstellt restricted_user
, das Verzeichnis /restricted/directory
und anschließend die Berechtigungen für das Verzeichnis festgelegt, damit der Benutzer darauf schreiben kann. Standardmäßig kann nicht in ein anderes Verzeichnis geschrieben werden.
Wenn Sie das Verzeichnis bereits haben, können Sie den adduser
Befehl mit --no-create-home
angehängter Option ausführen und die Berechtigungen manuell festlegen (auch mit Root-Rechten), z.
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Wenn Sie selbst Verzeichnisse mit Schreibrechten für diesen Benutzer unzugänglich machen müssen, gibt es zwei Varianten.
1) Wenn Sie dem Benutzer eine interaktive Shell-Sitzung bereitstellen möchten, sollten Sie dieses Handbuch zum Erstellen eines Chroot-Gefängnisses (in Ihrem /restricted/directory
) befolgen .
Fügen Sie danach Folgendes zu Ihrem hinzu sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Wenn Sie nur Dateien zwischen seinem Endpunkt der Verbindung und Ihrem Host kopieren müssen, ist alles viel einfacher. Fügen Sie diese Zeilen am Ende Ihres sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Kommentieren Sie das dann Subsystem sftp /usr/lib/openssh/sftp-server
aus, indem Sie #
am Anfang ein Rautezeichen ( ) setzen.
Nach dem Neustart des SSH-Servers (interaktive Sitzungen werden beim Neustart nicht abgebrochen, sodass die Sicherheit auch dann gewährleistet ist, wenn Sie etwas falsch konfiguriert haben. Außerdem wird die laufende Sitzung nicht geschlossen, bevor Sie überprüft haben, ob Sie sich noch anmelden können), sollte alles funktionieren wie beabsichtigt.