3. Installer un serveur NFS

Contenu de cette section

3.1 Conditions préalables

Avant de continuer à lire ce HOWTO, vous aurez besoin de pouvoir faire des telnet dans les deux sens entre les machines que vous utiliserez comme serveur et client. Si cela ne fonctionne pas, voyez le HOWTO réseau et configurez correctement le réseau.

3.2 Et le premier jour, Dieu dit...

Avant de faire quoi que ce soit d'autre, il nous faut un serveur NFS installé. Si vous faites partie d'un département réseau d'une université ou autre, il y a probablement un grand nombre de serveurs NFS qui tournent déjà. Si votre but est d'utiliser un serveur déjà installé alors vous pouvez sauter à la section 4.

Si vous devez installer un serveur sur une machine non Linux il vous faudra lire les pages de manuel du système pour trouver comment configurer le serveur NFS et l'exportation des systèmes de fichiers par NFS. Les mot-clés sont : nfsd, outil d'administration système, scripts rc, scripts de démarrage, séquence de démarrage, /etc/exports, exportfs (en anglais system administration tool, rc scripts, boot scripts, boot sequence). Ceci fait, vous pourrez passer à la section suivante de ce HOWTO. Ou continuer à lire cette section vu que certaines des choses que je vais dire sont pertinentes quel que soit le type de machine que vous utilisez comme serveur.

Ceux de vous qui continueront la lecture devront configurer un grand nombre de programmes.

3.3 Le portmapper

Le portmapper de Linux est appelé soit portmap soit rpc.portmap. La page de manuel sur mon système dit que c'est un convertisseur de port DARPA vers numéro de programme RPC. C'est là que se trouve la première faille de sécurité. La gestion de ce problème est décrite à la section 5, que, encore une fois, je vous invite très fortement à lire.

Lancez le portmapper. Il devrait être dans le répertoire /usr/sbin (sur quelques machines il est appelé rpcbind). Vous pouvez le lancer à la main pour cette fois mais il devra être lancé à chaque démarrage de la machine, il faudra donc créer ou éditer les scripts rc. Les scripts rc sont décrits dans la page de manuel init, ils sont généralement dans /etc/rc.d, /etc/init.d ou /etc/rc.d/init.d. S'il y a un script qui a un nom du genre inet, c'est probablement le script à éditer. Mais ce qu'il faut écrire ou faire sort du cadre de ce HOWTO. Lancez portmap, et vérifiez qu'il tourne avec ps -aux. Il y est ? Benissimo.

3.4 Mountd et nfsd

Les prochains programmes à lancer sont mountd et nfsd. Mais d'abord il faut éditer un autre fichier, /etc/exports. Disons que je veux que le système de fichiers /mn/eris/local qui est sur la machine eris soit disponible sur la machine apollon. Je l'indique dans /etc/exports sur eris :


/mn/eris/local  apollon(rw)

La ligne ci-dessus donne à apollon un accès en lecture/écriture sur /mn/eris/local. Au lieu de rw on pourrait mettre ro pour read only (lecture seule, c'est la valeur par défaut). D'autres options existent, et je parlerai de quelques unes liées à la sécurité plus loin. Elles sont toutes décrites dans la page de manuel exports qu'il faut lire au moins une fois dans sa vie. Il y a de meilleures façons de faire que de lister tous les hosts dans le fichier exports. Peuvent être autorisés à monter un système de fichiers NFS, des groupes réseaux (net groups) si vous utilisez NIS (ou NYS, auparavant connu sous le nom YP), des noms de domaines avec jokers et des sous réseaux IP. Mais il faudra vérifier qui pourrait obtenir un accès non autorisé au serveur avec ce type d'autorisations.

Note : ce fichier exports n'utilise pas la même syntaxe que d'autres Unix. La plupart des autres Unix utilisent un format avec des options séparées par des virgules (,) et des listes d'hôtes séparées par des deux-points (:), à l'exception de Solaris 2 qui est complètement différent.

Maintenant nous sommes prêts à lancer mountd (ou peut-être s'appelle-t-il rpc.mountd), puis nfsd (qui s'appelle peut-être rpc.nfsd). Ils liront tous deux le fichier exports.

Si vous modifiez /etc/exports, vous devrez vous assurer que nfsd et mountd savent que le fichier a changé. Sur la plupart des systèmes Unix on peut le faire avec la commande exportfs -av (sauf pour Solaris 2 qui est complètement différent). Beaucoup de distributions Linux n'ont pas le programme exportfs. Si c'est le cas sur votre machine, vous pouvez installer ce script :


#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo re-exported file systems

Sauvez-le dans /usr/sbin/exportfs par exemple, et n'oubliez pas de lui appliquer chmod a+rx. Désormais, chaque fois que vous changez votre fichier exports, lancez ensuite exportfs en root.

Maintenant, vérifiez que mountd et nfsd fonctionnent correctement. D'abord avec rpcinfo -p. Il devrait donner quelque chose du genre :


   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    745  mountd
    100005    1   tcp    747  mountd
    100003    2   udp   2049  nfs
    100003    2   tcp   2049  nfs

On voit que le portmapper a annoncé ses services, de même que mountd et nfsd.

Si vous obtenez : rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused ou quelque chose du style c'est que le portmapper ne tourne pas. Réglez ça. Si vous obtenez No remote programs registered alors soit le portmapper ne veut pas vous parler, soit quelque chose ne marche pas. Tuez nfsd, mountd et le portmapper et essayez de recommencer.

Après avoir vérifié que le portmapper reporte les services vous pouvez vérifier aussi avec ps. Le portmapper continuera à reporter les services même si les programmes qui les offrent ont crashé. Il vaut donc mieux vérifier par ps si quelque chose ne marche pas.

Bien sur, vous devrez modifier vos fichiers systèmes rc pour lancer mountd et nfsd au démarrage de la même façon que le portmapper. Il y a de très fortes chances que les scripts existent déjà sur votre machine, vous aurez juste à décommenter les bonnes lignes ou les activer pour les bons runlevels (pardon niveaux d'exécution) d'init.

Quelques pages de manuel avec lesquelles vous devriez être familier : portmap, mountd, nfsd et exports.

Bon, si vous avez tout fait exactement comme j'ai dit vous êtes prêts à enchaîner sur le client NFS.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre