Gebruiker:LucasHCR/Chroot

Een chroot op Unix-systemen is het veranderen van de rootdirectory naar een andere map voor het nu draaiende proces en de subprocessen. Een programma dat in zo'n aangepaste omgeving draait, kan bestanden buiten deze mappenstructuur niet bereiken. Met de term "chroot" wordt de systeemaanroep of het chroot(8)-programma bedoeld. De aangepaste omgeving wordt een chroot jail genoemd.

Geschiedenis bewerken

De chrootsysteemaanroep werd als eerste geïntroduceerd in de ontwikkelingsversie van Version 7 Unix in 1979 en werd later aan BSD toegevoegd op 18 maart 1982 (17 maanden voordat 4.2BSD werd uitgegeven) door Bill Joy om het installatie- en bouwsysteem uit te testen.

Het eerste gebruik van de term "jail" komt van Bill Cheswick, die een honeypot maakte om een cracker te monitoren in 1991. Om het nuttig te maken voor virtualisatie, werd het concept in FreeBSD in de 4.0-uitgave in 2000 als het jail-commando toegevoegd. In 2004 leidde dit tot de term jailbreak. In 2005 bracht Sun Solaris Containers uit, wat werd beschreven als "chroot on steroids" (veel betere chroot). In 2008 ging LXC (het systeem waarop Docker is gebouwd) de term "container" gebruiken en werd het populairder, omdat het in Linuxkernel 3.8 werd opgenomen als user namespaces.

Gebruik bewerken

Een chrootomgeving kan worden gebruikt om een gescheiden gevirtualiseerde kopie van een softwaresysteem te draaien en creëren. Dit kan handig zijn voor de volgende dingen:

Testen en ontwikkeling bewerken

Een testomgeving voor software kan worden gemaakt met chroot, wat anders te veel risico's meebrengt als het wordt getest op een productiesysteem.

Afhankelijkheidscontrole bewerken

Software kan ontwikkeld, gebouwd en getest worden in een chroot-omgeving met enkel de verwachte afhankelijkheden. Dit zorgt ervoor de omgevingen van verschillende ontwikkelaars waarin een project gebouwd wordt dezelfde combinatie van bibliotheken bevatten.

Compatibiliteit bewerken

Verouderde software of software die een andere ABI gebruikt moet soms in een chroot uitgevoerd worden omdat de ondersteunende bibliotheken of gegevensbestanden anders conflicteren met diegene die reeds aanwezig zijn op het hostsysteem.

Herstellingen (recovery) bewerken

Om een systeem te herstellen dat niet meer opstart, kan een chroot gebruikt worden om in de beschadigde omgeving in te loggen vanaf een alternatief rootbestandssysteem (bijvoorbeeld met een installatiemediu of een live-cd).

Scheiding van privileges bewerken

Programma's mogen open bestandsdescriptors (voor bestanden, pipelines en netwerkverbindingen) in de chrootomgeving gebruiken, zodat het jailontwerp vereenvoudigd kan worden. Hierdoor is het onnodig om bestanden in de chroot-directory te plaatsen.

Dit vereenvoudigt ook de vaakgebruikte manier om mogelijk kwetsbare delen van een gepriviligeerd programma (dat als root draait) in een sandbox te draaien, zodat het beveiligingslek binnen de sandbox blijft. Merk op dat chroot mogelijk niet genoeg is om een proces met rootrechten te beschermen.

Externe link bewerken

Categorie:Unix