Per il sistema operativo Linux, è disponibile uno strumento, noto come Chroot, che fornisce un modo più semplice e veloce di sandboxing un'applicazione. Con Chroot, è possibile installare e testare qualsiasi applicazione senza influire sul resto del sistema.
Questo articolo spiegherà come utilizzare Chroot in Debian 10 Buster, insieme ad alcuni esempi. Per spiegazione, creeremo un ambiente Chroot per la Bash e alcuni dei comandi, come i comandi "LS", "IP" e "PWD".
Cos'è Chroot?
Lo strumento Chroot è un comando in Linux che modifica la directory principale di un'applicazione in un'altra directory. I processi in esecuzione in questa nuova directory di root non possono accedere ai file al di fuori di essa. Quindi, isola le operazioni di applicazioni dal resto del sistema.
Come funziona Chroot?
Chroot funziona copiando l'applicazione e tutti i suoi eseguibili e dipendenze all'interno della directory di radice alternativa. Quindi esegue l'applicazione all'interno di questa directory di radice alternativa, facendo sì che l'applicazione la considerasse la directory originale di radice. La directory principale è la directory più alta nella gerarchia e nessuna applicazione può raggiungere più alta di questa directory, quindi è così che Chroot isola l'applicazione dal resto del sistema.
Casi d'uso
Sintassi
Quanto segue è la sintassi di base per il comando Chroot:
$ chrootcomando
Seguire i passaggi seguenti per utilizzare il comando chroot in debian per impostare un ambiente Chroot.
Crea una directory di radice alternativa
Innanzitutto, crea una directory di radice alternativa da utilizzare per l'ambiente Chroot.
$ sudo mkdir ~/new_root
Il comando sopra creerà il new_root directory sotto il Casa Directory, che verrà utilizzata come directory principale nell'ambiente Chroot.
Aggiungi directory essenziali
Crea le directory "bin", "lib" e "lib64" sotto il ~/new_root Directory:
$ sudo mkdir -p ~/new_root/bin, lib, lib64
Copia binari del programma
Tutto ciò che è necessario per eseguire un'applicazione nell'ambiente Chroot deve trovarsi nella directory di radice alternativa. In questo articolo, creeremo un ambiente Chroot per Bash e alcuni comandi, tra cui i comandi "LS", "IP" e "PWD". Pertanto, copriremo i binari dal /bidone Directory all'alternativa ~/new_root/bin directory. Per individuare i binari dei comandi, utilizzare il comando:
$ che bash LS ip pwd
Successivamente, copia i binari dei comandi al ~/new_root/bin directory.
$ sudo cp -v/bin/bash, ls, ip, pwd ~/new_root/bin
Copia le dipendenze del programma
Avremo anche bisogno di capire quali dipendenze hanno bisogno il nostro programma. Innanzitutto, dovremo trovare ciò che sono quelle dipendenze, e poi le copriremo su ~/new_root/lib directory.
Copia di dipendenze per Bash
Innanzitutto, scopri le dipendenze per il programma bash:
$ LDD /Bin /Bash
Quindi, copia queste dipendenze sul file ~/new_root/lib directory.
$ cp -v/lib/x86_64-linux-nogu/libinfo.COSÌ.6, libdl.COSÌ.2, libc.COSÌ.6 ~/new_root/lib
Per i file /lib64, copiali su ~/new_root/lib64 directory.
$ cp -v /lib64 /ld-linux-x86-64.COSÌ.2 ~/new_root/lib64
Copia dipendenze per il comando LS
Innanzitutto, scopri le dipendenze per il comando LS:
$ ldd /bin /ls
Quindi, copia queste dipendenze sul file ~/new_root/lib directory.
$ sudo cp -v/lib/x86_64-linux-nogu/libselinux.COSÌ.1, libc.COSÌ.6, libpcre.COSÌ.3,
libdl.COSÌ.2, libpthread.COSÌ.0 /lib64 /ld-linux-x86-64.COSÌ.2 ~/new_root/lib
Per i file /lib64, copiali su ~/new_root/lib64 directory.
$ sudo cp -v /lib64 /ld-linux-x86-64.COSÌ.2 ~/new_root/lib64
Copia dipendenze per il comando IP
Innanzitutto, scopri le dipendenze per il comando IP:
$ LDD /Bin /IP
Quindi, copia queste dipendenze sul file ~/new_root/lib directory.
$ cp -v /lib /x86_64 -linux
gnu/libselinux.COSÌ.1, libelf.COSÌ.1, libmnl.COSÌ.0, libcap.COSÌ.2, libdl.COSÌ.2, libc.COSÌ.6,
libpcre.COSÌ.3, libz.COSÌ.1, libpthread.COSÌ.0 ~/new_root/lib
Per i file /lib64, copiali su ~/new_root/lib64 directory.
$ sudo cp -v /lib64 /ld-linux-x86-64.COSÌ.2 ~/new_root/lib64
Copia dipendenze per il comando PWD
Innanzitutto, scopri le dipendenze per il comando PWD:
$ LDD /Bin /PWD
Quindi, copia queste dipendenze sul file ~/new_root/lib directory.
$ sudo cp -v/lib/x86_64-linux-no/libc.COSÌ.6 ~/new_root/lib
Per i file /lib64, copiali su ~/new_root/lib64 directory.
$ sudo cp -v /lib64 /ld-linux-x86-64.COSÌ.2 ~/new_root/lib64
Per visualizzare tutte le directory nella directory della radice alternativa, utilizzare il comando seguente:
$ ls -r
Passa alla directory della radice alternativa
Ora siamo finalmente pronti a passare al nostro nuovo ambiente Chroot. Per modificare la directory principale, eseguire il comando seguente nella shell con i privilegi di root:
$ sudo chroot ~/new_root/bin/bash
Dove ~/new_root è la nostra directory di radice alternativa e /Bin/Bash è l'applicazione che abbiamo usato per impostare l'ambiente Chroot.
Dopo aver eseguito il comando sopra, vedrai che il prompt bash è cambiato Bash-X.y che nel nostro caso è Bash-5.0 (dove 5.0 è il numero di versione bash).
Nota: È possibile riscontrare il seguente errore dopo l'esecuzione del comando Chroot, come ho fatto io:
Se si verifica questo errore, verificare di aver aggiunto tutte le librerie ed eseguibili relativi al programma richiesto alla nuova directory di root.
Dopo aver inserito l'ambiente Chroot, sarai in grado di accedere al file al suo interno. Prova a eseguire i comandi che hai impostato per il tuo ambiente Chroot, inclusi alcuni comandi integrati. Puoi trovare i comandi integrati eseguendo il aiuto comando nella shell.
Puoi vedere che abbiamo provato i comandi "LS", "PW" e "IP", e tutti ci sono riusciti. Se eseguiamo qualche comando diverso da questi tre comandi e i comandi integrati, il comando fallirà, poiché non lo abbiamo impostato per l'ambiente Chroot. Come puoi vedere nella seguente screenshot, abbiamo provato a eseguire i comandi "Touch", "Ping" e "Clear", e tutti falliti.
Esci chroot
Per uscire dall'ambiente Chroot, usa il Uscita comando.
Conclusione
In questo articolo, hai imparato cos'è Chroot e come funziona in Linux. Questo articolo ti ha mostrato passo dopo passo come utilizzare Chroot in Debian 10 Buster per creare un ambiente Chroot per Bash e altri comandi. Ora, dovresti sentirti a tuo agio nell'uso del comando Chroot per modificare la directory principale di un processo e i suoi sottoprocessi e isolarli dal resto del sistema.