chroot
är ett kraftfullt verktyg i Linux som används för att ändra den upplevda rotkatalogen (root directory) för en process och dess barnprocesser. Detta skapar en isolerad miljö som kan vara användbar för många ändamål, såsom säkerhet, testning och reparation av system. Denna guide kommer att gå igenom grunderna för att använda chroot
.
Vad är chroot
?
chroot
står för ”change root” och används för att köra en process i en annan katalog än den faktiska rotkatalogen (/
). Detta innebär att processen ser den nya katalogen som sin rot, vilket effektivt isolerar den från resten av systemet.
Förberedelser
För att använda chroot
behöver du förbereda en katalogstruktur som innehåller alla nödvändiga filer och bibliotek för den miljö du vill skapa. Här är stegen för att sätta upp en enkel chroot
-miljö:
- Skapa en katalog för din
chroot
-miljö:
sudo mkdir -p /var/chroot
- Kopiera de nödvändiga systemfilerna och bibliotek till
chroot
-miljön: Du behöver kopiera binärer, bibliotek och andra nödvändiga filer. Här är ett exempel på hur du kopierar en bash-shell:
sudo mkdir -p /var/chroot/bin
sudo cp /bin/bash /var/chroot/bin
- Kopiera beroende bibliotek: Använd
ldd
för att hitta alla bibliotek som bash binären beror på:
ldd /bin/bash
Utdata kan se ut så här:
linux-vdso.so.1 (0x00007ffc6d7ce000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f833d7e7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f833d7e2000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f833d621000)
/lib64/ld-linux-x86-64.so.2 (0x00007f833d946000)
Skapa kataloger och kopiera dessa bibliotek till din chroot
-miljö:
sudo mkdir -p /var/chroot/lib/x86_64-linux-gnu
sudo cp /lib/x86_64-linux-gnu/libtinfo.so.6 /var/chroot/lib/x86_64-linux-gnu/
sudo cp /lib/x86_64-linux-gnu/libdl.so.2 /var/chroot/lib/x86_64-linux-gnu/
sudo cp /lib/x86_64-linux-gnu/libc.so.6 /var/chroot/lib/x86_64-linux-gnu/
sudo cp /lib64/ld-linux-x86-64.so.2 /var/chroot/lib64/
Använda chroot
När din chroot
-miljö är konfigurerad kan du använda chroot
-kommandot för att byta rot och köra en process i denna miljö:
sudo chroot /var/chroot /bin/bash
Nu har du en bash-shell som körs inom din chroot
-miljö. Du kan verifiera detta genom att använda kommandot pwd
för att se den aktuella katalogen, som nu borde visa /
.
Exempel på användningsområden
- Säkerhet: Använd
chroot
för att isolera applikationer och minska risken för skador om de komprometteras. - Systemreparation:
chroot
kan användas för att reparera system från en live-CD eller USB-sticka genom att montera och chroota till det installerade systemet. - Testning: Skapa isolerade testmiljöer för att köra applikationer eller tjänster utan att påverka det övergripande systemet.
Begränsningar och säkerhet
Även om chroot
kan ge en viss nivå av isolering, är det inte en fullständig säkerhetslösning. Processer i chroot
-miljön kan potentiellt bryta sig ut om de körs som root. För mer robust isolering kan tekniker som containrar (t.ex. Docker) eller virtualisering vara lämpligare.
Sammanfattning
chroot
är ett kraftfullt verktyg för att skapa isolerade miljöer i Linux. Genom att ändra rotkatalogen för en process och dess barnprocesser kan du säkert testa, reparera eller köra applikationer. Med noggranna förberedelser och medvetenhet om dess begränsningar kan chroot
vara en ovärderlig del av din verktygslåda för systemadministration.
Svenska manual sida för chroot i vår wiki