Übersicht
chroot steht für 'change root' und ist ein Befehl, der das Root-Verzeichnis des aktuell laufenden Prozesses ändert. Mit diesem Befehl können Sie eine isolierte Umgebung erstellen, in der das angegebene Verzeichnis wie das oberste Root-Verzeichnis des Systems fungiert. Diese Umgebung wird häufig zur Systemwiederherstellung, zur Isolierung von Entwicklungs- und Testumgebungen sowie zur Härtung der Sicherheit durch Sandboxing verwendet.
Hauptanwendungsbereiche
- Wiederherstellung beschädigter Systeme (z. B. Neuinstallation des Bootloaders, Behebung von Paketproblemen)
- Isolierung von Entwicklungs- und Testumgebungen (Erstellung/Ausführung von Software, ohne das Host-System zu beeinträchtigen)
- Sandboxing zur Erhöhung der Sicherheit (Beschränkung des Dateisystemzugriffs für bestimmte Anwendungen)
- Erstellung von Paketen für andere Architekturen (Einrichtung einer Cross-Compilation-Umgebung)
Wichtige Optionen
Der Befehl chroot nimmt das neue Root-Verzeichnis und den auszuführenden Befehl als Argumente entgegen und kann mit einigen zusätzlichen Optionen gesteuert werden.
Standardverhalten und Benutzeranpassung
Informationen und Hilfe
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`chroot` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Hier werden verschiedene Möglichkeiten vorgestellt, eine isolierte Umgebung mit chroot einzurichten und Befehle auszuführen. Für die Ausführung von chroot sind in der Regel Root-Rechte erforderlich.
Standard-chroot-Umgebung betreten
sudo chroot /mnt/my_root /bin/bash
Legt das Verzeichnis `/mnt/my_root` als neues Root-Verzeichnis fest und startet eine `/bin/bash`-Shell innerhalb dieser Umgebung. Bevor Sie dieses Beispiel ausführen, muss das Verzeichnis `/mnt/my_root` vorhanden sein und die minimalen Systemdateien (z. B. `/bin/bash`) müssen vorbereitet sein.
Bestimmten Befehl innerhalb von chroot ausführen
sudo chroot /mnt/new_env ls -l /
Führt den Befehl `ls -l /` innerhalb des neuen Root-Verzeichnisses `/mnt/new_env` aus. Dieser Befehl listet den Inhalt des Root-Verzeichnisses innerhalb von `/mnt/new_env` auf.
Benutzeranpassung in der chroot-Umgebung
sudo chroot --userspec=testuser:testgroup /mnt/chroot_jail /bin/bash
Betritt die Umgebung `/mnt/chroot_jail`, startet jedoch die `/bin/bash`-Shell mit den Rechten des Benutzers `testuser` und der Gruppe `testgroup`. Dieser Benutzer/diese Gruppe muss in der chroot-Umgebung vorhanden sein.
Tipps & Hinweise
Tipps und Hinweise für die effektive und sichere Verwendung der chroot-Umgebung.
Erforderliche Mount-Punkte
Damit viele System-Utilities innerhalb der chroot-Umgebung ordnungsgemäß funktionieren, müssen bestimmte virtuelle Dateisysteme des Host-Systems in die chroot-Umgebung eingebunden werden.
- /proc: Zugriff auf Prozessinformationen und Systemeinstellungen
- /sys: Zugriff auf Kernel- und Hardwareinformationen
- /dev: Zugriff auf Gerätedateien (z. B. Terminal, Festplatte)
- /dev/pts: Unterstützung für virtuelle Terminals (erforderlich für die Shell-Nutzung)
Bibliotheken und ausführbare Dateien
Der auszuführende Befehl in der chroot-Umgebung muss über alle erforderlichen ausführbaren Dateien und dynamischen Bibliotheken (shared libraries) verfügen. Andernfalls kann es zu Fehlern wie 'command not found' oder 'No such file or directory' kommen. Sie können den Befehl `ldd` verwenden, um die benötigten Bibliotheken zu überprüfen.
Root-Rechte erforderlich
Da der Befehl chroot das Root-Verzeichnis des Systems ändert, muss er unbedingt mit Root-Rechten (sudo) ausgeführt werden.
Beenden der chroot-Umgebung
Wenn Sie den Befehl `exit` in der in der chroot-Umgebung ausgeführten Shell eingeben, können Sie zur ursprünglichen Shell des Host-Systems zurückkehren.
Sicherheitshinweise
chroot ist kein perfekter Mechanismus zur Sicherheitsisolierung. Benutzer mit Root-Rechten haben mehrere Möglichkeiten, aus der chroot-Umgebung auszubrechen. Wenn eine stärkere Isolierung erforderlich ist, sollten Container-Technologien (Docker, LXC) oder virtuelle Maschinen in Betracht gezogen werden.