Dla systemu systemu Linux dostępny jest narzędzie znane jako chroot, które zapewnia łatwiejszy i szybszy sposób piaskowania aplikacji. Dzięki chroot możesz zainstalować i testować dowolną aplikację bez wpływu na resztę systemu.
W tym artykule wyjaśniono, jak używać Chroot w Debian 10 Buster, wraz z kilkoma przykładami. W celu wyjaśnienia stworzymy środowisko chroot dla bash i niektóre polecenia, takie jak polecenia „LS”, „IP” i „PWD”.
Co to jest Chroot?
Narzędzie Chroot to polecenie w Linux, które zmienia katalog główny aplikacji na inny katalog. Procesy działające w tym nowym katalogu głównym nie mogą uzyskać dostępu do plików poza nim. Stąd izoluje operacje aplikacji z reszty systemu.
Jak działa Chroot?
Chroot działa poprzez kopiowanie aplikacji i wszystkich jej wykonywalnych i zależności w alternatywnym katalogu głównym. Następnie uruchamia aplikację z tego alternatywnego katalogu głównego, powodując, że aplikacja uważa ją za oryginalny katalog główny. Katalog główny jest najwyższym katalogiem w hierarchii i żadna aplikacja nie może osiągnąć wyżej niż ten katalog, więc w ten sposób Chroot izoluje aplikację z reszty systemu.
Przypadków użycia
Składnia
Poniżej znajduje się podstawowa składnia dla polecenia Chroot:
$ chrootKomenda
Wykonaj poniższe kroki, aby użyć polecenia Chroot w Debian, aby skonfigurować środowisko Chroot.
Utwórz alternatywny katalog główny
Najpierw utwórz alternatywny katalog główny, który ma być używany w środowisku Chroot.
$ sudo mkdir ~/new_root
Powyższe polecenie utworzy NEW_ROOT katalog pod Dom katalog, który będzie używany jako katalog główny w środowisku chroot.
Dodaj niezbędne katalogi
Utwórz katalogi „Bin”, „Lib” i „Lib64” pod ~/new_root informator:
$ sudo mkdir -p ~/new_root/bin, lib, lib64
Kopiuj pliki binarne
Wszystko, co wymagane do uruchomienia aplikacji w środowisku Chroot, musi znajdować się w alternatywnym katalogu głównym. W tym artykule utworzymy środowisko chroot dla bash i niektóre polecenia, w tym polecenia „LS”, „IP” i „PWD”. Dlatego skopiujemy binaria z /kosz katalog do alternatywy ~/new_root/bin informator. Aby zlokalizować pliki binarne poleceń, użyj polecenia, które:
$, które bash ls ip pwd
Następnie skopiuj pliki binarne poleceń do ~/new_root/bin informator.
$ sudo cp -v/bin/bash, ls, ip, pwd ~/new_root/bin
Kopiuj zależności programu
Będziemy również musieli dowiedzieć się, jakie zależności potrzebują naszych programów. Najpierw będziemy musieli znaleźć, jakie są te zależności, a następnie skopiujemy je do ~/new_root/lib katalog.
Kopiowanie zależności od Bash
Najpierw dowiedz się o zależności od programu BASH:
$ ldd /bin /bash
Następnie skopiuj te zależności do ~/new_root/lib informator.
$ cp -v/lib/x86_64-Linux-gnu/libtinfo.Więc.6, Libdl.Więc.2, Libc.Więc.6 ~/new_root/lib
W przypadku plików /lib64 skopiuj je do ~/new_root/lib64 informator.
$ cp -v /lib64 /ld-linux-x86-64.Więc.2 ~/new_root/lib64
Kopiuj zależności dla polecenia LS
Najpierw znajdź zależności od polecenia LS:
$ ldd /bin /ls
Następnie skopiuj te zależności do ~/new_root/lib informator.
$ sudo cp -v/lib/x86_64-linux-gnU/libselinux.Więc.1, Libc.Więc.6, libpcre.Więc.3,
Libdl.Więc.2, libpthread.Więc.0 /lib64 /ld-linux-x86-64.Więc.2 ~/new_root/lib
W przypadku plików /lib64 skopiuj je do ~/new_root/lib64 informator.
$ sudo cp -v /lib64 /ld-linux-x86-64.Więc.2 ~/new_root/lib64
Kopiuj zależności dla polecenia IP
Najpierw znajdź zależności od polecenia IP:
$ ldd /bin /ip
Następnie skopiuj te zależności do ~/new_root/lib informator.
$ cp -v /lib /x86_64 -linux
gnU/libselinux.Więc.1, libelf.Więc.1, libmnl.Więc.0, Libcap.Więc.2, Libdl.Więc.2, Libc.Więc.6,
libpcre.Więc.3, Libz.Więc.1, libpthread.Więc.0 ~/new_root/lib
W przypadku plików /lib64 skopiuj je do ~/new_root/lib64 informator.
$ sudo cp -v /lib64 /ld-linux-x86-64.Więc.2 ~/new_root/lib64
Kopiuj zależności dla polecenia PWD
Najpierw znajdź zależności od polecenia PWD:
$ ldd /bin /pwd
Następnie skopiuj te zależności do ~/new_root/lib informator.
$ sudo cp -v/lib/x86_64-linux-gnu/libc.Więc.6 ~/new_root/lib
W przypadku plików /lib64 skopiuj je do ~/new_root/lib64 informator.
$ sudo cp -v /lib64 /ld-linux-x86-64.Więc.2 ~/new_root/lib64
Aby wyświetlić wszystkie katalogi w alternatywnym katalogu głównym, użyj następującego polecenia:
$ ls -r
Przełącz na alternatywne katalog główny
Teraz jesteśmy w końcu przygotowani do przejścia na nasze nowe środowisko Chroot. Aby zmienić katalog główny, uruchom następujące polecenie w powładzie z uprawnieniami root:
$ sudo chroot ~/new_root/bin/bash
Gdzie ~/new_root jest naszym alternatywnym katalogiem głównym i /bin/bash to aplikacja, której użyliśmy do konfigurowania środowiska chroot.
Po uruchomieniu powyższego polecenia zobaczysz, że monit bash zmienił się na Bash-X.y Które w naszym przypadku jest Bash-5.0 (gdzie 5.0 to numer wersji bash).
Notatka: Możesz napotkać następujący błąd po uruchomieniu polecenia Chroot, tak jak ja:
Jeśli wystąpi ten błąd, sprawdź, czy dodałeś wszystkie biblioteki i elementy wykonywalne związane z wymaganym programem do nowego katalogu głównego.
Po wejściu do środowiska Chroot będziesz mógł uzyskać dostęp do pliku. Spróbuj uruchomić polecenia skonfigurowane dla środowiska Chroot, w tym niektóre wbudowane polecenia. Można znaleźć wbudowane polecenia, uruchamiając pomoc polecenie w skorupce.
Widać, że wypróbowaliśmy polecenia „LS”, „PW” i „IP”, a wszystkie z nich się udało. Jeśli uruchomimy dowolne polecenie innego niż te trzy polecenia i wbudowane polecenia, polecenie się nie powiedzie, ponieważ nie skonfigurowaliśmy go dla środowiska chroot. Jak widać na poniższym zrzucie ekranu, próbowaliśmy uruchomić polecenia „dotyk”, „ping” i „jasne”, a wszystkie nie powiodły się.
Wyjdź chroot
Aby wyjść z środowiska chroot, użyj Wyjście Komenda.
Wniosek
W tym artykule dowiedziałeś się, czym jest Chroot i jak to działa w Linux. W tym artykule pokazano, że krok po kroku, jak korzystać z Chroot w Debian 10 Buster, aby stworzyć środowisko Chroot dla Bash i innych poleceń. Teraz powinieneś czuć się komfortowo, używając polecenia chroot, aby zmienić katalog główny procesu i jego podprocesy i izolowanie ich od reszty systemu.