Het Gebruik van het Commando chroot op Linux

0
301
Fatmawati Achmad Zaenuri/Shutterstock.com

Het commando chroot kunt u sturen naar de gevangenis, houd uw ontwikkeling of test omgevingen geïsoleerd, of gewoon het verbeteren van de beveiliging van uw systeem. Wij tonen u de eenvoudigste manier om het te gebruiken.

Wat is een chroot?

Als u probeert om het meten van de bruikbaarheid van een opdracht, moet u rekening houden met de functionaliteit en het gebruiksgemak. Als het te ingewikkeld voor mensen om te gebruiken of te langdradig te maken, ze willen proberen om het te gebruiken, de functionaliteit kan ook nul zijn. Als ze niet worden gebruikt, het niet verstrekken van enige functionaliteit.

In overleg met de Linux-gebruikers—in persoon en op fora—het lijkt erop dat de chroot opdracht is er een die is gekoppeld als moeilijk te gebruiken, of te persnickety en vervelend te stellen. Het lijkt erop dat deze geweldige nut niet zo veel als het zou kunnen worden.

Met chroot u kunt het opzetten en uitvoeren van programma ‘ s of interactieve schelpen zoals Bash in een encapsulated bestandssysteem dat wordt verhinderd de interactie met uw normale bestandssysteem. Alles binnen de chroot omgeving is geschreven en opgenomen. Niets in de chroot omgeving kunt zien uit het verleden zijn eigen, speciale, root directory zonder escaleren naar de root privileges. Dat heeft verdiend dit type omgeving de bijnaam van een chroot jail. De term “gevangenis” moet niet worden verward met de FreeBSD gevangenis opdracht, die zorgt voor een chroot omgeving die veiliger is dan de gebruikelijke chroot omgeving.

Maar eigenlijk, is er een zeer eenvoudige manier om de chroot gebruiken, die we gaan stap voor stap door. We gebruiken gewone Linux-commando ‘ s die werken op alle uitkeringen. Sommige Linux-distributies hebben speciale tools te stellen chroot omgeving, zoals debootstrap voor Ubuntu, maar we worden distro-agnostisch hier.

Wanneer Gebruik Je een chroot?

Een chroot omgeving biedt vergelijkbare functionaliteit als die van een virtuele machine, maar het is een lichtere oplossing. De geborgde systeem niet nodig een hypervisor worden geïnstalleerd en geconfigureerd, zoals VirtualBox of Virtual Machine Manager. Noch is het nodig om een kernel hebt geïnstalleerd in de gevangenschap systeem. De captive-systeem deelt uw bestaande kernel.

In sommige opzichten, chroot omgevingen dichter containers, zoals LXC dan aan virtuele machines. Ze zijn licht van gewicht, snel te implementeren, en het maken en afgeven van een maximaal kan worden geautomatiseerd. Zoals containers, een handige manier om ze te configureren is te installeren net genoeg van het besturingssysteem voor u om te bereiken wat nodig is. De “wat nodig is” – vraag wordt beantwoord door te kijken hoe je gaat om het gebruik van uw chroot omgeving.

Enkele veelvoorkomende toepassingen zijn:

Software Ontwikkeling en Product Controle. Ontwikkelaars schrijven van de software en het product controle team (PV) proeven. Soms problemen worden gevonden door de PV die niet kan worden gerepliceerd op de webpagina van de computer. De ontwikkelaar heeft allerlei tools en libraries geïnstalleerd op hun computer dat de gemiddelde gebruiker—en PV—niet hebben. Vaak is nieuwe software die werkt voor de ontwikkelaar, maar niet voor anderen blijkt het gebruik van een resource aan de ontwikkelaar van de PC die niet is opgenomen in de test versie van de software. chroot-omgeving maakt het de ontwikkelaars hebben een plain vanilla gevangen omgeving op hun computer die ze kunnen schapen-dip van de software in voor het geven van het PV. De gevangen omgeving kan worden geconfigureerd met het absolute minimum afhankelijkheden die de software vereist is.

Het Verminderen Van De Ontwikkeling Van Het Risico. De ontwikkelaar kan maken van een dedicated development omgeving, zodat er niets gebeurt in de puinhoop van zijn werkelijke PC.

Uitgevoerd Met Verouderde Software. Soms moet je nog een oude versie van iets uitgevoerd. Als de oude software heeft eisen dat zou botsen of niet compatibel met uw versie van Linux kunt u de chroot omgeving voor het probleem software.

