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édentes Révision précédente
Prochaine révision
Révision précédente
schroot [Le 27/10/2010, 17:31]
zarkxe
schroot [Le 07/01/2023, 15:18] (Version actuelle)
Amiralgaby [Installation du serveur LAMP] utilisation de guillemets dans le script pour éviter les "words-splitting"
Ligne 1: Ligne 1:
-====== ​Schroot ​======+{{tag>​système sécurité BROUILLON}} 
 +---- 
 +====== ​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és à un environnement virtuel, même si le niveau de sécurité n'est pas le même que les "​vraies technique de virutaliation"​. En outre il n'y a pas de surcoût sauf l'​utilisation du disque dur. 
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 7: Ligne 12:
   * Disposer des [[:​sudo|droits d'​administration]].   * Disposer des [[:​sudo|droits d'​administration]].
   * Disposer d'une connexion à Internet configurée et activée.   * Disposer d'une connexion à Internet configurée et activée.
 +
 +===== Installation =====
 +
 +Il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt://​schroot,​debootstrap|schroot debootstrap]]**.
  
 ===== L'​arborescence ===== ===== L'​arborescence =====
-  . + 
-  ​|-- chroot.d : On peu placer des fichiers de configuration ​suplementaire ​dans se reperoitre ​qui seront ​lu de la même maniere ​que schroot.conf +Voici un petit descriptif de l'​arborescence de **/​etc/​schroot** : 
-  ​|-- copyfiles-defaults : Les fichiers à copier à partir du système hôte dans le chroot + 
-  ​|-- mount-defaults : Les systèmes de fichiers à monter à l'​intérieur du chroot. +  ​* **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 
-  ​|-- nssdatabases-defaults : Système de bases de données NSS à copier dans le chroot. +  ​* **copyfiles-defaults** : Les fichiers à copier à partir du système hôte dans l'​environnement ​chroot 
-  ​|-- schroot.conf : Définie ​chaque chroot à mettre en place +  ​* **mount-defaults** : Les systèmes de fichiers à monter à l'​intérieur du chroot. 
-  ​|-- script-defaults : Script ​éxecuter ​par défaut lors du démarrage ​d'une chroot +  ​* **nssdatabases-defaults** : Système de base de données NSS à copier dans le chroot. 
-  ​`-- setup.d : Dossier qui possède des scripts de configuration+  ​* **schroot.conf** Définit ​chaque chroot à mettre en place 
 +  ​* **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
   ​   ​
-===== Mise place d'un environnement chrooter ===== 
-  * Création du répertoire 
  
-  sudo mkdir /chroot+===== Mise en place d'un environnement chroot ===== 
 +  * Création du répertoire :<​code>​mkdir chroot</​code>​N'​importe quel répertoire peut faire l'​affaire. L'​exemple est donné avec le dossier **/chroot**, à changer à loisir.
  
-  * Installation d'une distribution (ubuntu). Pour cela on récupérer ​l'​ensemble des paquets+  * Installation d'une distribution (Ubuntu). Pour celaon récupérera ​l'​ensemble des paquets. Pour du 64 bits :<​code>​sudo debootstrap --arch amd64 quantal /​chroot/​quantal http://​us.archive.ubuntu.com/​ubuntu/</​code>​Ou bien, pour installer l'​environnement en 32 bits :<​code>​sudo debootstrap --arch i386 quantal /​chroot/​quantal http://​us.archive.ubuntu.com/​ubuntu/</​code>​Après cela, le dossier **/​chroot/​quantal/​** contient l'​arborescence habituelle de la racine de la distribution Ubuntu Quantal Lynx 10.04.
  
-  ​sudo debootstrap --arch amd64 lucid /chroot/lucid http://us.archive.ubuntu.com/ubuntu+  ​* Pour conserver les logins utilisateurs,​ mots de passe, groupes etc du système hôte, ajouter ces lignes au fichier ​/etc/schroot/​default/​copyfiles ​:<​code>​ 
-Ou +/etc/passwd 
-  sudo debootstrap --arch i386 lucid /chroot/lucid http://us.archive.ubuntu.com/ubuntu/+/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>
  
-  * Configuration de **/​etc/​schroot/​schroot.conf** 
  
-  [lucid+  ​[[:​tutoriel:​comment_modifier_un_fichier|Configuration du fichier]] **/​etc/​schroot/​schroot.conf**<​file>​ 
-  description=lucid +[quantal
-  directory=/​chroot/​lucid +description=quantal 
-  root-groups=root +directory=/​chroot/​quantal 
-  root-users=root +users=user1,​user2,​... 
-  type=directory+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**.
  
-===== Gestion de la chroot ===== +  ​* 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**
-  ​* Démarrer ​une chroot : +
  
-  schroot --c lucid+  ​* S'​identifier dans l'​environnement schroot :<​code>​schroot --c lucid-00e8c158-e183-48ad-8407-272808c6b0c6</​code>​ 
 + 
 +  * Stopper le chroot :<​code>​schroot -e -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 ​      0 
 +/​dev/​pts ​       /​dev/​pts ​       none    rw,​bind ​        ​0 ​      0 
 +/​dev/​shm ​       /​dev/​shm ​       none    rw,​bind ​        ​0 ​      0 
 +#/​home ​         /home           ​none ​   rw,​bind ​        ​0 ​      0 
 +#/tmp           /​tmp ​           none    rw,​bind ​        ​0 ​      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'​indentifier 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
  
-  * Stop 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|schroot [FR]]] +  ​* **(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://​www.debian-administration.org/​articles/​566|schroot - chroot for any users [EN]]]+  * **(fr)** ​[[http://​cepcasa.info/​apt/​debootstrap.html|Installer Debian depuis une distribution Debian avec debootstrap]] 
 +  ​* **(en)** [[http://​www.debian-administration.org/​articles/​566|schroot - chroot for any users]] 
 + 
 +---- 
 +//​Contributeur principal :​ ...//
  • schroot.1288193479.txt.gz
  • Dernière modification: Le 18/04/2011, 14:39
  • (modification externe)