Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
schroot [Le 28/10/2010, 10:06] zarkxeschroot [Le 12/02/2026, 18:46] (Version actuelle) andykimpe
Ligne 1: Ligne 1:
-{{tag>système BROUILLON sécurité}}+{{tag>système sécurité BROUILLON}}
 ---- ----
-====== Schroot ======+====== schroot ====== 
 + 
 +**schroot** permet de gérer plus efficacement un environnement [[wpfr>chroot]]. L'usage de ces deux outils (schroot et chroot) permet de créer un [[virtualisation|environnement virtualisé]] minimal. Puisque le système d'exploitation de l'environnement chroot partage le même noyau que le système « hôte », les ressources système (mémoire vive, processeur) sont moins sollicitées, mis à part l'utilisation du disque dur. 
 + 
 +En terme de sécurité, schroot est moins robuste que les solutions de [[virtualisation]] régulières.
  
-Schroot nous permet de gérer plus efficacement un environnement chrooter. Il peut être assimilé à un environnement virtuel, même si le niveau de sécurité n'est pas le même que les "vraies techniques de virtualisation". En outre, il n'y a pas de surcoût sauf l'utilisation du disque dur. 
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 17: Ligne 20:
  
 Voici un petit descriptif de l'arborescence de **/etc/schroot** : Voici un petit descriptif de l'arborescence de **/etc/schroot** :
