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.
Subsystem sftp internal-sftp
Zeile in Ihrem zweiten Beispiel über denMatch
Block schreiben . Andernfalls gibt ssh einen Fehler aus und startet nicht.Der einfachste Weg, einen eingeschränkten Benutzer zu erstellen, der das angegebene Verzeichnis nicht verlassen kann (z. B. in das übergeordnete Verzeichnis usw.) und einen eingeschränkten / ausgewählten Befehlssatz zu verwenden, ist die Verwendung einer eingeschränkten Shell. Ref:
http://man.he.net/man1/rbash
Erstellen Sie zunächst einen Symlink mit dem Namen
rbash
(als Root-Benutzer ausführen).Dann erstelle einfach einen normalen Benutzer mit dieser eingeschränkten Shell und setze das Ausgangsverzeichnis auf den gewünschten Ordner:
Auch ohne die eingeschränkte Shell wird dieser Benutzer standardmäßig eingeschränkt, wenn Sie ihn nicht explizit zur sudoer-Liste oder zu speziellen Gruppen hinzufügen.
Bei der eingeschränkten Shell sind die folgenden Aktionen nicht zulässig oder werden nicht ausgeführt:
verzeichnisse wechseln mit cd
Festlegen oder Deaktivieren der Werte von SHELL, PATH, ENV oder BASH_ENV
Befehlsnamen angeben, die / enthalten
Angabe eines Dateinamens mit einem / als Argument für die. eingebauter Befehl
Angeben eines Dateinamens mit einem Schrägstrich als Argument für die Option -p des integrierten Hash-Befehls
Importieren von Funktionsdefinitionen aus der Shell-Umgebung beim Start
Analysieren des Werts von SHELLOPTS aus der Shell-Umgebung beim Start
Umleiten der Ausgabe mit den Umleitungsoperatoren>,> |, <>,> &, &> und >>
Verwenden Sie den Befehl exec builtin, um die Shell durch einen anderen Befehl zu ersetzen
Hinzufügen oder Löschen von eingebauten Befehlen mit den Optionen -f und -d zum Befehl enable builtin
Verwenden des Befehls enable builtin zum Aktivieren deaktivierter Shell-Builtins
Angabe der Option -p für den Befehl builtin command
den eingeschränkten Modus mit set + r oder set + o restricted ausschalten.
Diese Einschränkungen werden nach allen Startdateien erzwungen
Um den Benutzer auf einen bestimmten Befehlssatz zu beschränken, können Sie für diesen Benutzer ein schreibgeschütztes .bash_profile mit erstellen
und verknüpfen Sie alle Befehle, die Sie erlauben, in den Ordner ~ / bin mit diesem Benutzer:
usw.
HTH
quelle