Pro OS Linux je k dispozici nástroj známý jako chroot, který poskytuje snadnější a rychlejší způsob sandboxování aplikace. Pomocí nástroje chroot můžete nainstalovat a otestovat libovolnou aplikaci, aniž by to ovlivnilo zbytek systému.
Tento článek vysvětlí, jak používat chroot v Debianu 10 Buster, spolu s několika příklady. Pro vysvětlení vytvoříme chroot prostředí pro bash a některé příkazy, například příkazy „ls“, „ip“ a „pwd“.
Co je to chroot?
Nástroj chroot je příkaz v systému Linux, který změní kořenový adresář aplikace na jiný adresář. Procesy spuštěné v tomto novém kořenovém adresáři nemají přístup k souborům mimo něj. Izoluje tedy provoz aplikací od zbytku systému.
Jak funguje chroot?
Chroot funguje tak, že zkopíruje aplikaci a všechny její spustitelné soubory a závislosti do alternativního kořenového adresáře. Poté spustí aplikaci z tohoto alternativního kořenového adresáře, což způsobí, že ji aplikace bude považovat za původní kořenový adresář. Kořenový adresář je nejvyšší adresář v hierarchii a žádná aplikace nemůže dosáhnout výše než tento adresář, takže chroot takto izoluje aplikaci od zbytku systému.
Případy užití
- Nastavení testovacího prostředí
- Spouštění 32bitových programů na 64bitovém systému
- Spuštění starších verzí programu na nejnovější verzi OS
- Obnova hesla
Syntax
Následuje základní syntaxe příkazu chroot:
$ chrootPodle následujících pokynů použijte chroot v Debianu k nastavení prostředí chroot.
1. Vytvořte alternativní kořenový adresář
Nejprve vytvořte alternativní kořenový adresář, který bude použit pro prostředí chroot.
$ sudo mkdir ~ / new_rootVýše uvedený příkaz vytvoří new_root adresář pod Domov adresář, který bude použit jako kořenový adresář v prostředí chroot.
2. Přidejte základní adresáře
Vytvořte adresáře „bin“, „lib“ a „lib64“ pod adresářem ~ / new_root adresář:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Zkopírujte binární soubory programu
Vše potřebné ke spuštění aplikace v prostředí chroot musí být v alternativním kořenovém adresáři. V tomto článku vytvoříme chroot prostředí pro bash a některé příkazy, včetně příkazů „ls“, „ip“ a „pwd“. Zkopírujeme proto binární soubory z /zásobník do alternativního adresáře ~ / new_root / bin adresář. Chcete-li vyhledat binární soubory příkazů, použijte příkaz which:
$ které bash ls ip pwd
Dále zkopírujte binární soubory příkazů do ~ / new_root / bin adresář.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Zkopírujte závislosti programu
Budeme také muset zjistit, jaké závislosti náš program potřebuje. Nejprve budeme muset zjistit, jaké jsou tyto závislosti, a potom je zkopírujeme do adresář ~ / new_root / lib.
Kopírování závislostí pro bash
Nejprve zjistěte závislosti pro bash program:
$ ldd / bin / bash
Potom zkopírujte tyto závislosti do ~ / new_root / lib adresář.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.tak.6, libdl.tak.2, libc.tak.6 ~ / new_root / libU souborů / lib64 je zkopírujte do ~ / new_root / lib64 adresář.
$ cp -v / lib64 / ld-linux-x86-64.tak.2 ~ / new_root / lib64Zkopírujte závislosti pro příkaz ls
Nejprve zjistěte závislosti pro příkaz ls:
$ ldd / bin / ls
Potom zkopírujte tyto závislosti do ~ / new_root / lib adresář.
$ sudo cp -v / lib / x86_64-linux-gnu / libselinux.tak.1, libc.tak.6, libpcre.tak.3,libdl.tak.2, libpthread.tak.0 / lib64 / ld-linux-x86-64.tak.2 ~ / new_root / lib
U souborů / lib64 je zkopírujte do ~ / new_root / lib64 adresář.
$ sudo cp -v / lib64 / ld-linux-x86-64.tak.2 ~ / new_root / lib64Zkopírujte závislosti pro příkaz ip
Nejprve zjistěte závislosti pro příkaz ip:
$ ldd / bin / ip
Potom zkopírujte tyto závislosti do ~ / new_root / lib adresář.
$ cp -v / lib / x86_64-linuxgnu / libselinux.tak.1, libelf.tak.1, libmnl.tak.0, libcap.tak.2, libdl.tak.2, libc.tak.6,
libpcre.tak.3, libz.tak.1, libpthread.tak.0 ~ / new_root / lib
U souborů / lib64 je zkopírujte do ~ / new_root / lib64 adresář.
$ sudo cp -v / lib64 / ld-linux-x86-64.tak.2 ~ / new_root / lib64Zkopírujte závislosti pro příkaz pwd
Nejprve zjistěte závislosti pro příkaz pwd:
$ ldd / bin / pwd
Potom zkopírujte tyto závislosti do ~ / new_root / lib adresář.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.tak.6 ~ / new_root / libU souborů / lib64 je zkopírujte do ~ / new_root / lib64 adresář.
$ sudo cp -v / lib64 / ld-linux-x86-64.tak.2 ~ / new_root / lib64Chcete-li zobrazit všechny adresáře v alternativním kořenovém adresáři, použijte následující příkaz:
$ ls -R
5. Přepněte na alternativní kořenový adresář
Nyní jsme konečně připraveni přejít na naše nové prostředí chroot. Chcete-li změnit kořenový adresář, spusťte v shellu následující příkaz s oprávněním root:
$ sudo chroot ~ / new_root / bin / bashKde ~ / new_root je náš alternativní kořenový adresář a / bin / bash je aplikace, kterou jsme použili k nastavení chroot prostředí.
Po spuštění výše uvedeného příkazu uvidíte, že příkazový řádek bash se změnil na bash-x.y což je v našem případě bash-5.0 (kde 5.0 je číslo verze bash).
Poznámka: po spuštění příkazu chroot se můžete setkat s následující chybou, stejně jako já:
Pokud k této chybě dojde, zkontrolujte, zda jste do nového kořenového adresáře přidali všechny knihovny a spustitelné soubory související s požadovaným programem.
Po vstupu do prostředí chroot budete mít přístup pouze k souboru v něm. Zkuste spustit příkazy, které jste nastavili pro prostředí chroot, včetně některých předdefinovaných příkazů. Integrované příkazy najdete spuštěním Pomoc příkaz v prostředí.
Vidíte, že jsme vyzkoušeli příkazy „ls“, „pw“ a „ip“ a všechny uspěly. Pokud spustíme jakýkoli jiný příkaz než tyto tři a integrované příkazy, příkaz selže, protože jsme jej nenastavili pro prostředí chroot. Jak vidíte na následujícím snímku obrazovky, zkusili jsme spustit příkazy „touch“, „ping“ a „clear“ a všechny selhaly.
6. Ukončete chroot
Chcete-li ukončit prostředí chroot, použijte výstup příkaz.
Závěr
V tomto článku jste se dozvěděli, co je chroot a jak funguje v Linuxu. Tento článek vám ukázal, jak pomocí chrootu v Debianu 10 Buster vytvořit chroot prostředí pro bash a další příkazy. Nyní byste měli pohodlně používat příkaz chroot ke změně kořenového adresáře procesu a jeho dílčích procesů a jejich izolaci od zbytku systému.