Vor- und Nachteile verschiedener Shells

Ratgeber: Shells für Linux und Unix richtig nutzen

Die Restricted Shell: rbash

Die rbash ist eine eingeschränkte bash-Shell (unter Restricted Shell). Die Shell kann auf zwei Arten gestartet werden: indem der Benutzer sie mit dem Befehl rbash aufruft oder mit "bash -r". Die Restricted Shell dient dazu, eine kontrollierte Umgebung zu bieten. So wird sie hin und wieder in chroot-Gefängnissen genutzt, um den Systemzugriff noch weiter einzuschränken.

Einschränkung umgehen: Mit dem Befehl ":set shell=/bin/sh" im Editor vi kann der Benutzer einer einschränkende Shell diese aushebeln.
Einschränkung umgehen: Mit dem Befehl ":set shell=/bin/sh" im Editor vi kann der Benutzer einer einschränkende Shell diese aushebeln.

Unter anderem ist in der rbash zum Beispiel der Verzeichniswechsel mit cd nicht möglich. Auch können keine Umgebungsvariablen wie SHELL und PATH geändert werden. Ebenso ist das Umleiten der Ausgabe mit >, >> etc. abgeschaltet. Restricted-Shell-Modi gibt es außer in der bash auch in der Bourne- und in der Korn-Shell.

Die rbash ist allerdings nicht vollständig abgesichert. Ein Benutzer kann beispielsweise einfach aus der eingeschränkten Umgebung ausbrechen, wenn er ein Programm benutzt, das seinerseits Shell-Zugriff ermöglicht. Im Standard-Unix-Editor vi sind dazu beispielsweise nur zwei Befehle erforderlich:

:set shell=/bin/sh

:shell

Screen-Shell: screen

Screen passt eigentlich nicht ganz in die typischen Shells, denn das Programm geht teilweise darüber hinaus. Screen ist ein Fenstermanager für die Konsole. Damit kann der Benutzer über ein einziges Terminal mehrere virtuelle Sitzungen verwalten. In diesen können verschiedene Programme laufen, und der Benutzer kann zwischen diesen mit der Tastenkombination [Strg-Alt-Leertaste] hin- und herschalten.

Verräterisch: Welche Tastenkombinationen der Fenstermanager screen bietet, zeigt er nach der Eingabe von [Strg-A-?].
Verräterisch: Welche Tastenkombinationen der Fenstermanager screen bietet, zeigt er nach der Eingabe von [Strg-A-?].

Befehle und Programme kann man mit [Strg-A-D] von der aktuellen Sitzung trennen; das jeweilige Programm läuft dann im Hintergrund weiter. Wenn sich der Benutzer anschließend aus- und wieder einloggt, kann die vorherige Sitzung mit "screen -r" wiederhergestellt werden.