Come suggerisce il nome, un'operazione chroot cambia la directory radice apparente per un processo in esecuzione e i suoi figli. Ti permette di eseguire un programma (processo) con una directory principale diversa da /. Il programma non può vedere o accedere ai file al di fuori dell'albero di directory designato.
Ad esempio, puoi eseguire un programma e specificare la sua directory principale come /home/user/jail. In questo caso, la directory principale del programma è in realtà /home/user/jail. Il programma non sarebbe a conoscenza o in grado di accedere a nessun file al di sopra di questa directory nella gerarchia.
Questa directory radice artificiale è chiamata prigione chroot . Il suo scopo è limitare l'accesso alla directory di un potenziale aggressore. La jail chroot blocca un determinato processo e qualsiasi ID utente che sta utilizzando in modo che l'utente veda solo la directory in cui è in esecuzione il processo. Al processo,
sembra che sia in esecuzione nella directory principale.
Una jail chroot non ha lo scopo di:
– difendersi dalla manomissione intenzionale da parte di utenti privilegiati (root).
– essere utilizzata per bloccare l'accesso di basso livello ai dispositivi di sistema da parte di utenti privilegiati. Un utente root chroot può comunque creare nodi dispositivo e montare i file system su di essi.
Affinché un processo chroot venga avviato correttamente, la directory chroot deve essere popolata con tutti i file di programma, i file di configurazione, i nodi del dispositivo e le librerie condivise richiesti nelle posizioni previste.
Utilizzo dell'utilità chroot
1. Per usare una jail chroot, usa il seguente comando (new_root deve essere una directory esistente):
# chroot new_root [command]
2. La directory new_root diventa la directory radice artificiale. chroot cambia in new_root ed esegue il comando facoltativo. Senza specificare un comando come argomento, chroot cambia in new_root ed esegue il valore della variabile di ambiente SHELL o /bin/sh se SHELL non è impostato.
3. Ad esempio, supponendo che SHELL sia impostato su /bin/bash e che la directory /home/user/jail esista, l'esecuzione del comando chroot comporta quanto segue:
# chroot /home/user/jail chroot: failed to run command ‘/bin/bash’: No such file or directory
4. La directory /home/user/jail prende il nome di /. chroot non riesce a trovare /bin/bash all'interno di questa jail chroot e restituisce il messaggio di errore. Per implementare una jail chroot, crea la nuova struttura della directory radice e copia tutti i file necessari in questa nuova directory radice prima di eseguire il comando chroot.
Configurazione di chroot Jail
1. Per implementare una jail chroot ed eseguire /bin/bash, crea la directory bin nella directory root artificiale (/home/oracle/jail in questo esempio) e copia /bin/bash in questa directory:
$ mkdir /home/oracle/jail/bin $ cp /bin/bash /home/oracle/jail/bin
2. Il comando /bin/bash è collegato dinamicamente alle librerie condivise. Queste librerie devono anche essere copiate nella chroot jail. Usa il comando ldd per determinare quali librerie sono richieste dal comando /bin/bash:
# ldd /bin/bash linux-vdso.so.1 => (0x00007fff11bff000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003728800000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003d56400000) libc.so.6 => /lib64/libc.so.6 (0x0000003d56800000) /lib64/ld-linux-x86-64.so.2 (0x0000003d56000000)
3. Copiate ciascuno di questi file in una directory lib64 nella directory root artificiale. Crea la directory lib64 e copia le librerie condivise in questa directory:
$ mkdir /home/oracle/jail/lib64 $ cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/oracle/jail/lib64
4. Ora che tutti i file richiesti si trovano nelle posizioni previste, l'esecuzione del comando chroot (come root) comporta quanto segue:
# chroot /home/oracle/jail
5. Questa volta il comando è riuscito e il programma /bin/bash è stato eseguito. Immettendo pwd per stampare la directory corrente viene visualizzato /, anche se la directory effettiva è /home/oracle/jail:
# pwd /
Il comando pwd viene eseguito perché è un comando integrato nella shell. L'esecuzione di qualsiasi altro comando non riesce perché bash non riesce a trovare il comando. Il processo presuppone che si trovi nella directory principale e non abbia visibilità o conoscenza di alcun file al di sopra di questa directory nella gerarchia. Ad esempio, l'esecuzione del comando ls non riesce:
# ls bash: ls: command not found
6. Usa il comando exit per uscire dal chroot jail.
# exit exit #CentOS / RHEL :Come impostare chroot jail SFTP
CentOS / RHEL :Come impostare chroot jail per vsftp per tutti gli utenti
CentOS / RHEL :Come impostare chroot jail per vsftp solo per utenti specifici
CentOS / RHEL:come impostare SFTP su Chroot Jail solo per gruppi specifici