Dans un précédent article, je présentais la commande chroot pour chrooter le système.
Toutefois, la création d’un environnement sécurité (prison) n’est pas forcément simple à mettre en place.
Pour y parvenir plus facilement, il existe l’outil schroot destiné à gérer plus efficacement les environnement chroot.
Dans ce tutoriel, je vous apprends à utiliser schroot.
Qu’est-ce que Schroot
Schroot est un outil de gestion des environnements chroot sous Linux. Les environnements chroot sont des environnements isolés qui peuvent être utilisés pour exécuter des programmes ou des shells avec des autorisations restreintes. Cela peut être utile à des fins de sécurité, par exemple pour exécuter du code non fiable, ou à des fins de test, par exemple pour exécuter des programmes dans un environnement différent.
Schroot facilite la gestion des environnements chroot en offrant un certain nombre de fonctionnalités, notamment
- la possibilité de créer et de gérer plusieurs environnements chroot
- la possibilité de configurer facilement des environnements chroot
- la possibilité de monter et de démonter des systèmes de fichiers dans des environnements chroot
- la possibilité de démarrer et d’arrêter des processus dans des environnements chroot
Avec schroot, vous pouvez créer et gérer plusieurs environnements chroot, chacun avec son propre ensemble d’options de configuration. Ces options peuvent inclure le répertoire racine, les points de montage et les identifiants d’utilisateur et de groupe, entre autres. Ce niveau de personnalisation vous permet d’adapter chaque environnement à vos besoins spécifiques.
Comment installer schroot
Pour installer schroot sur Debian ou Ubuntu :
sudo apt-get install schroot
Il est recommandé d’installer également debootstrap :
sudo apt-get install debootstrap
Comment créer un environnement schroot
Créer l’environnement chroot
Pour utiliser schroot, vous devez d’abord créer un environnement chroot. Pour ce faire, créez un répertoire, copiez-y les fichiers nécessaires et configurez les points de montage requis.
Mais on peut aussi créer un environnement virtuelle complet à l’aide la commande deboostrap.
Par exemple pour créer un environnement chroot d’une image Ubuntu 64-bits dans /jail/ubuntu :
sudo debootstrap --arch amd64 jammy /jail/ubuntu http://fr.archive.ubuntu.com/ubuntu/
Ou encore avec Debian 64-bits :
sudo debootstrap --arch amd64 bullseye /jail/debian http://ftp.fr.debian.org/debian/
Une fois l’environnement chroot créé, vous pouvez utiliser la commande schroot pour exécuter des commandes ou lancer un shell interactif dans cet environnement.
Créer le fichier de configuration schroot
Ensuite, il faut créer le fichier de configuration dans l’emplacement suivant : /etc/schroot/chroot.d
Il faut créer un fichier de configuration pour chaque environnement chroot.
Par exemple pour notre environnement chroot Debian : /etc/schroot/chroot.d/bullseye.conf
Le contenu est le suivant :
[bullseye] description=Debian 11.8 (bullseye) directory=/jail/debian root-users=<nom utilisateur> users=<nom utilisateur> type=directory
Le fichier de configuration consiste en un nom de chroot (entouré d’une paire de crochets) et plusieurs propriétés :
- directory — Le répertoire racine de l’environnement chroot
- users — Une liste séparée par des virgules des utilisateurs qui ont accès à l’environnement chroot
- root-users — Une liste séparée par des virgules des utilisateurs qui peuvent obtenir les privilèges root dans l’environnement chroot en spécifiant -u root
- type — Il peut s’agir d’un répertoire ou d’un simple
- Si répertoire est spécifié, le répertoire personnel sera monté dans l’environnement chroot. Dans la plupart des cas, répertoire est une option pratique et suggérée
- Si plain est spécifié, schroot ne lancera aucun script d’installation
- personality — La personnalité de l’environnement chroot. Pour exécuter un environnement chroot 32 bits sur une machine x86-64, définissez la personnalité à linux32
Après avoir créé le fichier de configuration, vous pouvez lister les environnements chroot disponibles :
schroot -l
Cela doit renvoyer notre environnement chroot debian.
Comment entrer dans un environnement schroot
schroot -c bullseye
Pour sortir du chroot, utilisez la commande suivante :
exit
Pour se connecter en root dans l’environnement chroot :
schroot -c bullseye -u root
- Démarrer un shell interactif dans un chroot spécifique en tant qu’utilisateur spécifique :
schroot --chroot <environnement chroot> --user <utilisateur1> <utilisateur2>
Par exemple :
schroot --chroot bullseye --user mak
Comment exécuter des commandes dans le chroot ou connecter un utilisateur
Si vous désirez exécuter une commande dans un chroot spécifique, utilisez la syntaxe suivante :
schroot --chroot <environnement chroot> -- <commande>
Par exemple :
schroot --chroot bullseye -- cat /etc/passwd
Pour exécuter une commande avec des options dans un chroot spécifique :
schroot --chroot <environnement chroot> <commande> -- <options de la commande>
Si vous souhaitez exécuter une commande dans tous les chroots disponibles :
schroot --all -- <commande>
Par exemple :
schroot --all -- cat /etc/passwd
Comment gérer les sessions schroot
La commande schroot -c la plus simple mentionnée dans la section précédente démarre une session automatique avant d’exécuter la commande et met fin à la session automatique une fois la commande terminée.
Lorsqu’une session démarre, schroot monte les systèmes de fichiers et exécute les crochets de démarrage.
Lorsqu’une session se termine, schroot exécute les crochets de sortie et démonte les systèmes de fichiers.
Cela peut prendre du temps si vous devez entrer et sortir d’un chroot plusieurs fois.
Pour démarrer une session :
schroot -b -c <environnement chroot>
Liste de toutes les sessions Schroot
Pour obtenir la liste de toutes les sessions Schroot, exécutez :
schroot -l --all-sessions
Ce qui renvoie par exemple, le nom du chroot suivi d’un UID :
session:bullseye-fead4ce9-5521-425f-830e-435782e84ed4
Entrer dans une session Schroot
Pour entrer dans une session Schroot, exécutez :
schroot -r -c <nom de la session>
Soit par exemple :
schroot -r -c bullseye-fead4ce9-5521-425f-830e-435782e84ed4
Cette commande est similaire à la commande schroot -c la plus simple mentionnée plus haut. Vous pouvez ajouter la commande à exécuter ou spécifier -u root pour obtenir les privilèges de root.
Fin d’une session Schroot
Pour mettre fin à une session Schroot (c’est-à-dire démonter tous les systèmes de fichiers et exécuter les crochets de sortie), exécutez la commande :
schroot -e -c <nom de la session>
Par exemple :
schroot -e -c bullseye-fead4ce9-5521-425f-830e-435782e84ed4
Attention, si l’ordinateur redémarre avant que le plus simple schroot -c ne soit terminé, la session automatique ne sera pas clôturée. Pour nettoyer ces sessions, vous devez trouver leurs noms avec schroot -l –all-sessions et terminer ces sessions avec schroot -e -c <nom-de-la-session>.
Arrêter une session chroot
schroot --list --all-sessions
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd
Comment supprimer les environnement chroot
- Arrêter la session lié à l’environnement chroot
- Supprimer le fichier de configuration de /etc/schroot/chroot.d
- Lister les chroot pour vérifier que l’environnement chroot n’est plus présent
schroot --list
- Supprimer les fichiers du chroot (ex /jail, /chroot)
Liens
L’article schroot : gérer plus efficacement les environnement chroot est apparu en premier sur malekal.com.
0 Commentaires