Jak korzystać z Chroota w systemie Linux i naprawić uszkodzony system?

Chroot Linux

Chroot to narzędzie Linux/Unix, które może zmieniać lub modyfikować główny system plików. Z pomocą chroot polecenie, możesz łatwo utworzyć izolowany system plików w swoim podstawowym systemie plików. Chroot jest szczególnie pomocny w rozdzieleniu środowiska pracy i domu lub jeśli chcesz, aby środowisko testowe testowało oprogramowanie w izolacji.

Różnica między chrootem a maszyną wirtualną

Na pierwszy rzut oka możesz myśleć o chroot jako podobnym do maszyny wirtualnej lub systemu kontenerowego, takiego jak docker. Jest trochę podobnie, ale chroot jest znacznie lżejszym rozwiązaniem niż maszyna wirtualna. Maszyna wirtualna potrzebuje hipernadzorcy do zainstalowania i pracy na oddzielnym jądrze, które różni się od maszyny hosta. W przeciwieństwie do maszyny wirtualnej, chroot korzysta z tego samego jądra i procesów, ale tworzy więzienie w systemie plików. Wewnątrz więzienia nie można wyjrzeć na zewnątrz bez uprawnień administratora. Dlatego izolowany system plików jest również nazywany więzieniem chroot.

Różne przypadki użycia Chroota

  1. Izolowane środowisko kompilacji w potoku CI/CD: Chroot służy do tworzenia izolowanego środowiska kompilacji dla aplikacji w potoku CI/CD. Pomaga to w tworzeniu aplikacji z unikalnymi zależnościami i jest całkowicie odizolowane od wszystkich innych środowisk kompilacji w celu usunięcia potencjalnych konfliktów.
  2. Oddzielne środowisko programistyczne i testowe: Często oprogramowanie działające na komputerze deweloperskim nie działa na urządzeniu użytkownika końcowego. Dzieje się tak, ponieważ programista ma wiele narzędzi i zależności zainstalowanych w swoim systemie. Normalni ludzie nie mają zainstalowanych wszystkich tych zależności na swoich komputerach. Aby przetestować oprogramowanie, jeśli będzie działać na wszystkich urządzeniach, programista lub tester może łatwo stworzyć zwykłe środowisko waniliowe, używając chroota do testowania swojego oprogramowania.
  3. Zmniejsz ryzyko dla dewelopera: Jako programiści często tworzymy programy, które wchodzą w interakcję z naszymi plikami systemowymi bez odpowiedniego sandboxingu. Dlatego, jeśli popełnimy jakiś błąd, nasze oprogramowanie może łatwo usunąć nasze ważne dane z naszego urządzenia. Aby zmniejszyć tego typu ryzyko, programista często używa chroota do tworzenia nowego środowiska pracy i zmniejszania ryzyka utraty danych.
  4. Inna wersja tego samego oprogramowania: Czasami trzeba zainstalować bardzo starą lub bardzo najnowszą wersję jakiegoś oprogramowania lub zależności do celów programistycznych. Ale używanie takiej konfliktowej zależności może zepsuć twój system. Sytuację tę można łatwo przezwyciężyć, korzystając z więzienia chroot.
  5. Napraw zepsuty system: Jeśli masz zepsuty system, możesz go łatwo naprawić za pomocą chroota. Po prostu uruchom działające środowisko Linux na urządzeniu i zamontuj system plików. Korzystając z tego punktu montowania, możesz uruchamiać różne polecenia, aby rozwiązać problem. Omówimy to w dalszej części artykułu.
  6. Bezpieczne uruchamianie serwera FTP: FTP oznacza protokół przesyłania plików. Uruchomienie serwera FTP daje kontrolę nad udostępnianiem tylko tych plików, które chciałeś. Dlatego żaden zdalny partner nie może zobaczyć systemu plików hosta i uzyskać do niego dostępu.

Tworzenie środowiska chroot

To jest krótki przewodnik po tworzeniu środowiska chroot w twoim systemie. Możesz uzyskać szczegółowe informacje na arch wiki.

  1. Aby stworzyć środowisko chroot, utwórz nowy katalog w swoim katalogu domowym. Wewnątrz tego folderu w przyszłości będzie obecny nasz izolowany system plików. W tym samouczku nazwałem folder „mte”.
  1. Następnie stworzymy bardzo minimalne środowisko Linux. Instalujemy bash jako powłoka w środowisku chroot i zainstaluj ls, rmoraz touch aby odpowiednio wyświetlić, usunąć i utworzyć pliki. Teraz stwórzmy wymagane katalogi w naszym katalogu „mte”.
cd ~/mte
mkdir bin
mkdir lib
mkdir lib64
  1. Skopiuj wymagane pliki binarne z naszego zwykłego katalogu „/bin” do naszego środowiska chroot „~/mte”.
cp /bin/bash ~/mte/bin
cp /bin/touch ~/mte/bin
cp /bin/ls ~/mte/bin
cp /bin/rm ~/mte/bin
  1. Kopiowanie plików binarnych nie wystarczy. Musimy też skopiować ich zależności do folderu „mte”. Aby poznać wymagane zależności, używamy ldd Komenda. Jeśli chcesz poznać zależność od bash, uruchom
Czytać  Co to jest powłoka RC i jak ją zainstalować w systemie Linux

Otrzymujemy to wyjście z powyższego polecenia.

Chroot Ldd, samowyzwalacz
  1. Teraz wyliczanie tych zależności i kopiowanie ich jeden po drugim będzie mozolnie powolne i nudne. Dlatego, aby zautomatyzować ten proces, użyjemy skryptu bash. Utwórz plik o nazwie „copydependancy.sh” i zapisz w nim te polecenia powłoki.
