Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> sistemi >> Linux >> .

Cosa fa chroot su un sistema operativo Linux?

La chiamata di sistema chroot cambia la directory root per il processo chiamante e i suoi figli. Ciò significa che il processo e i suoi figli vedranno la directory specificata come radice del file system. Tutti i nomi di percorso verranno interpretati rispetto a questa nuova radice, anziché alla radice effettiva del file system.

Chroot viene spesso utilizzato per creare un ambiente limitato per un processo o un gruppo di processi. Ad esempio, un processo del server Web potrebbe essere sottoposto a chroot nella propria directory, in modo che non possa accedere ad altri file sul server. Ciò può contribuire a migliorare la sicurezza impedendo che il server Web venga compromesso da un utente malintenzionato.

Chroot può essere utilizzato anche per creare un sandbox per codice non attendibile. Ad esempio, un utente potrebbe voler eseguire un programma scaricato da Internet in un ambiente chroot per evitare che danneggi il proprio sistema.

Per utilizzare chroot, il processo deve avere la capacità CAP_SYS_CHROOT. Questa capacità è normalmente concessa ai processi eseguiti come root.

La sintassi della chiamata di sistema chroot è:

`int chroot(const char *nomepercorso);`

Dove:

pathname:il percorso della nuova directory root.

Ecco un esempio di come utilizzare chroot:

```

#include

#include

#include

int principale()

{

// Cambia la directory root in /tmp

if (chroot("/tmp") ==-1) {

perror("chroot");

esci(EXIT_FAILURE);

}

// Stampa la directory di lavoro corrente

char cwd[1024];

if (getcwd(cwd, sizeof(cwd)) ==NULL) {

perror("getcwd");

esci(EXIT_FAILURE);

}

printf("Directory di lavoro corrente:%s\n", cwd);

restituisce EXIT_SUCCESS;

}

```

Quando questo programma viene eseguito, stamperà il seguente output:

```

Directory di lavoro corrente:/tmp

```

Ciò mostra che la directory di lavoro corrente è stata modificata in /tmp.

 

sistemi © www.354353.com