GeeksforGeeks

mi az a chroot Börtön?

a chroot Unix operációs rendszereken olyan művelet, amely megváltoztatja az aktuális futó folyamat és gyermekei látszólagos gyökérkönyvtárát. Az ebben a módosított környezetben futó programok nem férhetnek hozzá a kijelölt könyvtárfán kívüli fájlokhoz. Ez lényegében korlátozza a hozzáférést egy könyvtárfához, így megkapják a “chroot jail”nevet.

az ötlet az, hogy hozzon létre egy könyvtárfát, ahol másolja vagy csatolja a folyamat futtatásához szükséges összes rendszerfájlt. Ezután a chroot rendszerhívás segítségével módosíthatja a gyökérkönyvtárat, hogy az az új fa alapja legyen, és elindíthatja a folyamatot abban a chrooted környezetben. Mivel valójában nem tud hivatkozni a módosított gyökéren kívüli útvonalakra, nem tud rosszindulatúan olvasni vagy írni ezekre a helyekre.

miért van rá szükség, és miben különbözik a virtuális gépektől?
ez egy operációs rendszer szintű virtualizáció, amelyet gyakran használnak virtuális gépek helyett a gazdagép operációs rendszerének több elszigetelt példányának létrehozására. Ez egy kernel szintű virtualizáció, és gyakorlatilag nincs rezsi a virtuális gépekhez képest, amelyek egy alkalmazásréteg virtualizáció, ennek eredményeként nagyon jó módszert kínál több izolált példány létrehozására ugyanazon a hardveren. A virtuális gép (VM) egy gép szoftveres megvalósítása, és gyakran kihasználják az úgynevezett hardver virtualizációt, hogy virtuális képeket készítsenek egy működő operációs rendszerről.

hogyan kell használni?
a chroot Börtön létrehozásának alapvető parancsa a következő:

 chroot /path/to/new/root command OR chroot /path/to/new/root /path/to/server OR chroot /path/to/new/root /path/to/server

Megjegyzés: Csak egy root/privilegizált felhasználó használhatja a chroot rendszerhívást. Egy nem privilegizált felhasználó, aki hozzáfér a parancshoz, megkerülheti a chroot börtönt.

lépések egy mini-jail létrehozásához a ‘bash’ és az ‘ls’ parancshoz

1. Hozzon létre egy könyvtárat, amely a parancs gyökereként fog működni.

 $ mkdir jailed $ cd jailed

2. Hozzon létre minden alapvető könyvtárat a parancs futtatásához: az operációs rendszertől függően a szükséges könyvtárak változhatnak. Logikusan létrehozzuk ezeket a könyvtárakat, hogy megőrizzük a szükséges könyvtárak másolatát. Az összes könyvtár szükségességének megtekintéséhez lásd a 4. lépést.

 $ mkdir -p bin lib64/x86_64-linux-gnu lib/x86_64-linux-gnu

3.Futtassa a ‘melyik’ parancsot : futtassa a ‘melyik’ parancsot az ls és a bash parancs helyének megkereséséhez. Miután futtatta a parancsot, másolja át ezeket a bináris fájlokat a börtönünk ‘ bin ‘ könyvtárába. Győződjön meg arról, hogy ezeknek a parancsoknak nincs álneve. Mostantól, mi lenne utalva a könyvtár, mint ‘börtönbe’ könyvtár a kényelem.

 $ unalias ls # Required only if you have aliased ls command $ unalias bash # Required only if you have aliased bash command $ cp $(which ls) ./bin/ $ cp $(which bash) ./bin/

4. Megfelelő könyvtárak/objektumok másolása: ahhoz, hogy a börtönben lévő könyvtárunkban végrehajtható fájlok működjenek, át kell másolnunk a megfelelő könyvtárakat/objektumokat a börtönben lévő könyvtárba. Alapértelmezés szerint a futtatható fájl a ‘/’betűvel kezdődő helyeket nézi. A függőségek megtalálásához az ‘ldd parancsot használjuk’

$ ldd $(which bash) linux-vdso.so.1 => (0x00007ffc75dd4000) libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f6577768000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6577564000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f657719a000) /lib64/ld-linux-x86-64.so.2 (0x000055979f3fd000)

futtassa a következő parancsokat a megfelelő könyvtárak létrehozásához.

