
Eine eingeschränkte Shell schränkt ein, was ein Benutzerkonto unter Linux tun kann. Ein eingeschränkter Benutzer kann sein Verzeichnis nicht ändern und Sie steuern, auf welche Befehle er Zugriff hat. Nächste, erklärt, wie man eine eingeschränkte Shell unter Linux einrichtet.
Eingeschränkte Muscheln
Eine eingeschränkte Hülle ist keine eigenständige Hülle. Es ist ein anderer Modus als eine Standard-Shell. das Versucht, Korn, Pez, und andere Shells können im eingeschränkten Shell-Modus gestartet werden. Wir werden Bash in diesem Beitrag verwenden, aber die gleichen Prinzipien gelten für die anderen Schalen.
Weil eingeschränkte Shells nur eine weitere Möglichkeit sind, Ihre Standard-Shell zu verwenden, sie sind einfach zu konfigurieren. Es gibt nichts zu installieren und sie sind überall verfügbar, wo Linux ist.
Eingeschränkte Shells können auch auf Skripte angewendet werden. Dadurch wird sichergestellt, dass alle Schäden, die sie bei falscher Schreibweise verursachen können, auf die Grenzen ihrer eingeschränkten Welt beschränkt sind und sie keinen Zugriff auf Ihren gesamten Computer haben..
Trotz dieses, Beachten Sie, dass beschränkte Projektile nicht vollständig auslaufsicher sind. Jemand mit genügend Wissen kann einer eingeschränkten Hülle entkommen. Sie eignen sich hervorragend zum Festlegen sicherer Grenzen für einen Gelegenheitsbenutzer, aber verlassen Sie sich nicht auf eingeschränkte Shells für die Sicherheit in der realen Welt auf einem Produktionssystem.
VERBUNDEN: Was ist der Unterschied zwischen Bash, Zsh und andere Linux-Shells?
Eingeschränkter Treffer
Wenn Sie Bash als eingeschränkte Shell ausführen, Benutzer hat einige Funktionen entfernt. Speziell, der Benutzer kann nicht:
- Verwenden
cd
um das Arbeitsverzeichnis zu ändern. - Ändern Sie die Werte der
$PATH
,$SHELL
,$BASH_ENV
, Ö$ENV
Umgebungsvariablen (aber sie können aktuelle Werte lesen). - Lesen oder ändern
$SHELLOPTS
Shell-Umweltoptionen. - Leiten Sie die Ausgabe eines Befehls um.
- Rufen Sie Befehle auf, die einen Pfad erfordern, um sie zu finden. Mit anderen Worten, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “
/
” darin. - Aufrufen
exec
die Schale durch ein anderes Verfahren zu ersetzen. - Verwenden Sie eine der eingeschränkten Funktionen in einem Skript.
Sie können eine eingeschränkte Bash-Shell aufrufen, indem Sie die -r
Möglichkeit (eingeschränkt). Der Versuch, eine einfache Aufgabe wie das Ändern des Arbeitsverzeichnisses auszuführen, ist verboten. Eine lakonische Nachricht sagt dir das cd
Es ist eingeschränkt.
bash -r
CD-Dokumente
Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “rbash” Anstatt von “bash”. Dadurch startet es auch als eingeschränkte Shell. Dies bietet eine bequeme Möglichkeit, die Standard-Shell für einen bestimmten Benutzer zu konfigurieren, die wir bald benutzen werden.
Wenn wir die verwenden whereis
Befehl in Ubuntu, um nach dem zu suchen rbash
Dateien, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “usr / Behälter”. Die Manpage befindet sich im Verzeichnis „/usr / Teilen / Mann / Mann1”.
Verwendung der ls
Befehl mit dem -l
Die Option (lang) verrät das rbash
ist eigentlich ein symbolischer Link zu bash
.
wo ist rbash
ls -l /usr/bin/rbash
In Manjaro und Fedora, das rbash
Sie mussten einen symbolischen Link erstellen. Das funktioniert bei beiden Distributionen:
wo ist rbash
sudo ln -s /bin/bash /bin/rbash
wo ist rbash
Das zweite Mal verwenden wir die whereis
Befehl, finden rbash
im Verzeichnis „/usr / Behälter".
Einschränken eines Benutzers
Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “Minnie”. Wir konfigurieren Ihre Hülle als eingeschränkte Hülle mit dem -s
(Hülse) Option der useradd
Befehl. Wir konfigurieren auch das Kontopasswort mit dempasswd
Befehl, und wir werden einen Home-Ordner für sie erstellen.
das -p
(Eltern) Flagge in der mkdir
der Befehl sagt mkdir
um das Zielverzeichnis und ein beliebiges übergeordnetes Verzeichnis zu erstellen, das Sie zusätzlich erstellen müssen. Dann, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “/ Zuhause / Minnie / Behälter”, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “/ Zuhause / Minnie” zur selben Zeit.
sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin
Wenn Minnie sich einloggt, läuft in einer eingeschränkten Shell.
CD
Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “/
“:
/usr/bin/ping
Trotz dieses, Sie können weiterhin Befehle ausführen, die im Pfad gefunden werden.
Klingeln
Das ist nicht das Verhalten, das ich erwartet hätte, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält. Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält.
Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält
Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “/ Zuhause / Minnie”, Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “/ Zuhause / Minnie / Behälter”. Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält.
Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält “.Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält” Sie können keinen Befehl ausgeben, der einen oder mehrere Schrägstriche enthält. Wir werden auch Minnies ".bash_profile" -Datei einschränken, so dass 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 die “PFAD =” vorhanden oder fügen Sie die nächste Zeile hinzu:
PATH=$HOME/bin
Speichern der Datei. Brunnen Ändern des Eigentümers der Datei root mit dem chown
Befehl und Dateiberechtigungen ändern Verwendung der chmod
Befehl. 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
Das nächste Mal, wenn sich der Minnie-Benutzer anmeldet, Der Pfad verweist auf einen einzelnen Ordner.
Unsere Minnie mit eingeschränktem Benutzer kann nur integrierte Bash-Befehle wie echo
, alias
, und logout
. Sie kann nicht einmal benutzen ls
!
ls
Tendremos que aflojar un poco nuestro dominio si queremos que puedan hacer algo útil. Crearemos algunos links simbólicos desde el directorio “Behälter” de minnie a los comandos que queremos que minnie pueda utilizar.
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
Das nächste Mal loggt sich Minnie ein, Sie werden feststellen, dass Sie die integrierten Bash-Befehle verwenden können, gleichzeitig die Befehle, mit denen sie verknüpft sind.
ls
kleiner dave
Betriebszeit
Bestehende Benutzer einschränken
Wir erstellen minnie als neuen Benutzer. Zum die Hülle eines bestehenden ändern Nutzername, wir können das gebrauchen -s
(Hülse) Option der usermod
Befehl.
sudo usermod -s /bin/rbash mary
Du kannst den ... benutzen less
Befehl in der Datei „/etc / passwd ”um schnell zu sehen, welche Shell als Standard-Shell des Benutzers festgelegt ist.
weniger /etc/passwd
Wir können sehen, dass Benutzer Mary beim nächsten Login die eingeschränkte Shell verwenden wird.
Denken Sie daran, die anderen Änderungen anzuwenden, um Ihre $PATH
Umgebungsvariable und um die Befehle festzulegen, die der Benutzer mary ausführen soll.
Skripteinschränkung
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 unter “restricto.sh” y cierre el editor.
#!/bin/bash # script starts in normal Bash shell echo "## Im UNrestricted-Modus! ##" echo echo "Aktuelles Verzeichnis: 'pwd'" Echo "Verzeichnis ändern" cd /usr/share echo "Jetzt im Verzeichnis: 'pwd'" Echo "Wechseln in das Home-Verzeichnis" cd ~ echo "Jetzt im Verzeichnis: 'pwd'" # Setting restricted mode set -r echo echo "## Im eingeschränkten Modus! ##" echo echo "Aktuelles Verzeichnis: 'pwd'" Echo "Ändern des Verzeichnisses in /home/" cd /home echo "Noch im Verzeichnis: 'pwd'" echo echo "Versuch, eine andere Shell zu starten" /bin/bash echo echo "Versuch, die Befehlsausgabe umzuleiten" ls -l $HOME > my_files.txt cat my_files.txt echo exit 0
Wir müssen die verwenden chmod
Befehl mit dem +x
(Lauf) Flag, um das Skript ausführbar zu machen.
Flag, um das Skript ausführbar zu machen
Der erste Teil des Skripts läuft in einer normalen Shell.
./eingeschränkt.sh
Der zweite Teil des Drehbuchs, Flag, um das Skript ausführbar zu machen “Flag, um das Skript ausführbar zu machen”, läuft in einer eingeschränkten Shell.
Keine der versuchten Aktionen ist im eingeschränkten Teil des Skripts erfolgreich.
Ein vollständiges Skript kann durch Hinzufügen von . in einer eingeschränkten Shell ausgeführt werden -r
zur ersten Zeile:
!#/bin/bash -r
Erinnere dich an Houdini
Eingeschränkte Projektile sind nützlich, aber nicht ganz unfehlbar. Ein ausreichend geschulter Benutzer kann ihnen entkommen. Aber mit Bedacht eingesetzt, sind eine nützliche Methode, um eine Reihe von Einschränkungen für ein bestimmtes Konto festzulegen.
setTimeout(Funktion(){
!Funktion(F,B,e,v,nein,T,so)
{wenn(f.fbq)Rückkehr;n=f.fbq=Funktion(){n.callMethode?
n.callMethod.apply(nein,Argumente):n.queue.push(Argumente)};
wenn(!f._fbq)f._fbq = n;n.drücken=n;n.geladen=!0;n.version=’2.0′;
n.Warteschlange=[];t=b.Element erstellen(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,so) } (window, dokumentieren,'Skript',
„https://connect.facebook.net/en_US/fbevents.js’);
fbq('drin', ‘335401813750447’);
fbq('Spur', 'Seitenansicht');
},3000);