Debian

Hoe chroot te gebruiken in Debian 10

Hoe chroot te gebruiken in Debian 10
In een testomgeving moeten we vaak bepaalde applicaties sandboxen om te voorkomen dat ze de rest van het systeem beschadigen of rondneuzen. Er zijn verschillende tools beschikbaar om een ​​programma te sandboxen en te voorkomen dat het de rest van het systeem beïnvloedt, zoals VirtualBox, VMware, Xen, KVM, enz. Voor slechts één of enkele toepassingen lijkt het sandboxen van een heel besturingssysteem echter niet praktisch.

Voor Linux OS is er een tool beschikbaar, bekend als chroot, die een eenvoudigere en snellere manier biedt om een ​​applicatie te sandboxen. Met chroot kun je elke applicatie installeren en testen zonder de rest van het systeem te beïnvloeden.

In dit artikel wordt uitgelegd hoe u chroot gebruikt in Debian 10 Buster, samen met enkele voorbeelden. Ter verduidelijking zullen we een chroot-omgeving maken voor de bash en enkele van de commando's, zoals de commando's "ls", "ip" en "pwd".

Wat is chroot?

De chroot-tool is een opdracht in Linux die de hoofdmap van een toepassing naar een andere map verandert. Processen die in deze nieuwe hoofdmap worden uitgevoerd, hebben geen toegang tot de bestanden daarbuiten. Daarom isoleert het de bewerkingen van applicaties van de rest van het systeem.

Hoe werkt chroot??

Chroot werkt door de toepassing en al zijn uitvoerbare bestanden en afhankelijkheden in de alternatieve hoofdmap te kopiëren. Vervolgens voert het de toepassing uit vanuit deze alternatieve hoofdmap, waardoor de toepassing deze als de oorspronkelijke hoofdmap beschouwt. De hoofdmap is de bovenste map in de hiërarchie en geen enkele toepassing kan hoger komen dan deze map, dus dit is hoe chroot de toepassing isoleert van de rest van het systeem.

Gebruiksgevallen

Syntaxis

Het volgende is de basissyntaxis voor het chroot-commando:

$ chroot opdracht

Volg de onderstaande stappen om het chroot-commando in Debian te gebruiken om een ​​chroot-omgeving in te stellen.

1. Een alternatieve hoofdmap maken

Maak eerst een alternatieve root-directory die moet worden gebruikt voor de chroot-omgeving.

$ sudo mkdir ~/new_root

De bovenstaande opdracht maakt de nieuwe_root map onder de Huis directory, die zal worden gebruikt als de rootdirectory in de chroot-omgeving.

2. Essentiële mappen toevoegen

Maak de mappen "bin", "lib" en "lib64" aan onder de ~/nieuwe_root map:

$ sudo mkdir -p ~/new_root/bin,lib,lib64

3. Programma-binaire bestanden kopiëren

Alles wat nodig is om een ​​toepassing in de chroot-omgeving uit te voeren, moet in de alternatieve hoofdmap staan. In dit artikel zullen we een chroot-omgeving maken voor de bash en enkele opdrachten, waaronder de opdrachten "ls", "ip" en "pwd". Daarom zullen we de binaire bestanden kopiëren van de /bin map naar de alternatieve ~/new_root/bin map. Om de binaire bestanden van de opdrachten te vinden, gebruikt u de opdracht welke:

$ welke bash is ip pwd

Kopieer vervolgens de binaire bestanden van de opdrachten naar de to ~/new_root/bin map.

$ sudo cp -v /bin/bash,ls,ip,pwd  ~/new_root/bin

4. Programma-afhankelijkheden kopiëren

We zullen ook moeten uitzoeken welke afhankelijkheden ons programma nodig heeft. Eerst moeten we uitzoeken wat die afhankelijkheden zijn, en dan zullen we ze kopiëren naar de ~/new_root/lib map.

Afhankelijkheden kopiëren voor bash

Ontdek eerst de afhankelijkheden voor het bash-programma:

$ ldd /bin/bash

Kopieer deze afhankelijkheden vervolgens naar de ~/new_root/lib map.

$ cp -v /lib/x86_64-linux-gnu/libtinfo.zo.6,libdl.zo.2,libc.zo.6 ~/new_root/lib

Kopieer de /lib64-bestanden naar de ~/new_root/lib64 map.

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

Afhankelijkheden kopiëren voor ls Command

