Stellen Sie sich dieses Szenario vor. Sie möchten einem Benutzer erlauben, nur bestimmte Aufgaben auszuführen und bestimmte Befehle auszuführen. Der Benutzer sollte die Umgebungsvariablen/Pfade nicht ändern. Er kann die anderen Verzeichnisse außer seinem Home-Verzeichnis nicht besuchen und kann nicht zu anderen Benutzern wechseln usw. Der Benutzer kann nur einige wenige Befehle ausführen, die ihm vom Systemadministrator zugewiesen wurden. Ist das möglich? Ja! Hier ist Eingeschränkte Shell kommt zu Hilfe. Mit Restricted Shell können wir den Zugriff des Benutzers auf das Linux-System einfach einschränken. Sobald Sie die Benutzer in den eingeschränkten Shell-Modus versetzt haben, dürfen sie nur eine begrenzte Anzahl von Befehlen ausführen. In diesem kurzen Tutorial werden wir darüber sprechen, wie man dies unter Linux macht. Ich habe diese Anleitung auf einem CentOS 7-Minimalserver getestet. Es funktioniert jedoch auf den meisten Unix-ähnlichen Distributionen.
Was ist Restricted Shell?
Lassen Sie mich zunächst klarstellen, was genau Restricted Shell ist. Es ist keine separate Shell wie Bash, Korn Shell usw. Wenn Sie eine vorhandene Shell mit den Optionen "rbash", "--restricted", "-r" starten, wird sie zur eingeschränkten Shell. Beispielsweise kann die Bourne-Shell mit dem Befehl bsh -r als eingeschränkte Shell gestartet werden , und die Korn-Shell mit dem Befehl ksh -r .
Die eingeschränkte Shell wird die Benutzer daran hindern, die meisten Befehle auszuführen und das aktuelle Arbeitsverzeichnis zu ändern. Die eingeschränkte Shell wird den Benutzern die folgenden Einschränkungen auferlegen:
- Sie können cd nicht ausführen Befehl. Du kannst also nirgendwo hingehen. Sie können einfach im aktuellen Arbeitsverzeichnis bleiben.
- Sie können die Werte von $PATH nicht ändern , $SHELL , $BASH_ENV oder $ENV Umgebungsvariablen.
- Sie können kein Programm ausführen, das ein /(Slash)-Zeichen enthält. Beispielsweise können Sie /usr/bin/uname nicht ausführen oder ./uname Befehl. Sie können jedoch den Befehl uname ausführen. Mit anderen Worten, Sie dürfen die Befehle nur im aktuellen Pfad ausführen.
- Sie können die Ausgabe nicht mit „
>
umleiten ’, ‘
>|
’, ‘
<> ’, ‘ >& ’, ‘&> “ und „>> ’ Umleitungsoperatoren. - Sie können den eingeschränkten Shell-Modus innerhalb von Skripten nicht verlassen.
- Sie können den eingeschränkten Shell-Modus nicht mit ‘set +r’ deaktivieren oder ‘Set +o Restricted’ .
Dies kann sehr nützlich sein, wenn eine große Anzahl von Benutzern ein gemeinsam genutztes System verwendet. Wenn Sie also den Benutzern erlauben möchten, nur bestimmte Befehle auszuführen, Restricted Shell ist eine Möglichkeit, dies zu tun.
Beschränken Sie den Zugriff des Benutzers auf das Linux-System mithilfe der eingeschränkten Shell
Erstellen Sie zuerst einen Symlink namens rbash von Bash wie unten gezeigt. Die folgenden Befehle sollten als root ausgeführt werden Benutzer.
# ln -s /bin/bash /bin/rbash
Erstellen Sie als Nächstes einen Benutzer namens "ostechnix" mit rbash als seine/ihre Standard-Login-Shell.
# useradd ostechnix -s /bin/rbash
Legen Sie das Passwort für den neuen Benutzer fest.
# passwd ostechnix
Erstellen Sie einen Papierkorb Verzeichnis innerhalb des Home-Ordners des neuen Benutzers.
# mkdir /home/ostechnix/bin
Jetzt müssen wir angeben, welche Befehle der Benutzer ausführen kann.
Hier werde ich dem Benutzer erlauben, nur "ls" auszuführen , "mkdir" , und "ping" Befehle. Sie können beliebige Befehle Ihrer Wahl zuweisen.
Führen Sie dazu die folgenden Befehle aus:
# ln -s /bin/ls /home/ostechnix/bin/ls
# ln -s /bin/mkdir /home/ostechnix/bin/mkdir
# ln -s /bin/ping /home/ostechnix/bin/ping
Jetzt verstehen Sie, warum wir im vorherigen Schritt das Verzeichnis „bin“ erstellt haben. Die Benutzer können keine Befehle außer den oben genannten drei Befehlen ausführen.
Verhindern Sie als Nächstes, dass der Benutzer .bash_profile ändert .
# chown root. /home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile
Bearbeiten Sie /home/ostechnix/.bash_profile Datei:
# vi /home/ostechnix/.bash_profile
Ändern Sie die PATH-Variable wie unten.
[...] PATH=$HOME/bin [...]
Drücken Sie ESC drücken und :wq eingeben um die Datei zu speichern und zu schließen.
Wenn sich der Benutzer jetzt anmeldet, wird die eingeschränkte Shell (rbash) als Standard-Login-Shell ausgeführt und liest das .bash_profile , wodurch PATH auf $HOME/bin gesetzt wird sodass der Benutzer nur ls ausführen kann , mkdir und ping Befehle. Die eingeschränkte Shell erlaubt dem Benutzer nicht, PATH zu ändern , und die Berechtigungen für .bash_profile erlaubt dem Benutzer nicht, die Umgebung zu ändern, um die Beschränkungen während der nächsten Anmeldesitzung zu umgehen.
Rbash verifizieren
Melden Sie sich jetzt vom Root-Benutzer ab und wieder mit dem neu erstellten Benutzer an, in unserem Fall also ostechnix.
Führen Sie dann einige Befehle aus, um zu überprüfen, ob es funktioniert oder nicht. Zum Beispiel möchte ich das Terminal leeren.
Dazu lief ich:
$ clear
Beispielausgabe:
-rbash: clear: command not found
Sie können cd nicht verwenden Befehl zum Wechseln in das andere Verzeichnis.
$ cd /root
Beispielausgabe:
-rbash: cd: restricted
Sie können die Ausgabe auch nicht mit dem >-Operator umleiten.
$ cat > file.txt
Beispielausgabe:
-rbash: file.txt: restricted: cannot redirect output
Der Benutzer "ostechnix" darf nur die von Ihnen (natürlich dem Systemadministrator) zugewiesenen Befehle verwenden. In unserem Fall kann der Benutzer ls-, mkdir- und ping-Befehle ausführen.
$ ls
$ mkdir ostechnix
$ ping -c 3 google.com
Abgesehen von diesen drei Befehlen kann der Benutzer nichts ausführen. Er/Sie ist vollständig unter Ihrer Kontrolle.
Empfohlene Lektüre:
- So überwachen Sie die Benutzeraktivität unter Linux
Benutzern neue Befehle erlauben
Wenn Sie einem Benutzer weitere Befehle zuweisen möchten, melden Sie sich vom aktuellen Benutzer ab und wieder beim Root an Benutzer erneut und weisen Sie die Befehle wie unten gezeigt zu.
Zum Beispiel, um dem Benutzer (d. h. ostechnix) zu erlauben, rm auszuführen Befehl führen Sie den folgenden Befehl als root aus Benutzer.
# ln -s /bin/rm /home/ostechnix/bin/rm
Jetzt kann der Benutzer den Befehl "rm" verwenden.
Weitere Einzelheiten finden Sie in den Manpages unter dem unten angegebenen Link.
- Rbash-Manpages