{{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. ===== Pré-requis ===== * Disposer des [[:sudo|droits d'administration]]. * 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 ===== Voici un petit descriptif de l'arborescence de **/etc/schroot** : * **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 l'environnement 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. * **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 en place d'un environnement chroot ===== * Création du répertoire :mkdir chrootN'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érera l'ensemble des paquets. Pour du 64 bits :sudo debootstrap --arch amd64 quantal /chroot/quantal http://us.archive.ubuntu.com/ubuntu/Ou bien, pour installer l'environnement en 32 bits :sudo debootstrap --arch i386 quantal /chroot/quantal http://us.archive.ubuntu.com/ubuntu/Après cela, le dossier **/chroot/quantal/** contient l'arborescence habituelle de la racine de la distribution Ubuntu Quantal Lynx 10.04. * Pour conserver les logins utilisateurs, mots de passe, groupes etc du système hôte, ajouter ces lignes au fichier /etc/schroot/default/copyfiles : /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/hosts /etc/hostname Pour conserver les dépôts de paquets (NE PAS FAIRE lorsque les distributions sont différentes...), ajouter cette ligne: /etc/apt/sources.list * [[:tutoriel:comment_modifier_un_fichier|Configuration du fichier]] **/etc/schroot/schroot.conf** [quantal] description=quantal directory=/chroot/quantal users=user1,user2,... root-groups=root root-users=root type=directory aliases=default 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 :schroot ou bien, si plusieurs environnements chroot sont installés :schroot -c lucidPour quitter l'environnement, utiliser les touches **Ctrl+d** ou bien la commande **exit**. * Démarrer un environnement chroot :schroot -b -c lucidLors du démarrage du chroot, schroot nous donne l'identifiant du chroot, par exemple **lucid-00e8c158-e183-48ad-8407-272808c6b0c6** * S'identifier dans l'environnement schroot :schroot -r -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6 * Stopper le chroot :schroot -e -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6 ===== 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. [squeeze] description=squeeze directory=/chroot/squeeze root-groups=root root-users=root type=directory script-config=script-squeeze * 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** # 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" * 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 # mount.defaults: static file system information for chroots. # Note that the mount point will be prefixed by the chroot path # (CHROOT_PATH) # # 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 ==== Installation du serveur LAMP ==== === Installation === sudo -s schroot -b -c lenny schroot -r -c lenny-00e8c158-e183-48ad-8407-272808c6b0c6 apt-get install apache2 mysql-server php5 === Démarrage automatique du serveur lamp === Pour démarrer de façon automatique la chroot et tout les services que vous désirez, je vous propose ce script : #!/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 -r -c "$SCHROOT_ID" /etc/init.d/apache2 stop schroot -r -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 ===== Voir aussi ===== * [[chroot|chroot]] * **(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 * **(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 : ...//