For Linux OS er det et verktøy tilgjengelig, kjent som chroot, som gir en enklere og raskere måte å sandkasse et program på. Med chroot kan du installere og teste ethvert program uten å påvirke resten av systemet.
Denne artikkelen vil forklare hvordan du bruker chroot i Debian 10 Buster, sammen med noen få eksempler. For forklaring vil vi lage et chroot-miljø for bash og noen av kommandoene, for eksempel kommandoene "ls", "ip" og "pwd".
Hva er chroot?
Chroot-verktøyet er en kommando i Linux som endrer rotkatalogen til et program til en annen katalog. Prosesser som kjører i denne nye rotkatalogen, får ikke tilgang til filene utenfor den. Derfor isolerer den driften av applikasjoner fra resten av systemet.
Hvordan fungerer chroot?
Chroot fungerer ved å kopiere applikasjonen og alle dens kjørbare filer og avhengigheter i den alternative rotkatalogen. Den kjører deretter applikasjonen fra denne alternative rotkatalogen, og får applikasjonen til å betrakte den som den opprinnelige rotkatalogen. Rotkatalogen er den øverste katalogen i hierarkiet, og ingen applikasjoner kan nå høyere enn denne katalogen, så dette er hvordan chroot isolerer applikasjonen fra resten av systemet.
Bruk tilfeller
- Sette opp et testmiljø
- Kjører 32-biters programmer på et 64-biters system
- Kjører eldre programversjoner på den nyeste OS-versjonen
- Passordgjenoppretting
Syntaks
Følgende er den grunnleggende syntaksen for chroot-kommandoen:
$ chrootFølg trinnene nedenfor for å bruke chroot-kommandoen i Debian for å sette opp et chroot-miljø.
1. Opprett en alternativ rotkatalog
Opprett først en alternativ rotkatalog som skal brukes til chroot-miljøet.
$ sudo mkdir ~ / new_rootOvennevnte kommando vil opprette new_root katalog under Hjem katalog, som vil bli brukt som rotkatalog i chroot-miljøet.
2. Legg til viktige kataloger
Opprett katalogene "bin", "lib" og "lib64" under ~ / new_root katalog:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Kopier programbinarier
Alt som kreves for å kjøre et program i chroot-miljøet, må være i den alternative rotkatalogen. I denne artikkelen vil vi lage et chroot-miljø for bash og noen kommandoer, inkludert kommandoene "ls", "ip" og "pwd". Derfor vil vi kopiere binærfiler fra / søppel katalog til det alternative ~ / new_root / bin katalog. For å finne binærfiler for kommandoene, bruk kommandoen som:
$ som bash ls ip pwd
Deretter kopierer du binærfiler til kommandoene til ~ / new_root / bin katalog.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Kopier programavhengigheter
Vi må også finne ut hvilke avhengigheter programmet vårt trenger. Først må vi finne ut hva disse avhengighetene er, og så vil vi kopiere dem til ~ / new_root / lib katalog.
Kopiere avhengigheter for bash
Finn først ut avhengighetene for bash-programmet:
$ ldd / bin / bash
Kopier deretter disse avhengighetene til ~ / new_root / lib katalog.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.så.6, libdl.så.2, libc.så.6 ~ / new_root / libFor / lib64-filene, kopier dem til ~ / new_root / lib64 katalog.
$ cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopier avhengigheter for kommandoen
Finn først ut avhengighetene for ls-kommandoen:
$ ldd / bin / ls
Kopier deretter disse avhengighetene til ~ / new_root / lib katalog.
$ 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
For / lib64-filene, kopier dem til ~ / new_root / lib64 katalog.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopier avhengigheter for ip Command
Finn først ut avhengighetene for ip-kommandoen:
$ ldd / bin / ip
Kopier deretter disse avhengighetene til ~ / new_root / lib katalog.
$ 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
For / lib64-filene, kopier dem til ~ / new_root / lib64 katalog.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopier avhengigheter for pwd-kommando
Finn først ut avhengighetene for pwd-kommandoen:
$ ldd / bin / pwd
Kopier deretter disse avhengighetene til ~ / new_root / lib katalog.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.så.6 ~ / new_root / libFor / lib64-filene, kopier dem til ~ / new_root / lib64 katalog.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64For å se alle katalogene i den alternative rotkatalogen, bruk følgende kommando:
$ ls -R
5. Bytt til alternativ rotkatalog
Nå er vi endelig forberedt på å bytte til vårt nye chroot-miljø. For å endre rotkatalogen, kjør følgende kommando i skallet med root-rettigheter:
$ sudo chroot ~ / new_root / bin / bashHvor ~ / new_root er vår alternative rotkatalog og / bin / bash er applikasjonen vi har brukt til å sette opp chroot-miljøet.
Etter å ha kjørt kommandoen ovenfor, vil du se at bash-ledeteksten har endret seg til bash-x.y som i vårt tilfelle er bash-5.0 (hvor 5.0 er bash versjonsnummeret).
Merk: du kan støte på følgende feil etter å ha kjørt chroot-kommandoen, som jeg gjorde:
Hvis denne feilen oppstår, må du kontrollere at du har lagt til alle biblioteker og kjørbare filer relatert til det nødvendige programmet i den nye rotkatalogen.
Etter at du har kommet inn i chroot-miljøet, vil du bare kunne få tilgang til filen i den. Prøv å kjøre kommandoene du har konfigurert for chroot-miljøet ditt, inkludert noen innebygde kommandoer. Du finner de innebygde kommandoene ved å kjøre hjelp kommando i skallet.
Du kan se at vi har prøvd kommandoene "ls", "pw" og "ip", og alle lyktes. Hvis vi kjører en annen kommando enn disse tre kommandoene og de innebygde kommandoene, vil kommandoen mislykkes, ettersom vi ikke har satt den opp for chroot-miljøet. Som du kan se på skjermbildet nedenfor, har vi prøvd å kjøre kommandoen "touch", "ping" og "clear", og alle mislyktes.
6. Avslutt chroot
For å avslutte chroot-miljøet, bruk exit kommando.
Konklusjon
I denne artikkelen har du lært hva chroot er og hvordan det fungerer i Linux. Denne artikkelen viste deg trinn for trinn hvordan du bruker chroot i Debian 10 Buster for å lage et chroot-miljø for bash og andre kommandoer. Nå bør du være komfortabel med å bruke chroot-kommandoen for å endre rotkatalogen til en prosess og dens underprosesser og isolere dem fra resten av systemet.