Chroot

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 2. prosince 2021; kontroly vyžadují 2 úpravy .

chroot  je operace pro změnu kořenového adresáře v operačních systémech podobných Unixu . Program spuštěný se změněným kořenovým adresářem bude mít přístup pouze k souborům obsaženým v tomto adresáři. Pokud tedy potřebujete poskytnout programu přístup k jiným adresářům nebo souborovým systémům (například / proc), musíte předem připojit potřebné adresáře nebo zařízení do cílového adresáře.

Termín chroot může odkazovat buď na koncept změn kořenového adresáře, nebo na systémové volání chroot(2) nebo na program chroot(8) , jak je obvykle zřejmé z kontextu.

Změna kořenového adresáře se provádí pomocí systémového volání chroot(2) . Změna kořenového adresáře ovlivní pouze aktuální proces (tj. proces, který provedl systémové volání chroot(2) ) a všechny jeho potomky. Pokud chcete spustit nějaký program se změněným kořenovým adresářem, ale tento program neumožňuje provedení volání chroot(2) , použijte program chroot(8) . Tento program bere jako parametry nový kořenový adresář a cestu k programu. Nejprve zavolá chroot(2) , aby změnil svůj vlastní kořenový adresář na zadaný, a poté spustí program na zadané cestě. Protože změněný kořenový adresář je zděděn podřízenými procesy, program začíná se změněným kořenovým adresářem.

Program, jehož kořenový adresář byl přesunut do jiného adresáře, nemá přístup k souborům mimo tento adresář. To poskytuje pohodlný způsob, jak " sandbox " testovat, nedůvěryhodný nebo jakýkoli jiný potenciálně škodlivý program. Toto je také snadný způsob použití mechanismu „ vězení “. Dokumentace však před takovým používáním varuje [1] . Nejčastěji se ale chroot používá k sestavení distribucí nebo jednotlivých programů v „čistém“ prostředí. Viz také bootstrapping .

V praxi je obtížné chrootovat programy, které očekávají, že najdou volné místo na disku při spuštění, konfigurační soubory, soubory zařízení a dynamické knihovny v konkrétních umístěních. Aby programy mohly běžet v chrootovém adresáři, je nutné jim poskytnout minimální sadu takových souborů, nejlépe pečlivě vybraných tak, aby se zabránilo neúmyslnému přístupu do systému zvenčí (např. prostřednictvím souborů zařízení nebo FIFO ).

Programy mohou otevírat deskriptory souborů (pro soubory, kanály a síťová připojení) v chrootu, což může usnadnit vězení tím, že není nutné ukládat pracovní soubory do chrootového adresáře. Může být také použit jako základní systém schopností , ve kterém je programu explicitně udělen přístup ke zdrojům mimo chroot na základě deskriptorů obsažených v něm.

Použití

Nevýhody

Systémové volání chroot(2) může provést pouze superuživatel (root) . To má zabránit útoku ze strany uživatele umístěním setuid programu do speciálně vytvořeného chroot jail (například s falešným souborem /etc/passwd ), což má za následek eskalaci oprávnění.

Samotný chroot mechanismus není zcela bezpečný. Pokud má program spuštěný v chrootu práva root, může spustit druhý chroot , aby se dostal ven. To funguje, protože některá unixová jádra neumožňují správné vnořování chroot kontextů.

Většina unixových systémů není zcela orientována na souborový systém a ponechává potenciálně destruktivní funkce, jako je síťování a řízení procesů, k dispozici prostřednictvím rozhraní systémového volání programu v chrootu.

Samotný chroot mechanismus neví, jak vynutit omezení prostředků, jako je šířka pásma I/O, místo na disku nebo čas CPU.

Viz také

Odkazy

Poznámky

  1. chroot(2) – manuálová stránka Linuxu . Získáno 15. června 2017. Archivováno z originálu 25. června 2017.