Was tut chroot?

Mit der Funktion chroot() kann ein Programm sein Wurzelverzeichnis (/) wechseln. Nach dem Aufruf kann es nicht mehr auf Dateien außerhalb des neuen Baumes zugreifen (man spricht hier auch von chroot jail).

Mit dem Befehl chroot kann man einen Befehl mit einem neuen Wurzelverzeichnis starten. Das ist z.B. sinnvoll, wenn man von einer Rettungsdiskette in einem gemounteten System arbeiten will.

Achtung: chroot kann nur vom Benutzer root aufgerufen werden.

Beispiel:

mount /dev/hda5 /mnt/rootplatte
chroot /mnt/rootplatte /bin/bash -i

chroot wird gerne verwendet, um kritische Programme vom übrigen Filesystem zu isolieren. Wenn an z.B. den Nameserver als chroot laufen läßt, befindet sich ein eventueller Eindringling im Gefängnis (jail), aus dem er kaum ausbrechen kann - natürlich installiert man in diesem jail nur Dinge, die der Nameserver selbst braucht; andere Programme haben dort nichts verloren. In der Gefängniszelle sind ja auch keine Schlosserwerkzeuge vorhanden...

Chroot einrichten

Nehmen wir an, wir wollten den DNS-Server 'named' chrooted installieren. Im folgenden wird das normale Dateisystem als 'n/' und das jail als 'j/' bezeichnet.

Das wars, das heißt, es war es nicht, weil wir noch strace und bash aus j/ entfernen müssen.

System betreten

Möchte man ein System betreten, um bspw. GRUB zu installieren, so verwendet man folgenden Code (als root):

mount /dev/sda1 /mnt
mount -o bind /dev /mnt/dev
mount -o bind /dev/shm /mnt/dev/shm
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt

Das Binden von /dev auf /mnt/dev ist notwendig, da bspw. update-grub sonst auf die Gerätedateien sda, sda1 usw. keinen Zugriff hat.

Updates

Bei der Aktualisierung des Systems muss man das ganze leider wiederholen. Meistens ist das einfacher, da sich nur Teile ändern.

Überwachung

Ein Gefängnis muss bewacht werden. Das Minimum sollten 3 Prozeduren sein: backup, restore, test. Beim Backup erzeugt man Md5-Summmen der schreibgeschützten Dateien, die man mit test via Cronjob nachprüft. Was man im Falle eines Einbruchs tut, hängt natürlich vom Einzelfall ab.

Alternative

Bei modernen System, wo Plattenspeicher reichlich vorhanden ist, ist es einfacher (und sicherer), einen Vserver zu installieren, auf dem dann das gewünschte Programm läuft. Etwaige Updates laufen dann unabhängig vom übrigen System, was eine erhebliche Erleichterung ist.

Offene Fragen

chroot (zuletzt geändert am 2011-02-05 12:50:29 durch xdsl-81-173-173-228)