Chroot je jedním z nejstarších mechanismů pro izolaci procesů v systémech Unix (představen již v roce 1979). Umožňuje spustit program tak, aby si „myslel“, že vybraný adresář je kořenem celého systému (/).
Pokud například zavřete aplikaci do adresáře /home/uzivatel/jail, bude pro ni soubor /etc/passwd ve skutečnosti souborem /home/uzivatel/jail/etc/passwd.
Pokud provozujete veřejnou službu (např. webový server nebo DNS), můžete ji „zavřít“ do chrootu. Pokud by útočník tuto službu ovládl, zůstane uvězněn v daném adresáři a nedostane se k citlivým systémovým souborům.
Chroot je nepostradatelný při opravě nefunkčního Linuxu. Nabootujete z USB, připojíte disk s poškozeným systémem a pomocí chroot se do něj „přepnete“. Poté můžete opravit zavaděč (GRUB), změnit zapomenuté heslo nebo přeinstalovat balíčky, jako byste v daném systému přímo byli.
Umožňuje vytvořit testovací prostředí (např. jinou distribuci Linuxu) uvnitř vašeho stávajícího systému bez nutnosti virtualizace.
Aby program v chrootu fungoval, musí mít uvnitř „vězení“ vše, co potřebuje k běhu:
/bin/bash)./lib a /usr/lib), bez kterých se program nespustí./dev/null nebo /dev/random.Je důležité pochopit, že chroot není plnohodnotný bezpečnostní kontejner.
| Technologie | Úroveň izolace | Hlavní rozdíl |
|---|---|---|
| Chroot | Nízká | Izoluje pouze souborový systém. |
| Docker / Kontejnery | Střední | Využívá „Namespaces“ k izolaci sítě, procesů a uživatelů. |
| Virtuální stroj | Vysoká | Emuluje celý hardware a běží v něm vlastní jádro OS. |
Dnes je chroot považován za základní stavební kámen, na kterém staví pokročilejší technologie:
Související pojmy: Docker, Virtualizace, Linux, Root, Filesystem, Sandbox, Kontejnerizace.