So verwenden Sie die eingeschränkte Shell, um die Möglichkeiten eines Linux-Benutzers einzuschränken
Veröffentlicht: 2022-01-29Eine eingeschränkte Shell schränkt die Möglichkeiten eines Benutzerkontos unter Linux ein. Ein eingeschränkter Benutzer kann sein Verzeichnis nicht ändern, und Sie steuern, auf welche Befehle er Zugriff hat. So richten Sie eine eingeschränkte Shell unter Linux ein.
Eingeschränkte Muscheln
Eine eingeschränkte Shell ist keine andere Shell. Es ist ein anderer Modus einer Standard-Shell. Bash, Korn, Fish und andere Shells können alle im eingeschränkten Shell-Modus gestartet werden. Wir werden in diesem Artikel Bash verwenden, aber die gleichen Prinzipien gelten für die anderen Shells.
Da eingeschränkte Shells nur eine andere Möglichkeit sind, Ihre Standard-Shell zu verwenden, sind sie einfach einzurichten. Es muss nichts installiert werden und sie sind überall dort verfügbar, wo Linux ist.
Eingeschränkte Shells können auch auf Skripte angewendet werden. Dadurch wird sichergestellt, dass jeder Schaden, den sie verursachen können, wenn sie falsch geschrieben wurden, auf die Grenzen ihrer eingeschränkten Welt beschränkt ist und dass sie keinen Zugriff auf Ihren gesamten Computer haben.
Beachten Sie jedoch, dass eingeschränkte Granaten nicht vollständig fluchtsicher sind. Jemand mit genügend Wissen kann einer eingeschränkten Hülle entkommen. Sie sind großartig, um einem gelegentlichen Benutzer sichere Grenzen zu setzen, aber verlassen Sie sich nicht auf eingeschränkte Shells für reale Sicherheit in einem Produktionssystem.
VERWANDT: Was ist der Unterschied zwischen Bash, Zsh und anderen Linux-Shells?
Eingeschränkte Bash
Wenn Sie Bash als eingeschränkte Shell ausführen, werden dem Benutzer einige Funktionen entzogen. Insbesondere darf der Benutzer nicht :
- Verwenden Sie
cd
, um das Arbeitsverzeichnis zu ändern. - Ändern Sie die Werte der Umgebungsvariablen
$PATH
,$SHELL
,$BASH_ENV
oder$ENV
(aber sie können die aktuellen Werte lesen). - Lesen oder ändern Sie die Shell-Umgebungsoptionen
$SHELLOPTS
. - Leiten Sie die Ausgabe eines Befehls um.
- Rufen Sie Befehle auf, die einen Pfad erfordern, um sie zu finden. Das heißt, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche „
/
“ enthält. - Rufen
exec
auf, um die Shell durch einen anderen Prozess zu ersetzen. - Verwenden Sie eine der eingeschränkten Funktionen in einem Skript.
Sie können eine eingeschränkte Bash-Shell mit der Option -r
(eingeschränkt) aufrufen. Der Versuch, eine einfache Aufgabe wie das Ändern des Arbeitsverzeichnisses auszuführen, ist verboten. Eine knappe Meldung teilt Ihnen mit, dass cd
eingeschränkt ist.
bash-r
CD-Dokumente
Die Bash-Shell kann auch erkennen, wenn sie aufgerufen wurde, indem sie „rbash“ anstelle von „bash“ verwendet. Dies bewirkt, dass es auch als eingeschränkte Shell gestartet wird. Dies bietet eine bequeme Möglichkeit, die Standard-Shell für einen bestimmten Benutzer festzulegen, die wir bald verwenden werden.
Wenn wir unter Ubuntu den Befehl whereis
verwenden, um nach den rbash
Dateien zu suchen, sehen wir, dass sich die ausführbare Datei im Verzeichnis „usr/bin“ befindet. Die Manpage befindet sich im Verzeichnis „/usr/share/man/man1“.
Die Verwendung des ls
mit der Option -l
(long) zeigt, dass rbash
tatsächlich ein symbolischer Link zu bash
ist.
wo ist rbash
ls -l /usr/bin/rbash
Auf Manjaro und Fedora musste der symbolische Link rbash
erstellt werden. Dies funktioniert auf beiden Distributionen:
wo ist rbash
sudo ln -s /bin/bash /bin/rbash
wo ist rbash
Das zweite Mal, wenn wir den whereis
Befehl verwenden, findet er rbash
im Verzeichnis „/usr/bin“.
Einschränken eines Benutzers
Lassen Sie uns ein neues Benutzerkonto mit dem Namen „Minnie“ erstellen. Wir werden ihre Shell mit der Option -s
(shell) des Befehls useradd
als eingeschränkte Shell festlegen. Wir werden auch das Passwort des Kontos mit dem Befehl passwd
festlegen und einen Home-Ordner für sie erstellen.
Das Flag -p
(parents) im Befehl mkdir
weist mkdir
an, das Zielverzeichnis und alle übergeordneten Verzeichnisse, die es ebenfalls erstellen muss, zu erstellen. Indem wir also das Verzeichnis „/home/minnie/bin“ erstellen, erstellen wir gleichzeitig das Verzeichnis „/home/minnie“.
sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin
Wenn sich Minnie anmeldet, wird sie in einer eingeschränkten Shell ausgeführt.
CD
Sie kann keine Befehle aufrufen, die einen Schrägstrich „ /
“ enthalten müssen:
/usr/bin/ping
Sie kann jedoch weiterhin Befehle ausführen, die im Pfad gefunden werden.
Klingeln
Das ist nicht das Verhalten, das Sie vielleicht erwartet haben, und es ist sicherlich nicht das, was wir wollen. Um die Einschränkungen weiter zu verschärfen, müssen wir den Pfad ändern, den Minnies Shell verwendet, um nach Befehlen zu suchen.
Verschärfung der Beschränkungen
Als wir Minnies Home-Verzeichnis „/home/minnie“ erstellt haben, haben wir auch ein „/home/minnie/bin“-Verzeichnis erstellt. Hier kommt das Verzeichnis ins Spiel.
Wir werden Minnies „.bash_profile“-Datei bearbeiten und ihren Pfad so einstellen, dass er nur auf dieses Verzeichnis verweist. Wir werden auch Minnies „.bash_profile“-Datei einschränken, sodass nur root sie bearbeiten kann. Das bedeutet, dass kein anderer Benutzer diese Datei bearbeiten und ihren Pfad ändern kann.
sudo gedit /home/minnie/.bash_profile
Bearbeiten Sie entweder das vorhandene „PATH=“ oder fügen Sie die folgende Zeile hinzu:
PATH=$HOME/bin
Speicher die Datei. Wir ändern den Eigentümer der Datei mit dem Befehl chown
auf root und ändern die Dateiberechtigungen mit dem Befehl chmod
. Nur der Root-Benutzer kann die Datei bearbeiten.
sudo chown root:root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
Wenn sich Benutzerin Minnie das nächste Mal anmeldet, zeigt ihr Pfad auf einen einzelnen Ordner.
Unser eingeschränkter Benutzer minnie kann nur integrierte Bash-Befehle wie echo
, alias
und logout
verwenden. Sie kann nicht einmal ls
benutzen!
ls
Wir müssen unseren Würgegriff etwas lockern, wenn wir wollen, dass sie überhaupt etwas Nützliches tun können. Wir erstellen einige symbolische Links von Minnies „bin“-Verzeichnis zu den Befehlen, die Minnie verwenden können soll.
sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin
Wenn sich Minnie das nächste Mal anmeldet, wird sie feststellen, dass sie die in Bash integrierten Befehle sowie die verknüpften Befehle verwenden kann.
ls
Pinky Dave
Betriebszeit
Bestehende Benutzer einschränken
Wir haben Minnie als neuen Benutzer erstellt. Um die Shell eines bestehenden Benutzers zu ändern, können wir die Option -s
(shell) des Befehls usermod
.
sudo usermod -s /bin/rbash mary
Sie können den Befehl less
in der Datei „/etc/passwd“ verwenden, um schnell zu sehen, welche Shell als Standard-Shell eines Benutzers festgelegt ist.
weniger /etc/passwd
Wir können sehen, dass die Benutzerin Mary die eingeschränkte Shell verwenden wird, wenn sie sich das nächste Mal anmeldet.
Denken Sie daran, die anderen Änderungen anzuwenden, um ihre $PATH
Umgebungsvariable einzuschränken und die Befehle festzulegen, die der Benutzer mary ausführen können soll.
Einschränken von Skripten
Ein normaler, uneingeschränkter Benutzer kann Skripte starten, die in einer eingeschränkten Shell ausgeführt werden. Kopieren Sie die folgenden Zeilen und fügen Sie sie in einen Editor ein. Speichern Sie die Datei als „restricted.sh“ und schließen Sie den Editor.
#!/bin/bash # Das Skript startet in der normalen Bash-Shell echo "## Im uneingeschränkten Modus! ##" Echo echo "Aktuelles Verzeichnis: `pwd`" echo "Verzeichnis wechseln" CD /usr/share echo "Jetzt im Verzeichnis: `pwd`" echo "Wechsel ins Home-Verzeichnis" CD ~ echo "Jetzt im Verzeichnis: `pwd`" # Einstellen des eingeschränkten Modus setze -r Echo echo "## Im eingeschränkten Modus! ##" Echo echo "Aktuelles Verzeichnis: `pwd`" echo "Ändere das Verzeichnis nach /home/" cd /home echo "Noch im Verzeichnis: `pwd`" Echo echo "Versuche, eine andere Shell zu starten" /bin/bash Echo echo "Versuche, die Befehlsausgabe umzuleiten" ls -l $HOME > meine_dateien.txt cat meine_dateien.txt Echo Ausgang 0
Wir müssen den Befehl chmod
mit dem Flag +x
(Ausführen) verwenden, um das Skript ausführbar zu machen.
chmod +x eingeschränkt.sh
Der erste Teil des Skripts läuft in einer normalen Shell.
./eingeschränkt.sh
Der zweite Teil des Skripts – das Bit nach der Zeile „set -r“ – wird in einer eingeschränkten Shell ausgeführt.
Keine der versuchten Aktionen ist im eingeschränkten Teil des Skripts erfolgreich.
Ein ganzes Skript kann dazu gebracht werden, in einer eingeschränkten Shell ausgeführt zu werden, indem man -r
zur ersten Zeile hinzufügt:
!#/bin/bash -r
Denken Sie an Houdini
Eingeschränkte Shells sind nützlich, aber nicht völlig unfehlbar. Ein ausreichend erfahrener Benutzer kann ihnen möglicherweise entkommen. Bei vernünftiger Verwendung sind sie jedoch eine nützliche Methode, um eine Reihe von Einschränkungen für ein bestimmtes Konto festzulegen.