Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
schroot [Le 31/10/2010, 15:23] – Remaniement de la description basé sur message de zarkxe sur la liste, correction de l'usage du mot chroot (n'étant pas un mot français, on n'en fait pas un participe passé...) Gemnoc | schroot [Le 12/02/2016, 11:35] (Version actuelle) – [Configuration de schroot] 82.240.126.100 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== schroot ====== | ||
+ | **schroot** permet de gérer plus efficacement un environnement [[wpfr> | ||
+ | |||
+ | En terme de sécurité, schroot est moins robuste que les solutions de [[virtualisation]] régulières. | ||
+ | |||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée. | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Il suffit d' | ||
+ | |||
+ | ===== L' | ||
+ | |||
+ | Voici un petit descriptif de l' | ||
+ | |||
+ | * **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' | ||
+ | * **mount-defaults** : Les systèmes de fichiers à monter à l' | ||
+ | * **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' | ||
+ | * **setup.d** : Dossier qui possède des scripts de configuration | ||
+ | | ||
+ | |||
+ | ===== Mise en place d'un environnement chroot ===== | ||
+ | * Création du répertoire :< | ||
+ | |||
+ | * Installation d'une distribution (Ubuntu). Pour cela, on récupérera l' | ||
+ | |||
+ | * Pour conserver les logins utilisateurs, | ||
+ | /etc/passwd | ||
+ | /etc/shadow | ||
+ | /etc/group | ||
+ | / | ||
+ | /etc/hosts | ||
+ | / | ||
+ | </ | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | |||
+ | * [[: | ||
+ | [quantal] | ||
+ | description=quantal | ||
+ | directory=/ | ||
+ | users=user1, | ||
+ | root-groups=root | ||
+ | root-users=root | ||
+ | type=directory | ||
+ | aliases=default | ||
+ | </ | ||
+ | ===== Utilisation courante ===== | ||
+ | * Pour se connecter dans un environnement chroot et avoir la main en ligne de commande :< | ||
+ | |||
+ | * Démarrer un environnement chroot :< | ||
+ | |||
+ | * S' | ||
+ | |||
+ | * Stopper le chroot :< | ||
+ | |||
+ | ===== Exemple d' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | debootstrap --arch amd64 squeeze / | ||
+ | |||
+ | * [[: | ||
+ | < | ||
+ | [squeeze] | ||
+ | description=squeeze | ||
+ | directory=/ | ||
+ | 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 / | ||
+ | |||
+ | * Puis, on édite le fichier **/ | ||
+ | < | ||
+ | # Default settings for chroot setup and exec scripts. | ||
+ | # See schroot-script-config(5) for further details. | ||
+ | |||
+ | # Filesystems to mount inside the chroot. | ||
+ | FSTAB="/ | ||
+ | </ | ||
+ | * On copie le fichier / | ||
+ | |||
+ | cp / | ||
+ | |||
+ | * On commente les lignes dont le montage ne doit pas s' | ||
+ | < | ||
+ | # mount.defaults: | ||
+ | # Note that the mount point will be prefixed by the chroot path | ||
+ | # (CHROOT_PATH) | ||
+ | # | ||
+ | # <file system> <mount point> | ||
+ | proc /proc | ||
+ | # | ||
+ | /dev /dev none rw, | ||
+ | / | ||
+ | / | ||
+ | #/ | ||
+ | #/tmp / | ||
+ | </ | ||
+ | | ||
+ | ==== 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 : | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # | ||
+ | # File : / | ||
+ | # | ||
+ | # 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é | ||
+ | # | ||
+ | |||
+ | . / | ||
+ | |||
+ | NAMESCRIPT=" | ||
+ | |||
+ | do_start() { | ||
+ | |||
+ | if [ ! -e "/ | ||
+ | |||
+ | SCHROOT_ID=$(schroot -b -c lenny) | ||
+ | |||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | |||
+ | mkdir / | ||
+ | echo $SCHROOT_ID > / | ||
+ | |||
+ | elif [ -e "/ | ||
+ | echo " | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | do_stop() { | ||
+ | |||
+ | if [ -e "/ | ||
+ | SCHROOT_ID=$(cat / | ||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | schroot -r -c $SCHROOT_ID / | ||
+ | schroot -e -c $SCHROOT_ID | ||
+ | |||
+ | rm -R / | ||
+ | elif [ ! -e "/ | ||
+ | echo " | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | case $1 in | ||
+ | | ||
+ | log_daemon_msg " | ||
+ | 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 | ||
+ | if [[ $EUID = 0 ]] | ||
+ | then | ||
+ | do_stop | ||
+ | log_end_msg 0 | ||
+ | else | ||
+ | log_end_msg 1 | ||
+ | echo "You are not root !" | ||
+ | fi | ||
+ | ;; | ||
+ | | ||
+ | log_daemon_msg | ||
+ | if [[ $EUID = 0 ]] | ||
+ | then | ||
+ | do_stop | ||
+ | do_start | ||
+ | log_end_msg 0 | ||
+ | else | ||
+ | log_end_msg 1 | ||
+ | echo "You are not root !" | ||
+ | fi | ||
+ | ;; | ||
+ | | ||
+ | if [[ $EUID = 0 ]] | ||
+ | then | ||
+ | if [ ! -e "/ | ||
+ | echo " | ||
+ | elif [ -e "/ | ||
+ | SCHROOT_ID=$(cat / | ||
+ | echo " | ||
+ | fi | ||
+ | else | ||
+ | echo "You are not root !" | ||
+ | fi | ||
+ | ;; | ||
+ | *) | ||
+ | log_daemon_msg | ||
+ | ;; | ||
+ | esac | ||
+ | </ | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | * [[chroot|chroot]] | ||
+ | * **(fr)** [[http:// | ||
+ | * **(fr)** [[http:// | ||
+ | * **(en)** [[http:// | ||
+ | |||
+ | ---- | ||
+ | // |