mikä on chroot Jail?
chroot Unix-käyttöjärjestelmissä on toiminto, joka muuttaa käynnissä olevan prosessin ja sen lasten näennäistä juurihakemistoa. Tässä muokatussa ympäristössä toimivat ohjelmat eivät voi käyttää nimetyn hakemistopuun ulkopuolisia tiedostoja. Tämä rajoittaa olennaisesti heidän pääsyään hakemistopuuhun ja siten he saavat nimen ”chroot jail”.
ideana on luoda hakemistopuu, johon kopioidaan tai linkitetään kaikki prosessin suorittamiseen tarvittavat järjestelmätiedostot. Tämän jälkeen käytät chroot-järjestelmäkutsua muuttaaksesi juurihakemiston tämän uuden puun juureen ja aloittaaksesi prosessin käynnissä olevassa juurakotetussa ympäristössä. Koska se ei itse asiassa voi viitata polkuihin muokatun juuren ulkopuolella, se ei voi ilkeästi lukea tai kirjoittaa näihin paikkoihin.
miksi sitä tarvitaan ja miten se eroaa virtuaalikoneista?
tämä on Käyttöjärjestelmätason virtualisointi ja sitä käytetään usein virtuaalikoneiden sijaan luomaan useita yksittäisiä esiintymiä isäntäos: sta. Tämä on ytimen tason virtualisointi ja sillä ei ole käytännössä mitään yläpuolella verrattuna virtuaalikoneisiin, jotka ovat sovelluskerroksen virtualisointi, minkä seurauksena se tarjoaa erittäin hyvän menetelmän luoda useita yksittäisiä tapauksia samalla laitteistolla. Virtuaalikone (VM) on koneen ohjelmistototeutus, ja he usein hyödyntävät niin sanottua laitteiston virtualisointia tehdäkseen virtuaalisen kuvan toimivasta käyttöjärjestelmästä.
miten sitä käytetään?
peruskäsky chroot-vankilan luomiseksi on seuraava:
chroot /path/to/new/root command OR chroot /path/to/new/root /path/to/server OR chroot /path/to/new/root /path/to/server
Huomautus: Vain pääkäyttäjä/etuoikeutettu käyttäjä voi käyttää chroot – järjestelmäkutsua. Ei-etuoikeutettu käyttäjä, jolla on pääsy komentoon, voi ohittaa chrootin vankilan.
vaiheet minivankilan luomiseksi ”bashille” ja ” ls ” – komennolle
1. Luo kansio, joka toimii komennon juurena.
$ mkdir jailed $ cd jailed
2. Luo kaikki olennaiset hakemistot suoritettavaa komentoa varten: käyttöjärjestelmästä riippuen tarvittavat hakemistot voivat muuttua. Loogisesti, luomme kaikki nämä hakemistot säilyttää kopion tarvittavat kirjastot. Katso, mitä kaikkia hakemistoja tarvitaan, Katso vaihe 4.
$ mkdir -p bin lib64/x86_64-linux-gnu lib/x86_64-linux-gnu
3.Suorita ”mikä” – komento: Suorita ”mikä” – komento ls-ja bash-komentojen sijainnin löytämiseksi. Kun olet suorittanut minkä komennon, kopioi nuo binäärit vankilamme’ bin ’ – hakemistoon. Varmista, että sinulla ei ole mitään näistä komennoista aliallistaa. Tästä lähtien viittaisimme hakemistoomme ”vangittu” Hakemisto mukavuussyistä.
$ 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. Kopioi asianmukaiset kirjastot/objektit: jotta Jailed-hakemistomme suoritettavat tiedostot toimisivat, meidän on kopioitava JAILED-hakemiston asianmukaiset kirjastot/objektit. Oletusarvoisesti suoritustiedosto katsoo sijainnit alkaen’/’. Löytää riippuvuudet käytämme komentoa ’ldd’
$ 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)
suorita seuraavat komennot luodaksesi asianmukaiset hakemistot.
$ 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/
vastaavasti ls,
$ 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/
lopullisen hakemistorakenteen on oltava samanlainen kuin tämä,
5. Sudo chroot:suorita tämä komento muuttaaksesi juurta VANKIHAKEMISTOON sekä komentotulkin polun. Oletuksena se yrittää ladata’/bin / sh ’ shell.
$ cd .. $ sudo chroot jailed /bin/bash
saatat kohdata tämän virheen ajaessasi chroot-komentoa,
chroot: failed to run command `/bin/bash': No such file or directory
tämä voi johtua kahdesta syystä, joko tiedostoa ei ole olemassa(mikä on ilmeistä), tai kun latauskirjasto epäonnistuu tai ei ole käytettävissä. Tarkista, ovatko Liivit oikeassa paikassa.
6. Uusi kuori on ilmestyttävä: meidän vangittu bash. Meillä on tällä hetkellä vain 2 komentoa asennettuna, bash ja ls. Onneksi cd ja pwd ovat builtin komentoja bash shell, joten voit käyttää niitä samoin.
Roam around the directory, try accessing ’ cd /..tai jotain vastaavaa. Yritä murtaa Vankila, luultavasti et pysty siihen. 🙂
vankilasta poistumiseen,
$ exit
tärkeintä ja mielenkiintoista on, että kun juokset,
$ ps aux
ja löytää prosessi, huomaat, että on vain yksi prosessi,
root 24958 … 03:21 0:00 /usr/bin/sudo -E chroot jailed/ /bin/bash
mielenkiintoista on, että vangitun kuoren prosessit toimivat tämän kuoren yksinkertaisena lapsiprosessina. Kaikki prosessit sisällä vangittu ympäristö, ovat vain yksinkertainen käyttäjätason prosessi isäntä OS ja eristetään nimiavaruudet tarjoamat ytimen, joten siellä on minimaalinen yläpuolella ja lisäetuna saamme eristäminen.
tässä selitetyn jailed-bash-hakemiston voi ladata täältä.
vastaavasti voit lisätä lisää komentoja virtual jailed-ympäristöön. Jos haluat lisätä monimutkaisempia ohjelmia, sinun on ehkä luotava lisää hakemistoja, kuten ’/proc’ ja ’/dev’. Ne lisäävät prosessin monimutkaisuutta. Toivottavasti emme tarvitse sitä tarkoitukseemme.
tämä on kaikki, mitä sinun tarvitsee tietää chrootista ja hakemistojen hyllyttämisestä. Perimmäisenä tavoitteenamme on ymmärtää, mitä ovat säiliöt ja miten palvelut, kuten AWS (Amazon Web Services), Google Cloud ja Docker pystyvät tarjoamaan niin monia virtuaalisia esiintymiä käyttöjärjestelmien pyynnöstä. Myös, miten sys-admin ajaa useita web-palvelimia useita verkkotunnuksia yhdellä fyysisellä koneella. Tämä oli vain yksi askel kohti sen ymmärtämistä.🙂
- 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
tekijästä:
Pinkesh Badjatiya kotoisin IIIT Hyderabadista. Hän on geek sydämessään runsaasti hankkeita kannattaa etsiä. Hänen projektityönsä on nähtävissä täällä.
jos haluat esitellä blogiasi myös täällä, katso gblogista vieraskirjoitusta GeeksforGeeks – sivustolla.