EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Comprendre le partage NFS

Historique

31 mai 2013 : Reprise de la page de l'ancien site de Païou et actualisation.

Difficulté

Pour : .

Introduction

Le système de fichiers en réseau (Network File System) est un protocole qui permet à un ordinateur d'accéder à des fichiers situés sur d'autres ordinateurs à travers un réseau.
Le serveur (l'ordinateur distant) exporte des répertoires et des fichiers, alors que le client (l'ordinateur local) monte ceux-ci dans sa propre arborescence.
L'utilisateur les voit comme s'ils étaient sur son ordinateur.

Les applications sont multiples :

Le partage de fichier en réseau est un système avec plein de finesses.
Avant de vous lancer dans la configuration, prenez le temps de lire cette page et de réfléchir aux options que vous devez choisir dans votre cas.

Haut

Les différentes versions de NFS

Plusieurs versions existent, avec des caractéristiques différentes, améliorées au fur et à mesure.

Proposé par Sun Microsystem, le protocole NFS s'est imposé comme un standard dans le monde UNIX mais dépasse maintenant le cadre du monde UNIX.
Il utilise les appels de procédures distantes implémentés par le protocole RPC (Remote Procedure Call).

Le principe d'un protocole sans état (stateless) est de pouvoir contenir une information complète dans chaque "paquet" (ici un ordre, comme lire ou écrire), sans reposer sur des informations envoyées dans des paquets précédents. Ceci permet une implémentation simple et robuste, mais limite les possibilités et peut affecter les performances (l'état est redondant dans chaque ordre).

Mageia permet de travailler, tant au niveau des serveurs que des clients, avec les trois versions.

Haut

Les services mis en jeu par NFS

Le système NFS utilise plusieurs services différents au niveau du serveur de fichiers. Leur nombre dépend de la version de NFS.

Les services utilisés par NFSv3

Côté serveur, c'est portmap qui reçoit les requêtes RPC du client et qui indique quels sont les ports attribués à NFS et ses compléments. Il écoute sur le port 111 TCP et UDP
Pour NFS, il y a 4 ou 5 services (démons) qui tournent et qui scrutent chacun un port particulier :

Remarque : Ces programmes ne sont pas tous nécessaires pour le service NFS. Les seuls services qui doivent être activés sont rpc.mountd, rpc.nfsd et portmap. Les autres démons offrent des fonctionnalités additionnelles, en fonction des exigences particulières de votre environnement serveur.

Côté client, quand un client souhaite envoyer une requête RPC vers un numéro de programme donné, il contacte d'abord le serveur portmap pour obtenir le numéro de port sur lequel tourne le programme souhaité (d'autres programmes peuvent également requérir RPC). Ensuite, il adresse les paquets RPC au port correspondant.

En résumé, 5 ou 6 ports sont utilisés lors des communications liées à NFS, dont 3 sont indispensables.
Par ailleurs, seuls deux sont prédéterminés, par défaut. Ceci prend toute son importance lorsque vous avez un pare-feu où il faut libérer les ports adéquats.

Haut

Les services avec NFSv4

Pour NFSv4, il n'y a plus que 1 service (démon) nécessaire et qui scrute un port défini :

En résumé, les services rpc.lockd et rpc.quotad sont obsolètes et il n'y a plus qu'un port indispensable.
Ceci simplifie énormément la configuration du pare-feu seul 2049/tcp doit être ouvert.

Haut

Accès des utilisateurs

Identité des utilisateurs

Vous vous en souvenez, avec tous les Unix et donc Linux, tous les fichiers et répertoires appartiennent à un utilisateur et l'utilisateur fait partie d'un groupe.
L'utilisateur est identifié par un code, le UID (User IDdentificator) et le groupe auquel il appartient est défini par un autre code le GID (Group IDentificator).

Les fichiers et répertoires UNIX possèdent des droits d'accès (lecture, écriture, exécution) pour le propriétaire, pour le groupe et pour les autres utilisateurs.

Avec NFS version 2 et 3, l'utilisateur et le groupe ne sont pas reconnus par leurs noms, mais par leurs identifiants (UID et GID).

TravauxAvec NFS version 4, un démon idmap (idmapd) est chargé de traduire les noms d'utilisateurs en identifiants et vice versa, mais ceci est encore mal documenté et demande une clarification.

Conséquences avec des machines distinctes et avec NFS 2 et 3

Chaque machine a enregistré ses propres utilisateurs.
Et chaque machine a attribué ses propres identifiants à chacun de ses utilisateurs.

Nous voyons donc de suite les différents problèmes qui peuvent surgir.

Un autre problème existe : le super-utilisateur a toujours l'identifiant 0. C'est donc le même sur les deux machines.
Mais est-il prudent que le super-user de la machine distante ait ces mêmes droits absolus au niveau du serveur ?

Voici donc quelques questions que vous devez vous poser avant d'installer et configurer un serveur NFS

Haut

Quelques exemples de politiques

Le serveur est un serveur public

Pour un serveur public, vous pourriez partager un répertoire tel que /var/nfs/pub.
Vous allez convertir tous les utilisateurs distants (et surtout root) en utilisateur anonyme car cet utilisateur anonyme n'a que des droits très limités.
Dans la configuration du serveur, vous ne leur donnez aucun droit d'écriture.

Le serveur est un serveur de fichiers

Si cette machine est utilisée en tant que serveur de fichiers (c-à-d si tous les utilisateurs d'un réseau y enregistrent leurs documents), elle devra avoir un répertoire /home et chaque utilisateur y aura son répertoire propre.
En veillant à la concordance (ou correspondance) des UID et GID (ceci est nécessaire avec NFS v2 et v3), il sera possible de conserver les droits relatifs aux répertoires et fichiers.
Chaque utilisateur ne pourra alors qu'accéder à son propre répertoire, en lecture et écriture.

L'administrateur (ou super-user ou root) est le même partout

Si, en plus, le root de toutes les machines du réseau est l'administrateur du réseau, vous pouvez éventuellement lui laisser les droits de super-utilisateur. Il pourra alors garder son UID = 0.

Le serveur sert à faire des sauvegardes générales

Si vous souhaitez utiliser cette machine pour faire les sauvegardes générales, faites par root, vous pourriez y avoir un répertoire /home/sauvegardes, il ne sera accessible que depuis votre réseau local, les utilisateurs deviennent anonyme. Seul root reste root. Il aura droit d'écriture.

Haut

Configuration du serveur et des clients

Avec Mageia le serveur accepte les version 2, 3 ou 4 de NFS. Il est cependant possible de préciser un mode par défaut et même un mode imposé.
Les liens ci-dessous vous aideront à configurer :

le serveur : il accepte les clients NFS version 2, 3 et 4 : Cliquez

le client : il accède aux serveurs NFS version 2, 3 et 4 : Cliquez

Haut