Debian

Hur man använder chroot i Debian 10

Hur man använder chroot i Debian 10
I en testmiljö måste vi ofta sandlåda vissa applikationer för att förhindra att de skadar eller snoopar resten av systemet. Det finns olika verktyg för att sandboxa ett program och förhindra att det påverkar resten av systemet, som VirtualBox, VMware, Xen, KVM, etc. För endast en eller flera applikationer verkar dock sandboxning av ett helt operativsystem inte vara praktiskt.

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

Syntax

Följande är den grundläggande syntaxen för chroot-kommandot:

$ chroot kommando

Fö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_root

Kommandot 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, lib64

3. 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 / lib

Kopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.

$ cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64

Kopiera 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 / lib64

Kopiera 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-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

Kopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.

$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64

Kopiera 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 / lib

Kopiera dem till / lib64-filerna till ~ / new_root / lib64 katalog.

$ sudo cp -v / lib64 / ld-linux-x86-64.så.2 ~ / new_root / lib64

Fö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 / bash

Var ~ / 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.

Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...
Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...
Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...