So verwenden Sie die eingeschränkte Shell, um einzuschränken, was ein Linux-Benutzer tun kann

Inhalt

Ein Terminalfenster auf einem Linux-System.

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);

Abonnieren Sie unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.