chroot (change root) est une commande Unix/Linux historique qui permet de modifier la racine apparente du système de fichiers pour un processus et ses processus enfants. Créé dans les années 1980, c’est l’ancêtre des technologies de conteneurisation modernes. chroot est une opération système qui change le répertoire racine ( Lorsqu’un processus est placé dans un environnement chroot, appelé « prison chroot » ou « jail » : Le concept de chroot a été introduit dans la version 7 d’Unix en 1979 par Bill Joy pour BSD Unix. L’objectif initial était de permettre le test de programmes dans un environnement isolé. Résultat : Un shell bash fonctionnant dans un environnement isolé où Isolation de services réseau pour limiter les dégâts en cas de compromission : Utilisation courante pour réparer un système Linux non bootable : ⚠️ Important : chroot n’est PAS une solution de sécurité complète. Un utilisateur root peut s’échapper d’un chroot. chroot a posé les bases conceptuelles des conteneurs modernes. Linux a ensuite introduit : 💡 Note : La commande Bien que chroot soit une technologie ancienne (plus de 40 ans), elle reste pertinente aujourd’hui pour des usages spécifiques : Pour des besoins de production modernes nécessitant une véritable isolation et sécurité, les technologies de conteneurisation (Docker, Podman, LXC/LXD) ou de virtualisation sont préférables. Cependant, chroot demeure un outil fondamental dans la boîte à outils de tout administrateur Linux et conserve sa place pour des tâches spécifiques où sa simplicité est un atout. Ressources complémentaires :Définition et concept
/) d’un processus vers un nouveau répertoire. Le processus « chrooté » et ses descendants ne peuvent alors plus accéder aux fichiers en dehors de ce nouveau répertoire racine.Principe de fonctionnement
/ pour ce processusHistorique
Syntaxe et utilisation
Commande de base
Exemple pratique
Création d’un environnement chroot simple
/home/jail est devenu la racine.Cas d’usage courants
Sécurité des services
Exemple : Serveur SSH chrooté pour SFTP
Développement et tests
Récupération système
Gestion de paquets
Création d’un environnement complet
Avec debootstrap (Debian/Ubuntu)
Configuration réseau dans le chroot
Limitations et sécurité
Vulnérabilités connues
Exemple d’échappement
Bonnes pratiques de sécurisation
Comparaison avec les technologies modernes
Caractéristique
chroot
Conteneurs (Docker/LXC)
Machines virtuelles
Isolation système de fichiers
✓ Partielle
✓ Complète
✓ Complète
Isolation PID
✗ Non
✓ Oui (namespaces)
✓ Oui
Isolation réseau
✗ Non
✓ Oui (namespaces)
✓ Oui
Isolation ressources
✗ Non
✓ Oui (cgroups)
✓ Oui
Noyau séparé
✗ Non
✗ Non
✓ Oui
Performance
Excellente
Très bonne
Bonne
Complexité
Faible
Moyenne
Élevée
Overhead
Minimal
Faible
Important
Évolution vers les conteneurs
Avantages et inconvénients
✓ Avantages
✗ Inconvénients
Outils utilisant chroot
Systèmes de build
Déploiement
systemd-nspawn est considérée comme « chroot sous stéroïdes » et offre une meilleure isolation tout en restant plus simple que les conteneurs complets.Pour finir
chroot : Environnements isolés sous Linux/Unix
chroot NOUVEAU_RACINE [COMMANDE [ARGS…]]
# Créer la structure de répertoires
mkdir -p /home/jail/{bin,lib,lib64}
# Copier le shell bash
cp /bin/bash /home/jail/bin/
# Copier les bibliothèques nécessaires
ldd /bin/bash | grep -o ‘/lib.*\.[0-9]’ | xargs -I {} cp {} /home/jail/lib/
# Entrer dans le chroot
sudo chroot /home/jail /bin/bash
# Dans /etc/ssh/sshd_config
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
# Booter sur un Live CD/USB
# Monter la partition système
mount /dev/sda1 /mnt
# Monter les systèmes de fichiers virtuels
mount –bind /dev /mnt/dev
mount –bind /proc /mnt/proc
mount –bind /sys /mnt/sys
# Chrooter dans le système
chroot /mnt
# Réparer GRUB, réinitialiser mot de passe, etc.
update-grub
passwd root
# Installer debootstrap
apt-get install debootstrap
# Créer un système Debian minimal
debootstrap –arch=amd64 bookworm /home/debian-jail http://deb.debian.org/debian/
# Monter les systèmes virtuels
mount –bind /dev /home/debian-jail/dev
mount –bind /proc /home/debian-jail/proc
mount –bind /sys /home/debian-jail/sys
# Entrer dans l’environnement
chroot /home/debian-jail /bin/bash
# Copier la configuration DNS
cp /etc/resolv.conf /home/debian-jail/etc/
# Configurer le hostname
echo « debian-jail » > /home/debian-jail/etc/hostname
# Un utilisateur root peut s’échapper ainsi :
mkdir /tmp/escape
cd /tmp/escape
chroot . /bin/sh
cd ../../../../../
chroot . /bin/sh
# Répéter jusqu’à atteindre la vraie racine