chroot

69 / 100
()

Eseguire un programma in una nuova root

Il comando chroot (abbreviazione di change root) viene utilizzato per eseguire un comando in un’altra root. L’istruzione chroot viene ad esempio usata per isolare i programmi critici dal resto del file system.

In questo caso si parla di chroot jail.

Per aprire il programma sono richiesti i permessi di root e il comando si ispira allo schema seguente:

chroot CARTELLA COMANDO

Il termine chroot (contrazione di change e root), in informatica ed in particolare nei sistemi operativi Unix indica un’operazione che consiste nel cambiare la directory di riferimento dei processi che sono in esecuzione corrente e per i processi generati da questi ultimi (cosiddetti processi figlio). Un processo figlio, in informatica, è un processo che è stato creato da un altro processo, detto processo padre. Un processo padre, in informatica, è un processo che ha creato uno o più processi figli.

Nei sistemi operativi Unix  ogni processo è creato quando un altro processo esegue la chiamata di sistema fork(), eccetto che per il processo avente PID 0 (detto lo swapper) che è speciale e viene creato all’avvio del sistema. Il processo che invoca fork() è detto processo padre, mentre il nuovo processo è detto processo figlio. Ciascun processo (eccetto il processo con PID 0) ha un processo padre, e può avere zero o più processi figli.

Il kernel identifica ogni processo tramite il suo PID. All’avvio, il processo con PID 0 crea un nuovo processo tramite una chiamata a fork(). Questo nuovo processo, conosciuto come init, ha PID 1 ed è l’antenato di tutti gli altri processi del sistema.

Quando un processo figlio termina la sua esecuzione invocando la chiamata di sistema exit, o per aver causato un errore fatale, oppure in seguito alla ricezione di un segnale di terminazione (SIGTERM o SIGKILL), il suo exit status viene restituito al sistema operativo. Il processo padre viene quindi informato della terminazione del processo figlio tramite un segnale SIGCHLD, e può quindi procedere a recuperare l’exit status del figlio tramite la chiamata di sistema wait. Se il processo padre non recupera l’exit status del figlio, quest’ultimo diventa un processo zombie.

Un processo padre può a sua volta terminare prima dei propri processi figli: in questo caso essi diventano processi orfani, e vengono adottati da init.

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?