Til Linux OS er der et værktøj til rådighed, kendt som chroot, der giver en nemmere og hurtigere måde at sandboxe en applikation på. Med chroot kan du installere og teste ethvert program uden at påvirke resten af systemet.
Denne artikel vil forklare, hvordan du bruger chroot i Debian 10 Buster sammen med et par eksempler. For forklaring opretter vi et chroot-miljø til bash og nogle af kommandoerne, såsom kommandoerne “ls”, “ip” og “pwd”.
Hvad er chroot?
Chroot-værktøjet er en kommando i Linux, der ændrer rodapplikationen for en applikation til en anden bibliotek. Processer, der kører i dette nye rodkatalog, har ikke adgang til filerne uden for det. Derfor isolerer det driften af applikationer fra resten af systemet.
Hvordan fungerer chroot?
Chroot fungerer ved at kopiere applikationen og alle dens eksekverbare filer og afhængigheder inde i den alternative rodmappe. Det kører derefter applikationen fra denne alternative rodkatalog, hvilket får applikationen til at betragte den som den oprindelige rodkatalog. Rodmappen er den øverste mappe i hierarkiet, og ingen applikationer kan nå højere end denne mappe, så det er sådan, chroot isolerer applikationen fra resten af systemet.
Brug sager
- Opsætning af et testmiljø
- Kører 32-bit programmer på et 64-bit system
- Kører ældre programversioner på den nyeste OS-version
- Gendan adgangskode
Syntaks
Følgende er den grundlæggende syntaks for chroot-kommandoen:
$ chrootFølg nedenstående trin for at bruge chroot-kommandoen i Debian til at oprette et chroot-miljø.
1. Opret en alternativ rodmappe
Opret først en alternativ rodmappe, der skal bruges til chroot-miljøet.
$ sudo mkdir ~ / new_rootOvenstående kommando opretter new_root bibliotek under Hjem katalog, som vil blive brugt som rodmappe i chroot-miljøet.
2. Tilføj vigtige mapper
Opret mapperne "bin", "lib" og "lib64" under ~ / new_root vejviser:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Kopier programbinarier
Alt, hvad der kræves for at køre et program i chroot-miljøet, skal være i den alternative rodkatalog. I denne artikel opretter vi et chroot-miljø til bash og nogle kommandoer, herunder kommandoerne "ls", "ip" og "pwd". Derfor kopierer vi binærfilerne fra /beholder mappe til den alternative ~ / new_root / bin vejviser. For at finde binærerne for kommandoerne skal du bruge kommandoen hvilken:
$ som bash ls ip pwd
Kopier derefter binærfiler af kommandoerne til ~ / new_root / bin vejviser.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Kopier programafhængigheder
Vi bliver også nødt til at finde ud af, hvilke afhængigheder vores program har brug for. Først skal vi finde ud af, hvad disse afhængigheder er, og derefter kopierer vi dem til ~ / new_root / lib mappe.
Kopieringsafhængigheder til bash
Find først ud af afhængighederne for bash-programmet:
$ ldd / bin / bash
Kopier derefter disse afhængigheder til ~ / new_root / lib vejviser.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.så.6, libdl.så.2, libc.så.6 ~ / new_root / libKopier dem til / lib64-filerne til ~ / new_root / lib64 vejviser.
$ cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopiér afhængigheder for ls Command
Find først ud af afhængighederne for kommandoen ls:
$ ldd / bin / ls
Kopier derefter disse afhængigheder til ~ / new_root / lib vejviser.
$ sudo cp -v / lib / x86_64-linux-gnu / libselinux.så.1, libc.så.6, libpcre.så.3,libdl.så.2, libpthread.så.0 / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib
Kopier dem til / lib64-filerne til ~ / new_root / lib64 vejviser.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopier afhængigheder til ip Command
Find først ud af afhængighederne for ip-kommandoen:
$ ldd / bin / ip
Kopier derefter disse afhængigheder til ~ / new_root / lib vejviser.
$ cp -v / lib / x86_64-linuxgnu / libselinux.så.1, libelf.så.1, libmnl.så.0, libcap.så.2, libdl.så.2, libc.så.6,
libpcre.så.3, libz.så.1, libpthread.så.0 ~ / new_root / lib
Kopier dem til / lib64-filerne til ~ / new_root / lib64 vejviser.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopier afhængigheder for pwd-kommando
Find først ud af afhængighederne for pwd-kommandoen:
$ ldd / bin / pwd
Kopier derefter disse afhængigheder til ~ / new_root / lib vejviser.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.så.6 ~ / new_root / libKopier dem til / lib64-filerne til ~ / new_root / lib64 vejviser.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64For at se alle mapper i den alternative rodmappe skal du bruge følgende kommando:
$ ls -R
5. Skift til alternativ rodmappe
Nu er vi endelig parat til at skifte til vores nye chroot-miljø. For at ændre rodmappen skal du køre følgende kommando i skallen med rodrettigheder:
$ sudo chroot ~ / new_root / bin / bashHvor ~ / new_root er vores alternative rodkatalog og / bin / bash er det program, som vi har brugt til at oprette chroot-miljøet.
Efter at have kørt ovenstående kommando, vil du se, at bash-prompten er ændret til bash-x.y hvilket i vores tilfælde er bash-5.0 (hvor 5.0 er bash-versionsnummeret).
Bemærk: du kan støde på følgende fejl efter at have kørt chroot-kommandoen, som jeg gjorde:
Hvis denne fejl opstår, skal du kontrollere, at du har tilføjet alle biblioteker og eksekverbare filer, der er relateret til det krævede program, til det nye rodkatalog.
Når du har indtastet chroot-miljøet, kan du kun få adgang til filen i det. Prøv at køre de kommandoer, du har konfigureret til dit chroot-miljø, inklusive nogle indbyggede kommandoer. Du kan finde de indbyggede kommandoer ved at køre Hjælp kommando i skallen.
Du kan se, at vi har prøvet kommandoerne "ls", "pw" og "ip", og alle lykkedes. Hvis vi kører en anden kommando end disse tre kommandoer og de indbyggede kommandoer, mislykkes kommandoen, da vi ikke har konfigureret den til chroot-miljøet. Som du kan se i det følgende skærmbillede, har vi forsøgt at køre kommandoerne "touch", "ping" og "clear", og alle mislykkedes.
6. Afslut chroot
For at forlade chroot-miljøet skal du bruge Afslut kommando.
Konklusion
I denne artikel har du lært, hvad chroot er, og hvordan det fungerer i Linux. Denne artikel viste dig trin for trin, hvordan du bruger chroot i Debian 10 Buster til at skabe et chroot-miljø til bash og andre kommandoer. Nu skal du være fortrolig med at bruge kommandoen chroot til at ændre rodmappen til en proces og dens underprocesser og isolere dem fra resten af systemet.