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 (1)
# cd /usr/src
# make world DESTDIR=$D (2)
# cd etc/ [1]
# make distribution DESTDIR=$D (3)
# mount_devfs devfs $D/dev (4)
(1)
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.
(2)
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.
(3)
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/.
(4)
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.

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>.