Les chroot
Le commando peut l'envoyer en prison, garder vos environnements de développement ou de test isolés, ou simplement améliorer la sécurité de votre système. Nous vous montrons la façon la plus simple de l'utiliser.
Qu'est-ce qu'un chroot?
Si vous essayez de mesurer l'utilité d'une commande, vous devez faire attention aux fonctionnalités qu'il offre et à sa facilité d'utilisation. S'il est trop compliqué à utiliser pour les gens ou trop long pour qu'ils veuillent essayer de l'utiliser, la fonctionnalité pourrait également être nulle. Si personne ne l'utilise, ne fournit aucune fonctionnalité.
Dans les discussions avec les utilisateurs de Linux, en personne et sur les forums, il semble que le chroot
La commande est celle qui est considérée comme difficile à utiliser ou trop exigeante et fastidieuse à configurer. Il semble que cet utilitaire fantastique ne soit pas utilisé autant qu'il le devrait.
Avec chroot
vous pouvez configurer et exécuter des programmes interactifs ou des shells comme Bash sur un système de fichiers encapsulé qui ne peut pas interagir avec votre système de fichiers fréquent. Le tout dans le chroot
l'environnement est clos et confiné. Rien dans le chroot
L'environnement peut voir au-delà de son propre répertoire racine spécial sans passer aux privilèges root. Cela a valu à ce type d'environnement le surnom de chroot
cellule. Le terme “prison” prison FreeBSD jail
commander, qui crée un chroot
environnement c'est plus sûr des fréquents chroot
environnement.
Mais, en réalité, il y a une façon très simple d'utiliser chroot
, qu'allons-nous étudier. Nous utilisons des commandes Linux régulières qui fonctionneront sur toutes les distributions. Certaines distributions Linux ont des outils dédiés pour la configuration chroot
environnements, Quoi debootstrap pour Ubuntu, mais ici nous sommes indépendants de la distribution.
Quand dois-je chrooter?
UNE chroot
L'environnement fournit des fonctionnalités équivalentes à celles d'une machine virtuelle, mais c'est une solution plus légère. Le système captif n'a pas besoin d'un hyperviseur pour être installé et configuré, Quoi VirtualBox O Gestionnaire de machines virtuelles. Vous n'avez pas non plus besoin d'avoir un noyau installé sur le système captif. Le système captif partage votre noyau existant.
À certains égards, chroot
les environnements sont plus proches des conteneurs comme LXC que les machines virtuelles. ils sont légers, rapide à mettre en œuvre et la création et l'activation peuvent être automatisées. De la même manière que les conteneurs, un moyen pratique de les configurer est d'installer suffisamment de système d'exploitation pour qu'il puisse réaliser ce qui est nécessaire. La question “prison” prison chroot
environnement.
Certaines utilisations courantes sont:
Développement de logiciels et vérification de produits. Les développeurs écrivent l'équipe de vérification des logiciels et des produits (PV) prouve le. Parfois, PV détecte les problèmes qui ne peuvent pas être répliqués sur l'ordinateur du développeur. Le développeur a toutes sortes d'outils et de bibliothèques installés sur son ordinateur de développement que l'utilisateur moyen. (y PV) n'aura pas. Souvent, un nouveau logiciel qui fonctionne pour le développeur mais pas pour les autres s'avère utiliser une ressource sur le PC du développeur qui n'était pas incluse dans la version d'essai du logiciel. chroot
permet aux développeurs d'avoir un environnement captif simple sur leur ordinateur dans lequel ils peuvent tremper le logiciel avant de le donner à PV. L'environnement captif peut être configuré avec des dépendances minimales requises par le logiciel.
Réduire le risque de développement. Le développeur peut créer un environnement de développement dédié afin que rien de ce qui s'y passe ne puisse gâcher son vrai PC.
Exécuter un logiciel obsolète. Parfois, il suffit d'avoir une ancienne version de quelque chose en cours d'exécution. Si un logiciel plus ancien a des exigences qui entreraient en conflit ou seraient incompatibles avec votre version de Linux, il peut chroot
un environnement pour les logiciels problématiques.
Récupération et mises à jour du système de fichiers: Si une installation Linux cesse de fonctionner, Vous pouvez utiliser chroot
pour monter le système de fichiers corrompu sur un point de montage sur un Live CD. Cela vous permet de travailler sur le système endommagé et d'essayer de le réparer comme s'il était régulièrement monté en root. /. Cela signifie que les chemins de fichiers attendus dans le système corrompu seront correctement référencés à partir du répertoire racine et non à partir du point de montage du Live CD.. Une technique équivalente a été utilisée dans le post décrivant comment migrer le système de fichiers Linux d'ext2 ou ext3 vers ext4.
Applications de cantonnement. Exécutez un serveur FTP ou un autre appareil connecté à Internet dans un délai chroot
L'environnement limite les dégâts qu'un attaquant externe peut faire. Cela peut être une étape précieuse pour renforcer la sécurité de votre système..
EN RELATION: Comment migrer les systèmes de fichiers Ext2 ou Ext3 vers Ext4 sous Linux
Créer un environnement chroot
Nous avons besoin d'un répertoire qui agit comme le répertoire racine du chroot
environnement. Pour que nous ayons une manière abrégée de faire référence à ce répertoire, nous allons créer une variable et y stocker le nom du répertoire. prison “prison”. Ce n'est pas grave si ce répertoire n'existe pas encore, nous allons le créer bientôt. Si le répertoire existe, devrait être vide.
chr=/home/dave/testroot
Si le répertoire n'existe pas, nous devons le créer. Nous pouvons le faire avec cette commande. Les -p
L'option (parents) garantit que les répertoires personnels manquants sont créés en même temps:
mkdir -p $chr
Nous devons créer des répertoires pour contenir les parties du système d'exploitation chroot
l'environnement l'exigera. Nous allons mettre en place un environnement Linux minimaliste qui utilise Bash comme shell interactif. Nous inclurons également le touch
, rm
, et ls
commandes. Cela nous permettra d'utiliser toutes les commandes Bash intégrées et touch
, rm
, et ls
. nous pourrons créer, lister et supprimer des fichiers et utiliser bash. ET, dans cet exemple simple, c'est tout.
Répertoriez les répertoires que vous devez créer dans le {}
extension de corset.
mkdir -p $chr/{poubelle,lib,lib64}
Nous allons maintenant changer le répertoire en notre nouveau répertoire racine.
cd $chr
prison “/ poubelle” prison chroot
annuaire “/ poubelle”. Les -v
L'option (détaillé) Est-ce que cp
dites-nous ce que vous faites lors de chaque action de copie.
cp -v /bin/{frapper,toucher,ls,rm} $chr / suis
Les fichiers sont copiés pour nous:
Ces binaires auront des dépendances. Nous devons découvrir ce qu'ils sont et copier celles fichiers dans notre environnement également, cas contraire bash
, touch
, rm
, et ls
ça ne pourra pas fonctionner. Nous devons le faire à tour de rôle pour chacune de nos commandes choisies. Nous allons d'abord frapper. Les ldd
la commande sera lister les dépendances pour nous.
ldd /bin/bash
Les dépendances sont identifiées et répertoriées dans la fenêtre du terminal:
Nous devons copier ces fichiers dans notre nouvel environnement. Choisir les détails de cette liste et les copier un en même temps prendra du temps et sera sujet aux erreurs.
Par chance, nous pouvons le semi-automatiser. Nous allons à nouveau lister les dépendances, et cette fois nous allons former une liste. Ensuite, nous allons parcourir la liste en copiant les fichiers.
Ici, nous utilisons ldd
pour répertorier les dépendances et alimenter les résultats via un tuyau dans egrep
. À l'aide de egrep
est la même chose que d'utiliser grep
avec lui -E
(expressions régulières étendues). Les -o
L'option (juste une coïncidence) restreint la sortie aux parties correspondantes des lignes. Nous recherchons des fichiers de bibliothèque correspondants se terminant par un nombre [0-9]
.
liste="$(ldd /bin/bash | egrep -o '/lib.*.[0-9]')"
Nous pouvons vérifier le contenu de la liste en utilisant echo
:
echo $list
Maintenant que nous avons la liste, on peut le parcourir avec le cycle suivant, copier les fichiers un par un. Nous utilisons la variable i
parcourir la liste. Pour chaque membre de la liste, nous copions le fichier dans notre chroot
répertoire racine qui est la valeur contenue dans $chr
.
Les -v
(détaillé) l'option provoque cp
pour annoncer chaque copie au fur et à mesure que vous la faites. Les --parents
L'option garantit que les répertoires personnels manquants sont créés sur le chroot
environnement.
pour moi dans la liste $; faire cp -v --parents "$je" "${chr}"; terminé
Et c'est la sortie:
Nous utiliserons cette technique pour capturer les dépendances de chacune des autres commandes. Et nous utiliserons la technique de la boucle pour faire la copie réelle. La bonne nouvelle, c'est qu'il suffit de faire une petite modification à la commande qui regroupe les dépendances.
Nous pouvons récupérer la commande de notre historique de commandes en appuyant sur le bouton Up Arrow
touchez plusieurs fois, puis procédez à l'édition. La commande de bouclage n'a pas besoin de changer du tout.
Ici, nous avons utilisé le Up Arrow
pour trouver la commande, et nous l'avons édité pour dire touch
au lieu de bash
.
liste="$(ldd /bin/touch | egrep -o '/lib.*.[0-9]')"
Maintenant, nous pouvons répéter exactement la même commande de boucle qu'avant:
pour moi dans la liste $; faire cp -v --parents "$je" "${chr}"; terminé
Et nos fichiers sont copiés pour nous:
Nous pouvons maintenant modifier le list
ligne de commande pour ls
:
liste="$(ldd /bin/ls | egrep -o '/lib.*.[0-9]')"
De nouveau, nous utiliserons la même commande de boucle. Peu importe quels fichiers sont dans la liste. Travaillez aveuglément à travers la liste en copiant les fichiers pour nous.
pour moi dans la liste $; faire cp -v --parents "$je" "${chr}"; terminé
Et les dépendances pour ls
ils sont copiés pour nous:
Nous éditons le list
ligne de commande la dernière fois, qu'est-ce qui fait que ça marche pour rm
:
liste="$(ldd /bin/ls | egrep -o '/lib.*.[0-9]')"
Nous avons utilisé la commande loop copy une dernière fois:
pour moi dans la liste $; faire cp -v --parents "$je" "${chr}"; terminé
La dernière de nos dépendances est copiée dans notre chroot
environnement. Enfin, nous sommes prêts à utiliser le chroot
commander. Cette commande définit la racine du chroot
environnement et spécifiez quelle application exécuter en tant que shell.
sudo chroot $chr /bin/bash
Notre chroot
l'environnement est maintenant actif. L'invite de la fenêtre du terminal a changé et le shell interactif est géré par le bash
coquille dans notre environnement.
Nous pouvons tester les commandes que nous avons apportées à l'environnement.
ls
ls /home/dave/Documents
Les ls
La commande fonctionne comme prévu lorsque nous l'utilisons dans l'environnement. Lorsque nous essayons d'entrer dans un répertoire en dehors de l'environnement, la commande échoue.
On peut utiliser touch
créer un fichier, ls
pour le lister, et rm
pour l'enlever.
touchez sample_file.txt
ls
rm fichier_échantillon.txt
ls
De toute façon, nous pouvons également utiliser les commandes intégrées fournies par le shell Bash. Si vous écrivez help
sur la ligne de commande, Bash les listera pour vous.
aider
Utilisez exit pour quitter le chroot
environnement:
sortir
Si vous souhaitez supprimer le chroot
environnement, vous pouvez simplement le supprimer:
rm -r racine test/
Cela supprimera récursivement les fichiers et les répertoires dans le chroot
environnement.
Automatiser pour plus de commodité
Si vous pensez que chroot
Les environnements peuvent vous être utiles, mais ils sont un peu compliqués à configurer, rappelez-vous que vous pouvez toujours éliminer le stress et les risques liés aux tâches répétitives grâce à l'utilisation d'alias, fonctions et scripts.
EN RELATION: Comment créer des alias et des fonctions shell sous Linux