Zoek eerst de afhankelijkheden voor de opdracht ls:

$ ldd /bin/ls

Kopieer deze afhankelijkheden vervolgens naar de ~/new_root/lib map.

$ sudo cp -v /lib/x86_64-linux-gnu/libselinux.zo.1,libc.zo.6,libpcre.zo.3,
libdl.zo.2, libpthread:.zo.0 /lib64/ld-linux-x86-64.zo.2 ~/new_root/lib

Kopieer de /lib64-bestanden naar de ~/new_root/lib64 map.

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

Afhankelijkheden kopiëren voor ip-opdracht

Ontdek eerst de afhankelijkheden voor de ip-opdracht:

$ ldd /bin/ip

Kopieer deze afhankelijkheden vervolgens naar de ~/new_root/lib map.

$ cp -v /lib/x86_64-linux
gnu/libselinux.zo.1, laster.zo.1,libmnl.zo.0,libcap.zo.2,libdl.zo.2,libc.zo.6,
libpcre.zo.3,libz.zo.1,libpthread.zo.0 ~/new_root/lib

Kopieer de /lib64-bestanden naar de ~/new_root/lib64 map.

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

Afhankelijkheden kopiëren voor pwd Commandd

Zoek eerst de afhankelijkheden voor het pwd-commando:

$ ldd /bin/pwd

Kopieer deze afhankelijkheden vervolgens naar de ~/new_root/lib map.

$ sudo cp -v /lib/x86_64-linux-gnu/libc.zo.6  ~/new_root/lib

Kopieer de /lib64-bestanden naar de ~/new_root/lib64 map.

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

Gebruik de volgende opdracht om alle mappen in de alternatieve hoofdmap te bekijken:

$ ls -R

5. Overschakelen naar alternatieve hoofdmap

Nu zijn we eindelijk klaar om over te stappen naar onze nieuwe chroot-omgeving. Om de hoofdmap te wijzigen, voert u de volgende opdracht in de shell uit met rootrechten:

$ sudo chroot ~/new_root /bin/bash

Waar ~/nieuwe_root is onze alternatieve hoofdmap en /bin/bash is de applicatie die we hebben gebruikt om de chroot-omgeving in te stellen.

Nadat u de bovenstaande opdracht hebt uitgevoerd, ziet u dat de bash-prompt is gewijzigd in: bash-x.ja wat in ons geval is bash-5.0 (waar 5.0 is het bash-versienummer).

Opmerking: u kunt de volgende fout tegenkomen na het uitvoeren van de chroot-opdracht, zoals ik deed:

Als deze fout optreedt, controleer dan of u alle bibliotheken en uitvoerbare bestanden met betrekking tot het vereiste programma hebt toegevoegd aan de nieuwe hoofdmap.

Nadat je de chroot-omgeving hebt betreden, heb je alleen toegang tot het bestand erin. Probeer de commando's uit te voeren die je hebt ingesteld voor je chroot-omgeving, inclusief enkele ingebouwde commando's. U kunt de ingebouwde commando's vinden door de helpen commando in de shell.

Je kunt zien dat we de commando's "ls", "pw" en "ip" hebben geprobeerd, en ze zijn allemaal gelukt. Als we een ander commando uitvoeren dan deze drie commando's en de ingebouwde commando's, zal het commando mislukken, omdat we het niet hebben ingesteld voor de chroot-omgeving. Zoals je kunt zien in de volgende schermafbeelding, hebben we geprobeerd de commando's "touch", "ping" en "clear" uit te voeren, en ze zijn allemaal mislukt.

6. chroot afsluiten

Gebruik de om de chroot-omgeving te verlaten Uitgang opdracht.

Conclusie

In dit artikel heb je geleerd wat chroot is en hoe het werkt in Linux. Dit artikel liet je stap voor stap zien hoe je chroot in Debian 10 Buster gebruikt om een ​​chroot-omgeving te creëren voor bash en andere commando's. Nu zou u vertrouwd moeten zijn met het gebruik van de chroot-opdracht om de hoofdmap van een proces en zijn subprocessen te wijzigen en deze te isoleren van de rest van het systeem.

Hoe FPS te verhogen in Linux?
FPS staat voor Beelden per seconde. De taak van FPS is om de framesnelheid te meten bij het afspelen van video's of speluitvoeringen. In eenvoudige wo...
Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...