Chroot
chroot in Unix- abgeleiteten Betriebssystemen ist eine Operation, die einen Prozess aufruft und das Stammverzeichnis des Systems für ihn und seine Kinder ändert . "chroot" kann sich auf den chroot(2) -Systemaufruf oder auf das ausführbare chroot(8) -Programm beziehen . Üblicherweise wird die virtuelle Umgebung, die durch Chrooting vom neuen System-Root erstellt wird, als "Chroot-Käfig" bezeichnet.
Das Chroot-System wurde von Bill Joy am 18. März 1982 ( 17 Monate vor der Veröffentlichung von BSD 4.2 ) eingeführt, um sein Installations- und Build-System zu testen.
Die Verwendung von "chroot" zum Aufrufen eines Prozesses verhindert, dass der Prozess und seine untergeordneten Prozesse namentlich auf Dateien oberhalb des neuen Stammverzeichnisses zugreifen. Dies wird oft als Sicherheitsvorrichtung verstanden, da es theoretisch eine sichere Zone schafft, um ein Programm auszuführen, dem misstraut wird, das nicht getestet wurde oder das in irgendeiner Weise ein Verhalten zeigen könnte, das die Integrität des Systems gefährdet. Es sollte jedoch beachtet werden, dass Chroot-Jails nicht so sicher sind wie andere Arten von Jails oder Virtualisierung .
Da Programme erwarten , unter anderem ihren Speicherplatz, Konfigurationsdateien oder Dynamic Link Libraries an bestimmten Orten zu finden, beinhaltet das Einrichten eines Chroot-Gefängnisses auch das Einschließen dieser Ressourcen darin.
Programme dürfen offene Dateideskriptoren (sei es physische Dateien, Pipes oder Netzwerkverbindungen) in das Gefängnis mitnehmen, was das Design vereinfachen kann, da es unnötig wird, Arbeitsdateien im Chroot-Verzeichnis zu belassen. Dies funktioniert auch als einfaches Fähigkeitensystem , in dem das Programm expliziten Zugriff auf externe Chroot-Ressourcen erhält, basierend auf den Deskriptoren, die es im Inneren tragen kann.
Verwendet
Chroot-Jails werden verwendet, um eine separate virtuelle Kopie des Betriebssystems in einem Betriebssystemverzeichnis zu erstellen und zu verwalten. Dies kann nützlich sein für:
- Testen und Entwickeln: Ein Testbereich kann für ein Programm geschaffen werden, wenn es riskant ist, ein System direkt in der Produktion einzusetzen.
- Abhängigkeitskontrolle: Programme können nur mit den erwarteten Abhängigkeiten entwickelt , erstellt und getestet werden. Dadurch können einige Formen beschädigter Verknüpfungen verhindert werden, die auftreten, wenn Entwickler Projekte mit verschiedenen installierten Bibliotheken erstellen.
- Kompatibilität: Legacy-Software oder Software, die eine andere binäre Anwendungsschnittstelle verwendet, muss manchmal separat ausgeführt werden, da unterstützende Bibliotheken oder Datendateien andernfalls in Namen oder Verknüpfungen mit dem Cage-Container-System in Konflikt geraten könnten.
Referenzen
McGrath, Roland . "Seiten 2 und 8 des Chroot-Systemhandbuchs".