Hogyan hozzunk létre egy chroot jail-t WSL2-ben lépésről lépésre

Utolsó frissítés: 27/08/2025
Szerző: Izsák
  • A Chroot a folyamatokat úgy izolálja, hogy a fájl gyökerét egy könyvtárra cseréli.
  • A jailhez az ldd segítségével másolt bináris fájlokra és könyvtárakra van szükség.
  • Használható tesztelésre, korlátozott szolgáltatásokra és helyreállításra.
  • A WSL2-ben ugyanúgy működik, az útvonalak és a hátizsákok gyakorlatias árnyalataival.

Chroot útmutató WSL2-ben

Chroot jail létrehozása WSL2-ben Ez egy egyszerű és hatékony módja a folyamatok elkülönítésének a disztrón belül. Linux en Windows (Fejlesztői mód engedélyezése a Windows 11 rendszerben), ideális teszteléshez anélkül, hogy attól kellene tartania, hogy bármi elromlik. Bár nem virtuális gép vagy konténer, megfelelően konfigurálva lehetővé teszi a hatókör korlátozását parancsok és az alkalmazásokat egy adott könyvtárfába.

A következő sorokban megtalálod részletes, lépésről lépésre haladó útmutató amely integrálja a klasszikus Linux chroot gyakorlatokat (binárisok és függőségek másolása ldd paranccsal, /proc, /dev és /sys csatolása szükség esetén, a prompt módosítása stb.) a WSL2 hasznos árnyalataival és gyorsbillentyűivel együtt. Ismerkedni fogsz a tipikus felhasználási módokkal, a tudnod kellő korlátokkal és a jailbe jutás különböző módjaival, az adott helyzettől függően.

Mi az a chroot ketrec, és mikor a legjobb használni?

A chroot fogalma

A chroot parancs a folyamat fájlrendszerének gyökerét egy tetszőleges könyvtárra módosítja; ettől a ponttól kezdve, az a folyamat "hiszi", hogy az/az a ketrecA gyakorlatban számos nagyon hasznos forgatókönyvhöz használják:

  • Tesztelési homokozó gyanús vagy megbízhatatlan programok futtatása a többi program befolyásolása nélkül.
  • Hálózati szolgáltatások elkülönítése, például egy FTP-kiszolgáló vagy akár egy webkiszolgáló, korlátozva a látható és megérinthető tartalmakat.
  • Korlátozott környezetek olyan eszközökön vagy rendszereken, ahol a felhasználóknak csak minimális funkciókkal kell rendelkezniük.
  • Rendszer-helyreállításLiveCD-ről bootolsz, chroot-olsz a sérült rendszerbe, és belülről megjavítod.

A ketrec létrehozása előtt van egy aranyszabály, amelyet be kell tartani: A chrooton belül mindent el kell helyezni, amit használni fogsz. (binárisok, függvénykönyvtárak, konfigurációs fájlok, és ha alkalmazható, pszeudo-rendszerek, mint például a /proc, /dev és /sys, bind paranccsal csatolva). Ha egy segédprogram nem érhető el a jailben, akkor nem fog működni.

Főbb követelmények és fogalmak a kezdés előtt

Chroot-követelmények

Chroottal való együttműködés bármilyen Linux rendszeren (beleértve a WSL2-n belüli disztribúciókat is) jogosultságokra van szükséged gyökérA WSL2-ben root felhasználóként jelentkezhet be Windows rendszeren: wsl -d A DisztribúcióNeved -u root, vagy root jogosultságok emelése a munkameneten belül a su paranccsal – ha be van állítva.

Továbbá azt is meg kell érteni A chroot nem egy abszolút biztonsági megoldásFájlrendszer szinten izolál, de nem egyenértékű egy robusztus, sandboxhoz hasonló konténerekkel, névterekkel/cgroupokkal. A fent leírt esetekben mégis hihetetlenül praktikus és gyorsan beállítható.

Végül emlékszem erre Nem minden démon és program működik jól chrootbanVannak, akik olyan rendszerstruktúrákra, socketekre vagy szolgáltatásokra számítanak, amelyek nincsenek jelen. A klasszikus bajkeverők közé tartozik például a sendmail.

  Ismerje meg, hogyan törölheti a WhatsApp név történelmi múltját iPhone és Android rendszeren

