NFS
Configuration de nfs-utils
'ensemble des configurations ont lieu dans le fichier /etc/exports que vous devez eventuellement créer s'il n'existe pas. C'est dans celui-ci que vous pouvez définir vos partages ainsi que les options associées.
Partage d'un réperotire personnel distant
Par défaut, tous les utilisateurs (sauf root) qui utilisent (écrivent,lisent ou exécutent) les fichiers d'un partage nfs le font avec leur uid et gid(sur la machine client). Or, cet uid ne correspond pas forcémment au même utilisateur sur le système serveur.
Plusieurs solutions s'offrent alors à vous, soit vous vous efforcer de créer les utilisateurs sur le serveur en cohérence avec ceux des client (tâche assez lourde), soit vous considérez qu'une partie de vos utilisateurs possèdent une machine personelle et donc une ip. Pour ne pas avoir de confusion d'uid/gid, vous partagez votre dossier en spécifiant au serveur de n'accepter pour ce partage que les connexions venant de l'ip de l'utilisateur voulu et de traiter toutes les opérations en tant qu'utilisateur anonyme .
Il convient ensuite de spécifier dans le fichier /etc/exports l'uid et le gid anonyme à utiliser (dans notre cas celui de l'utilisateur et de son groupe sur le serveur). Pour connaître cet uid et ce gid il suffit de saisir :
root@localhost # id tito
uid=1000(tito) gid=100(users) groups=100(users),1001(cvs),1002(wheel)
Pour partager le répertoire personel de tito le fichier /etc/exports ce modifie comme suit :
/home/tito 192.168.0.42(rw,async,all_squash,anonuid=1000,anongid=100)
Partage d'un répertoire publique
Imaginons que nous voulions à présent créer un répertoire /share auquel toutes les machines du sous réseau 192.168.0.0/24 pourront accéder de manière anonyme. Nous devons pour celà connaître l'uid de l'utilisateur anonymous et créer un groupe nfsgroup (ce n'est pas obligatoire mais plus propre) :
root@localhost # id anonymous
uid=1004(anonymous) gid=100(users) groups=100(users),1001(cvs)
root@localhost # groupadd nfsgroup
root@localhost # cat /etc/group | grep nfsgroup
nfsgroup:x:1006:
Créons à présent le répertoire /share et donnons lui les bons droits :
root@localhost # mkdir /share
root@localhost # chown anonymous:nfsgroup /share
root@localhost # chomod g+w /share
A présent il nous faut éditer le fichier de configuration /etc/exports et y déclarer notre partage :
root@localhost # vi /etc/exports
/share 192.68.0.*(rw,sync,all_squash,anonuid=1004,anongid=1006)
| Note: | |
L'option all_squash précise au serveur de traiter toutes les opérations sur partage des utilisateurs autres que root avec l'uid et le gid anonyme (inversement no_all_squash). |
Lancement du serveur
Il ne nous reste plus qu'à lancer le serveur et lui faire prendre en compte nos nouveaux partages. Sous certaines distributions, l'installation des services nfs via les paquetages crée un stcript /etc/init.g/nfs, que vous pouvez utiliser avec les argument start|stop|restart. Si vous avez effectué l'installation à la main créez un fichier appelé nfs dans /etc/init.d et mettez y ceci :
#!/bin/bash
portmap
rpc.mountd
rpc.nfsd
rpc.statd
rpc.lockd
Donnez à présent les droits d'exécution au script puis lancez le :
root@localhost # chmod +x /etc/init.d/nfs
root@localhost # /etc/init.d/nfs
La commande exportfs
Les services rpc (voir essentiel pour plus de détail) et le serveur nfs sont à présent lancés et prêt à recevoir des requêtes. Si les clients n'arrivent pas à monter le partage mettez à jour la table des partages en saisissant :
root@localhost # exportfs -a
Plus généralement vous devrez retaper cette commande à chaque fois que vous modifiez le fichier /etc/exports. La commande exportfs vous permet également de partager ponctuellement une ressource sans avoir à modifier le fichier de configuration global :
Partage l'ensemble de l'arborescence pour la machine d'ip 192.168.0.42:
root@localhost # exportfs -o rw,async,no_root_squash "192.168.0.42:/"
| Note: | |
Cette fois on précise l'option no_root_squash pour que les opérations effectuées par root dans le partage soit fait avec l'uid du root sur le serveur (inversement root_squash). |
Pour supprimer un partage on utilise l'option -u :
Désactive le partage /:
root@localhost # exportfs -u "192.168.0.42:/"
Désactive tout les partages :
root@localhost # exportfs -ua
Enfin pour lister tous les partages disponible sur le serveur on utilise exportfs sans arguments :
root@localhost # exportfs
/home/tito 192.168.0.42
/share 192.168.0.*