A chroot egy Unix és Unix-szerű operációs rendszereken elérhető parancs és rendszerhívás, amely egy adott folyamat és annak leszármazott folyamatai számára megváltoztatja a gyökérkönyvtár (/) elérési útját egy új, a fájlrendszeren belül meghatározott helyre. Ez a folyamat lehet az interaktív shell is. Az ebben a módosított környezetben futtatott program nem látja a kijelölt könyvtárfán kívüli fájlokat, így általában nem is fér hozzájuk. Ezt a megváltoztatott környezetet chroot jail-nek (börtönnek) is nevezik, mivel a folyamat számára a fájlrendszer többi része láthatatlanná és elérhetetlenné válik. Általában könnyen megkerülhető, önmagában nem számít komoly biztonsági intézkedésnek.

A legtöbb Linux telepítőmédia és LiveCD (illetve Live USB) alapvető része, mivel kulcsfontosságú a rendszerek telepítésénél és helyreállításánál. A telepítőkészlet a chroot segítségével a feltelepített rendszeren tud parancsokat végrehajtani, amelyekkel a feltelepített rendszer kezdeti beállításait végzi.

Története A chroot rendszerhívás 1979-ben jelent meg a Version 7 Unix (röviden V7) operációs rendszerben, ami a parancs első ismert implementációja.

A parancs szélesebb körű elterjedése Bill Joy nevéhez fűződik. Egy forrás szerint 1982. március 18-án, 17 hónappal a 4.2BSD hivatalos kiadása előtt adta hozzá a rendszerhez. A célja kifejezetten az volt, hogy a készülő operációs rendszer telepítő- és fordítási rendszerét egy ettől elszigetelt környezetben tesztelhesse.

Bár eredetileg fejlesztői eszköznek szánták, a fájlrendszer-izolációs képességei miatt hamarosan biztonsági célokra is alkalmazni kezdték, hogy potenciálisan sebezhető szolgáltatásokat (például FTP-szervereket) egy korlátozott „börtönbe” zárjanak egy sikeres támadás hatásainak enyhítésére. Ezzel a modern konténerizációs technológiák egyik fontos előfutárává vált.

A chroot koncepcióját a FreeBSD bővítette tovább a virtualizáció hatékonyabb támogatása érdekében. A 2000-ben kiadott 4.0-s verziójukban bevezették a jail (börtön) parancsot, amely a chroot-nál egy jóval erősebb izolációt biztosít.

Használata A chroot rendkívül hasznos fejlesztői eszköz, főleg amikor szoftvereket fordítunk forráskódból. Használatával a fordítást egy izolált, "tiszta" környezetben végezhetjük el, amely független a saját rendszerünkön lévő programoktól és beállításoktól. Ezt a módszert széles körben alkalmazzák szoftvercsomagok vagy akár teljes Linux-rendszerek készítésekor, hogy elkerüljék a függőségi problémákat.

Szintaxis chroot ÚJROOT [PARANCS...]

Egy program futtatásához nem elegendő maga a program. Szükség van minden olyan megosztott könyvtárra, konfigurációs fájlra és eszközfájlra, amelytől a program függ.

Ahhoz, hogy egy chroot környezet rendesen működjön, a gazdarendszerből át kell adni neki a szükséges fájlokat: a beállításokat át kell másolni, a kernel fontosabb rendszerfájljait pedig csatolni kell:

# Virtuális kernel-fájlrendszerek csatolása CHROOT_MAPPA="/chroot/user1" mount -t proc proc $CHROOT_MAPPA/proc mount -t sysfs sysfs $CHROOT_MAPPA/sys mount -t devtmpfs devtmpfs $CHROOT_MAPPA/dev mount -t tmpfs tmpfs $CHROOT_MAPPA/dev/shm mount -t devpts devpts $CHROOT_MAPPA/dev/pts

# /etc/hosts másolása /bin/cp -f /etc/hosts $CHROOT_MAPPA/etc/

# /etc/resolv.conf másolása /bin/cp -f /etc/resolv.conf $CHROOT_MAPPA/etc/resolv.conf

# /etc/mtab linkelése chroot $CHROOT_MAPPA rm /etc/mtab 2> /dev/null chroot $CHROOT_MAPPA ln -s /proc/mounts /etc/mtab

Sematikus ábra

'/' (root könyvtár) |---'/bin |---'/boot' |---'/cdrom' [...]

|---"/chroot"

-------------------[ chroot ]------------------ | |----"/chroot/user1" |

| |----"/chroot/user1/program" |

Források

Jegyzetek

Kategória:Unix-parancsok Kategória:Parancssori alkalmazások Kategória:Nyílt forrású szoftverek Kategória:Szabad szoftverek