NOM¶
schroot — entrer de manière sécurisée dans un
environnement de chroot
RÉSUMɶ
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]]]]
DESCRIPTION¶
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
commandes initial 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. Ce qui est
équivalent à “--chroot=default”.
APERÇU¶
Il y a souvent besoin 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écution de 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, p.ex. 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.
- •
- Construction automatique de paquets Debian en utilisant sbuild(1)
qui construit chaque paquet dans un cliché chroot
dédié quand les clichés LVM ou les unions sont
utilisés.
- •
- Prise en charge d'images multiples de systèmes dans une
installation de cluster 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 du cluster pour les chroots dont ils ont
besoin (ce qui peut inclure des accès root pour les utilisateurs de
confiance afin qu'ils puissent maintenir leurs propres images)
Un chroot peut être utilisé directement en exécutant
chroot(8), mais les utilisateurs standards 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 régulier 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 fichier, incluant les clichés LVM et Btrfs et les
montages « loopback », ou composé d'une
surcouche unionfs. É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).
OPTIONS¶
schroot accepte les options suivantes :
Actions¶
- -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.
Options générales¶
- -q, --quiet
- Afficher uniquement les messages essentiels.
- -v, --verbose
- Afficher tous les messages.
Sélection de chroots.¶
- -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 à être utilisée avec un
interpréteur de commande de connexion (« login
shell »), quand aucune commande n'est
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 seul les chroots réels sont
sélectionnés et qu'ils ne sont listés qu'une seule
fois.
Environnement de chroot¶
- -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.
Actions de 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
retourné 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.
Options de session¶
- -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.
Séparateur¶
- --
- 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.
AUTHENTIFICATION¶
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é.
ESPACES DE NOMS CHROOT¶
Bases des espaces de noms¶
Il y a trois types de chroot différents : les chroots
réguliers, 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.
Chroots source¶
Certains types de chroot comme par exemple les clichés LVM ou Btrfs,
fournissent des cliché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 cliché. Ce sont des chroots réguliers également, juste
désactivant le cliché. 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.
Chroots session¶
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'avait pas d'espaces de noms.
Actions et espaces de noms par défaut¶
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 ambigüité, 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
cliché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.
RÉPERTOIRES DE SUBSTITUTION¶
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.
Interpréteur de commande de connexion¶
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 |
Commande¶
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.
utilisation de --directory¶
Transition |
|
(Hôte → Chroot) |
Commentaire |
|
CWD → DIR |
Comportement normal |
FAIL |
Si DIR n'existe pas |
Aucune solution de repli ne devrait exister en toute circonstance.
Débogage¶
Notez que
--debug=notice affichera la liste interne des
répertoires de repli calculée pour la session.
EXEMPLES¶
Lister les chroots disponibles¶
% 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
-c ou
--all plusieurs fois pour utiliser plusieurs ou
tous les chroots respectivement.
Exécuter des commandes dans un chroot¶
% 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 via un pipe ou autre si besoin ; les données
seront les mêmes que si la commande était exécutée
directement sur le système hôte.
Changer d'utilisateur¶
% 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.
Sessions¶
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
retourné 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
DÉPANNAGES¶
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 valides 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
<buildd-tools-devel@lists.alioth.debian.org>
BOGUES¶
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 à jour votre noyau vers une
version plus récente.
ENVIRONNEMENT¶
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.
FICHIERS¶
Fichiers de configuration¶
- /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.
Répertoires systèmes¶
- /usr/lib/x86_64-linux-gnu/schroot
- Répertoire contenant les programmes d'assistance utilisés
par les scripts de mise en place.
Répertoires de sessions¶
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/lib/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ème de
fichiers (sous-couche).
- /var/lib/schroot/union/overlay
- Répertoire utilisé comme sur-couche inscriptible pour
l'union de système de fichiers.
- /var/lib/schroot/unpack
- Répertoire utilisé pour le dépaquetage de chroots de
fichiers.
AUTEURS¶
Roger Leigh.
COPYRIGHT¶
Copyright © 2005-2012 Roger Leigh <rleigh@debian.org>
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.
VOIR AUSSI¶
dchroot(1),
sbuild(1),
chroot(2),
run-parts(8),
schroot-setup(5),
schroot-faq(7),
schroot.conf(5).