Jak název napovídá, operace chroot změní zjevný kořenový adresář pro běžící proces a jeho potomky. Umožňuje spouštět program (proces) s jiným kořenovým adresářem než /. Program nemůže vidět ani přistupovat k souborům mimo určený strom adresářů.
Můžete například spustit program a zadat jeho kořenový adresář jako /home/user/jail. V tomto případě je kořenový adresář programu ve skutečnosti /home/user/jail. Program by si nebyl vědom žádných souborů nad tímto adresářem v hierarchii nebo by k nim neměl přístup.
Tento umělý kořenový adresář se nazývá chroot vězení . Jeho účelem je omezit přístup potenciálního útočníka k adresáři. Chroot vězení uzamkne daný proces a jakékoli uživatelské ID, které používá, takže uživatel vidí pouze adresář, ve kterém je proces spuštěn. Procesu
se zdá, že běží v kořenovém adresáři.
Chroot vězení není určeno k:
– obraně proti záměrné manipulaci ze strany privilegovaných (rootových) uživatelů.
– k blokování nízkoúrovňového přístupu privilegovaných uživatelů k systémovým zařízením. Uživatel chroot root může stále vytvářet uzly zařízení a připojovat na ně systémy souborů.
Pro úspěšné spuštění procesu chroot musí být chroot adresář naplněn všemi požadovanými programovými soubory, konfiguračními soubory, uzly zařízení a sdílenými knihovnami v jejich očekávaných umístěních.
Použití nástroje chroot
1. Chcete-li použít chroot jail, použijte následující příkaz (new_root musí být existující adresář):
# chroot new_root [command]
2. Adresář new_root se stane umělým kořenovým adresářem. chroot se změní na new_root a spustí volitelný příkaz. Bez zadání příkazu jako argumentu se chroot změní na new_root a spustí hodnotu proměnné prostředí SHELL nebo /bin/sh, pokud SHELL není nastaven.
3. Za předpokladu, že je například SHELL nastaven na /bin/bash a adresář /home/user/jail existuje, spuštění příkazu chroot má za následek následující:
# chroot /home/user/jail chroot: failed to run command ‘/bin/bash’: No such file or directory
4. Adresář /home/user/jail má název /. chroot nemůže najít /bin/bash v tomto chrootovém vězení a vrátí chybovou zprávu. Chcete-li implementovat chroot jail, vytvořte novou strukturu kořenového adresáře a zkopírujte všechny potřebné soubory do tohoto nového kořenového adresáře před spuštěním příkazu chroot.
Konfigurace chroot Jail
1. Chcete-li implementovat chroot jail a spustit /bin/bash, vytvořte adresář bin v umělém kořenovém adresáři (v tomto příkladu /home/oracle/jail) a zkopírujte /bin/bash do tohoto adresáře:
$ mkdir /home/oracle/jail/bin $ cp /bin/bash /home/oracle/jail/bin
2. Příkaz /bin/bash je dynamicky propojen se sdílenými knihovnami. Tyto knihovny je také nutné zkopírovat do chroot jail. Pomocí příkazu ldd určete, které knihovny vyžaduje příkaz /bin/bash:
# ldd /bin/bash linux-vdso.so.1 => (0x00007fff11bff000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003728800000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003d56400000) libc.so.6 => /lib64/libc.so.6 (0x0000003d56800000) /lib64/ld-linux-x86-64.so.2 (0x0000003d56000000)
3. Zkopírujte každý z těchto souborů do adresáře lib64 v umělém kořenovém adresáři. Vytvořte adresář lib64 a zkopírujte sdílené knihovny do tohoto adresáře:
$ mkdir /home/oracle/jail/lib64 $ cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/oracle/jail/lib64
4. Nyní, když jsou všechny požadované soubory na svých očekávaných místech, spuštění příkazu chroot (jako root) má za následek následující:
# chroot /home/oracle/jail
5. Příkaz tentokrát uspěl a program /bin/bash se provedl. Zadáním pwd pro tisk aktuálního adresáře se zobrazí /, i když skutečný adresář je /home/oracle/jail:
# pwd /
Příkaz pwd se spustí, protože se jedná o vestavěný příkaz shellu. Spuštění jakéhokoli jiného příkazu se nezdaří, protože bash nemůže příkaz najít. Proces předpokládá, že je v kořenovém adresáři a nemá žádnou viditelnost ani nezná žádné soubory nad tímto adresářem v hierarchii. Například spuštění příkazu ls se nezdaří:
# ls bash: ls: command not found
6. Pomocí příkazu exit opusťte chroot jail.
# exit exit #CentOS / RHEL :Jak nastavit chroot jail SFTP
CentOS / RHEL :Jak nastavit chroot jail pro vsftp pro všechny uživatele
CentOS / RHEL :Jak nastavit chroot jail pro vsftp pouze pro konkrétní uživatele
CentOS / RHEL:Jak nastavit SFTP na Chroot Jail pouze pro konkrétní skupinu