Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

Partage de fichiers en NFS

Les systèmes doivent pouvoir s’identifier l’un l’autre. Cela peut se faire soit directement par l’adresse IP, soit par un nom qui y correspond. Les noms sont gérés soit par un serveur DNS, soit, sur chacune des machines, par un fichier /etc/hosts, du genre

127.0.0.0      localhost
192.168.2.101    serveur
192.168.2.100    client

Le fichier hosts est lu chaque fois que nécessaire. Les modifications sont donc immédiatement suivies d’effet.

  1. A. Serveur

      Un système Linux peut exporter (partager) des fichiers en NFS si les paquets nfs-common et nfs-kernel-server sont installés et le démon nfsd est actif. On en est maintenant à NFS version 4 où on fait les choses de manière un peu plus sophistiquée :

    1. On réunit ce qu’on veut exporter (partager) dans le répertoire /exports qui servira de racine au pseudo-système de fichiers du serveur tels que vu par les clients, par exemple

      mkdir /exports
      mkdir exports/archives

      Pour les clients, myserver: sera le /exports du serveur et rien d’autre. Les répertoires accessibles sous myserver: seront les sous-répertoires (virtuels) de /exports et rien d’autre.

      Attention, il faut que l’utilisateur client ait le droit d’accéder au dossier export du serveur. Il faut donc faire un chmod pour les permissions désirées (ou directement mkdir -m) ou un chown. Attention que NFS v.4 ne tient compte que des UID/GID, pas du nom. Il n’est pas interdit d’écrire chown untel:untel, mais l’accès se fera, on non, selon l’UID.

    2. On y monte le contenu réel désiré, par exemple :

      mount --bind /home/archives /exports/archives

      Le mieux est de rendre ça permanent dans etc/fstab :

      /home/archives    /exports/archives    none    rw,bind    0    0
    3. On déclare dans /etc/exports ce qu’on exporte et pour qui :

      /exports 192.168.2.0/255.255.255.0(rw,sync,fsid=0,no_subtree_check,insecure,crossmnt,root_squash)
      /exports/archives 192.168.2.0/255.255.255.0(rw,sync,nohide,no_subtree_check,insecure,root_squash)

      On aurait pu mettre un nom de client comme plus haut. On peut mettre une seule adresse IP (si c’est pour travailler entre un serveur et un unique poste de travail client) ou tout le réseau (comme ici) si on veut. L’option fsid=0 est ce qui fait que /exports apparaîtra comme racine aux clients. Pour les autres options, j’ai essayé de les comprendre et de les utiliser à bon escient, mais je peux avoir mal compris, donc plutôt que de les expliquer ici avec le risque de vous tromper, je vous laisse chercher par vous-mêmes (par exemple avec man exports).

      La commande exportfs dit ce que le démon partage actuellement. Si on modifie le fichier /etc/exports, la commande exportfs -ra oblige le démon à relire le fichier et à offrir les nouveaux partages.

      En NFS de l’ancien temps, on aurait écrit dans /etc/exports, par exemple :

      /home/archives    client(rw,sync)
  2. B. Client.
    • Un système Linux peut accéder à des fichiers partagés en NFS version 4 si le paquet nfs-common est installé, en montant le fichier distant comme un système de fichier (en adressant la racine du pseudo-système de fichiers exporté), par exemple :

      mount -t nfs4 -o proto=tcp,port=2049 serveur:/archives /mnt/archives

      ou bien en l’incluant dans etc/fstab comme

      serveur:/archives    /mnt/archives    nfs4    _netdev,user,noauto,noexec,intr    0    0

      En NFS de l’ancien temps, on aurait fait :

      mount -t nfs serveur:/home/archives    /mnt/archives

Tout ça est assez lourd. Il faut avoir défini l’exportation sur le serveur et monter sur le client pour disposer des fichiers. En fait, si on veut les voir dans un navigateur de fichiers, Nautilus ou Nemo sont capables de faire tout ça par SSH et FTP (SFTP). Si on a un compte d’utilisateur sur le serveur, Nautilus ou d’autres donnent tous les fichiers du serveur sans avoir besoin de monter les dossiers. C’est le système de fichiers virtuel gvfs. Cependant, si on doit travailler sur les fichiers partagés, monter classiquement peut être plus sûr qu’un simple montage gvfs.

Je me suis habitué à ce système dans mes débuts en Linux, mais on peut préférer Samba, surtout que les environnement mélangés sont assez répandus.

Dominique Meeùs . Date: 2011… 2017