schroot — entrer de manière sécurisée dans un
environnement de chroot
schroot [
-h|
--help |
-V|
--version |
-l|
--list |
-i|
--info |
--config |
--location |
--automatic-session |
-b|
--begin-session |
--recover-session |
-r|
--run-session |
-e|
--end-session] [
-f|
--force] [
-n
nom-de-session|
--session-name= nom-de-session] [
-d
répertoire|
--directory=répertoire]
[
-u utilisateur|
--user=utilisateur] [
-u
utilisateur|
--user=utilisateur] [
-p|
--preserve-environment][
-s
shell|
--shell= shell] [
-q |
--quiet |
-v|
--verbose] [
-c
chroot|
--chroot=chroot |
--all |
--all-chroots |
--all-source-chroots |
--all-sessions] |
--exclude-aliases [
-o|
--option=clé=valeur]
[
--] [
COMMANDE [
ARG1 [
ARG2 [
ARGn]]]]
schroot autorise l'utilisateur à exécuter une commande ou
un interpréteur de commande de connexion dans un environnement de
chroot. Si aucune commande n'est précisée, un
interpréteur de commande de connexion sera démarré dans
le répertoire de travail courant de l'utilisateur à
l'intérieur du chroot.
La commande est un programme plus autant d'arguments optionnels que requis.
Chaque argument doit être déclaré
séparément.
Le répertoire dans lequel la commande ou l'interpréteur de
commande de connexion sont exécutés dépend du contexte.
Voir l'option
--directory ci-dessous pour une description
complète.
Toute utilisation de chroot sera enregistrée dans les journaux du
système. Dans certaines circonstances, l'utilisateur pourrait devoir
s'identifier ; consultez la section “
Authentification” ci-dessous.
Si aucun chroot n'est spécifié, le nom de chroot ou alias
‘default’ sera utilisé à la place. Cela est
équivalent à “--chroot=default”.
Il est souvent nécessaire d'exécuter des programmes dans des
environnements virtualisés plutôt que directement sur le
système hôte. À la différence des autres
systèmes de virtualisation comme
kvm ou
Xen, schroot ne
virtualise pas le système en entier ; il virtualise seulement le
système de fichiers, et certaines parties du système de fichiers
peuvent toujours être partagées avec l'hôte. Il est par
conséquent rapide, léger et flexible. Cependant, il ne
virtualise pas les autres aspects du système, comme la mémoire
partagée, le réseau, les
périphériques, etc., et par conséquent peut
être moins sécurisé que d'autres systèmes, en
fonction de l'utilisation voulue. Des exemples d'utilisations connues de
schroot sont :
- •
- Exécuter des programmes non fiables dans un bac
à sable ; de cette façon, ils ne peuvent pas
interférer avec les fichiers du système hôte ;
cela peut également être utilisé pour diminuer les
dommages que causerait la compromission d'un service sur
l'hôte.
- •
- Utiliser un environnement défini ou
propre pour garantir la reproductibilité et
l'intégrité d'une tâche donnée.
- •
- Utiliser une version différente d'un système
d'exploitation, ou même un système d'exploitation
complètement différent, par exemple une distribution
GNU/Linux différente.
- •
- Exécuter des programmes 32 bits sur un
système hôte 64 bits, en utilisant un chroot
32 bits.
- •
- Construire automatiquement des paquets Debian en utilisant
sbuild(1) qui construit chaque paquet dans un instantané
chroot dédié quand les instantanés LVM ou les unions
sont utilisés.
- •
- Prendre en charge des images multiples de systèmes
dans une installation de grappe où modifier l'image de base est
consommatrice de temps et/ou prendre en charge toutes les configurations
requises par les utilisateurs est difficile : différents
chroots peuvent prendre en charge toutes les configurations
différentes requises, et l'accès peut être
donné aux utilisateurs de la grappe pour les chroots dont ils ont
besoin (ce qui peut inclure des accès root pour les utilisateurs de
confiance afin qu'ils puissent entretenir leurs propres images)
Un chroot peut être utilisé directement en exécutant
chroot(8), mais les utilisateurs standard ne sont pas autorisés
à exécuter cette commande.
schroot autorise
l'accès à des chroots pour des utilisateurs normaux en utilisant
le même mécanisme, mais avec plusieurs caractéristiques
supplémentaires. Alors que schroot utilise un répertoire comme
chroot exactement comme
chroot(8), il n'a pas besoin que celui-ci soit
un répertoire ordinaire du système de fichier. Bien que cela
soit la valeur par défaut, le chroot peut également être
créé à partir d'un fichier, d'un système de
fichiers, incluant les instantanés LVM et Btrfs et les montages
« loopback », ou composé d'une surcouche
unionfs.
schroot étant extensible par l'utilisateur, les
possibilités de création de chroot provenant de sources
différentes ne sont limités que par votre imagination.
schroot effectue des vérifications de permission et autorise des
mises en place automatiques supplémentaires de l'environnement de
chroot, comme le montage de systèmes de fichiers supplémentaires
et d'autres tâches de configuration. Cette mise en place automatique
est faite par l'action de
scripts de mise en place qui peuvent
être configurés et étendus pour effectuer toute action
nécessaire. Les actions typiques incluent le montage du
répertoire personnel de l'utilisateur, la configuration du
réseau et des bases de données du système et même
le démarrage de services. Ils sont également entièrement
personnalisables par l'administrateur. Les scripts de mise en place sont
exécutés pour tous les types de chroot, à l'exception de
ceux de type ‘plain’, le type de chroot le plus simple qui ne
permet aucune mise en place automatique. La configuration de schroot est
décrite plus en détail dans
schroot.conf(5).
schroot accepte les options suivantes :
-
-h, --help
- Afficher un résumé de l'aide.
-
-V, --version
- Afficher les informations de version.
-
-l, --list
- Lister tous les chroots disponibles.
-
-i, --info
- Afficher des informations détaillées à
propos des chroots spécifiés.
- --config
- Afficher la configuration des chroots
spécifiés. C'est utile pour tester que la configuration
utilisée est la même que celle du fichier de configuration.
Tout commentaire du fichier original est omis.
- --location
- Afficher la localisation (chemin) des chroots
spécifiés. Noter que les types de chroot qui ne peuvent
être utilisés qu'à l'intérieur d'une session
n'auront aucune localisation avant d'être activés.
-
-q, --quiet
- Afficher uniquement les messages essentiels.
-
-v, --verbose
- Afficher tous les messages.
-
-c, --chroot=chroot
- Spécifier un chroot ou une session active à
utiliser. Cette option peut être utilisée plusieurs fois
pour spécifier plus d'un chroot. Dans ce cas, elle a un effet
similaire à --all. Le nom du chroot peut être
préfixé par un espace de noms. Veuillez vous reporter
à la section “ Espaces de noms Chroot”
ci-après.
-
-a, --all
- Sélectionner tous les chroots, chroots source et
sessions actives. Quand une commande a été
spécifiée, cette commande sera exécutée dans
tous les chroots, chroots source et sessions actives. Si --info a
été utilisé, afficher les informations à
propos de tous les chroots. Cette option n'a aucun sens si elle est
utilisée avec un interpréteur de commande de connexion
(« login shell »), aucune commande
n'étant spécifiée. Cette option est
équivalente à “--all-chroots --all-source-chroots
--all-sessions”.
- --all-chroots
- Sélectionner tous les chroots. Identique à
--all, sauf que les chroots source et les sessions actives ne sont
pas pris en compte.
- --all-sessions
- Sélectionner toutes les sessions actives. Identique
à --all, sauf que les chroots et les chroots source ne sont
pas pris en compte.
- --all-source-chroots
- Sélectionner tous les chroots source. Identique
à --all, sauf que les chroots et les sessions ne sont pas
pris en compte.
- --exclude-aliases
- Ne pas sélectionner les alias en plus des chroots.
Cela permet de s'assurer que seuls les chroots réels sont
sélectionnés et qu'ils ne sont listés qu'une seule
fois.
-
-d, --directory=répertoire
- Se déplacer dans le répertoire dans le
chroot avant d'exécuter la commande ou l'interpréteur de
commande de connexion. Si le répertoire n'est pas
disponible, schroot se terminera par un état d'erreur.
- Le comportement par défaut est comme suit (tous les
chemins de répertoire sont à l'intérieur du chroot).
Un interpréteur de commande de connexion est exécuté
dans le répertoire de travail courant. S'il n'est pas disponible,
$HOME sera essayé (quand --preserve-environment est
utilisé), ensuite le répertoire personnel de l'utilisateur,
et finalement / à l'intérieur du chroot. Une commande
est toujours exécutée dans le répertoire de travail
courant à l'intérieur du chroot. Si aucun des
répertoires n'est disponible, schroot se terminera avec un
état d'erreur.
-
-u, --user=utilisateur
- Exécuter en tant qu'utilisateur différent.
Par défaut, la commande est exécutée avec
l'utilisateur courant. Si nécessaire, l'utilisateur peut avoir
besoin de s'identifier avec un mot de passe. Pour plus d'informations,
consultez la section “ Authentification”,
ci-dessous.
-
-p, --preserve-environment
- Préserver l'environnement de l'utilisateur à
l'intérieur de l'environnement de chroot. Par défaut, un
environnement propre est utilisé ; cette option copie
l'ensemble de l'environnement de l'utilisateur et le met en place dans la
session. Les variables d'environnement autorisées sont soumises
à certaines restrictions ; voir la section “
Environnement”, ci-dessous.
-
-s, -shell=shell
- Utiliser shell en tant qu'interpréteur de
commande de connexion. Lors de l'exécution d'un interpréteur
de commande de connexion plusieurs interpréteurs de commandes
potentiels seront considérés dans cet ordre : la
commande dans la variable d'environnement SHELL (si l'option
--preserve-environment est utilisée ou si
preserve-environment est activé), l'interpréteur de
commandes de l'utilisateur dans la base de données
‘passwd’, /bin/bash et finalement /bin/sh.
Cette option écrase cette liste et utilisera l'interpréteur
de commandes spécifié. Cette option écrase
également la clé de configuration shell si
définie.
-
-o, --option=clé=valeur
- Définir une option. Les valeurs des clés de
configuration sélectionnées dans schroot.conf peuvent
être modifiées en utilisant cette option. Les clés
doivent être présentes dans la clé de configuration
user-modifiable-keys dans schroot.conf, à moins que
la clé user-modifiable-keys ne soit exécutée
par le superutilisateur (ou déplacée vers lui). Les
clés et les valeurs définies ici seront définies dans
l'environnement des scripts de mise en place et peuvent par
conséquent être utilisées pour personnaliser le
chroot pour chaque session.
- --automatic-session
- Démarrer, exécuter et terminer une session
automatiquement. C'est l'action par défaut, et donc n'a pas besoin
d'être spécifiée en opération normale.
-
-b, --begin-session
- Débuter une session. Un identifiant unique de
session est renvoyé sur la sortie standard. L'identifiant de
session est nécessaire pour utiliser les autres options de session.
Notez que l'identifiant de session peut être spécifié
avec l'option --session-name.
- --recover-session
- Restaurer une session existante. Si une session existante
est devenue inaccessible, par exemple démontée à
cause d'un redémarrage, cette option permettra que la session soit
disponible pour être utilisée de nouveau, par exemple en la
remontant. L'identifiant de session est spécifié avec
l'option --chroot.
-
-r, --run-session
- Lancer une session existante. L'identifiant de session est
spécifié avec l'option --chroot.
-
-e, --end-session
- Terminer une session existante. L'identifiant de session
est spécifié avec l'option --chroot.
-
-n, --session-name=nom-de-session
- Nommer une session. Le nom-de-session
spécifié remplace le nom de session par défaut
contenant un identifiant de session généré
automatiquement. Le nom de session ne doit pas contenir de qualificatif
d'espace de noms, parce que les sessions sont toujours
créées dans l'espace de noms ‘session:’. Le
nom de session est aussi sujet aux restrictions de dénomination de
chroot documentées dans schroot.conf(5).
-
-f, --force
- Forcer une opération de session, même si elle
aurait autrement échoué. Cela peut être
utilisé pour forcer la fin d'une session, même s'il y a des
utilisateurs actifs. Cela ne garantit pas que la session se terminera
proprement ; par exemple, les systèmes de fichiers peuvent
ne pas être démontés.
- --
- Fin des options. Utilisé pour indiquer la fin des
options de schroot ; toutes les options suivantes seront
passées à la commande exécutée, au lieu de
schroot.
Si l'utilisateur n'est pas un utilisateur autorisé, ou membre d'un groupe
autorisé (ou en cas de changement vers root, un utilisateur root
autorisé ou un groupe root autorisé) pour le chroot
spécifié, les permissions seront immédiatement
refusées. En cas de changement d'utilisateur et si l'utilisateur
exécutant la commande y est autorisé, l'utilisateur devra
s'authentifier lui-même en utilisant les identifiants de l'utilisateur
vers lequel le changement sera fait.
Pour les systèmes prenant en charge le système d'authentification
« Pluggable Authentication Modules » (PAM),
schroot utilisera PAM pour l'authentification et l'autorisation des
utilisateurs. Si besoin, schroot demandera un mot de passe. Si PAM n'est pas
disponible, toutes les authentifications échoueront automatiquement (le
changement d'utilisateur sans PAM
n'est pas pris en charge).
Notez que quand PAM est utilisé, l'utilisateur root n'obtiendra aucun
privilège particulier par défaut dans le programme. Cependant,
la configuration par défaut de PAM permet à root de se connecter
sans mot de passe (
pam_rootok.so), mais cela peut être
désactivé pour empêcher root d'accéder à
des chroots quelconques sauf ceux spécifiquement permis. Dans une telle
situation, root doit être ajouté aux utilisateurs ou groupes
autorisés comme n'importe quel utilisateur ou groupe. Si PAM n'est pas
disponible, l'utilisateur root pourra accéder à tous les
chroots, même non explicitement autorisé.
Il y a trois types de chroot différents : les chroots ordinaires,
les chroots source et les chroots session. Ces différents types de
chroot sont séparés dans différents
espaces de
noms. Un espace de noms est un préfixe à un nom de chroot.
Pour le moment, il y a trois espaces de noms : ‘chroot:’,
‘source:’ et ‘session:’. Utilisez
--list
--all pour lister tous les chroots disponibles dans tous les espaces de
noms. Parce que ‘:’ est utilisé comme séparateur
entre l'espace de noms et les noms de chroots, il n'est pas permis d'utiliser
ce caractère dans les noms de chroot.
En fonction de l'action que vous demandez à schroot d'exécuter,
celui-ci peut rechercher le chroot dans l'un de ces trois espaces de noms, ou
un espace de noms particulier peut être spécifié. Par
exemple, un chroot nommé “sid” est en fait nommé
“chroot:sid” si l'espace de noms est inclus, mais l'espace de
noms peut être omis pour la plupart des actions.
Certains types de chroot, par exemple les instantanés LVM ou Btrfs,
fournissent des instantanés du chroot de type « copie en
cas d'écriture » contrôlés par la session.
Ils fournissent également un
chroot source pour permettre un
accès facile au système de fichiers utilisé comme source
de création d'instantané. Ce sont des chroots ordinaires
également, mais désactivant la création
d'instantané. Pour un chroot nommé “sid-snapshot”
(c'est-à-dire avec “chroot:sid-snapshot” comme nom
complet qualifié), il y aura également un chroot source
nommé “source:sid-snapshot”. Les versions
précédentes de schroot fournissent des chroots source avec un
suffixe ‘-source’. Ces suffixes sont également fournis
à des fins de compatibilité. Dans notre exemple il serait
appelé “chroot:sid-snapshot-source”. Cette
dénomination de compatibilité sera abandonnée dans une
version future, les programmes et les scripts devraient donc être
modifiés pour utiliser des noms utilisant les espaces de noms au lieu
des vieux suffixes.
Toute session créée avec l'option
--begin-session est
placée dans l'espace de noms ‘session:’. Une session
nommée avec
--session-name peut avoir différents noms,
même un nom identique au chroot à partir duquel elle a
été créée, à condition qu'il soit unique
dans l'espace de noms. Cela n'était pas permis dans les versions
précédentes de schroot qui n'avaient pas d'espaces de noms.
Toutes les actions utilisent ‘chroot:’ comme espace de noms par
défaut, avec quelques exceptions pour des actions de sessions.
--run-session,
--recover-session et
--end-session
utilisent ‘session:’ comme espace de noms par défaut, car
ces actions agissent sur les chroots session. Le résultat est que
l'espace de noms n'est normalement jamais requis, sauf quand vous avez besoin
de travailler avec un chroot dans un espace de noms différent de celui
par défaut, comme lorsque vous utilisez un chroot source. Pour
effectuer une sélection de chroot sans ambiguïté, il est
toujours possible d'utiliser le nom complet incluant l'espace de noms,
même quand cela n'est pas strictement nécessaire.
Les performances sur certains systèmes de fichiers, par exemple Btrfs,
sont mauvaises lors de l'utilisation de dpkg à cause de la
quantité d'opérations fsync à effectuer. Cela peut
être limité par l'installation du paquet eatmydata et ensuite
par l'ajout de eatmydata à la clé de configuration
command-prefix, ce qui désactivera toutes les opérations
fsync. Notez que cela ne doit être effectué que dans les chroots
d'instantanés où la perte de données n'est pas un
problème. C'est utile lors de l'utilisation d'un chroot pour une
construction de paquets, par exemple.
Schroot sélectionnera un répertoire approprié à
utiliser à l'intérieur du chroot si un interpréteur de
commande de connexion est utilisé ou une commande
exécutée et également si l'option
--directory est
utilisée. Dans le cas de l'exécution directe ou en
spécifiant explicitement un répertoire, seulement un
répertoire sera utilisé par mesure de sécurité et
de cohérence, alors que pour un interpréteur de commande de
connexion plusieurs possibilités peuvent être testées. La
sous-section suivante liste la séquence de substitution pour chaque
cas. CWD est le répertoire de travail courant, DIR est le
répertoire spécifié par
--directory.
Transition |
|
(Hôte → Chroot) |
Commentaire |
|
CWD → CWD |
Comportement normal (si --directory n'est pas
utilisé) |
CWD → $HOME |
Si CWD n'existe pas et --preserve-environment est utilisé |
CWD → passwd pw_dir |
Si CWD n'existe pas (ou --preserve-environment est utilisé et
aucun $HOME n'existe) |
CWD → / |
Aucun des répertoires ci-dessus n'existe |
FAIL |
Si / n'existe pas |
Transition |
|
(Hôte → Chroot) |
Commentaire |
|
CWD → CWD |
Comportement normal (si --directory n'est pas
utilisé) |
FAIL |
Si CWD n'existe pas |
Aucune solution de repli ne devrait exister en toute circonstance.
Transition |
|
(Hôte → Chroot) |
Commentaire |
|
CWD → DIR |
Comportement normal |
FAIL |
Si CWD n'existe pas |
Aucune solution de repli ne devrait exister en toute circonstance.
Notez que
--debug=notice affichera la liste interne des
répertoires de repli calculée pour la session.
% schroot -l↵
chroot:default
chroot:etch
chroot:sid
chroot:testing
chroot:unstable
% schroot -i -c sid↵
——— Chroot ———
Name sid
Description Debian sid (unstable)
Type plain
Priority 3
Users rleigh
Groups sbuild
Root Users
Root Groups sbuild
Aliases unstable unstable-sbuild unstable-p
owerpc-sbuild
Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|I\
FS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMA\
IN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TE\
RMPATH)$
Run Setup Scripts true
Script Configuration script-defaults
Session Managed true
Personality linux32
Location /srv/chroot/sid
Utilisez
--all ou
-c plusieurs fois pour utiliser plusieurs ou
tous les chroots respectivement.
% schroot -c sid /bin/ls↵
[sid chroot] Running command: “/bin/ls”
CVS sbuild-chroot.c sbuild-session.h schroot.conf.5
Makefile sbuild-chroot.h schroot.1 schroot.conf.5.in
Makefile.am sbuild-config.c schroot.1.in
Makefile.in sbuild-config.h schroot.c
pam sbuild-session.c schroot.conf
% schroot -c sid -- ls -1 | head -n 5↵
[sid chroot] Running command: “ls -1”
ABOUT-NLS
AUTHORS
COPYING
ChangeLog
INSTALL
Utilisez
-- pour autoriser les options débutant avec
‘-’ ou ‘--’ pour la commande à
exécuter dans le chroot. Cela empêche qu'elles soient
interprétées en tant qu'options de schroot. Notez que la
première ligne a été affichée sur l'erreur
standard et le reste sur la sortie standard. C'est intentionnel, pour que la
sortie du programme exécuté dans le chroot puisse être
redirigée à l'aide d'un pipe si besoin ; les
données seront les mêmes que si la commande était
exécutée directement sur le système hôte.
% schroot -c sid -u root↵
Password:
[sid chroot] (rleigh→root) Running login shell: “/bin/bash”
#
Si l'utilisateur ‘rleigh’ était dans
root-users de
/etc/schroot/schroot.conf, ou un des groupes auxquels il appartient
était dans
root-groups, un accès root lui sera fourni
sans authentification, mais l'étape d'autorisation PAM est toujours
appliquée.
Un chroot peut être nécessaire pour exécuter plus d'une
commande. En particulier, quand le chroot est créé à la
volée à partir d'un volume logique LVM ou d'un fichier sur le
disque, il est nécessaire de rendre le chroot persistant pendant qu'une
tâche donnée (ou un jeu de tâches) est
exécutée. Les sessions existent pour cette raison. Pour les
chroots de type simple comme ‘plain’ et
‘directory’, des sessions peuvent être
créées mais ne sont pas strictement nécessaires.
Commençons par examiner un chroot capable d'utiliser des
sessions :
% schroot -i -c sid-snap↵
——— Chroot ———
Name sid-snap
Description Debian sid snapshot
Type lvm-snapshot
Priority 3
Users maks rleigh
Groups sbuild
Root Users
Root Groups root sbuild
Aliases
Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|I\
FS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMA\
IN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TE\
RMPATH)$
Run Setup Scripts true
Script Configuration script-defaults
Session Managed true
Personality linux
Device /dev/hda_vg/sid_chroot
Mount Options -o atime,async,user_xattr
Source Users
Source Groups root rleigh
Source Root Users
Source Root Groups root rleigh
LVM Snapshot Options --size 2G -c 128
Notez que l'option
Session Managed est définie à
‘true’. Cela est requis pour utiliser le gestionnaire de session
et est pris en charge par la plupart des types de chroot. Ensuite nous allons
créer une nouvelle session :
% schroot -b -c sid-snap↵
sid-snap-46195b04-0893-49bf-beb8-0d4ccc899f0f
L'identifiant de session de la session nouvellement créée est
renvoyé sur la sortie standard. Il est habituel de le conserver comme
ceci :
% SESSION=$(schroot -b -c sid-snap)↵
% echo $SESSION↵
sid-snap-46195b04-0893-49bf-beb8-0d4ccc899f0f
La session peut être utilisée comme n'importe quel chroot. Voici
à quoi ressemble la session :
% schroot -i -c sid-snap-46195b04-0893-49bf-beb8-0d4ccc899f0f↵
——— Session ———
Name sid-snap-46195b04-0893-49bf-beb8-0d\
4ccc899f0f
Description Debian sid snapshot
Type lvm-snapshot
Priority 3
Users maks rleigh
Groups sbuild
Root Users
Root Groups root sbuild
Aliases
Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|I\
FS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMA\
IN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TE\
RMPATH)$
Run Setup Scripts true
Script Configuration script-defaults
Session Managed true
Personality linux
Mount Location /var/lib/schroot/mount/sid-snap-461\
95b04-0893-49bf-beb8-0d4ccc899f0f
Path /var/lib/schroot/mount/sid-snap-461\
95b04-0893-49bf-beb8-0d4ccc899f0f
Mount Device /dev/hda_vg/sid-snap-46195b04-0893-\
49bf-beb8-0d4ccc899f0f
Device /dev/hda_vg/sid_chroot
Mount Options -o atime,async,user_xattr
Source Users
Source Groups root rleigh
Source Root Users
Source Root Groups root rleigh
LVM Snapshot Device /dev/hda_vg/sid-snap-46195b04-0893-\
49bf-beb8-0d4ccc899f0f
LVM Snapshot Options --size 2G -c 128
Maintenant que la session a été créée, il est
possible d'exécuter des commandes comme ceci :
% schroot -r -c sid-snap-46195b04-0893-49bf-beb8-0d4ccc899f0f -- \
uname -sr↵
I: [sid-snap-46195b04-0893-49bf-beb8-0d4ccc899f0f chroot] Running \
command: “uname -sr”
Linux 2.6.18-3-powerpc
% schroot -r -c $SESSION -- uname -sr↵
I: [sid-snap-fe170af9-d9be-4800-b1bd-de275858b938 chroot] Running \
command: “uname -sr”
Linux 2.6.18-3-powerpc
Quand toutes les commandes à exécuter dans la session ont
été effectuées, la session peut être
terminée :
% schroot -e -c sid-snap-46195b04-0893-49bf-beb8-0d4ccc899f0f↵
% schroot -e -c $SESSION↵
Finalement, les noms de session peuvent être longs et peu maniables. Un
nom peut être spécifié à la place de l'identifiant
de session généré automatiquement :
% schroot -b -c sid-snap -n mon-nom-session↵
mon-nom-session
Si quelque chose ne fonctionne pas, et qu'il n'est pas facile de
déterminer ce qui ne va pas à partir des messages d'erreur, vous
pouvez utiliser l'option
--debug=niveau pour activer les
messages de débogage. Cela donnera un plus grand nombre d'informations.
Les niveaux de débogage valables sont ‘none’,
‘notice’, ‘info’, ‘warning’ et
‘critical’ par ordre croissant de sévérité.
Plus le niveau de sévérité est faible, plus il y a de
sortie.
Si vous avez toujours des problèmes, les développeurs peuvent
être contactés sur la liste de diffusion (en anglais) :
Debian buildd-tools Developers
<
[email protected]>
Sur les architectures
mips et
mipsel, les noyaux Linux,
jusqu'à la version 2.6.17 incluse, ont une prise en charge
cassée des
personality(2), qui a pour conséquence un
échec de la mise en place des personnalités. Cela se manifeste
par une erreur “Operation not permitted” (EPERM). Pour
contourner ce problème, définissez
personality à
‘undefined’ ou mettez à niveau votre noyau vers une
version plus récente.
Par défaut, l'environnement n'est pas préservé et les
variables d'environnement suivantes sont définies : HOME,
LOGNAME, PATH, SHELL, TERM (préservée si déjà
spécifiée) et USER. Les variables d'environnement
SCHROOT_COMMAND, SCHROOT_USER, SCHROOT_GROUP, SCHROOT_UID et SCHROOT_GID sont
définies à l'intérieur du chroot spécifiant
respectivement la commande exécutée, le nom d'utilisateur, le
nom de groupe, l'identifiant de l'utilisateur et l'identifiant du groupe. En
plus, les variables d'environnement SCHROOT_SESSION_ID, SCHROOT_CHROOT_NAME et
SCHROOT_ALIAS_NAME définissent respectivement l'identifiant de session,
le nom de chroot d'origine avant la création de la session et l'alias
utilisé pour identifier le chroot d'origine sélectionné.
Les variables d'environnement, potentiellement dangereuses, suivantes sont
retirées par défaut pour des raisons de
sécurité : BASH_ENV, CDPATH, ENV, HOSTALIASES, IFS,
KRB5_CONFIG, KRBCONFDIR, KRBTKFILE, KRB_CONF, LD_.*, LOCALDOMAIN, NLSPATH,
PATH_LOCALE, RES_OPTIONS, TERMINFO, TERMINFO_DIRS, et TERMPATH. Si
nécessaire, la clé de configuration
environment-filter
permettra de modifier la liste d'exclusion. Consultez
schroot.conf(5)
pour plus de détails.
- /etc/schroot/schroot.conf
- Le fichier de configuration des chroots pour l'ensemble du
système. Ce fichier doit être possédé par
l'utilisateur root et être non inscriptible par les autres.
- /etc/schroot/chroot.d
- Des définitions de chroot supplémentaires
peuvent être placées dans des fichiers de ce
répertoire. Elles sont traitées de la même
façon que /etc/schroot/schroot.conf. Chaque fichier peut
contenir une ou plusieurs définitions de chroot. Notez que les
fichiers de ce répertoire suivent les mêmes règles de
dénomination que run-parts(8) lorsqu'ils sont
exécutés avec l'option --lsbsysinit.
- /etc/schroot/setup.d
- Le répertoire de scripts de mise en place de chroot
pour l'ensemble du système. Consultez schroot-setup(5).
- /etc/pam.d/schroot
- Configuration de PAM.
- /usr/lib/x86_64-linux-gnu/schroot
- Répertoire contenant les programmes d'assistance
utilisés par les scripts de mise en place.
Chaque répertoire contient un répertoire ou un fichier avec le nom
de chaque session. Tous les types de chroot n'utilisent pas tous les
répertoires ci-dessous.
- /var/lib/schroot/session
- Répertoire contenant la configuration de session
pour chaque session active.
- /var/run/schroot/mount
- Répertoire utilisé pour monter le
système de fichiers utilisé pour chaque session active.
- /var/lib/schroot/union/underlay
- Répertoire utilisé comme source d'union de
systèmes de fichiers (sous-couche).
- /var/lib/schroot/union/overlay
- Répertoire utilisé comme sur-couche
inscriptible pour l'union de systèmes de fichiers.
- /var/lib/schroot/unpack
- Répertoire utilisé pour le dépaquetage
de chroots de fichiers.
Roger Leigh.
Copyright © 2005-2012 Roger Leigh <
[email protected]>
schroot est un logiciel libre : vous pouvez le redistribuer et/ou
le modifier aux conditions définies dans la licence publique
générale GNU telle que publiée par la Free Software
Foundation, version 2 ou, selon votre préférence, toute
version ultérieure.
dchroot(1),
sbuild(1),
chroot(2),
schroot.conf(5),
schroot-setup(5),
schroot-faq(7),
run-parts(8).
Ce document est une traduction, réalisée par Thomas Blein le 30
mai 2012.
L'équipe de traduction a fait le maximum pour réaliser une
adaptation française de qualité.
La version anglaise de ce document est toujours consultable en ajoutant l'option
« -L C » à la commande
man.
N'hésitez pas à signaler à l'auteur ou à la liste de
traduction <
[email protected]>, selon le cas,
toute erreur dans cette page de manuel.