Page suivantePage précédenteTable des matières

3. Installer un serveur NFS

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 (NET-3) et configurez correctement le réseau.

3.2 Premiers pas

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 sur l'installation d'un client NFS.

Si vous devez installer un serveur sur une machine non Linux vous devrez 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. Ce HOWTO contient une section décrivant les manipulations nécessaires sur divers systèmes. Ceci fait, vous pourrez passer à la section suivante. 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.

Si vous utilisez Linux 2.2, voyez la section sur Linux 2.2 avant de passer à la suite.

Nous allons maintenant configurer tout un tas 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 sur la sécurité, 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, puis rpcinfo -p. Il y est ? Benissimo.

Encore une chose. L'accès distant à votre portmapper est contrôlé par le contenu de vos fichiers /etc/hosts.allow et /etc/hosts.deny. Si rcpinfo -p échoue alors que le portmapper tourne, vérifiez ces fichiers. Voyez la section sur la sécurité pour les détails concernant ces fichiers.

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 peut obtenir un accès au serveur avec ce type d'autorisations groupées.

Note : ce fichier exports n'utilise pas la même syntaxe que d'autres Unix. Ce HOWTO contient une section sur la façon dont les autres Unix exportent leurs fichiers.

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é. La façon traditionnelle est de lancer exportfs. 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 Volumes NFS réexportés

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, RPC_PROG_NOT_REGISTERED ou quelque chose du style c'est que le portmapper ne tourne pas. OU, vous avez quelques chose dans /etc/hosts.{allow,deny} qui interdit au portmapper de répondre, voyez la section sécurité à ce propos. 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 rend compte des services vous pouvez vérifier aussi avec ps. Le portmapper continuera à afficher 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.


Page suivantePage précédenteTable des matières