Der Befehl chroot

In diesem Beitrag lernen Sie den Befehl chroot kennen, welcher unter Linux- / UNIX-Betriebssystemen eingesetzt wird, um einen Befehl oder eine interaktive Shell mit einem bestimmten Wurzelverzeichnis auszuführen. Als Teil des essenziellen Pakets coreutils ist chroot standardmäßig bereits auf allen Systemen vorinstalliert.

chroot nimmt mit der Änderung des Wurzelverzeichnisses Einfluss auf den gestarteten bzw. aktuellen Prozess und seine Kindprozesse. Nach dem Setzen des Wurzelverzeichnisses eines Prozesses soll letzterer nicht mehr auf Dateien außerhalb dieses Verzeichnisses zugreifen können, was ihn effektiv in eine Sandbox-Umgebung versetzen würde. Voraussetzung ist dabei, dass es keine offenen Dateideskriptoren nach Draußen gibt. Der Ausbruch aus der Sandbox ist oft leicht möglich - so beschreiben verschiedene Quellen etwa auch den Ausbruch des root-Benutzers aus einer chroot-Umgebung. Unter Linux wird chroot daher auch nicht als Sicherheitsfeature bezeichnet.

Es ist zu beachten, dass die Verwendung des Befehls chroot dadurch erschwert wird, dass zu startende Programme verschiedene Dateien, wie beispielsweise Konfigurationsdateien und Programmbibliotheken, an einem festen Ort erwarten. Ist die chroot-Umgebung nicht an den richtigen Orten mit diesen Dateien ausgestattet, so kommt es zu Fehlern.

Allgemeine Syntax

Die allgemeine Syntax des Befehls chroot lautet folgendermaßen:

chroot [Optionen] [Wurzelverzeichnis] [Befehl [Argument(e)]]

Die Angabe des zu verwendenden Wurzelverzeichnisses ist notwendig. Der Übergabe eines Befehls sowie seiner Argumente für die Ausführung ist dagegen optional - wird kein Befehl übergeben, so führt chroot "${SHELL} -i" aus, wobei "${SHELL}" durch den Inhalt der entsprechenden Umgebungsvariablen ersetzt wird. Die Option -i gibt zudem an, dass eine interaktive Shell gestartet wird.

Der Aufruf von chroot erfordert root-Berechtigungen.

Beispiel: chroot ohne Optionen

Der Befehl chroot wird hier ohne Optionen ausgeführt, um in die Bash eines anderen, im eigenen System eingehängten, Linux-Systems zu wechseln. Die System-Partition letzteren Linux-Systems wurde mittels mount unter /tausch eingehängt.
Eingabe:

chroot wird hier lediglich das Wurzelverzeichnis des anderen Linux-Systems, welches in diesem Fall dem Einhängepunkt /tausch entspricht, übergeben.

chroot /tausch/

Ergebnis:

Infolge der Ausführung des Befehls wird eine interaktive Shell mit dem spezifizierten Wurzelverzeichnis gestartet. Die nötigen Programmdateien usw. bringt das eingehängte System bereits mit. Ein Blick nach außen ist ohne Weiteres nicht möglich, aber mit exit lässt sich die gestartete Shell wieder verlassen.

Wichtige Optionen

In diesem Abschnitt werden die wichtigsten Optionen des Befehls chroot vorgestellt.

--userspec - Benutzer / Gruppe spezifizieren

Benutzer und Gruppe, mit denen der Prozess gestartet wird, lassen sich mit der Option --userspec festlegen. Beide Angaben werden dabei als ID oder Name, wie auch bei dem Befehl chown üblich, durch einen Doppelpunkt ":" getrennt voneinander angegeben. Die Angabe erfolgt durch ein Gleichheitszeichen "=" getrennt direkt hinter der Option.

chroot --userspec=[Benutzer]:[Gruppe] [Wurzelverzeichnis] [Befehl [Argument(e)]]

--skip-chdir - Arbeitsverzeichnis nicht ändern

Standardmäßig wird das Arbeitsverzeichnis nach Ausführung von chroot in / geändert. Durch die Option --skip-chdir wird dieses Verhalten unterbunden.

chroot --skip-chdir [Wurzelverzeichnis] [Befehl [Argument(e)]]

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: