Retourner au contenu. Retourner à la navigation

 

Module 2

by admin @ 23/02/2006

Chapitre 01 - NFS

Partage de fichiers en réseau avec NFS

1. Présentation de NFS/RPC

1.1 Le protocole NFS

Le protocole NFS (Network file system) fût mis en place par Sun Microsystems en 1984 dans le but de permettre l'accès à des ressources situées sur des hôtes distants.

Le système NFS permet de monter des volumes réseaux et d'y accéder de manière transparente pour l'utilisateur.

1.2 RPC

NFS utilise la méthode de connexion RPC (Remote procedure call) également inventée par SUN. RPC décrit une methode de type client/serveur utilisant le format XDR (eXternal Data Representation) ou chaque service est representé par un numero indiqué dans le fichier /etc/rpc.

Extrait du fichier /etc/rpc

portmapper      100000  portmap sunrpc rpcbind
rstatd 100001 rstat rup perfmeter rstat_svc
rusersd 100002 rusers
nfs 100003 nfsprog

RPC fonctionne sur TCP/IP, un serveur RPC va faire la correspondance entre le numero de service RPC et le port.

Lorsqu'un client se connecte au serveur RPC celui-ci lui envoie le numero de service auquel il veut acceder et le serveur lui renvoi le port associé.

Le client n'a donc pas besoin de connaitre les details réseau. Les serveurs RPC disponibles se nomme rpcbind et portmap, ceux-ci ecoutent sur le port 111 tcp/udp par defaut. RPC se situe au niveau de la couche 5 (session) du modele OSI.


La commande rpcinfo permet de dialoger avec un serveur RPC (visualisation des tables...).

$ rpcinfo -p hostname

2. Installation d'un client/serveur NFS

L'installation du client se deroule de maniere similaire a celle du serveur. On peut distinguer 2 parties :

  • la partie noyau (kernel land) : permet au noyau de prendre en charge le protocole.

  • la partie logicielle (user land) : prend en charge la partie appplicative.

2.1 La partie noyau

Il faut activer (si cela n'est deja fait) le support du systeme de fichiers NFS dans le noyau :


Pour cela rentrez dans le menu de configuration du noyau et activer le support du NFS (File systems -> Network File Systems -> NFS file system support).

Dans le cas d'un serveur NFS il faut également activer le support du serveur NFS dans le noyau :

Pour cela rentrez dans le menu de configuration du noyau et activer le support du serveur NFS (File systems -> Network File Systems -> NFS server support), cochez ensuite l'option "Provide NFSv3 server support".

NFS in the kernel

2.2 La partie logicielle

L'installation logicielle (NFS utils) permet d'obtenir les commandes clientes que nous etudirons un peu plus loin ainsi que le daemon NFS et les scripts de demarrage associes.

Il faut pour cela telecharger l'archive sur le site http://nfs.sourceforge.net/ , la procédure d'installation est la même que pour les autres logiciels.

./configure
make && make install

2.3 Configuration du serveur

Le fichier de configuration du serveur se stitue dans /etc et se nomme exports, il contient tous les répertoires partagés lors du demarrage du service ainsi que les options qui leur sont associees.

Le format est le suivant :

répertoire    host1(options1,option2,...optionN) host2(option1,option2,...optionN)....hostn(option1,option2,...optionN)

"répertoire" correspond au répertoire partagé, "host1(options)...." correspond aux machines qui le droit d'accéder à ce répertoire. Les options indiquent de quelles manières les hôtes vont se connecter (Voir plus loin dans ce chapitre).

Comme vous pouvez le remarquer NFS se base UNIQUEMENT sur le nom de machine (ou l'adresse IP), cela est à prendre en compte lors de l'établissement des politiques de securité.

Vous pouvez utiliser l'opérateur '*' afin de spécifier que tout le monde à le droit de se connecter au répertoire.

répertoire    *(options)

2.4 Mode syncrone/asyncrone

Mode syncrone : c'est la valeur par défaut, lorsque un utilisateur effectue une operation (copie, modification, création...), celle-ci est traitée directement par le serveur.

  • Avantage : Sécurité

  • Inconvénient : Lenteur

Mode asyncrone : lorsque un utilisateur effectue une opération (copie, modification, création...), celle-ci est mise en "tampon", c'est à dire que le serveur vous rend la main avant d'avoir effectuer l'opération (avant même d'avoir écrit le fichier ou autre sur le disque).

  • Avantage : rapidité pour l'utilisateur

  • Inconvenient : dangeureux, imaginons que le service rencontre un problème, vous ne pouvez pas être certain que vos changements ont bien été pris en compte.

2.5 Gestion des UID/GID

Rappel :

  • L'UID (User Identifier) est un numero unique sur le systeme representant un utilisateur unique (un utilisateur possede un et un seul UID et un UID correspond a un et un seul utilisateur).

  • Le GID (Group Identifier) est la meme chose que l'UID sauf qu'il s'applique pour les groupes.

  • L'UID du super utilisateur 'root' est egal à 0. Le GID du groupe 'root' est egal à 0.

Comme nous l'avons vu précédemment, NFS se base sur les noms des machines, il faut donc trouver un moyen de gérer les permissions ainsi que l'appartenance des ressources. Pour cela NFS se base sur l'UID/GID du client, c'est à dire que si le client fait des manipulations sur le serveur NFS avec le compte user1 (il s'agit du compte avec lequel la personne s'est connectée sur son poste de travail) qui a comme UID 1001, le serveur NFS le considérera comme utilisateur 1001 local (cela peut pointer sur un autre utilisateur).

Cela peut paraitre aberrant, mais il faut penser que NFS a été créé pour des réseaux de type serveurs/terminaux où les UID etaient partout les mêmes.

Un autre probleme se pose, imaginons qu'une personne soit root sur un client et se connecte au serveur NFS, son UID local est egal à 0 et donc le serveur lui attribue l'UID 0 sur le partage.

Pour palier à ce problème, NFS propose la possibilité d'imposer un UID/GID à tous les utilisateurs qui se connectent à un répertoire (partage), on appele cela un UID/GID anonyme. Cela signifie que si on configure l'UID/GID anonyme du partage à 4242/2121, tout les utilisateurs qui se connectent sur le partage recevrons l'UID/GID 4242/2121. Cette directive s'applique à tous les utilisateurs sauf root, pour celui-ci une directive spéciale permet d'indiquer que les utilisateurs se connectant avec un UID egal à 0 recoivent l'UID anonyme.

Maintenant que nous avons passé en revue la "théorie", nous allons énumerer les principales options ainsi que leur effet.


Option

Effet

rw

le client a les droits d'écriture

ro

le client a seulement les droits de lecture

async

active le mode asyncrone

sync

active le mode syncrone (par défaut)

anonuid

spécifie l'UID des utilisateurs anonymes

anongid

specifie le GID des utilisateurs anonymes

all_squash

tous les utilisateurs (sauf root) récupèrent l'UID anonyme

no_all_squash

Les utilisateurs gardent leur UID (par défaut)

root_squash

l'utilisateur root récupère l'UID anonyme (par défaut)

no_root_squash

l'utilisateur root garde son UID (dangeureux !!!)

Pour obtenir la liste complete des options editez le manuel d'exports :

$ man exports

Exemple :

/ftp/films	client1(rw,anonuid=1004,anongid=1006)		client2(ro,async)
/cours *(ro)

L'arborescence /ftp/films est accessible par les clients client1 (lecture/écriture, UID anonyme=1004 et GID anonyme=1006) et client2 (lecture seule). L'arborescence /cours est accessible par tout le monde en lecture seule.

Il est bien sûr possible de spécifier une adresse IP à la place du nom de machine.

3. Administration/Maintenance d'un serveur NFS

3.1 Les differents daemons

Voici les differents daemons necessaires au bon fonctionnement du serveur NFS :


daemon

description

portmap

le deamon portmap permet de faire la correspondance numéro RPC/Port (voir partie 2)

rpc.mountd

le deamon rpc.mountd réalise le montage demandé par un client

rpc.nfsd

le deamon nfsd éxécute les requêtes NFS

rpc.statd

ce daemon récupere des statistiques (Voir plus loin dans le cours)

3.2 Lancement et arrêt du serveur NFS

Les différents daemons cités précédemment doivent tous être lancés. Afin de nous faciliter la tâche, le script d'init installé via les nfs-utils permet de lancer/arrêter automatiquement tous les daemons.

Ce script se situe dans /etc/init.d et se nomme nfs, voici comment le manipuler :

# /etc/init.d/nfs operation

Voici les différentes opérations supportées par le script :


opération

effet

start

démarrage des daemons

stop

arrêt des daemons

restart

redémarrage des daemons (stop + start)

status

affiche l'état des daemons

Note:

selon la distribution utilisée d'autres options peuvent être disponibles.

Exemple :

Lancement du serveur NFS :

# /etc/init.d/nfs start

3.3 Commandes d'administration et de maintenance

3.3.1 La commande exportfs :

La commande exportfs permet de manipuler les partages à "chaud" (lorsque que le serveur NFS tourne). Exportfs permet de désactiver, activer (on parle aussi d'exportation), modifier et ajouter des partages.

Voici une liste des options les plus couramment utilisées :


option

effet

-a

exporte tous les partages contenus dans /etc/exports

-u

désactive un partage

-ua

désactive tous les partages contenus dans /etc/exports

-o

permet de spécifier des options

Voici la procédure à suivre pour ajouter à "chaud" un nouveau partage (sans avoir besoin de redémarrer le service NFS) :

# exportfs -o option1,option2 host:/répertoire

Les options sont les mêmes que celles du fichier /etc/exports.

Exemple :

# exportfs -o rw,async host1:/data 

Cette commande ajoute le répertoire /data pour la machine host1 avec comme options rw et async.

3.3.2 La commande showmount :

La commande showmount permet d'afficher les répertoires partagés d'un serveur NFS ainsi que les machine ayant le droit d'y accéder.

Voici comment procéder :

$ showmount -e hostaname

Exemple :

# showmount -e nfs_server
Export list for localhost:
/data STS.esi-supinfo.com,localhost

Dans cet exemple l'hote nfs_server exporte le répertoire /data pour les machines localhost et STS.

D'autres options sont disponibles, consultez la page de manuel de showmount :

$ man showmount

3.3.3 La commande nfsstat

nfsstat affiche des statistiques NFS et RPC recuperées par le daemon rpc.statd.

Voici une liste des options les plus courament utilisees :


option

Effet

-s

affiche uniquement les statistiques du serveur

-c

affiche uniquement les statistiques du client

-n

affiche uniquement les statistiques NFS

-r

affiche uniquement les statistiques RPC

D'autres options sont disponibles, consultez la page de manuel de showmount :

$ man nfsstat

4. Utilisation du client NFS

Nous allons maintenant nous interresser à la partie cliente de NFS, à savoir : comment monter un partage NFS distant.

Pour cela nous allons utiliser la commande mount. Il faut au préalable connaitre l'IP/nom du serveur ainsi que le répertoire auquel on souhaite accéder (voir la commande showmount).

Voici comment utiliser mount pour acceder a un partage NFS distant :

# mount -t nfs -o options serveur:/partage /point_de_montage

Les options sont propres à mount, voici celles utiles pour NFS :


option

effet

fg

si le montage échoue les tentatives suivantes se feront en avant-plan (par défaut)

bg

si le montage échoue les tentatives suivantes se feront en arrière-plan

rw

monte le partage en read/write (par défaut)

ro

monte le partage en read only (lecture seule)

suid

autorise l'utilisation de programmes suid (par défaut)

nosuid

interdit l'éxécution de programmes suid

hard

En cas d'échec, recommence l'opération jusqu'à sa réussite (par défaut)

soft

abandonne l'opération en cas d'échec

Les options du serveur sont prioritaires face à celle du client. C'est à dire que si le serveur permet à client1 de monter /data en read only (lecture seule) et que le client monte en Read/Write, alors le partage sera monté en read only.

Exemple :

# mount -t nfs -o ro,nosuid server:/data /mnt/nfs/

Le répertoire /data de la machine 'server' sera monté dans /mnt/nfs en read only/nosuid.

Pour monter un répertoire au démarrage du système il faut ajouter une entrée dans le fstab (comme pour les péripheriques locaux).

Voici la syntaxe a appliquer :

serveur:/partage	   /point_de_montage	nfs	options	0 0

options corresponds aux options citées ci-dessus, il est important de laisser le dump/pass à 0 (il parait assez logique de ne pas vérifier l'integrité du répertoire NFS à chaque démarrage).

A titre d'exemple nous allons reprendre le précedent exemple mais cette fois-ci nous le monterons a chaque démarrage.

server:/data		      /mnt/nfs		 nfs	  ro,nosuid 0 0
1 2 3
Par admin Dernière modification 22/03/2007 15:52
Navigation
Actualités
23/06/2008 Opération du libre à Nantes !
23/06/2008 OpenSuse 11
18/06/2008 Firefox 3 !
09/06/2008 Linux Pratique Essentiel
08/06/2008 Ordinateurs vendus avec gNewSense
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
22/04/2008 Sed : Rechercher du texte entre deux chaines de caractères
04/04/2008 Gérer son(ses) écran(s) avec xrandr
26/03/2008 Tips sur l'historique de vos commandes
13/02/2008 Linux-Unix Cheat Sheets
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
Cours Module 2 Chapitre 01 - NFS