Herstel-en Bestandssysteem Upgrades: Als een Linux installatie onbruikbaar is, kunt u gebruik maken van chroot monteer het beschadigd bestandssysteem mount-punt op een Live-CD. Dit kunt u werken in het beschadigde systeem en proberen op te lossen alsof ze gemonteerd normaal in de root /. Dit betekent dat de verwachte bestand paden binnen het beschadigde systeem correct worden verwezen vanuit de root directory, en niet van de berg punt van de Live CD. Een soortgelijke techniek werd gebruikt in het artikel dat beschrijft hoe te migreren van de Linux bestandssysteem van ext2 of ext3 naar ext4.

Ringfencing Toepassingen. Het uitvoeren van een FTP-server of andere op het internet aangesloten apparaat in een chroot omgeving beperkt de schade van een externe aanvaller kan doen. Dit kan een waardevolle stap in de bescherming van de veiligheid van uw systeem.

GERELATEERD: Hoe te Migreren van Ext2 of Ext3 bestandssysteem Ext4 op Linux

Het maken van een chroot Omgeving

We hebben een directory op te treden als de root directory van de chroot omgeving. Dus dat hebben we een verkorte manier van verwijzen naar die map zullen we een variabele maken en opslaan de naam van de map in. Hier staan we op het instellen van een variabele op te slaan een pad naar de “testroot” directory. Het maakt niet uit als deze map nog niet bestaat, gaan we maken binnenkort. Als de map niet bestaat, moet leeg zijn.

chr=/home/dave/testroot

Als de directory niet bestaat, moeten we om het te maken. Dat kunnen We doen met deze opdracht. De -p (ouders) optie zorgt ervoor dat alle ontbrekende bovenliggende mappen zijn gemaakt op hetzelfde moment:

mkdir -p $chr

We moeten mappen maken om te houden van de delen van het besturingssysteem onze chroot-omgeving vereist. We gaan naar het opzetten van een minimalistische Linux-omgeving die gebruikt worden in Bash, zoals de interactieve shell. We zullen ook zijn de touch, rm, en ls commando ‘ s. Dat zal ons toelaten om alle Bash ‘s de ingebouwde commando’ s en touch, rm, en ls. Kunnen We het maken, weergeven en verwijderen van bestanden, en het gebruik van Bash. En—in dit eenvoudige voorbeeld—dat is alles.

Een lijst van de mappen die u nodig hebt om te maken binnen de {} accolade uitbreiding.

mkdir -p $chr/{bin,lib,lib64}

Nu veranderen we de directory in onze nieuwe root directory.

cd $chr

Laat kopie van de binaire bestanden die we nodig hebben in onze minimalistische Linux-omgeving van uw normale “/bin” directory in onze chroot “/bin” directory. De -v (verbose) optie maakt cp vertellen ons wat zij doet als het voert elke actie kopiëren.

cp -v /bin/{bash,touch,ls,rm} $chr

De bestanden worden gekopieerd in voor ons:

Deze bestanden zullen hebben afhankelijkheden. We moeten om te ontdekken wat ze zijn en kopieert u deze bestanden naar onze omgeving, anders bash, touch, rm, en ls zult niet in staat zijn om te functioneren. We doen dit op zijn beurt voor elk van de gekozen opdrachten. We doen Bash eerste. De ldd opdracht geeft een overzicht van de afhankelijkheden voor ons.

ldd /bin/bash

De afhankelijkheden worden geïdentificeerd en opgesomd in het terminal venster:

We moeten die bestanden kopiëren in onze nieuwe omgeving. Het plukken van de details uit die lijst en kopiëren ze een voor een tijd gaat tijdrovend en foutgevoelig.

Gelukkig, we kunnen semi-te automatiseren. We zullen een lijst van de afhankelijkheden weer, en deze keer zullen we het de vorm van een lijst. Dan zullen we een lus door de lijst te kopiëren van de bestanden.

Hier maken we gebruik van ldd om de afhankelijkheden en het voeden van de resultaten door middel van een buis in egrep. Met behulp van egrep is hetzelfde als het gebruik van grep met de -E (uitgebreide reguliere expressies) optie. De -o (alleen matching) optie beperkt u de uitgang aan op de overeenkomstige delen van lijnen. Wij zijn op zoek naar overeenkomende dll-bestanden die eindigen op een cijfer [0-9].

lijst=”$(ldd /bin/bash | egrep -o – ‘/lib.*.[0-9]’)”

We controleren de inhoud van de lijst met behulp van de echo:

echo $lijst

