Někdy může být nutné izolovat proces od ostatních procesů běžících ve vašem systému. Můžeme to udělat pomocí příkazu chroot v Linuxu.
V tomto tutoriálu vám ukážeme, co je to příkaz chroot a jak můžete tento příkaz použít k vytvoření vězení chroot a uvěznění uživatele nebo skupiny v izolovaném prostředí.
Porozumění příkazu chroot v Linuxu
Příkaz chroot je v systémech Linux nezbytný. Pomůže vám změnit kořenový adresář procesu spolu s jeho podřízenými procesy. Když pro uživatele nebo skupinu vytvoříme falešný kořenový adresář, ztratí přístup ke skutečnému kořenovému adresáři.
Uživatel nebo skupina jsou proto nyní izolováni od zbytku našeho systému. To může mít mnoho využití, například následující:
- Vytvořte testovací prostředí pro vývoj a testování softwaru.
- Inicializujte přeinstalaci souborů bootloaderu ve vašem systému
- Spouštějte software, který může být zničený
- Vylepšete zabezpečení pomocí mechanismu ringfencing
Příkaz chroot v podstatě vytváří virtuální prostředí. Jeho funkce je podobná virtuálnímu počítači, ale nevyžaduje, abyste věnovali vyhrazené zdroje pro chroot vězení.
Virtuální prostředí sdílí celé jádro s hostitelským systémem.
Syntaxe příkazu chroot
Příkaz chroot v Linuxu má následující syntaxi.
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]
Jediným parametrem nezbytným pro spuštění příkazu chroot je cesta k novému kořenovému adresáři. K dosažení požadovaných výsledků však můžete použít možnosti dostupné v příkazu chroot.
Zde jsou možnosti, které máte k dispozici při použití příkazu chroot v Linuxu.
- –userspec=USER[:GROUP] – Používá se k definování uživatele nebo skupiny, na které chceme použít příkaz chroot. Skupinu nebo uživatele, kterého chceme používat, můžeme specifikovat jménem nebo ID
- –groups=G_List – Používá se ke specifikaci doplňkových skupin, které chceme použít jako G1, G2… Gn
- — pomoc – Zobrazí obrazovku nápovědy a ukončí se
- –verze – Zobrazí data verze a ukončí se
Vytvoření příkazového vězení chroot
Nyní, když rozumíme příkazu chroot a jeho syntaxi, je čas jej použít. Abychom vám ukázali, jak se to dělá, vytvoříme chroot vězení.
Chroot vězení je virtuální prostředí vytvořené změnou kořenového adresáře uživatele nebo skupiny do nového adresáře. Tento nový adresář slouží jako falešný kořenový adresář pro naše chroot vězení.
Pojďme si projít kroky, které musíte udělat, abyste mohli pomocí příkazu chroot v Linuxu vytvořit chroot jail.
1. Vytvořte adresář
Nejprve začneme vytvořením falešného kořenového adresáře v /home/chroot_jail pomocí příkazu mkdir.
mkdir $home/chroot_jail
Tím se na dané adrese vytvoří adresář, který použijeme pro náš chroot jail. Než však necháme příkaz chroot dělat svou práci, musíme do našeho nového adresáře přidat požadované soubory.
2. Přidat požadované kořenové adresáře
Začneme vytvořením /bin, /lib a /lib64 v našem adresáři vězení. Příkaz k vytvoření těchto adresářů je uveden níže.
mkdir -p $home/chroot_jail/{bin,lib,lib64}
Jak si můžete všimnout, adresáře, které vytváříme v našem virtuálním prostředí, jsou uvedeny ve složených závorkách („{}“).
Nyní použijeme příkaz cd k vytvoření nového kořenového adresáře chroot_jail.
cd $home/chroot_jail
3. Přesunout binární soubory povolených příkazů
Pro tento příklad vytváříme minimalistické prostředí Linuxu. Pojďme použít příkazy bash, ls, rm a touch, abychom byli součástí funkčnosti našeho virtuálního prostředí.
Zkopírujte binární soubory z našeho kořenového adresáře /bin do adresáře /bin našeho chroot_jail. Učiníme tak pomocí příkazu cp s tagem -v (verbose), abychom viděli, co se v danou chvíli kopíruje.
cp -v /bin/{bash,touch,ls,rm} $home/chroot_jail
Jak vidíte, binární soubory, které chceme zkopírovat, jsou uvedeny ve složených závorkách. Soubory z daných binárních souborů byly nyní zkopírovány do našeho nového adresáře chroot jail.
4. Řešení závislostí příkazů
Ale tyto binární soubory budou mít závislosti. Závislosti pro bash lze nalézt pomocí příkazu ldd.
ldd /bin/bash
Nyní použijeme příkaz cp k pečlivému zkopírování adresářů do našeho chroot jail jeden po druhém. Měli bychom se ujistit, že zkopírujeme všechny knihovny závislostí, jinak naše chroot vězení nebude fungovat správně. Nahraďte část
cp -v {<List dependencies here>} $home/chroot_jail/lib64
Tyto kroky zopakujeme pro všechny příkazy, které chceme povolit v chroot vězení. Najděte knihovny závislostí a zkopírujte je do adresáře chroot_jail.
5. Přepnutí do nového kořenového adresáře
Nyní nám zbývá pouze změnit kořenový adresář našeho chrootového vězení na nový falešný adresář, který jsme právě vytvořili.
Chcete-li změnit adresář a zadat bash, aby se spouštěl jako aplikace, kterou spouštíme jako shell pro naše virtualizované prostředí, použijeme následující příkaz.
sudo chroot $home/chroot_jail/bin/bash
Pro pokračování můžete být vyzváni k zadání uživatelského hesla. V takovém případě zadejte své uživatelské heslo a příkaz bude proveden.
Pokud jste provedli všechny kroky správně, měli byste očekávat, že na obrazovce uvidíte výstup podobný následujícímu.
Jak můžete vidět na snímku obrazovky, bash verze 4.4 nyní běží jako shell pro naše chroot vězení.
Nyní bylo vytvořeno naše minimalistické virtuální linuxové prostředí a je připraveno k použití. Můžeme komunikovat s virtuálním prostředím pomocí bash jako běžný systém Linux.
Závěr
Příkaz chroot v Linuxu je jednoduchý, ale účinný příkaz v sadě nástrojů uživatele Linuxu. Jeho schopnost vytvářet virtualizované prostředí bez potřeby jakéhokoli monitorovacího softwaru, jak to vidíme u virtuálních strojů, z něj dělá lehkou alternativu pro toto použití.
Tento tutoriál vám měl pomoci porozumět tomu, co je chroot, a ukázat vám, jak vytvořit jednoduchý chroot vězení. Pokud máte nějaké dotazy, zpětnou vazbu nebo návrhy, neváhejte se na nás obrátit v komentářích níže.