Per il sistema operativo Linux, è disponibile uno strumento, noto come chroot, che fornisce un modo più semplice e veloce per eseguire il sandboxing di un'applicazione. Con chroot, puoi installare e testare qualsiasi applicazione senza influenzare il resto del sistema.
Questo articolo spiegherà come usare chroot in Debian 10 Buster, insieme ad alcuni esempi. Per spiegazione, creeremo un ambiente chroot per bash e alcuni comandi, come i comandi "ls", "ip" e "pwd".
Cos'è chroot??
Lo strumento chroot è un comando in Linux che cambia la directory principale di un'applicazione in un'altra directory. I processi in esecuzione in questa nuova directory principale non possono accedere ai file al di fuori di essa. Quindi, isola le operazioni delle applicazioni dal resto del sistema.
Come funziona chroot??
Chroot funziona copiando l'applicazione e tutti i suoi eseguibili e dipendenze all'interno della directory principale alternativa. Quindi esegue l'applicazione da questa directory radice alternativa, facendo in modo che l'applicazione la consideri come la directory radice originale. La directory root è la directory più in alto nella gerarchia e nessuna applicazione può raggiungere un livello superiore a questa directory, quindi è così che chroot isola l'applicazione dal resto del sistema.
Casi d'uso
- Configurazione di un ambiente di test
- Esecuzione di programmi a 32 bit su un sistema a 64 bit
- Esecuzione di versioni precedenti del programma sull'ultima versione del sistema operativo
- Recupero della password
Sintassi
Quella che segue è la sintassi di base per il comando chroot:
$ chrootSeguire i passaggi seguenti per utilizzare il comando chroot in Debian per configurare un ambiente chroot.
1. Crea una directory principale alternativa
Innanzitutto, crea una directory root alternativa da utilizzare per l'ambiente chroot.
$ sudo mkdir ~/new_rootIl comando precedente creerà il new_root directory sotto il Casa directory, che verrà utilizzata come directory principale nell'ambiente chroot.
2. Aggiungi directory essenziali
Crea le directory "bin", "lib" e "lib64" sotto il ~/new_root elenco:
$ sudo mkdir -p ~/new_root/bin,lib,lib643. Copia binari di programma
Tutto il necessario per eseguire un'applicazione nell'ambiente chroot deve essere nella directory root alternativa alternate. In questo articolo, creeremo un ambiente chroot per bash e alcuni comandi, inclusi i comandi "ls", "ip" e "pwd". Pertanto, copieremo i binari dal from /bidone directory all'alternativa ~/new_root/bin directory. Per individuare i binari dei comandi, utilizzare il comando which:
$ che bash ls ip pwd
Quindi, copia i binari dei comandi nel file ~/new_root/bin directory.
$ sudo cp -v /bin/bash,ls,ip,pwd ~/new_root/bin
4. Copia le dipendenze del programma
Dovremo anche capire di quali dipendenze ha bisogno il nostro programma. Per prima cosa, dovremo trovare quali sono queste dipendenze, quindi le copieremo nel file ~/new_root/lib directory.
Copiare le dipendenze per bash
Innanzitutto, scopri le dipendenze per il programma bash:
$ ldd /bin/bash
Quindi, copia queste dipendenze nel file ~/new_root/lib directory.
$ cp -v /lib/x86_64-linux-gnu/libtinfo.così.6,libdl.così.2, libc.così.6 ~/new_root/libPer i file /lib64, copiali nel ~/new_root/lib64 directory.
$ cp -v /lib64/ld-linux-x86-64.così.2 ~/new_root/lib64Copia le dipendenze per il comando ls
Innanzitutto, scopri le dipendenze per il comando ls:
$ ldd /bin/ls
Quindi, copia queste dipendenze nel file ~/new_root/lib directory.
$ sudo cp -v /lib/x86_64-linux-gnu/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 nel ~/new_root/lib64 directory.
$ sudo cp -v /lib64/ld-linux-x86-64.così.2 ~/new_root/lib64Copia le dipendenze per il comando ip
Innanzitutto, scopri le dipendenze per il comando ip:
$ ldd /bin/ip
Quindi, copia queste dipendenze nel file ~/new_root/lib directory.
$ cp -v /lib/x86_64-linuxgnu/libselinux.così.1, diffamazione.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 nel ~/new_root/lib64 directory.
$ sudo cp -v /lib64/ld-linux-x86-64.così.2 ~/new_root/lib64Copia le dipendenze per il comando pwd
Innanzitutto, scopri le dipendenze per il comando pwd:
$ ldd /bin/pwd
Quindi, copia queste dipendenze nel file ~/new_root/lib directory.
$ sudo cp -v /lib/x86_64-linux-gnu/libc.così.6 ~/new_root/libPer i file /lib64, copiali nel ~/new_root/lib64 directory.
$ sudo cp -v /lib64/ld-linux-x86-64.così.2 ~/new_root/lib64Per visualizzare tutte le directory nella directory principale alternativa, utilizzare il seguente comando:
$ ls -R
5. Passa alla directory principale alternativa
Ora siamo finalmente pronti per passare al nostro nuovo ambiente chroot. Per cambiare la directory root, esegui il seguente comando nella shell con i privilegi di root:
$ sudo chroot ~/new_root /bin/bashDove ~/new_root è la nostra directory principale alternativa e /bin/bash è l'applicazione che abbiamo usato per impostare l'ambiente chroot.
Dopo aver eseguito il comando sopra, vedrai che il prompt di bash è cambiato in bash-x.sì che nel nostro caso è bash-5.0 (dove 5.0 è il numero di versione bash).
Nota: potresti riscontrare il seguente errore dopo aver eseguito il comando chroot, come ho fatto io:
Se si verifica questo errore, verifica di aver aggiunto tutte le librerie e gli eseguibili relativi al programma richiesto nella nuova directory principale.
Dopo essere entrato nell'ambiente chroot, sarai in grado di accedere solo 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 incorporati eseguendo il Aiuto comando nella shell.
Puoi vedere che abbiamo provato i comandi "ls", "pw" e "ip" e tutti ci sono riusciti. Se eseguiamo qualsiasi comando diverso da questi tre comandi e dai comandi incorporati, il comando fallirà, poiché non lo abbiamo impostato per l'ambiente chroot. Come puoi vedere nello screenshot seguente, abbiamo provato a eseguire i comandi "touch", "ping" e "clear" e tutti hanno fallito.
6. Esci da chroot
Per uscire dall'ambiente chroot, usa il tasto Uscita comando.
Conclusione
In questo articolo, hai imparato cos'è chroot e come funziona in Linux. Questo articolo ti ha mostrato passo dopo passo come usare chroot in Debian 10 Buster per creare un ambiente chroot per bash e altri comandi. Ora dovresti sentirti a tuo agio usando il comando chroot per cambiare la directory principale di un processo e dei suoi sottoprocessi e isolarli dal resto del sistema.