2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Erstellen eines SSH-Benutzers, der nur die Berechtigung zum Zugriff auf bestimmte Ordner hat

Ich habe SSH installiert, aber ich habe festgestellt, dass, wenn ich mein ursprüngliches Konto zur Anmeldung bei Ubuntu verwende, es zu viele Berechtigungen hat.

Ich möchte den Benutzer so einschränken, dass er nur Berechtigungen für bestimmte Ordner in Ubuntu hat. Wie kann ich einen solchen Benutzer konfigurieren?

Antworten (2)

53
53
53
2010-06-06 12:49:32 +0000

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.

5
5
5
2017-11-04 02:03:42 +0000

Der einfachste Weg, einen eingeschränkten Benutzer zu erstellen, der nicht aus dem gegebenen Verzeichnis herauswandern kann (z. B. in das obere Verzeichnis usw.) und einen begrenzten/ausgewählten Satz von Befehlen zu verwenden hat, ist die Verwendung einer eingeschränkten Shell. Ref: http://man.he.net/man1/rbash

Erstellen Sie zunächst einen Symlink namens rbash (als Root-Benutzer ausführen).

ln -s /bin/bash /bin/rbash

Dann legen Sie einen normalen Benutzer mit dieser Restricted Shell an und setzen dessen Homeverzeichnis auf den gewünschten Ordner:

useradd -s /bin/rbash -d /home/restricted_folder username

Auch ohne die Restricted Shell wird dieser Benutzer standardmäßig eingeschränkt, wenn Sie ihn nicht explizit zur Liste sudoer oder zu einer speziellen Gruppe hinzufügen.

Mit der Restricted Shell sind folgende Aktionen nicht erlaubt oder werden nicht ausgeführt:

  • Ändern von Verzeichnissen mit cd

  • Setzen oder Aufheben der Werte von SHELL, PATH, ENV oder BASH_ENV

  • Angeben von Befehlsnamen, die / enthalten

  • Angeben eines Dateinamens, der ein / enthält, als Argument für den .

  • Angabe eines Dateinamens, der einen Schrägstrich enthält, als Argument für die Option -p des Builtin-Befehls hash

  • Importieren von Funktionsdefinitionen aus der Shell-Umgebung beim Start

  • Parsen des Werts von SHELLOPTS aus der Shell-Umgebung beim Start

  • Umleiten der Ausgabe mithilfe der Redirects >, >|, <>, >&, &>, und >> Umleitungsoperatoren

  • Verwendung des Builtin-Befehls exec, um die Shell durch einen anderen Befehl zu ersetzen

  • Hinzufügen oder Löschen von Builtin-Befehlen mit den Optionen -f und -d zum Builtin-Befehl enable

  • Verwendung des Builtin-Befehls enable, um deaktivierte Shell-Builtins zu aktivieren

  • Angabe der Option -p zum Builtin-Befehl command

  • Ausschalten des eingeschränkten Modus mit set +r oder set +o restricted.

Diese Einschränkungen werden nach allen Startdateien erzwungen

Außerdem/Optional können Sie, um den Benutzer auf einen begrenzten/ausgewählten Satz von zu verwendenden Befehlen einzuschränken, ein .bash_profile erstellen, das für diesen Benutzer schreibgeschützt ist, mit

PATH=$HOME/bin

und Symlink, welche Befehle Sie in den Ordner ~/bin für diesen Benutzer zulassen:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

usw.

HTH