„Linux OS“ yra įrankis, žinomas kaip „chroot“, kuris suteikia paprastesnį ir greitesnį programos „sandboxing“ būdą. Naudodami „chroot“, galite įdiegti ir išbandyti bet kurią programą nepažeisdami likusios sistemos dalies.
Šiame straipsnyje bus paaiškinta, kaip naudoti „chroot“ „Debian 10 Buster“, kartu su keliais pavyzdžiais. Norėdami paaiškinti, sukursime chroot aplinką bash ir kai kurioms komandoms, tokioms kaip „ls“, „ip“ ir „pwd“ komandos.
Kas yra chroot?
„Chroot“ įrankis yra „Linux“ komanda, pakeičianti programos šakninį katalogą į kitą katalogą. Procesai, vykdomi šiame naujame šakniniame kataloge, negali pasiekti failų, esančių už jo ribų. Taigi, jis izoliuoja programų veikimą nuo likusios sistemos.
Kaip veikia chroot?
„Chroot“ veikia kopijuodama programą ir visus jos vykdomuosius bei priklausomybes pakaitiniame šakniniame kataloge. Tada ji paleidžia programą iš šio pakaitinio šakninio katalogo, todėl programa ją laiko pradiniu šakniniu katalogu. Šakninis katalogas yra aukščiausias hierarchijos katalogas, ir nė viena programa negali pasiekti aukščiau už šį katalogą, todėl „chroot“ izoliuoja programą nuo likusios sistemos.
Naudojimo atvejai
- Testinės aplinkos nustatymas
- 32 bitų programų paleidimas 64 bitų sistemoje
- Senesnių programų versijų paleidimas naudojant naujausią OS versiją
- Slaptažodžio grąžinimas
Sintaksė
Toliau pateikiama pagrindinė chroot komandos sintaksė:
$ chrootJei norite nustatyti chroot aplinką, atlikite toliau nurodytus veiksmus naudodami „chian“ komandą „Debian“.
1. Sukurkite alternatyvų šakninį katalogą
Pirmiausia sukurkite alternatyvų šakninį katalogą, kuris bus naudojamas chroot aplinkai.
$ sudo mkdir ~ / new_rootPirmiau nurodyta komanda sukurs new_root katalogą Namai katalogas, kuris bus naudojamas kaip šakninis katalogas chroot aplinkoje.
2. Pridėti pagrindinius katalogus
Sukurkite aplankus „bin“, „lib“ ir „lib64“ ~ / new_root katalogas:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Kopijuoti programos dvejetainius failus
Viskas, ko reikia norint paleisti programą „chroot“ aplinkoje, turi būti pakaitiniame šakniniame kataloge. Šiame straipsnyje sukursime chroot aplinką bash ir kai kurioms komandoms, įskaitant komandas „ls“, „ip“ ir „pwd“. Todėl nukopijuosime dvejetainius failus iš / bin katalogą į pakaitinį ~ / new_root / bin kataloge. Norėdami rasti komandų dvejetainius failus, naudokite kurią komandą:
$ kuri bash ls ip pwd
Tada nukopijuokite komandų dvejetainius failus į ~ / new_root / bin kataloge.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Kopijuoti programos priklausomybes
Taip pat turėsime išsiaiškinti, kokių priklausomybių reikia mūsų programai. Pirmiausia turėsime sužinoti, kokios yra tos priklausomybės, ir tada jas nukopijuosime į ~ / new_root / lib katalogas.
Nukopijuojamos „bash“ priklausomybės
Pirmiausia išsiaiškinkite „bash“ programos priklausomybę:
$ ldd / bin / bash
Tada nukopijuokite šias priklausomybes į ~ / new_root / lib kataloge.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.taip.6, libdl.taip.2, libc.taip.6 ~ / new_root / libFailams / lib64 nukopijuokite juos į ~ / new_root / lib64 kataloge.
$ cp -v / lib64 / ld-linux-x86-64.taip.2 ~ / new_root / lib64Kopijuoti ls komandos priklausomybes
Pirmiausia išsiaiškinkite komandos ls priklausomybę:
$ ldd / bin / ls
Tada nukopijuokite šias priklausomybes į ~ / new_root / lib kataloge.
$ sudo cp -v / lib / x86_64-linux-gnu / libselinux.taip.1, libc.taip.6, libpcre.taip.3,libdl.taip.2, libpthread.taip.0 / lib64 / ld-linux-x86-64.taip.2 ~ / new_root / lib
Failams / lib64 nukopijuokite juos į ~ / new_root / lib64 kataloge.
$ sudo cp -v / lib64 / ld-linux-x86-64.taip.2 ~ / new_root / lib64Kopijuoti „IP“ komandos priklausomybes
Pirmiausia išsiaiškinkite „ip“ komandos priklausomybę:
$ ldd / bin / ip
Tada nukopijuokite šias priklausomybes į ~ / new_root / lib kataloge.
$ cp -v / lib / x86_64-linuxgnu / libselinux.taip.1, libelf.taip.1, libmnl.taip.0, libcap.taip.2, libdl.taip.2, libc.taip.6,
libpcre.taip.3, libz.taip.1, libpthread.taip.0 ~ / new_root / lib
Failams / lib64 nukopijuokite juos į ~ / new_root / lib64 kataloge.
$ sudo cp -v / lib64 / ld-linux-x86-64.taip.2 ~ / new_root / lib64Kopijuoti „pwd“ komandos priklausomybes
Pirmiausia sužinokite komandos „pwd“ priklausomybes:
$ ldd / bin / pwd
Tada nukopijuokite šias priklausomybes į ~ / new_root / lib kataloge.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.taip.6 ~ / new_root / libFailams / lib64 nukopijuokite juos į ~ / new_root / lib64 kataloge.
$ sudo cp -v / lib64 / ld-linux-x86-64.taip.2 ~ / new_root / lib64Norėdami peržiūrėti visus katalogus alternatyviame šakniniame kataloge, naudokite šią komandą:
$ ls -R
5. Perjunkite į „Alternate Root Directory“
Dabar pagaliau esame pasirengę pereiti prie naujos chroot aplinkos. Norėdami pakeisti šakninį katalogą, vykdykite šią komandą apvalkale su root teisėmis:
$ sudo chroot ~ / new_root / bin / bashKur ~ / new_root yra mūsų pakaitinis šakninis katalogas ir / bin / bash yra programa, kurią naudojome kurdami chroot aplinką.
Paleidus aukščiau nurodytą komandą, pamatysite, kad „bash“ eilutė pasikeitė į bash-x.y kas mūsų atveju yra bash-5.0 (kur 5.0 yra „bash“ versijos numeris).
Pastaba: paleidę chroot komandą, kaip aš padariau, galite susidurti su šia klaida:
Jei įvyksta ši klaida, patikrinkite, ar pridėjote visas bibliotekas ir vykdomuosius failus, susijusius su reikiama programa, į naują šakninį katalogą.
Įėję į „chroot“ aplinką, galėsite pasiekti tik joje esantį failą. Pabandykite paleisti chroot aplinkai nustatytas komandas, įskaitant kai kurias įmontuotas komandas. Įdiegtas komandas galite rasti paleidę pagalba komandą kiaute.
Matote, kad išbandėme komandas „ls“, „pw“ ir „ip“, ir jiems visiems pavyko. Jei vykdysime bet kurią komandą, išskyrus šias tris komandas ir įmontuotas komandas, komanda nepavyks, nes mes jos nenustatėme chroot aplinkai. Kaip matote kitoje ekrano kopijoje, mes bandėme paleisti komandas „touch“, „ping“ ir „clear“ ir visos jos nepavyko.
6. Išeikite iš chroot
Norėdami išeiti iš chroot aplinkos, naudokite išėjimas komandą.
Išvada
Šiame straipsnyje jūs sužinojote, kas yra „chroot“ ir kaip jis veikia „Linux“. Šis straipsnis jums žingsnis po žingsnio parodė, kaip naudoti „chroot“ „Debian 10 Buster“, norint sukurti chroot aplinką „bash“ ir kitoms komandoms. Dabar jums turėtų būti patogu naudoti chroot komandą, kad pakeistumėte proceso šakninį katalogą ir jo antrinius procesus bei izoliuotumėte juos nuo likusios sistemos.