Chroot

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. december 2-án felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

A chroot  egy művelet a gyökérkönyvtár megváltoztatására Unix-szerű operációs rendszerekben . A megváltozott gyökérkönyvtárral elindított program csak az abban a könyvtárban található fájlokhoz férhet hozzá. Ezért, ha a programnak hozzáférést kell biztosítania más könyvtárakhoz vagy fájlrendszerekhez (például / proc), akkor a szükséges könyvtárakat vagy eszközöket előre be kell illesztenie a célkönyvtárba.

A chroot kifejezés utalhat akár a gyökérkönyvtár-módosítások fogalmára, akár a chroot(2) rendszerhívásra , vagy a chroot(8) programra , amint az általában a szövegkörnyezetből kiderül.

A gyökérkönyvtár módosítása a chroot(2) rendszerhívással történik . A gyökérkönyvtár módosítása csak az aktuális folyamatot érinti (vagyis azt a folyamatot, amely a chroot(2) rendszerhívást indította el ) és annak összes leszármazottját. Ha valamilyen programot szeretne futtatni egy megváltozott gyökérkönyvtárral, de ez a program nem biztosítja a chroot(2) hívás végrehajtását , használja a chroot(8) programot . Ez a program paraméterként egy új gyökérkönyvtárat és a program elérési útját veszi fel. Először egy chroot(2) hívást hajt végre , hogy saját gyökérkönyvtárát a megadottra változtassa, majd a megadott elérési úton futtatja a programot. Mivel a megváltozott gyökérkönyvtárat a gyermekfolyamatok öröklik, a program a megváltozott gyökérkönyvtárral indul.

Az a program, amelynek gyökere egy másik könyvtárba került, nem férhet hozzá a könyvtáron kívüli fájlokhoz. Ez kényelmes módot biztosít a " sandbox " tesztelésére, megbízhatatlan vagy bármely más potenciálisan káros programra. Ez is egy egyszerű módja a „ börtön ” mechanizmus használatának. A dokumentáció azonban óva int az ilyen használattól [1] . De a chrootot leggyakrabban disztribúciók vagy egyedi programok készítésére használják "tiszta" környezetben. Lásd még bootstrapping .

A gyakorlatban nehéz chrootolni azokat a programokat, amelyek arra számítanak, hogy indításkor szabad lemezterületet találnak, konfigurációs fájlokat, eszközfájlokat és dinamikus könyvtárakat bizonyos helyeken. Annak érdekében, hogy a programok futhassanak egy chroot könyvtárban, minimális számú ilyen fájlt kell biztosítani számukra, lehetőleg gondosan megválasztva, hogy megakadályozzák a rendszerhez való véletlen hozzáférést kívülről (pl. eszközfájlokon vagy FIFO -kon keresztül ).

A programok megnyithatnak fájlleírókat (fájlokhoz, csővezetékekhez és hálózati kapcsolatokhoz) chroot-ban, ami megkönnyítheti a börtönbe zárást, mivel szükségtelenné teszi a működő fájlok tárolását egy chroot könyvtárban. Használható olyan kezdetleges képességrendszerként is, amelyben a program kifejezetten hozzáférést kap a chroot-on kívüli erőforrásokhoz a benne található leírók alapján.

Használat

Hátrányok

Csak a superuser (root) tudja végrehajtani a chroot(2) rendszerhívást . Ennek célja, hogy megakadályozza a felhasználó támadását, ha egy setuid programot egy speciálisan kialakított chroot börtönbe helyez (például egy hamis /etc/passwd fájllal ), ami a jogosultság kiterjesztését eredményezi.

Önmagában a chroot mechanizmus nem teljesen biztonságos. Ha egy chroot-ban futó program root jogosultsággal rendelkezik, akkor egy második chrootot is végrehajthat a kilépéshez . Ez azért működik, mert egyes Unix kernelek nem teszik lehetővé a chroot kontextusok megfelelő egymásba ágyazását.

A legtöbb Unix rendszer nem teljesen fájlrendszer-orientált, és potenciálisan romboló funkciókat, például hálózatépítést és folyamatvezérlést hagy a rendszerhívási interfészen keresztül elérhetővé egy program számára a chrootban.

Maga a chroot mechanizmus nem tudja, hogyan kényszerítse ki az erőforrás-korlátokat, például az I/O sávszélességet, a lemezterületet vagy a CPU-időt.

Lásd még

Linkek

Jegyzetek

  1. chroot(2) - Linux kézikönyv oldal . Letöltve: 2017. június 15. Az eredetiből archiválva : 2017. június 25.