-  . + 
-  |-- chroot.d : On peut placer des fichiers de configuration supplémentaires dans ce repertoire qui seront lus de la même manière que schroot.conf +  * **chroot.d** : On peut placer des fichiers de configuration supplémentaires dans ce répertoire qui seront lus de la même manière que schroot.conf 
-  |-- copyfiles-defaults : Les fichiers à copier à partir du système hôte dans le chroot +  * **copyfiles-defaults** : Les fichiers à copier à partir du système hôte dans l'environnement chroot 
-  |-- mount-defaults : Les systèmes de fichiers à monter à l'intérieur du chroot. +  * **mount-defaults** : Les systèmes de fichiers à monter à l'intérieur du chroot. 
-  |-- nssdatabases-defaults : Système de base de données NSS à copier dans le chroot. +  * **nssdatabases-defaults** : Système de base de données NSS à copier dans le chroot. 
-  |-- schroot.conf : Définit chaque chroot à mettre en place +  * **schroot.conf** : Définit chaque chroot à mettre en place 
-  |-- script-defaults : Script à éxecuter par défaut lors du démarrage d'une chroot +  * **script-defaults** : Script à exécuter par défaut lors du démarrage de l'environnement chroot 
-  `-- setup.d : Dossier qui possède des scripts de configuration+  * **setup.d** : Dossier qui possède des scripts de configuration
      
  
-===== Mise place d'un environnement chrooter ===== +===== Mise en place d'un environnement chroot ===== 
-  * Création du répertoire+  * Création du répertoire :<code>sudo mkdir /chroot</code>N'importe quel répertoire peut faire l'affaire. L'exemple est donné avec le dossier **/chroot**, à changer à loisir.
  
-  sudo mkdir /chroot+  * Installation d'une distribution (Ubuntu). Pour cela, on récupérera l'ensemble des paquets. Pour du 64 bits :<code>sudo debootstrap --arch amd64 noble /chroot/noble http://fr.archive.ubuntu.com/ubuntu/</code>Ou bien, pour installer l'environnement en 32 bits Debian 12 dernier OS 32 bits :<code>sudo debootstrap --arch i386 bookworm /chroot/bookworm http://ftp.fr.debian.org/debian</code>Après cela, le dossier **/chroot/noble/** contient l'arborescence habituelle de la racine de la distribution Ubuntu Noble 24.04 LTS ou dossier /chroot/bookworm debian 12 stable 32 bits.
  
-  * Installation d'une distribution (Ubuntu). Pour celaon récupérera l'ensemble des paquets :+  * Pour conserver les logins utilisateursmots de passe, groupes etc du système hôte, ajouter ces lignes au fichier /etc/schroot/default/copyfiles :<code> 
 +/etc/passwd 
 +/etc/shadow 
 +/etc/group 
 +/etc/sudoers 
 +/etc/hosts 
 +/etc/hostname 
 +</code>Pour conserver les dépôts de paquets (NE PAS FAIRE lorsque les distributions sont différentes...), ajouter cette ligne:<code> 
 +/etc/apt/sources.list 
 +</code>
  
-  sudo debootstrap --arch amd64 lucid /chroot/lucid http://us.archive.ubuntu.com/ubuntu/ 
-Ou 
-  sudo debootstrap --arch i386 lucid /chroot/lucid http://us.archive.ubuntu.com/ubuntu/ 
  
-  * Configuration de **/etc/schroot/schroot.conf**+  * [[:tutoriel:comment_modifier_un_fichier|Configuration du fichier]] **/etc/schroot/schroot.conf**<file> 
 +[noble] 
 +description=noble 
 +directory=/chroot/noble 
 +users=user1,user2,... 
 +root-groups=root 
 +root-users=root 
 +type=directory 
 +aliases=default 
 +</file>Et remplacer "user1", "user2" par les utilisateurs ayant le droit d'utiliser le chroot. La ligne peut être remplacée par "groups=schroot" par exemple, en ajoutant les utilisateurs au groupe "schroot"
 +===== Utilisation courante ===== 
 +  * Pour se connecter dans un environnement chroot et avoir la main en ligne de commande :<code>schroot</code> ou bien, si plusieurs environnements chroot sont installés :<code>schroot -c lucid</code>Pour quitter l'environnement, utiliser les touches **Ctrl+d** ou bien la commande **exit**.
  
-  [lucid+  * Démarrer un environnement chroot :<code>schroot -b -c lucid</code>Lors du démarrage du chroot, schroot nous donne l'identifiant du chroot, par exemple **lucid-00e8c158-e183-48ad-8407-272808c6b0c6**
-  description=lucid +
-  directory=/chroot/lucid +
-  root-groups=root +
-  root-users=root +
-  type=directory+
  
-===== Gestion de la chroot ===== +  S'identifier dans l'environnement schroot :<code>schroot -r -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6</code>
-  Démarrer une chroot +
  
-  schroot --c lucid+  * Stopper le chroot :<code>schroot --c lucid-00e8c158-e183-48ad-8407-272808c6b0c6</code> 
 + 
 +===== Exemple d'utilisation avancée ===== 
 + 
 +Nous allons installer un serveur [[LAMP|LAMP]] dans un environnement chroot. Le système exploitation hôte sera une distribution ubuntu. Par contre le système invité sera une distribution Debian. 
 + 
 +==== Configuration de schroot ==== 
 + 
 + 
 +  * Installation d'une distribution Debian. Pour cela, on récupérera l'ensemble des paquets : 
 + 
 +  debootstrap --arch amd64 squeeze /chroot/squeeze http://ftp.fr.debian.org/debian/ 
 + 
 +  * [[:tutoriel:comment_modifier_un_fichier|Configuration du fichier]] **/etc/schroot/schroot.conf**, on ajoute notre nouvelle distribution debian. 
 +<file> 
 +[squeeze] 
 +description=squeeze 
 +directory=/chroot/squeeze 
 +root-groups=root 
 +root-users=root 
 +type=directory 
 +script-config=script-squeeze 
 +</file> 
 + 
 +  * On crée le fichier script-squeeze qui a la même structure et qui se trouve dans répertoire que script-defaults 
 + 
 +  touch /etc/schroot/script-squeeze 
 + 
 +  * Puis, on édite le fichier **/etc/schroot/script-squeeze** 
 +<file> 
 +# Default settings for chroot setup and exec scripts. 
 +# See schroot-script-config(5) for further details. 
 + 
 +# Filesystems to mount inside the chroot. 
 +FSTAB="/etc/schroot/mount-squeeze" 
 +</file> 
 +  * On copie le fichier /etc/schroot/mount-defaults 
 + 
 +  cp /etc/schroot/mount-defaults /etc/schroot/mount-squeeze 
 + 
 +  * On commente les lignes dont le montage ne doit pas s'effectuer 
 +<file> 
 +# mount.defaults: static file system information for chroots. 
 +# Note that the mount point will be prefixed by the chroot path 
 +# (CHROOT_PATH) 
 +
 +# <file system> <mount point>   <type>  <options>       <dump>  <pass> 
 +proc            /proc           proc    defaults        0       0 
 +#procbususb      /proc/bus/usb   usbfs   defaults        0       0 
 +/dev            /dev            none    rw,bind               0 
 +/dev/pts        /dev/pts        none    rw,bind               0 
 +/dev/shm        /dev/shm        none    rw,bind               0 
 +#/home          /home           none    rw,bind               0 
 +#/tmp           /tmp            none    rw,bind               0 
 +</file>
      
-Lors du démarrage de la chroot, schroot nous donne l'identifiant de la chroot par exemple **lucid-00e8c158-e183-48ad-8407-272808c6b0c6**+==== Installation du serveur LAMP ====
  
-  * S'identifier dans la schroot :+=== Installation ===
  
-  schroot -r -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6+  sudo -s 
 +  schroot -b -c lenny 
 +  schroot -r -c lenny-00e8c158-e183-48ad-8407-272808c6b0c6 
 +  apt-get install apache2 mysql-server php5
  
-  * Stopper une chroot+=== Démarrage automatique du serveur lamp ===
  
-  schroot -e -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6 +Pour démarrer de façon automatique la chroot et tout les services que vous désirez, je vous propose ce script : 
- +<code bash> 
 +#!/bin/bash 
 + 
 +#****************************************************************************** 
 +# File : /etc/init.d/schrootlamp 
 +
 +# Auteur : Zarkxe 
 +
 +# Date create : Mon Nov  1 16:01:09 2010 
 +# Description : démarrer de façon automatique la chroot et tout les services 
 +# que vous désiré 
 +#****************************************************************************** 
 + 
 +. /lib/lsb/init-functions 
 + 
 +NAMESCRIPT="schrootlamp" 
 + 
 +do_start() { 
 + 
 + if [ ! -e "/tmp/schroot/$NAMESCRIPT" ]; then 
 + 
 + SCHROOT_ID=$(schroot -b -c lenny) 
 + 
 + schroot -r -c "$SCHROOT_ID" /etc/init.d/mtab.sh  
 + schroot -r -c "$SCHROOT_ID" /etc/init.d/mysql start 
 + schroot -r -c "$SCHROOT_ID" /etc/init.d/apache2 start 
 + schroot -r -c "$SCHROOT_ID" /etc/init.d/exim4 start 
 + 
 + mkdir /tmp/schroot/ 
 + echo "$SCHROOT_ID" >  /tmp/schroot/$NAMESCRIPT 
 + 
 + elif [ -e "/tmp/schroot/$NAMESCRIPT" ]; then 
 + echo "$NAMESCRIPT is already running" 
 + fi 
 +
 + 
 +do_stop() { 
 + 
 + if [ -e "/tmp/schroot/$NAMESCRIPT" ]; then 
 + SCHROOT_ID=$(cat /tmp/schroot/$NAMESCRIPT) 
 + schroot -r -c "$SCHROOT_ID" /etc/init.d/mysql stop 
 + schroot --c "$SCHROOT_ID" /etc/init.d/apache2 stop 
 + schroot --c "$SCHROOT_ID" /etc/init.d/exim4 stop 
 + schroot -e -c "$SCHROOT_ID" 
 + 
 + rm -R /tmp/schroot/ 
 + elif [ ! -e "/tmp/schroot/$NAMESCRIPT" ]; then 
 + echo "$NAMESCRIPT is not starting" 
 + fi 
 +
 + 
 +case $1 in  
 + start) 
 + log_daemon_msg "Starting configuration" $NAMESCRIPT 
 + if [[ $EUID = 0 ]] 
 + then 
 + do_start 
 + log_end_msg 0 
 + else 
 + log_end_msg 1 
 + echo "You are not root !" 
 +  
 + fi 
 + ;; 
 + stop) 
 + log_daemon_msg  "Stopping configuration" $NAMESCRIPT 
 + if [[ $EUID = 0 ]] 
 + then 
 + do_stop 
 + log_end_msg 0 
 + else 
 + log_end_msg 1 
 + echo "You are not root !" 
 + fi  
 + ;; 
 + restart) 
 + log_daemon_msg  "restarting configuration" $NAMESCRIPT 
 + if [[ $EUID = 0 ]] 
 + then 
 + do_stop 
 + do_start 
 + log_end_msg 0 
 + else 
 + log_end_msg 1 
 + echo "You are not root !" 
 + fi  
 + ;; 
 + status) 
 + if [[ $EUID = 0 ]] 
 + then 
 + if [ ! -e "/tmp/schroot/$NAMESCRIPT" ]; then 
 + echo "$NAMESCRIPT isn't running" 
 + elif [ -e "/tmp/schroot/$NAMESCRIPT" ]; then 
 + SCHROOT_ID=$(cat /tmp/schroot/$NAMESCRIPT) 
 + echo "$NAMESCRIPT is running : $SCHROOT_ID" 
 + fi 
 + else 
 + echo "You are not root !" 
 + fi 
 + ;; 
 +     *) 
 + log_daemon_msg  "./$NAMESCRIPT [start|stop|restart|status]" 
 + ;; 
 +esac 
 +</code>
  
 ===== Voir aussi ===== ===== Voir aussi =====
   * [[chroot|chroot]]   * [[chroot|chroot]]
-  * [[http://ftp.traduc.org/doc-vf/gazette-linux/html/2008/150/lg150-C.html|[FR] schroot]] +  * **(fr)** [[https://ftp.traduc.org/doc-vf/gazette-linux/html/2008/150/lg150-C.html|Virtualiser sans virtualiser]], article sur l'usage de chroot et schroot 
-  * [[http://cepcasa.info/apt/debootstrap.html|[FR] Installer Debian depuis une distribution Debian avec debootstrap]] +  * **(fr)** [[http://cepcasa.info/apt/debootstrap.html|Installer Debian depuis une distribution Debian avec debootstrap]] 
-  * [[http://www.debian-administration.org/articles/566|[EN] schroot - chroot for any users]]+  * **(en)** [[http://www.debian-administration.org/articles/566|schroot - chroot for any users]] 
 + 
 +---- 
 +//Contributeur principal : ...//