====== chroot ====== Mit ''chroot'' (für //change root//) ist es möglich, das aktuelle root-Verzeichnis (''/'') für den aktuellen Prozess und alle Kindprozesse zu wechseln. Nach dem Wechsel mittels ''chroot'' kann nicht mehr auf Daten zugegriffen werden, die sich außerhalb des neuen Dateibaumes beginnend ab ''/'' befinden. In diesem Zusammenhang spricht man auch von einem "chroot jail". Eine weitere sehr machtvolle Anwendung ist es, mittels ''chroot'' in ein bereits existierendes Linux-System zu wechseln, um dort innerhalb dieses Systems Änderungen vorzunehmen. So ist es beispielsweise möglich, nach dem Wechsel in ein solches Linux das Passwort zu ändern, sollte man es vergessen haben, oder aber das System zu reparieren, falls etwas das System vermeintlich unbrauchbar gemacht hat. ===== chroot in ein bestehendes Linux ===== Nehmen wir an, wir haben ein Linux-System, dass aufgrund eines Software-Fehlers nicht mehr verwendbar ist. Wir wissen aber, wie wir diesen beheben könnten, sofern wir Zugriff darauf erlangen. Dazu ist es nötig, dass System in irgendeiner Weise von einem anderweitig gestarteten Linux mounten zu können. Entweder, indem das zu reparierende System an ein bestehendes Linux angeschlossen werden kann, z. B. in Form einer SD-Karte oder externer Festplatte, oder aber mittels eines Live-Systems, dass auf der Hardware mit dem reparaturbedürftigen Linux gestartet wird. Ist dies geschehen, kann das beschädigte System auf dem laufenden Linux gemountet werden. Dazu kann mittels ''lsblk'' herausgefunden werden, welche Partition auf welchem Datenträger von Interesse ist. Mehr Infos liefert der Aufruf von ''sudo fdisk -l''. Ist die Partition mit dem betroffenen System ausgemacht, kann es mittels sudo mount /dev/sdXY /mnt eingebunden werden. Weiter werden noch spezielle Verzeichnisse benötigt, die Hardware-Informationen bereitstellen und die für viele Anwendungen benötigt werden: sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys Nun ist alles eingerichtet, um ''chroot'' anzuwenden. Das allgemeine Muster ist sudo chroot ''chroot'' muss immer mit root-Rechten ausgeführt werden. Wird kein Befehl angegeben, wird ''${SHELL} -i'' nach dem Wechsel in das neue Wurzelverzeichnis ausgeführt, wobei die als Umgebungsvariable definierte Shell, zumeist ''/bin/bash'', im interaktiven Modus (''-i'') gestartet wird. Wir wechseln also folgend den oben verwendeten Pfaden mit sudo chroot /mnt in die eingebundene Partition und werden mit einer interaktiven Shell als root-Benutzer im eingebunden System begrüßt. Nun können die entsprechenden Aufgaben erledigt werden, um das System zu reparieren. Ist alles erledigt, können wir die ''chroot''-Umgebung mittels ''exit'' oder Strg+D wieder verlassen. Die eingebundenen Verzeichnisse und Partitionen werden wieder ausgehängt: sudo umount /mnt/sys sudo umount /mnt/proc sudo umount /mnt/dev sudo umount /mnt Wurde ein externer Datenträger eingebunden, kann es sinnvoll sein, noch mit einem ''sudo sync'' die im Speicher liegenden Daten aus dem Buffer auf den Datenträger zu schreiben. Damit sind wir fertig und können, wurde ein Live-System gestartet, mit einem ''sudo reboot now'' einen Neustart auslösen. {{tag>linux chroot}}