Nu hebben we de lijst kunnen we stap voor stap door het met de volgende lus, het kopiëren van de bestanden één voor één aan. We gebruiken de variabele i om door de lijst. Voor elk lid van de lijst, hebben wij een kopie van het bestand aan onze chroot root directory is de waarde in $chr.

De -v (verbose) optie zorgt ervoor dat cp te kondigen elk exemplaar als hij presteert het. De –ouders optie zorgt ervoor dat alle ontbrekende bovenliggende mappen worden gemaakt in de chroot omgeving.

for i in $lijst; doen cp -v –ouders “$i” “${chr}”; done

En dit is de output:

We gebruiken de techniek voor het vastleggen van de afhankelijkheden van elk van de andere commando ‘ s. En gebruiken we de loop-techniek voor het uitvoeren van de werkelijke kopiëren. Het goede nieuws is we hoeven alleen maar om een kleine bewerken om de opdracht die verzamelt de afhankelijkheden.

Ook halen We de opdracht van onze opdracht geschiedenis door op de Omhoog Pijl-toets een paar keer en maak dan de te bewerken. De herhaling van de copy-opdracht hoeft niet te veranderen.

Hier hebben wij gebruikt u de Pijl-Omhoog-toets om de opdracht, en we hebben bewerkt te zeggen touch in plaats van bash.

lijst=”$(ldd /bin/touch | egrep -o – ‘/lib.*.[0-9]’)”

We kunnen nu precies dezelfde opdracht als voor:

for i in $lijst; doen cp -v –ouders “$i” “${chr}”; done

En onze bestanden worden gekopieerd voor ons:

We kunnen nu het bewerken van de lijst commando ls:

lijst=”$(ldd /bin/ls | egrep -o – ‘/lib.*.[0-9]’)”

Nogmaals, gebruiken we dezelfde opdracht. Het maakt niet uit welke bestanden worden in de lijst. Het blindelings werkt door de lijst te kopiëren bestanden voor ons.

for i in $lijst; doen cp -v –ouders “$i” “${chr}”; done

En de afhankelijkheden voor ls zijn gekopieerd voor ons:

We bewerken de lijst command line voor de laatste keer, waardoor het werk voor rm:

lijst=”$(ldd /bin/ls | egrep -o – ‘/lib.*.[0-9]’)”

We maken gebruik van de herhaling van de copy-opdracht een laatste keer:

for i in $lijst; doen cp -v –ouders “$i” “${chr}”; done

De laatste van onze afhankelijkheden worden gekopieerd naar onze chroot omgeving. We zijn eindelijk klaar voor gebruik van het commando chroot. Deze opdracht stelt u de hoofdmap van de chroot omgeving, en geeft aan welke toepassing om te draaien als de shell.

sudo chroot $chr /bin/bash

Onze chroot omgeving is nu actief. Het terminal venster is gewijzigd, en de interactieve shell is afgehandeld door de bash shell in onze omgeving.

We kunnen proberen de opdrachten die wij hebben gebracht in de omgeving.

ls
ls /home/dave/Documenten

Het ls commando werkt zoals we verwachten als we het gebruiken in de omgeving. Als we proberen om toegang te krijgen tot een map buiten de omgeving, mislukt de opdracht.

We kunnen gebruik maken van tik om een bestand te maken, ls lijst, en rm om het te verwijderen.

contact sample_file.txt
ls
rm sample_file.txt
ls

Natuurlijk kunnen we ook gebruik maken van de ingebouwde commando ‘ s die de Bash shell biedt. Als u help typen op de commando-regel, Bash zal ze voor u.

help

Met exit verlaat de chroot omgeving:

afsluiten

Als u wilt verwijderen van de chroot omgeving, je kunt het gewoon verwijderen:

rm -r testroot/

Dit recursief verwijderen van de bestanden en mappen in de chroot omgeving.

Automatiseren voor Gemak

Als je denkt dat chroot omgevingen nuttig zijn voor u, maar ze zijn een beetje onhandig in te stellen, u kunt altijd de stam en het risico van repetitieve taken door het gebruik van aliassen, functies en scripts.

GERELATEERD: het Maken van Aliassen en Shell-Functies van Linux

LEES VERDER

  • “Het Maken van iPhone Apps Altijd Vragen voor Locatie Toegang
  • “Heb Je een Antivirus op een Mac?
  • “Het Verbergen van Twitter Reacties
  • “Het Installeren van Apps Direct Op Uw Apple-Horloge
  • “Wat Is een GIF, en Hoe Gebruik Je Ze?