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