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.

Chroot

Description de l'image Chroot-command-example.png.
Informations
Développé par Bill JoyVoir et modifier les données sur Wikidata
Système d'exploitation Unix, type Unix, Plan 9 et InfernoVoir et modifier les données sur Wikidata
Environnement MultiplateformeVoir et modifier les données sur Wikidata
Type Appel système
Logiciel utilitaire
Conteneur (virtualisation)Voir et modifier les données sur Wikidata

Histoire

modifier

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

modifier

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.

Outil GNU

modifier

chroot est un outil GNU faisant partie de coreutils et plus précisément des shellutils. Il est par exemple utilisé par certaines distributions GNU-Linux — comme Gentoo, Arch ou Linux From Scratch — afin de travailler depuis un système en cours d'installation, alors que celui-ci ne dispose pas encore de composants indispensables comme le noyau (c'est alors le noyau du système hôte qui est utilisé, ce qui requiert certaines compatibilités minimales entre les deux systèmes). De même, la commande peut permettre de travailler sur un système devenu inaccessible par la voie classique (lancement du noyau par un chargeur d'amorçage au démarrage de la machine) à la suite d'un problème technique afin de tenter de le remettre en état de fonctionnement.

Notes et références

modifier
  1. « Summertime potluck », (version du sur Internet Archive)
  2. « Howto chrooter un shell », (consulté le )