För Linux OS finns det ett verktyg tillgängligt, så kallat chroot, som ger ett enklare och snabbare sätt att sandboxa en applikation. Med chroot kan du installera och testa alla applikationer utan att påverka resten av systemet.
Denna artikel kommer att förklara hur du använder chroot i Debian 10 Buster, tillsammans med några exempel. För förklaring skapar vi en chroot-miljö för bash och några av kommandona, till exempel kommandona "ls", "ip" och "pwd".
Vad är chroot?
Verktyget chroot är ett kommando i Linux som ändrar rotkatalogen för ett program till en annan katalog. Processer som körs i den här nya rotkatalogen kan inte komma åt filerna utanför den. Därför isolerar den applikationsfunktionerna från resten av systemet.
Hur fungerar chroot?
Chroot fungerar genom att kopiera applikationen och alla dess körbara filer och beroenden i den alternativa rotkatalogen. Den kör sedan applikationen från denna alternativa rotkatalog, vilket får applikationen att betrakta den som den ursprungliga rotkatalogen. Rotkatalogen är den högsta katalogen i hierarkin, och ingen applikation kan nå högre än den här katalogen, så det här är hur chroot isolerar applikationen från resten av systemet.
Använd fall
- Ställa in en testmiljö
- Kör 32-bitarsprogram på ett 64-bitars system
- Kör äldre programversioner på den senaste OS-versionen
- Återställning av lösenord
Syntax
Följande är den grundläggande syntaxen för chroot-kommandot:
$ chrootFölj stegen nedan för att använda chroot-kommandot i Debian för att ställa in en chroot-miljö.
1. Skapa en alternativ rotkatalog
Skapa först en alternativ rotkatalog som ska användas för chroot-miljön.
$ sudo mkdir ~ / new_rootKommandot ovan skapar new_root katalog under Hem katalog som kommer att användas som rotkatalog i chroot-miljön.
2. Lägg till viktiga kataloger
Skapa katalogerna "bin", "lib" och "lib64" under ~ / new_root katalog:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Kopiera programbinarier
Allt som krävs för att köra ett program i chroot-miljön måste finnas i den alternativa rotkatalogen. I den här artikeln kommer vi att skapa en chroot-miljö för bash och vissa kommandon, inklusive kommandona "ls", "ip" och "pwd". Därför kommer vi att kopiera binärfilerna från / soptunna katalog till den alternativa ~ / new_root / bin katalog. För att hitta binärerna för kommandona, använd kommandot vilket:
$ vilken bash ls ip pwd
Kopiera sedan binärerna för kommandona till ~ / new_root / bin katalog.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Kopiera programberoende
Vi måste också ta reda på vilka beroenden vårt program behöver. Först måste vi hitta vad dessa beroenden är och sedan kopiera dem till ~ / new_root / lib katalog.
Kopiera beroenden för bash
Ta reda på beroenden för bash-programmet:
$ ldd / bin / bash
Kopiera sedan dessa beroenden till ~ / new_root / lib katalog.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.så.6, libdl.så.2, libc.så.6 ~ / new_root / libKopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.
$ cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopiera beroenden för ls Command
Ta reda på beroenden för kommandot ls:
$ ldd / bin / ls
Kopiera sedan dessa beroenden till ~ / 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
Kopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopiera beroenden för ip Command
Ta reda på beroenden för ip-kommandot:
$ ldd / bin / ip
Kopiera sedan dessa beroenden till ~ / 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
Kopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64Kopiera beroenden för pwd-kommando
Ta reda på beroenden för pwd-kommandot:
$ ldd / bin / pwd
Kopiera sedan dessa beroenden till ~ / new_root / lib katalog.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.så.6 ~ / new_root / libKopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.
$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64För att visa alla kataloger i den alternativa rotkatalogen, använd följande kommando:
$ ls -R
5. Byt till alternativ rotkatalog
Nu är vi äntligen beredda att byta till vår nya chrot-miljö. För att ändra rotkatalogen, kör följande kommando i skalet med root-behörigheter:
$ sudo chroot ~ / new_root / bin / bashVar ~ / new_root är vår alternativa rotkatalog och / bin / bash är det program som vi har använt för att ställa in chroot-miljön.
Efter att ha kört ovanstående kommando ser du att bash-prompten har ändrats till bash-x.y vilket i vårt fall är bash-5.0 (där 5.0 är bash-versionsnumret).
Notera: du kan stöta på följande fel efter att ha kört chroot-kommandot, som jag gjorde:
Om detta fel uppstår, kontrollera att du har lagt till alla bibliotek och körbara filer som är relaterade till det nödvändiga programmet i den nya rotkatalogen.
När du har angett chroot-miljön kan du bara komma åt filen i den. Försök att köra kommandona som du har ställt in för din chroot-miljö, inklusive några inbyggda kommandon. Du kan hitta de inbyggda kommandona genom att köra hjälp kommandot i skalet.
Du kan se att vi har provat kommandona "ls", "pw" och "ip", och alla lyckades. Om vi kör något annat kommando än dessa tre kommandon och de inbyggda kommandona kommer kommandot att misslyckas, eftersom vi inte har ställt in det för chroot-miljön. Som du kan se i följande skärmdump har vi försökt köra kommandona "touch", "ping" och "clear", och alla misslyckades.
6. Avsluta chroot
För att lämna chroot-miljön, använd utgång kommando.
Slutsats
I den här artikeln har du lärt dig vad chroot är och hur det fungerar i Linux. Den här artikeln visade dig steg för steg hur du använder chroot i Debian 10 Buster för att skapa en chroot-miljö för bash och andra kommandon. Nu bör du vara bekväm med att använda chroot-kommandot för att ändra rotkatalogen för en process och dess underprocesser och isolera dem från resten av systemet.