Za Linux OS je na voljo orodje, znano kot chroot, ki omogoča enostavnejši in hitrejši način uporabe peskovnika v peskovniku. S programom chroot lahko namestite in preizkusite katero koli aplikacijo, ne da bi to vplivalo na preostali del sistema.
Ta članek bo razložil, kako uporabljati chroot v Debian 10 Buster, skupaj z nekaj primeri. Za razlago bomo ustvarili chroot okolje za bash in nekatere ukaze, kot so ukazi "ls", "ip" in "pwd".
Kaj je chroot?
Orodje chroot je ukaz v Linuxu, ki spremeni korenski imenik aplikacije v drug imenik. Procesi, ki se izvajajo v tem novem korenskem imeniku, ne morejo dostopati do datotek zunaj njega. Zato izolira delovanje aplikacij od ostalega sistema.
Kako deluje chroot?
Chroot deluje tako, da kopira aplikacijo in vse izvedljive datoteke ter odvisnosti znotraj nadomestnega korenskega imenika. Nato zažene aplikacijo znotraj tega nadomestnega korenskega imenika, zaradi česar jo aplikacija obravnava kot izvirni korenski imenik. Korenski imenik je najvišji imenik v hierarhiji in nobena aplikacija ne more doseči višje od tega imenika, zato Chroot tako izolira aplikacijo od ostalega sistema.
Uporabite zadeve
- Nastavitev testnega okolja
- Izvajanje 32-bitnih programov v 64-bitnem sistemu
- Zagon starejših različic programa na najnovejši različici OS
- Obnovitev gesla
Sintaksa
Sledi osnovna sintaksa ukaza chroot:
$ chrootSledite spodnjim korakom, da uporabite ukaz chroot v Debianu za nastavitev okolja chroot.
1. Ustvarite nadomestni korenski imenik
Najprej ustvarite nadomestni korenski imenik, ki se bo uporabljal za okolje chroot.
$ sudo mkdir ~ / new_rootZgornji ukaz bo ustvaril new_root imenik pod Domov imenik, ki bo uporabljen kot korenski imenik v okolju chroot.
2. Dodajte osnovne imenike
Ustvarite imenike "bin", "lib" in "lib64" pod ~ / new_root imenik:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Kopirajte dvojiške programe
Vse, kar je potrebno za zagon aplikacije v okolju chroot, mora biti v nadomestnem korenskem imeniku. V tem članku bomo ustvarili chroot okolje za bash in nekatere ukaze, vključno z ukazi "ls", "ip" in "pwd". Zato bomo kopirali binarne datoteke iz / koš v nadomestni imenik ~ / new_root / bin imenik. Če želite poiskati binarne datoteke ukazov, uporabite kateri ukaz:
$ kateri bash je ip pwd
Nato kopirajte binarne datoteke ukazov v ~ / new_root / bin imenik.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Kopiraj programske odvisnosti
Ugotoviti bomo morali tudi, kakšne odvisnosti potrebuje naš program. Najprej bomo morali ugotoviti, katere so te odvisnosti, nato pa jih bomo kopirali v ~ / new_root / lib imenik.
Kopiranje odvisnosti za bash
Najprej ugotovite odvisnosti programa bash:
$ ldd / bin / bash
Nato kopirajte te odvisnosti v ~ / new_root / lib imenik.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.torej.6, libdl.torej.2, libc.torej.6 ~ / new_root / libZa datoteke / lib64 jih kopirajte v ~ / new_root / lib64 imenik.
$ cp -v / lib64 / ld-linux-x86-64.torej.2 ~ / new_root / lib64Kopirajte odvisnosti za ukaz ls
Najprej poiščite odvisnosti za ukaz ls:
$ ldd / bin / ls
Nato kopirajte te odvisnosti v ~ / new_root / lib imenik.
$ sudo cp -v / lib / x86_64-linux-gnu / libselinux.torej.1, libc.torej.6, libpcre.torej.3,libdl.torej.2, libpthread.torej.0 / lib64 / ld-linux-x86-64.torej.2 ~ / new_root / lib
Za datoteke / lib64 jih kopirajte v ~ / new_root / lib64 imenik.
$ sudo cp -v / lib64 / ld-linux-x86-64.torej.2 ~ / new_root / lib64Kopirajte odvisnosti za ukaz ip
Najprej poiščite odvisnosti za ukaz ip:
$ ldd / bin / ip
Nato kopirajte te odvisnosti v ~ / new_root / lib imenik.
$ cp -v / lib / x86_64-linuxgnu / libselinux.torej.1, libelf.torej.1, libmnl.torej.0, libcap.torej.2, libdl.torej.2, libc.torej.6,
libpcre.torej.3, libz.torej.1, libpthread.torej.0 ~ / new_root / lib
Za datoteke / lib64 jih kopirajte v ~ / new_root / lib64 imenik.
$ sudo cp -v / lib64 / ld-linux-x86-64.torej.2 ~ / new_root / lib64Kopirajte odvisnosti za ukaz pwd
Najprej poiščite odvisnosti za ukaz pwd:
$ ldd / bin / pwd
Nato kopirajte te odvisnosti v ~ / new_root / lib imenik.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.torej.6 ~ / new_root / libZa datoteke / lib64 jih kopirajte v ~ / new_root / lib64 imenik.
$ sudo cp -v / lib64 / ld-linux-x86-64.torej.2 ~ / new_root / lib64Če si želite ogledati vse imenike v nadomestnem korenskem imeniku, uporabite naslednji ukaz:
$ ls -R
5. Preklopite na nadomestni korenski imenik
Zdaj smo končno pripravljeni preiti na naše novo chroot okolje. Če želite spremeniti korenski imenik, v lupini s korenskimi privilegiji zaženite naslednji ukaz:
$ sudo chroot ~ / new_root / bin / bashKje ~ / new_root je naš nadomestni korenski imenik in / bin / bash je aplikacija, ki smo jo uporabili za nastavitev okolja chroot.
Po zagonu zgornjega ukaza boste videli, da se je poziv bash spremenil v bash-x.y kar je v našem primeru bash-5.0 (kjer 5.0 je številka različice bash).
Opomba: po zagonu ukaza chroot lahko naletite na naslednjo napako, kot sem se:
Če pride do te napake, preverite, ali ste v nov korenski imenik dodali vse knjižnice in izvedljive datoteke, povezane z zahtevanim programom.
Po vstopu v okolje chroot boste lahko dostopali samo do datoteke znotraj njega. Poskusite zagnati ukaze, ki ste jih nastavili za svoje okolje chroot, vključno z nekaterimi vgrajenimi ukazi. Vgrajene ukaze najdete tako, da zaženete pomoč ukaz v lupini.
Vidite, poskusili smo z ukazoma „ls“, „pw“ in „ip“ in vsi so uspeli. Če zaženemo kateri koli ukaz razen teh treh ukazov in vgrajenih ukazov, ukaz ne bo uspel, saj ga nismo nastavili za okolje chroot. Kot lahko vidite na naslednjem posnetku zaslona, smo poskusili zagnati ukaze »touch«, »ping« in »clear« in vsi niso uspeli.
6. Izhod iz chroot
Za izhod iz okolja chroot uporabite izhod ukaz.
Zaključek
V tem članku ste izvedeli, kaj je chroot in kako deluje v Linuxu. Ta članek vam je po korakih pokazal, kako uporabljati chroot v Debian 10 Buster za ustvarjanje chroot okolja za bash in druge ukaze. Zdaj bi vam bilo udobno z ukazom chroot spremeniti korenski imenik procesa in njegove podprocese ter jih izolirati od ostalega sistema.