Aller au contenu

chroot

chroot (de l'anglais change root) : appel système et commande qui changent la racine apparente du système de fichiers pour un processus et ses descendants.

Son usage principal en administration est le dépannage. Depuis un système de secours, on monte la racine de la machine en panne sur /mnt (et sa partition EFI sur /mnt/boot/efi), on y monte récursivement /dev, /proc, /sys et /run (mount --rbind, puis mount --make-rslave), puis chroot /mnt /bin/bash : apt, update-grub, update-initramfs ou passwd agissent alors sur le disque de la machine réparée. chroot ne change que la racine : le noyau, /proc, /sys et les périphériques restent ceux du système hôte, d'où ces montages. Sans eux, grub-probe: error: cannot find a device for / (is /dev mounted?).

chroot n'est pas une frontière de sécurité : un processus root peut en sortir, et l'appel exige la capacité CAP_SYS_CHROOT. Les conteneurs utilisent pivot_root combiné aux espaces de noms, une isolation bien plus complète. Autre piège en dépannage : sur Ubuntu, /etc/resolv.conf est un lien vers un fichier de /run/systemd/resolve/ qui n'existe pas dans le système de secours, et la résolution de noms échoue dans le chroot.

Dans les cours

Voir aussi