Manuel FreeBSD
Précédent | Chapitre 15. Environnements jail | Suivant

# 15.4. Création et contrôle de l'environnement jail

Certains administrateurs divisent les environnements jail en deux catégories: les environnements jails complets, qui ressemblent à un véritable système FreeBSD, et les environnements jails de service, qui sont dédiés à une application ou un seul service, et tournant éventuellement avec des privilèges. Cette séparation est juste conceptuelle et n'affecte pas la création de l'environnement jail. La page de manuel jail(8) est très claire quant à la procédure de création d'un environnement jail:

    # setenv D /here/is/the/jail
    # mkdir -p $D
    # cd /usr/src
    # make world DESTDIR=$D
    # cd etc/ [1]
    # make distribution DESTDIR=$D
    # mount_devfs devfs $D/dev

  Sélectionner un emplacement pour l'environnement est le meilleur point de départ. C'est l'endroit où l'environnement jail se trouvera dans le système de fichiers de la machine hôte. Un bon choix peut être `/usr/jail/`jailname``, où `jailname` est le nom de machine identifiant l'environnement jail. Le système de fichiers `/usr/` dispose généralement de suffisamment d'espace pour le système de fichiers de l'environnement jail, qui est pour les environnements complets, essentiellement, une copie de chaque fichier présent dans une installation par défaut du système de base de FreeBSD.
  Cette commande peuplera l'arborescence du répertoire choisi comme emplacement pour l'environnement jail avec les binaires, les bibliothèques, les pages de manuel, etc. nécessaires. Tout sera fait selon le style FreeBSD habituel -- en premier lieu tout est compilé, puis ensuite installé à l'emplacement voulu.
  La cible `distribution` pour make installe tous les fichiers de configuration nécessaires. Ou pour faire simple, cette commande installe tous les fichiers installables du répertoire `/usr/src/etc/` vers le répertoire `/etc` de l'environnement jail: `$D/etc/`.
  Le montage du système de fichiers devfs(8) à l'intérieur d'un environnement jail n'est pas requis. Cependant, toutes, ou presque toutes les applications nécessitent l'accès à au moins un périphérique, en fonction du rôle de l'application. Il est vraiment important de contrôler l'accès aux périphériques depuis l'intérieur d'un environnement jail, comme un mauvais paramétrage pourrait permettre à quelqu'un de malintentionné de faire de mauvaises choses dans l'environnemane jail. Le contrôle sur devfs(8) est géré par l'intermédiaire d'un ensemble de règles qui est décrit dans les pages de manuel devfs(8) et devfs.conf(5).

Une fois l'environnement jail installé, il peut être lancé en employant l'utilitaire jail(8). Cet outil requiert obligatoirement quatre arguments qui sont décrits dans la Section 15.3.1. D'autres arguments peuvent également être utilisés, pour par exemple exécuter le processus avec les droits d'un utilisateur particulier. L'argument ``command`` dépend du type d'environnement; pour un système virtuel, `/etc/rc` est un bon choix puisque la séquence de démarrage d'un véritable système FreeBSD sera dupliquée. Pour un environnement jail de type service, cela dépendra du service ou de l'application qui sera exécuté dans l'environnement jail.

Les environnements jails sont souvent lancés au démarrage de la machine et le système `rc` de FreeBSD propose une méthode simple pour cela.

1. Une liste des environnements jail autorisés à être lancés au démarrage du système devrait être ajoutée au fichier rc.conf(5):

       jail_enable="YES"   # Utiliser NO pour désactiver le lancement des environnements jail
       jail_list="www"     # Liste des noms des environnements jail séparés par une espace

2. Pour chaque environnement listé dans `jail_list`, un ensemble de paramètres rc.conf(5), qui décrivent l'environnement jail, devrait être ajouté:

       jail_www_rootdir="/usr/jail/www"     # le répertoire racine de l'environnement jail
       jail_www_hostname="www.example.org"  # le nom de machine de l'environnement jail
       jail_www_ip="192.168.0.10"           # son adresse IP
       jail_www_devfs_enable="YES"          # monter devfs dans l'environnement jail
       jail_www_devfs_ruleset="www_ruleset" # les règles devfs à appliquer à l'environnement jail

   Le démarrage par défaut des environnements jails, configuré dans rc.conf(5), exécutera la procédure `/etc/rc` de l'environnement jail, ce qui suppose que l'environnement est un système virtuel complet. Pour les environnements jail de service, la commande de démarrage par défaut de l'environnement devrait être modifiée en configurant correctement l'option `jail_`jailname`_exec_start`.

   > Note : Pour une liste complète des options disponibles, veuillez consulter la page de manuel rc.conf(5).

La procedure `/etc/rc.d/jail` peut être utilisée pour démarrer ou arrêter un environnement jail à la main si une entrée pour l'environnement existe dans le fichier `rc.conf`:

    # /etc/rc.d/jail start www
    # /etc/rc.d/jail stop www

Il n'existe pas pour le moment de méthode propre pour arrêter un environnement jail(8). C'est dû au fait que les commandes normalement employées pour arrêter proprement un système ne peuvent être utilisées à l'intérieur d'un environnement jail. La meilleur façon d'arrêter un environnement jail est de lancer la commande suivante à l'intérieur de l'environnement ou en utilisant le programme jexec(8) depuis l'extérieur de l'environnement:

    # sh /etc/rc.shutdown

Plus d'information à ce sujet peut être trouvé dans la page de manuel de jail(8).

### Notes

[1] | Cette étape n'est pas requise sous FreeBSD 6.0 et versions ultérieures.

Précédent | Sommaire | Suivant
Introduction | Niveau supérieur | Optimisation et administration

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.