Mit chroot("ch ange root") wird das Wurzelverzeichnis eines Prozesses und seiner Kinder geändert. So können zum Beispiel Prozesse im Dateisystem so abgeschottet werden, dass sie nicht auf sensitive Daten zugreifen können. Dadurch laufen sie in einer Art Sandbox.
Teilweise kann aus dieser Umgebung jedoch leicht wieder ausgebrochen werden bzw. haben einige Programme auch Probleme wenn sie in einer chroot Umgebung laufen. So kann es zum Beispiel passieren, dass sie nicht mehr auf temporäre Dateien bzw. Bibliotheken zugreifen können.
Das ist jedoch kein Problem, da es ursprünglich für die Wartung und zum Aufsetzen von virtuellen Umgebungen gedacht war.
Bootet zum Beispiel das installierte System nicht mehr, kann einfach mit einer Live-CD gebootet werden und anschließend für weitere Wartungsarbeiten in eine chroot Umgebung gewechselt werden. In dieser kann dann fast so gearbeitet werden, als wenn das lokale System direkt gestartet wurde.
Im folgenden wird kurz gezeigt, wie dabei vorgegangen wird.
Zunächst wird ein neues Verzeichnis angelegt, in dieses wird anschließend die gewünschte Partition mit dem System welches in der chroot Umgebung laufen soll eingehängt.
$ mkdir -p /mount/point
$ mount /dev/sd?? /mount/point
Anschließend werden alle wichtigen Systemverzeichnisse noch einmal für die chroot Umgebung eingehängt.
$ mount --bind /dev /mount/point/dev
$ mount --bind /dev/pts /mount/point/dev/pts
$ mount --bind /proc /mount/point/proc
$ mount --bind /sys /mount/point/sys
Für das Auflösen der Hostnamen ist noch die Datei resolv.conf wichtig.
$ cp /etc/resolv.conf /mount/point/etc/resolv.conf
Ist dies geschafft kann in die chroot Umgebung wechselt werden.
$ chroot /mount/point /bin/bash
Dort können jetzt alle Aktionen durchgeführt werden. Zum Beispiel kann daraus auch der Bootloader neu installiert werden.
Achtung: Soll das Laufwerk bzw. die Partition wieder ausgehangen werden, muss genau andersherum vorgegangen werden.
$ umount /mount/point/sys
$ umount /mount/point/proc
$ umount /mount/point/dev/pts
$ umount /mount/point/dev
$ umount /mount/point
Jetzt sollten alle vorher eingehängten Verzeichnisse und Partitionen wieder sauber ausgehängt sein.
Links
- Wikipedia: chroot (deutsch)