Un partage de fichiers nfs



Objectif de ce tuto

On voudrait partager le dossier /home/nfs, sur une machine debian ou ubuntu, avec une machine cliente debian ou ubuntu, du réseau local. Les utilisateurs du poste client pourront se connecter à ce dossier.
J'ai choisi le dossier /home/nfs afin qu'il soit sauvegardé lors de la sauvegarde des données.

installation des outils réseau

Installons d'abord les outils réseau. Tapez cette commande sur les deux machines:

sudo apt install net-tools

Le réseau

Chaque ordinateurs doit avoir une adresse ip invariable. On peut utiliser des adresses ip fixes ou alors chaque machine doit avoir un bail dhcp permanant. Vous trouverez l'adresse ip de votre machine avec la commande ifconfig.

sudo ifconfig

L'adresse ip est à côté de "inet".

wlp5s0: flags=4163 mtu 1500
inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::6b5d:4359:f466:46f1 prefixlen 64 scopeid 0x20<link>
ether 34:de:1a:01:95:32 txqueuelen 1000 (Ethernet)
RX packets 11617 bytes 8529631 (8.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11329 bytes 1747615 (1.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Ici, l'adresse ip est 192.168.0.1. Notez bien l'adresse ip de chaque poste.

Manipulations sur le serveur

Pour commencer, nous allons vérifier que le dossier /home/nfs est bien existant. Il suffit d'utiliser la commande ls.

ls -d /home/nfs

Si cela génère un message d'erreur, il faut créer ce dossier, comme ceci:

sudo mkdir /home/nfs

Installons nfs sur le serveur:

sudo apt install nfs-kernel-server

Créons les accès du dossier partagés:

sudo groupadd nfs
sudo chown root:nfs /home/nfs
sudo chmod 770 /home/nfs

Créez un dossier par utilisateur dans /home/nfs, et donnez les droit d'acces pour chacun d'eux:

cd /home/nfs
sudo mkdir <utilisateur>
sudo chown utilisateur:utilisateur utilisateur
sudo chmod 770 /home/nfs/utilisateur
sudo adduser utilisateur nfs

Pour que "utilisateur" fasse partie du group nfs, fermez la session, puis re-ouvrez-la.

Assurez-vous que le groupe nfs ait le même gid sur le serveur et le client. La commande suivante donne le gid (Le numéro du groupe) du groupe nfs

grep nfs /etc/group

Pour connaître le gid de chaque groupe, on utilise la commande suivante

cat /etc/group

pour modifier le gid du groupe nfs, qui doit être le même sur toutes les machines, et différent de tous les gid, on utilise la commande suivante:

sudo goupmod nfs -g<numéro>

Complétez les fichiers /etc/hosts.allow, /etc/hosts.deny et /etc/exports:

Ouvrez le fichier /etc/hosts.allow avec votre éditeur préféré. Ce fichier doit contenir:

portmap: <l'adresse ip du client>
lockd: <l'adresse ip du client>
nfsd: <l'adresse ip du client>
mountd: <l'adresse ip du client>
rquotad: <l'adresse ip du client>
statd: <l'adresse ip du client>

Le fichier /etc/hosts.deny, dont le contenu doit être:

ALL: ALL

Le fichier /etc/exports contiendra ceci:

/home/nfs <adresse-ip-client>(sync,root_squash,rw,subtree_check)

Lancez le partage nfs:

sudo service nfs-kernel-server start

Manipulations sur le client

Installez nfs côté client:

sudo apt install nfs-common

définissons les accès de /media/nfs

sudo chown root:nfs /media/nfs
sudo chmod 770 /media/nfs

Ajoutez cette ligne dans le fichier /etc/fstab, avec votre éditeur préféré:

<adresse ip du serveur>:/home/nfs /media/nfs nfs noauto,rw,user 0 0

Après avoir modifié le fichier /etc/fstab, il faut éxecuter cette commande:

sudo systemctl daemon-reload

Utilisation graphique

Pour vous connecter au serveur à partir du client, ouvrez l'icône "fichier", ou n'importe quel autre dossier, et cliquez sur "nfs", à gauche, dans la liste des emplacements.
Pour copier un fichier depuis le serveur, connectez-vous comme décrit ci-dessus, et faites glisser le fichier jusqu'à l'emplacement voulu, à gauche dans les emplacements.
Pour copier sur le serveur un fichier du client, allez dans l'emplacement du fichier et glissez le fichier jusqu'à l'emplacement "nfs".

N'oubliez jamais d'éjecter nfs avant d'éteindre le serveur ou le client (ou de fermer la session sur le client). Le mieux est d'éjecter dès que l'on a fini avec le serveur.

Utilisation dans le terminal

Pour monter la ressource nfs, si vous avez bien recopié la ligne adéquat dans /etc/fstab, cette commande suffira:

mount /media/nfs

Pour vérifier si le partage est monté:

df | grep nfs

Pour copier un fichier du client sur le serveur:

cp <fichier> /media/nfs

Pour copier un fichier depuis le serveur:

cp /media/nfs/<fichier> <chemin du dossier choisi sur le client>

N'oubliez jamais de démonter nfs avant d'éteindre le client ou le serveur (ou de fermer la session sur le client).

Démontez-le avec cette commande:

umount /media/nfs