chroot
chroot
(change root) est un appel système qui a également donné son nom à une commande des systèmes d'exploitation Unix permettant de changer le répertoire racine d'un processus de la machine hôte.
Histoire
L'appel système chroot est introduit lors du développement de la version 7 d'Unix en 1979. Il est ajouté à BSD par Bill Joy le , 17 mois avant la sortie de BSD 4.2 pour tester et construire son système. Un premier usage de l'appellation jail pour enfermement de shell vient de Bill Cheswick en 1991 qui avait créé un honeypot pour surveiller un cracker. Carole Fennelly décrit dans un article de les premières méthodes d'évasion de jail[1]
En 2000, FreeBSD étend le concept en fournissant la commande jail.
En 2002, Nicolas Boiteux rédige le premier article[2] décrivant la méthode pour créer un jail linux à partir de la commande chroot.
En 2003, l'utilisation plus répandue du chroot shell Linux donne naissance aux plateformes Internet de microservices applicatifs SaaS et PaaS avec une consommation facturée à l'usage des ressources du jail, prémices du cloud, de la virtualisation système des serveurs, ainsi que des technologies renommées plus tard containers (tel que Docker).
En 2005, Sun introduit les conteneurs Solaris décrits comme des « chroots sous stéroïdes ».
En 2008, LXC (qui sera utilisé par Docker plus tard) utilise la terminologie de conteneur et gagne en popularité en 2013 à la suite de son inclusion dans le noyau Linux 3.8.
Objectif
Cette commande permet d'isoler l'exécution d'un programme et d'éviter ainsi la compromission complète d'un système lors de l'exploitation d'une faille. Si un pirate utilise une faille présente sur l'application chrootée, il n'aura accès qu'à l'environnement isolé et non pas à l'ensemble du système d'exploitation. Cela permet donc de limiter les dégâts qu'il pourrait causer. Cet environnement est appelé un chroot jail en anglais, littéralement une prison.
Il permet également de faire tourner plusieurs instances d'un même ensemble de services ou démons sur la même machine hôte.
Par exemple, il est possible avec chroot
d'exécuter des applications 32 bits sur un système 64 bits : il suffit pour cela d'avoir un sous-système qui intègre toutes les bibliothèques logicielles nécessaires ; chroot
permet de se connecter à l'intérieur de ce sous-système et d'y exécuter les applications installées.
Notes et références
- « Summertime potluck » (version du 9 janvier 2000 sur l'Internet Archive),
- « Howto chrooter un shell », (consulté le )
- Portail de la sécurité informatique