Je dois signaler que si vous avez une installation existante de BIND, par exemple en provenance d'un RPM, vous devrez probablement la désinstaller avant d'installer la nouvelle. Sur un système Red Hat, cela implique probablement de désinstaller les paquetages bind et bind-utils, et peut-être bind-devel et caching-nameserver, si vous les avez.
Vous voudrez sans doute sauvegarder une copie du script d'init (par exemple
/etc/rc.d/init.d/named
), s'il y a en un, avant de
faire ceci ; ce sera utile plus tard.
C'est la partie facile :-). Il vous suffit d'exécuter make
install et laissez faire le tout pour vous. Vous pouvez
vouloir faire un chmod 000 /usr/local/sbin/named
par la suite, pour être sûr que vous n'exécutez pas accidentellement une
copie de BIND hors environnement restreint (il s'agit de
/usr/sbin/named
si vous ne lui avez pas dit d'aller
dans /usr/local/sbin
comme je
l'ai suggéré).
Seuls deux parties du paquetage doivent s'exécuter à l'intérieur de l'environnement restreint : le démon principal named lui-même, et named-xfer, qui est utilisé pour les transferts de zone. Vous pouvez simplement les copier depuis l'arborescence source :
# cp src/bin/named/named /chroot/named/bin # cp src/bin/named-xfer/named-xfer /chroot/named/bin
Si vous avez un script d'init provenant de votre distribution, le mieux serait probablement de simplement le modifier pour exécuter /chroot/named/bin/named, avec les paramètres appropriés. Les paramètres sont… (roulement de tambour s'il vous plaît…)
-u named
, qui demande à BIND de s'exécuter en tant
qu'utilisateur named
, plutôt que
root
.
-g named
, pour exécuter BIND avec le groupe
named
également, plutôt que root
ou wheel
.
-t /chroot/named
, qui demande à BIND de s'exécuter dans
l'environnement restreint que nous avons construit.
Ce qui suit est le script d'init que j'utilise avec mon système Red Hat
6.0. Comme vous pouvez voir, il est presque identique à celui
livré par Red Hat. J'ai aussi modifié la commande ndc
restart
de façon à ce qu'elle redémarre le serveur correctement,
et le garde à l'intérieur de l'environnement restreint. Vous pouvez
probablement faire la même chose dans votre script d'init, sans avoir à
copier celui-ci.
#!/bin/sh # # named Le rôle de ce script "shell" est de démarrer et d'arrêter # named (serveur DNS BIND) # # chkconfig: 345 55 45 # description: named (BIND) est le serveur de nom de domain (DNS) # qui est utilisé pour résoudre les noms de domaines en adresses IP. # probe: true # Bibliothèque basique de fonctions. . /etc/rc.d/init.d/functions # Configuration basique du réseau. . /etc/sysconfig/network # Vérifie que la gestion du réseau est assurée [ ${NETWORKING} = "no" ] && exit 0 [ -f /chroot/named/bin/named ] || exit 0 [ -f /chroot/named/etc/named.conf ] || exit 0 # En fonction de ce qui est appelé case "$1" in start) # Démarrer le démon. echo -n "Démarrage de named : " daemon /chroot/named/bin/named -u named -g named -t /chroot/named echo touch /var/lock/subsys/named ;; stop) # Arrêter le démon. echo -n "Arrêt de named : " killproc named rm -f /var/lock/subsys/named echo ;; status) /usr/local/sbin/ndc status exit $? ;; restart) /usr/local/sbin/ndc -n /chroot/named/bin/named "restart -u named -g named -t /chroot/named" exit $? ;; reload) /usr/local/sbin/ndc reload exit $? ;; probe) # named sait comment redémarrer intelligemment ; nous ne voulons pas # que linuxconf nous propose de le redémarrer à chaque fois /usr/local/sbin/ndc reload >/dev/null 2>&1 || echo start exit 0 ;; *) echo "Utilisation: named {start|stop|status|restart}" exit 1 esac exit 0
Sur les systèmes Caldera OpenLinux, vous avez juste besoin de modifier les variables définies au début et le système va s'occuper du reste pour vous :
NAME=named DAEMON=/chroot/named/bin/$NAME OPTIONS="-t /chroot/named -u named -g named"
Vous devez aussi ajouter ou modifier quelques options dans votre
named.conf
pour avoir vos différents répertoires en
ordre. En particulier, vous devez ajouter (ou changer, si vous les avez
déjà) les directives suivantes dans la section
options
:
directory "/etc/namedb"; pid-file "/var/run/named.pid"; named-xfer "/bin/named-xfer";
Puisque ce fichier est lu par le démon named, tous les chemins sont naturellement relatifs à l'environnement restreint.
Quelques personnes ont aussi rapporté devoir ajouter quelques lignes
supplémentaires à leur named.conf
pour obtenir un
fonctionnement correct de ndc :
controls { unix "/var/run/ndc" perm 0600 owner 0 group 0; };