$ cp /lib/x86_64-linux-gnu/libtinfo.so.5 lib/x86_64-linux-gnu/$ cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/$ cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/$ cp /lib64/ld-linux-x86-64.so.2 lib64/

hasonlóan az ls-hez,

$ ldd $(which ls) linux-vdso.so.1 => (0x00007fff4f05d000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9a2fd07000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a2f93e000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9a2f6cd000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9a2f4c9000) /lib64/ld-liux-x86-64.so.2 (0x000055e836c69000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9a2f2ac000)
$ cp /lib/x86_64-linux-gnu/libselinux.so.1 lib/x86_64-linux-gnu/$ cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/$ cp /lib/x86_64-linux-gnu/libpcre.so.3 lib/x86_64-linux-gnu/$ cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/$ cp /lib64/ld-linux-x86-64.so.2 lib64/$ cp /lib/x86_64-linux-gnu/libpthread.so.0 lib/x86_64-linux-gnu/

a végleges könyvtárszerkezetnek ehhez hasonlónak kell lennie,

 Chroot Jail

5. Sudo chroot: futtassa ezt a parancsot a gyökér megváltoztatásához a bebörtönzött könyvtárba, a héj elérési útjával együtt. Alapértelmezés szerint megpróbálja betölteni a ‘/bin/sh’ héjat.

 $ cd .. $ sudo chroot jailed /bin/bash

a chroot parancs futtatása közben szembesülhet ezzel a hibával,

chroot: failed to run command `/bin/bash': No such file or directory

ennek oka lehet 2 OK, vagy a fájl nem létezik (ami nyilvánvaló), vagy ha a betöltő könyvtár meghibásodik vagy nem érhető el. Ellenőrizze még egyszer, hogy a libáriák megfelelő helyen vannak-e.

6. Egy új shell kell felbukkan: ez a mi bebörtönzött bash. Jelenleg csak 2 parancs van telepítve, bash és ls. Szerencsére a cd és a pwd beépített parancsok a bash shell-ben, így ezeket is használhatja.

keresse meg a könyvtárat, próbálja meg elérni a ‘cd /fájlt..vagy valami hasonló. Próbálja meg megtörni a börtönt, valószínűleg nem lesz képes. Xhamsterként

a börtönből való kilépéshez,

 $ exit

a legfontosabb és legérdekesebb dolog az, hogy amikor,

 $ ps aux

ha megtalálja a folyamatot, rájön, hogy csak egy folyamat van,

root 24958 … 03:21 0:00 /usr/bin/sudo -E chroot jailed/ /bin/bash

érdekes módon a bebörtönzött héj folyamatai ennek a héjnak egy egyszerű gyermekfolyamataként futnak. A JAILED környezetben lévő összes folyamat csak egyszerű felhasználói szintű folyamat a gazdagép operációs rendszerében, és a kernel által biztosított névterek izolálják őket, így minimális a rezsi, és további előnyként elszigetelést kapunk.

a jailed-bash-directory itt ismertetett példánya letölthető innen.

hasonlóképpen további parancsokat is hozzáadhat virtuális börtönös környezethez. Bonyolultabb programok hozzáadásához szükség lehet további könyvtárak létrehozására, mint például a ‘/proc’ és a ‘/dev’. Ezek növelik a folyamat összetettségét. Remélhetőleg nem igényeljük a célunkhoz.

ez minden, amit tudnod kell a chroot-ról és a könyvtárak bebörtönzéséről. Végső célunk annak megértése, hogy mik azok a konténerek, és hogyan képesek az olyan szolgáltatások, mint az AWS (Amazon Web Services), a Google Cloud és a Docker, igény szerint annyi virtuális operációs rendszert biztosítani. Is, hogyan sys-admin futtatni több web-szerverek több domain egy fizikai gépen. Ez csak egy lépés volt a megértése felé🙂

  • https://help.ubuntu.com/community/DebootstrapChroot
  • https://wiki.archlinux.org/index.php/Install_from_existing_Linux
  • http://serverfault.com/questions/162362/chroot-fails-cannot-run-command-bin-bash-no-such-file-or-directory
  • https://wiki.archlinux.org/index.php/change_root

A szerzőről:
Pinkesh Badjatiya IIIT Hyderabadból származik. Ő egy geek a szíve bőséges projektek érdemes keresni. A projekt munkája itt látható.

ha itt is szeretné bemutatni a blogját, kérjük, olvassa el a gblogot a vendég blog írásához a GeeksforGeeks oldalon.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.