L'appel système chroot modifie le répertoire racine du processus appelant et de ses enfants. Cela signifie que le processus et ses enfants verront le répertoire spécifié comme racine du système de fichiers. Tous les noms de chemin seront interprétés par rapport à cette nouvelle racine, au lieu de la racine réelle du système de fichiers.
Chroot est souvent utilisé pour créer un environnement restreint pour un processus ou un groupe de processus. Par exemple, un processus de serveur Web peut être chrooté dans son propre répertoire, de sorte qu'il ne puisse accéder à aucun autre fichier sur le serveur. Cela peut contribuer à améliorer la sécurité en empêchant le serveur Web d'être compromis par un utilisateur malveillant.
Chroot peut également être utilisé pour créer un bac à sable pour le code non fiable. Par exemple, un utilisateur peut souhaiter exécuter un programme téléchargé sur Internet dans un environnement chrooté pour l'empêcher d'endommager son système.
Pour utiliser chroot, le processus doit avoir la capacité CAP_SYS_CHROOT. Cette capacité est normalement accordée aux processus exécutés en tant que root.
La syntaxe de l'appel système chroot est :
`int chroot(const char *chemin d'accès);`
Où:
pathname :Le chemin d’accès au nouveau répertoire racine.
Voici un exemple d'utilisation du chroot :
```
#include
#include
#include
int principal()
{
// Change le répertoire racine en /tmp
if (chroot("/tmp") ==-1) {
perror("chroot");
quitter(EXIT_FAILURE);
}
// Imprimer le répertoire de travail actuel
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) ==NULL) {
perror("getcwd");
quitter(EXIT_FAILURE);
}
printf("Répertoire de travail actuel :%s\n", cwd);
renvoyer EXIT_SUCCESS ;
}
```
Lorsque ce programme est exécuté, il imprimera le résultat suivant :
```
Répertoire de travail actuel :/tmp
```
Cela montre que le répertoire de travail actuel a été remplacé par /tmp.
|