Alap példa: egy jail a /opt/chroot_dir könyvtárban az ls futtatásához

Alapvető chroot példa

Kezdjük egy egyszerű példával: hozz létre egy jail-t a /opt/chroot_dir könyvtárban ahol futtathatjuk az ls (és a bash) parancsot, átmásolva a szükséges könyvtárakat. Ez ugyanúgy vonatkozik a WSL2-re és bármely szabványos Linux disztribúcióra.

Bináris függőségek azonosítása ldd-vel. Nagyon kényelmes egyszerre megtekinteni a bash-t és az ls-t:

ldd /bin/bash /bin/ls

A következőhöz hasonló kimenetet fog látni, amely jelzi, hogy mely dinamikus könyvtárakat kell másolni a jailbe: libtinfo.so.6, libdl.so.2, libc.so.6, az ld-linux dinamikus betöltő stb. Egy példa arra, hogy mit kaphatsz:

linux-gate.so.1 => (0x0013c000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2

Ezután hozd létre a könyvtárstruktúrát, és másold a bináris fájlokat és a függvénykönyvtárakat a jailbe. Igazítsa az útvonalakat a rendszeréhez (az ldd pontos nyomokat ad):

mkdir -p /opt/chroot_dir/{bin,lib,lib64,usr/lib}
cp /bin/bash /opt/chroot_dir/bin/
cp /bin/ls   /opt/chroot_dir/bin/
cp /lib/x86_64-linux-gnu/libtinfo.so.6 /opt/chroot_dir/lib/
cp /lib/x86_64-linux-gnu/libdl.so.2    /opt/chroot_dir/lib/
cp /lib/x86_64-linux-gnu/libc.so.6     /opt/chroot_dir/lib/
cp /lib64/ld-linux-x86-64.so.2         /opt/chroot_dir/lib64/

Nem kötelező, de a chroot-on belül testreszabhatod a promptot, hogy azonnal felismerje. Például: a PS1-et egy figyelemfelkeltő előtaggal kell ellátni:

echo "PS1='JAULA $ '" | sudo tee /opt/chroot_dir/etc/bash.bashrc

Lépj be a ketrecbe bash indítása kezdeti folyamatként:

chroot /opt/chroot_dir /bin/bash

Ettől a pillanattól kezdve minden, amit belül futtatsz, a /opt/chroot_dir fára korlátozódik; nem befolyásolja a ketrecen kívüli folyamatokat és ha bármilyen függőség hiányzik, azonnal tudni fogod, mert a bináris fájl nem indul el.

Felhasználónkénti jail: bejelentkezési szkript és minimális struktúra a /home könyvtárban

Ketrány felhasználónként

Egy másik megközelítés a ketrec előkészítése egy adott felhasználóra jellemzőKépzeld el, hogy a pajaro felhasználót a /home/pajaro könyvtárra szeretnéd korlátozni, hozzáféréssel a bash-hez és az olyan alapvető segédprogramokhoz, mint az ls és a cp.

Először hozd létre a felhasználót (gyökérből):

su -
adduser pajaro
passwd pajaro

Ezután állíts be egy „wrapper” shell-t, amely belépéskor elindítja a chroot-ot. Szerkesztés /bin/cage a kedvenc szerkesztőddel, és tedd be ezt a tartalmat:

vim /bin/jaula
#!/bin/bash
/usr/sbin/chroot /home/pajaro /bin/bash

Adj végrehajtási engedélyeket a forgatókönyv hogy héjként lehessen használni. A usermod számára elengedhetetlen az elfogadása.:

chmod a+x /bin/jaula

Most hozd létre az alapvető könyvtárstruktúrát a felhasználó saját könyvtárában, és készítsd elő a függőségeket. Ne feledd, hogy Az architektúrától függően a lib mellett szükség lehet a lib64-re is.:

mkdir -p /home/pajaro/{bin,lib,lib64,usr/lib}

Bash függőségek vizsgálata és másold át mindent, amire szükséged van, ahogy az ldd jelzi:

ldd /bin/bash
cp /bin/bash /home/pajaro/bin/
cp /lib/x86_64-linux-gnu/libtinfo.so.6 /home/pajaro/lib/
cp /lib/x86_64-linux-gnu/libdl.so.2    /home/pajaro/lib/
cp /lib/x86_64-linux-gnu/libc.so.6     /home/pajaro/lib/
cp /lib64/ld-linux-x86-64.so.2         /home/pajaro/lib64/

Tartalmaz olyan gyakori segédprogramokat is, mint az ls és a cp, valamint azok könyvtárait. Erősítsd meg az ldd-vel, hogy mely fájlokat kell elvinned:

cp /bin/ls /home/pajaro/bin/
cp /bin/cp /home/pajaro/bin/
ldd /bin/ls
ldd /bin/cp

Ahhoz, hogy a felhasználó bejelentkezéskor közvetlenül a ketrecbe lépjen, alapértelmezett shell hozzárendelése:

usermod -s /bin/jaula pajaro

Készen áll: amikor a madár bejelentkezik, a /home/pajaro chroot könyvtárba fog érkezni és a másolt minimális eszközkészlettel fog működni.

  TUI menük létrehozása PowerShellben a Terminal.Gui segítségével

Chroot használata adott azonosítókkal: –userspec és az /etc/passwd ellenőrzése

chroot felhasználói specifikációval

Előfordulhat, hogy a jailbe egy adott UID és GID azonosítót kell megadni, például a jogosultságok teszteléséhez. A chroot segítségével ezt a következőképpen teheted meg: –userspec=UID:GID.

Először is, azonosítsa a célfelhasználói azonosítókat a következők alapján: / Etc / passwd; a grep segítségével gyorsan megtalálhatod:

cat /etc/passwd | grep ${usuario}

A mezőket kettőspont választja el egymástól, és A harmadik és negyedik mező az UID-nak és a GID-nek felel meg., rendre. Ha ezek az értékek a rendelkezésünkre állnak, futtassuk a chroot parancsot a kívánt jail és azonosítók megadásával. Például, ha a jailbe zárt felhasználó UID-ja 1002 és GID-je 1003, és a jail a /usr/src/jail könyvtárban található:

chroot --userspec=1002:1003 /usr/src/jaula/

Ha bejelentkezéskor hibát lát, amely azt jelzi, hogy A bash nem található a ketrecben, ez azt jelzi, hogy még nem másoltad át a bináris fájlt és annak függvénykönyvtárait a jail struktúrába. Ismételd meg az ldd folyamatot a /bin/bash és /bin/ls könyvtárakon, és helyezd át a függőségeket a megfelelő helyükre.

Rendszer-helyreállítás: Chrootolás Live CD-ről

Helyreállítás LiveCD-vel és chroottal

Egy másik nagyon gyakori eset a chroot használata lemezre telepített rendszer javítása először egy élő CD-ről indítsd el a rendszert. Ez lehetővé teszi, hogy úgy jelentkezz be, mintha normál módon indultál volna, de az élő környezetből.

Az általános lépések a következők lennének:

  1. Hozz létre egy munkakönyvtárat, ahová a cél fájlrendszert csatolni fogod.
  2. Csatold fel a javítani kívánt rendszer root partícióját (például /dev/sda1).
  3. A mount /proc, /dev és /sys könyvtárak kötésével biztosíthatod az eszközök megfelelő működését a chroot-on belül.
  4. Futtassa a chroot parancsot a mount könyvtárban.
mkdir /media/jaula
mount /dev/sda1 /media/jaula
mount --bind /proc /media/jaula/proc
mount --bind /dev  /media/jaula/dev
mount --bind /sys  /media/jaula/sys
chroot /media/jaula

A –bind opció okozza ugyanaz a fájlrendszer érhető el mindkét ponton, megőrizve a parancsok, például az apt, az update-initramfs vagy az editors chroot-on belüli normál működéséhez szükséges környezetet.

Hasznos funkciók, ha WSL2-ben dolgozol

Egy könnyűsúlyú virtuális gépA WSL2-ben egy könnyű virtuális gépen belül futtatsz Linuxot, de az összes korábbi lépés szinte ugyanúgy érvényes. Íme néhány gyakorlati tipp, amelyek megkönnyítik az életedet ebben a környezetben, és amelyek illeszkednek a már látottakhoz:

  • Gyors bejelentkezés rootkéntWindows rendszeren a wsl -d YourDistro -u root paranccsal nyisson meg egy közvetlen root munkamenetet, és akadálytalanul csatolja fel a jailjét.
  • Útvonalak és montázsok: ha szükséged van Windows fájlok elérése, ne feledd, hogy a /mnt/c, /mnt/d stb. könyvtárak alatt találhatók. Nem szokásos a chrooton belül csatolni őket, de ha a helyzeted megkívánja, megteheted.
  • /proc, /sys és /dev fájlokAmikor egy jail-t előkészítünk a WSL2-n belüli rendszereszközök futtatására, a LiveCD részben leírtakhoz hasonlóan a mount –bind kapcsolóval beállíthatjuk a dolgokat.
  • Szkriptek és shell-ekA /bin/jail létrehozása és a usermod -s paranccsal való hozzárendelésének mintája ugyanúgy működik a WSL2-ben; csak győződj meg róla, hogy a bináris fájlokat és a függvénykönyvtárakat lemásoltad az ldd szokásos ellenőrzésével, és szkriptek létrehozása bash-ban alkalmas.
  Az új szerkesztés használata Windows rendszerben: Teljes körű, gyakorlati útmutató

Bár a WSL2 elszigeteltséget kínál a Windowstól, A chroot ketrec magán a disztrón belül működik.Ha erősebb izolációra vágysz kernel szinten, érdemes lehet kiegészíteni specifikus konténerekkel vagy sandboxokkal, vagy áttekinteni, hogyan... WSL2 konfigurálása egyéni kernellel.

Bővítések, korlátok és trükkök egy teljesebb ketrechez

Ha a jail nem elég neked, Debianban használhatod debootstrap-pel jailbreakelni egy teljes rendszert egy könyvtáron belül, tehát nagyon hasonlít egy minimális telepítéshez. Ez egy nagyon letisztult módja annak, hogy egy önálló környezetet hozz létre a disztródon belül, még a WSL2-ben is.

Ne feledkezzünk meg a már említett árnyalatról: Nem minden szolgáltatás chroot-kompatibilis további konfigurációk (elérési utak, socketek, állapotfájlok stb.) nélkül. A Sendmail egy klasszikus példa. Modern szolgáltatások esetén egy konténer vagy egy systemd-nspawn szolgáltatás előnyösebb lehet, ha valami nagyon mini-rendszerhez hasonlóra van szükség.

Egy szokás, amely segít elkerülni a zavart, az hagyd jól láthatóan kijelölve a shell promptot a ketrec belsejében (ahogy a PS1-gyel tettük) és helyezzük el naplók és a konfigurációkat konzisztens elérési utakon. Így akár a chroot –userspec paranccsal, akár a /bin/jail shell segítségével jelentkezel be, mindig tudni fogod, hogy be vagy jelentkezve.

Hogy kijuss a ketrecből, csak fuss kijárat A chroot-tal indított bash munkamenetben azonnal visszatérsz a normál környezetedbe, mellékhatások nélkül, ha csak a szükséges részeket másoltad át.

Ha további parancsokat szeretne hozzáadni a ketrechez, ismételd meg a mintátKeresd meg a szükséges bináris fájlt, vizsgáld meg a függőségeit az ldd paranccsal, és másold át mindent a jailen belüli megfelelő elérési utakra. A bináris fájlok általában a bin vagy az usr/bin könyvtárba kerülnek; a függvénykönyvtárak pedig a lib vagy lib64 könyvtárba, az alkalmazástól függően.

A befejezést követően egy ketreces környezettel fogsz rendelkezni, ahol futtathatsz speciális segédprogramokat, elkülöníthetsz egyszerű szolgáltatásokat, vagy adminisztratív feladatokat végezhetsz anélkül, hogy attól kellene tartanod, hogy összezavarod a fő rendszered. A WSL2-vel az élmény ugyanolyan közvetlen és nagyon kényelmes Windows rendszeren történő teszteléshez nehéz virtuális gépek beállítása nélkül.

Fejlesztői környezet beállítása Windows alrendszerrel Linux rendszerhez
Kapcsolódó cikk:
Fejlesztői környezet beállítása WSL-lel Windows rendszeren