#Setting the chroot directory
mte="~/mte"
 
# enter your binary name
echo -e "Please enter your binary name \n"
 
#Reading from terminal input
read binaryname
 
# Listing all the dependencies
list="$(ldd /bin/$binaryname | egrep -o '/lib.*\.[0-9]')"
 
# Looping through the dependency list
for i in $list; do cp -v --parents "$i" "${mte}"; done

Rozumiem, co robi ten skrypt. Na początku ten skrypt powłoki pyta o nazwę binarną. Następnie pobiera tę nazwę pliku binarnego i znajduje wszystkie zależności tego pliku binarnego i zapisuje je wewnątrz zmiennej listy. Następnie uruchamia pętlę for, która działa na każdym elemencie listy i kopiuje zależność z naszego normalnego pliku „/bin” do naszego katalogu chroot „mte”.

Zapisz ten skrypt w innym miejscu i odwołuj się do niego podczas tworzenia nowego środowiska chroot.

Następnie zmień uprawnienia skryptu i uruchom go w naszym terminalu.

chmod +x copydependancy.sh
  1. Ponieważ wszystkie zależności są zainstalowane w naszym systemie, aktywujmy nasze środowisko chroot. Standardowe polecenie chroot wygląda tak.
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]

Ale aby spełnić nasz cel, uruchamiamy następujące polecenie, aby aktywować nasze środowisko chroot.

sudo chroot ~/mte /bin/bash

Powyższe polecenie aktywuje środowisko chroot w katalogu „~/mte” i określa uruchomienie powłoki bash. Teraz możesz zobaczyć zmianę w wierszu terminala i możesz teraz użyć touch, rmoraz ls polecenia do tworzenia, usuwania i wyświetlania listy plików.

Aby wyjść ze środowiska chroot, możesz uruchomić exit polecenie, aby wyjść ze środowiska chroot.

Jeśli chcesz całkowicie usunąć środowisko chroot, możesz po prostu usunąć katalog „mte” ze swojego systemu plików.

Napraw uszkodzony bootloader za pomocą Chroota

Najbardziej fascynującą rzeczą w chroot jest to, że możesz wejść do zepsutego systemu i uruchomić w nim polecenie. Dlatego używając chroota, możesz łatwo zainstalować jakąś krytyczną aktualizację, aby naprawić system lub możesz ponownie zainstalować cały bootloader, aby naprawić problem.

Czytać  Jak korzystać z Auto-CPUFreq, aby skrócić żywotność baterii w laptopach z systemem Linux

Ale do tego powinieneś mieć działające środowisko Linux. Utwórz bootowalny USB, pobierając Linux ISO i uruchamiając go z USB. Daje ci żywe środowisko do pracy. Teraz zamontuj partycję systemową, aby pracować z chroot.

sudo mount -t ext4 /dev/sda /mnt

Tutaj zmień „/ dev / sda” z zamierzoną nazwą partycji systemowej, z którą chcesz pracować. Teraz pozwól bootloaderowi grub znaleźć informacje potrzebne do rozwiązania problemu z bootloaderem.

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

Teraz przejdźmy chrootem do katalogu „/mnt” i wejdźmy do zepsutego systemu.

Teraz zainstaluj, sprawdź i zaktualizuj bootloader grub w swoim systemie. Upewnij się, że używasz prawidłowej nazwy dysku. Nie kopiuj i nie wklejaj tych poleceń na ślepo.

grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub

Następnie wyjdź z powłoki za pomocą polecenia exit. Wspomnieliśmy o tym wcześniej. Teraz odłącz poprzednie katalogi bind i odmontuj system plików. Uruchom te polecenia po kolei.

sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Teraz uruchom ponownie komputer i odłącz USB na żywo. Kiedy komputer się uruchomi, twój bootloader grub będzie świecił jak nowy i wszystko powinno działać idealnie.

Często Zadawane Pytania

Czy chroot jest bezpieczny?

Chroot nie oznacza bezpieczeństwa. Nigdy nie zamierzała nim zostać. Dla bezpieczeństwa możesz użyć SELinux. Jeśli umieścisz kogoś w katalogu chroot, nie będzie on miał dostępu do głównego systemu plików. Nie oznacza to jednak, że system jest niezniszczalny. Chroot nie oznacza również mniejszego bezpieczeństwa. Po prostu reprezentuje taką samą ilość bezpieczeństwa jak twój główny system. Nic dodać nic ująć.

Jakie są ograniczenia systemów Chroot?

System chroot nie ma na celu ochrony przed celowym temperowaniem przez użytkownika root. W niektórych systemach programy chrootowane mogą uzyskać wystarczające uprawnienia, aby stworzyć własne środowisko chroot i wydostać się z więzienia chroot. Cheroot nie oznacza całkowitej izolacji. Zwykle możesz robić, co chcesz w przestrzeni użytkownika. Możesz uzyskać dostęp do urządzeń sprzętowych, możesz montować i czytać wszystko. Jest to pod warunkiem, że nie musisz instalować żadnego innego programu, a następnie potrzebujesz uprawnień administratora, których nie masz.

Dlaczego Chroot nazywa się więzieniem?

Chroot jest nazywany więzieniem, ponieważ zamyka cię w odizolowanym środowisku. Możesz robić co chcesz w tym więzieniu, ale nie możesz go opuścić bez zgody użytkownika root. Ponadto masz ograniczone zasoby narzędzi udostępniane przez użytkownika root i nie możesz zainstalować niczego dla siebie. Dla wszystkich tych ograniczeń nazywa się to więzieniem chroot.

Czy ten artykuł jest przydatny?

Zapisz się do naszego newslettera!

Nasze najnowsze samouczki dostarczane prosto do Twojej skrzynki odbiorczej