For Linux OS er det et verktøy tilgjengelig, kjent som Chroot, som gir en enklere og raskere måte å sandkasse på en applikasjon. 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 “LS”, “IP” og “PWD” -kommandoer.
Hva er Chroot?
Chroot -verktøyet er en kommando i Linux som endrer rotkatalogen til en applikasjon til en annen katalog. Prosesser som kjører i denne nye rotkatalogen, har ikke tilgang til filene utenfor den. Derfor isolerer det driften av applikasjoner fra resten av systemet.
Hvordan fungerer chroot?
Chroot fungerer ved å kopiere applikasjonen og alle kjørbare filer og avhengigheter i den alternative rotkatalogen. Den kjører deretter applikasjonen fra denne alternative rotkatalogen, og får applikasjonen til å vurdere det som den opprinnelige rotkatalogen. Rotkatalogen er den topp mest katalogen i hierarkiet, og ingen applikasjoner kan nå høyere enn denne katalogen, så det er slik Chroot isolerer applikasjonen fra resten av systemet.
Bruk saker
Syntaks
Følgende er den grunnleggende syntaks for Chroot -kommandoen:
$ chrootkommando
Følg trinnene nedenfor for å bruke Chroot -kommandoen i Debian for å sette opp et Chroot -miljø.
Lag en alternativ rotkatalog
Lag først en alternativ rotkatalog som skal brukes til Chroot -miljøet.
$ sudo mkdir ~/new_root
Kommandoen ovenfor vil opprette new_root Katalog under Hjem Katalog, som vil bli brukt som rotkatalogen i Chroot -miljøet.
Legg til viktige kataloger
Lag "Bin", "lib" og "lib64" -kataloger under ~/new_root Katalog:
$ sudo mkdir -p ~/new_root/bin, lib, lib64
Kopier programbinarier
Alt som kreves for å kjøre en applikasjon 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 “LS”, “IP” og “PWD” -kommandoer. Derfor vil vi kopiere binærene fra /bin Katalog til alternativet ~/new_root/bin katalog. For å finne binærene til kommandoene, bruk hvilken kommando:
$ hvilken bash ls ip pwd
Deretter kopierer du binærene til kommandoene til ~/new_root/bin katalog.
$ sudo cp -v/bin/bash, ls, ip, pwd ~/new_root/bin
Kopier programavhengigheter
Vi må også finne ut hvilke avhengigheter programmet vårt trenger. Først må vi finne hva disse avhengighetene er, og så vil vi kopiere dem til ~/new_root/lib katalog.
Kopiering av avhengigheter for bash
Først, finn ut avhengighetene for bash -programmet:
$ LDD /BIN /BASH
Deretter kopierer du 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/lib
For /lib64 -filene, kopier dem til ~/new_root/lib64 katalog.
$ cp -v /lib64 /ld-linux-x86-64.så.2 ~/new_root/lib64
Kopier avhengigheter for LS -kommandoen
Først, finn ut avhengighetene for LS -kommandoen:
$ LDD /BIN /LS
Deretter kopierer du 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/lib64
Kopier avhengigheter for IP -kommando
Først må du finne ut avhengighetene for IP -kommandoen:
$ LDD /BIN /IP
Deretter kopierer du disse avhengighetene til ~/new_root/lib katalog.
$ cp -v /lib /x86_64 -Linux
gnu/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/lib64
Kopier avhengigheter for PWD -kommando
Først må du finne ut avhengighetene for PWD -kommandoen:
$ LDD /BIN /PWD
Deretter kopierer du disse avhengighetene til ~/new_root/lib katalog.
$ sudo cp -v/lib/x86_64-linux-gnu/libc.så.6 ~/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/lib64
For å se alle katalogene i den alternative rotkatalogen, bruk følgende kommando:
$ ls -r
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 rotrettigheter:
$ sudo chroot ~/new_root/bin/bash
Hvor ~/new_root er vår alternative rotkatalog og /bin/bash er applikasjonen som vi har brukt for å 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 bashversjonsnummeret).
Merk: Du kan møte følgende feil etter å ha kjørt Chroot -kommando, som jeg gjorde:
Hvis denne feilen oppstår, må du sjekke at du har lagt til alle biblioteker og kjørbare filer relatert til det nødvendige programmet til den nye rotkatalogen.
Etter å ha kommet inn i chroot -miljøet, vil du bare kunne få tilgang til filen i den. Prøv å kjøre kommandoene du har satt opp for Chroot-miljøet ditt, inkludert noen innebygde kommandoer. Du kan finne de innebygde kommandoene ved å kjøre hjelp Kommando i skallet.
Du kan se at vi har prøvd “LS”, “PW” og “IP” -kommandoer, og alle lyktes. Hvis vi kjører noen andre kommandoer enn disse tre kommandoene og de innebygde kommandoene, vil kommandoen mislykkes, da vi ikke har satt den opp for Chroot-miljøet. Som du kan se i følgende skjermbilde, har vi prøvd å kjøre "berøringen", "ping" og "klare" kommandoer, og alle av dem mislyktes.
Avslutt chroot
For å forlate 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.