chroot(2) System Calls Manual chroot(2) NOM chroot - Modifier le repertoire racine BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int chroot(const char *chemin); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : chroot() : Depuis la glibc 2.2.2 : _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L) || /* Depuis la glibc 2.20 : */ _DEFAULT_SOURCE || /* glibc <= 2.19 : */ _BSD_SOURCE Avant la glibc 2.2.2 : none DESCRIPTION chroot() remplace le repertoire racine du processus appelant par celui indique par le chemin chemin. Ce repertoire sera utilise comme origine des chemins commencant par /. Tous les enfants du processus appelant heritent du repertoire racine. Seul un processus privilegie (sous Linux : un processus ayant la capacite CAP_SYS_CHROOT dans son espace de noms d'utilisateur) peut appeler chroot(). Cet appel modifie un element du processus de resolution des chemins et ne fait rien d'autre. En particulier, ce n'est pas concu pour etre utilise a des fins de securite, ou pour enfermer totalement un processus ou restreindre les appels systeme du systeme de fichiers. Autrefois, chroot() etait utilise par des demons pour se restreindre avant de passer des chemins fournis par des utilisateurs non fiables a des appels systeme tels qu'open(2). Toutefois, si un dossier est deplace en dehors du nouveau repertoire racine, un attaquant peut l'exploiter pour sortir lui aussi du nouveau repertoire racine. La maniere la plus facile de le faire est de chdir(2) vers le repertoire a deplacer, d'attendre qu'il soit deplace et d'ouvrir un chemin comme ../../../etc/passwd. Une variante legerement plus delicate fonctionne aussi dans certaines circonstances si chdir(2) n'a pas les droits. Si un demon permet de specifier un << chroot directory >> (nouveau repertoire racine), cela veut souvent dire que si vous voulez empecher des utilisateurs distants d'acceder a des fichiers a l'exterieur du nouveau repertoire racine, vous devez vous assurer que les dossiers n'en sortent jamais. Notez que cet appel systeme ne modifie pas le repertoire de travail, aussi << . >> peut se retrouver en dehors de l'arbre dont la racine est << / >>. En particulier, le superutilisateur peut s'evader d'un << piege chroot >> en faisant : mkdir foo; chroot foo; cd .. Cet appel ne ferme aucun descripteur de fichier, et de tels descripteurs peuvent permettre un acces a des fichiers hors de l'arbre dont la racine est le nouveau << / >>. VALEUR RENVOYEE En cas de succes, zero est renvoye. En cas d'erreur, -1 est renvoye et errno est definie pour preciser l'erreur. ERREURS Suivant le type de systeme de fichiers, plusieurs erreurs peuvent etre renvoyees. Les plus courantes sont les suivantes : EACCES L'acces a un element du chemin est interdit. (Voir aussi path_resolution(7).) EFAULT path pointe en dehors de l'espace d'adressage accessible. EIO Une erreur d'entree-sortie s'est produite. ELOOP path contient une reference circulaire (a travers un lien symbolique) ENAMETOOLONG path est trop long. ENOENT Le fichier n'existe pas. ENOMEM La memoire disponible du noyau n'etait pas suffisante. ENOTDIR Un element du chemin d'acces path n'est pas un repertoire. EPERM L'appelant n'a pas les privileges suffisants. STANDARDS Aucun HISTORIQUE SVr4, BSD 4.4, SUSv2 (considere comme historique). Cette fonction n'est pas decrite dans POSIX.1-2001. NOTES Un processus enfant cree avec fork(2) herite du repertoire racine de son parent. Le repertoire racine n'est pas modifie par un execve(2). Le lien symbolique magique, /proc/pid/root, peut etre utilise pour trouver le repertoire racine d'un processus ; voir proc(5) pour des details. FreeBSD a un appel systeme jail() plus solide. VOIR AUSSI chroot(1), chdir(2), pivot_root(2), path_resolution(7), symlink(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 chroot(2)