Un partage de fichiers nfs



Objectif de ce tuto

On voudrait partager le dossier /home/nfs avec le reste du réseau local. chaque utilisateur pourra se connecter à ce dossier

installation des outils réseau

Installons d'abord les outils réseau. Tapez cette commande sur toutes les 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. Si vous êtes chez free, connectez-vous à votre interface de gestion. Cliquez sur l'onglet "ma freebox" et choisissez la configuration du routeur. cliquez sur "Redirections / Baux DHCP". Ajouter sur la ligne du plus gris l'adresse ip et l'adresse MAC de la machine. Cliquez sur le plus et recommencez pour toutes les autres machines. Cliquez sur sauvegarder. Débranchez et rebranchez votre freebox ET redémarrez les ordinateurs.
Vous trouverez l'adresse MAC et l'adresse ip de votre machine avec la commande ifconfig.

sudo ifconfig

l'adresse MAC est indiqué à côté de la mention "ether" et l'adresse ip à 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 MAC est 34:de:1a:01:95:32 et l'adresse ip est 192.168.0.1.

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 le groupe nfs. Ce groupe servira à n'autoriser à se connecter uniquement les utilisateurs adéquat:

sudo groupadd -g <gid-nfs> nfs

Pour activer ce groupe, vous devrez fermer la session, puis la re-ouvrir.

"gid-nfs" est le numéro (le gid) du groupe nfs. Il doit être différend de tous les gid des groupes du serveur et du client car ce groupe sera présent sur ces deux machines et aura le même gid. Vous obtenez la liste des groupes, avec leur gid, dans le fichier /etc/group, sur chacune des machines.

cat /etc/group

Pour chaque utilisateur qui se connectera au serveur, nous lui créons un compte sur cette machine, si ce compte n'existe pas déjà:

sudo adduser <utilisateur>

Intégrez dans le groupe nfs les utilisateurs qui se connecteront au serveur. Pour chaque utilisateur, vous taperez la commande ci-dessous.

sudo adduser <utilisateur> nfs

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

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

Je vous ferrai remarquer que les utilisateurs font partie du groupe nfs, et que le groupe de /home/nfs est nfs. Ainsi, on peut, en tant que simple utilisateur, copier des fichier dans /home/nfs sans sudo ni su.

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

Le fichier /etc/hosts.allow:

sudo nano /etc/hosts.allow

Ce fichier doit contenir:

portmap: <l'adresse ip de chaque ordinateur qui se connectera au serveur>
lockd: <idem>
nfsd: <idem>
mountd: <idem>
rquotad: <idem>
statd: <idem>

Le fichier /etc/hosts.deny:

sudo nano /etc/hosts.deny

Dont le contenu doit être:

ALL: PARANOID

Le fichier /etc/exports:

sudo nano /etc/exports

Contiendra ceci:

/home/nfs <adresse-ip1>(sync,no_root_squash,rw,no_subtree_check) <adresse-ip2>(sync,no_root_squash,rw,no_subtree_check)

"adresse-ip1" et "adresse-ip2" correspondent à l'adresse ip de chaque ordinateur qui se connectera au serveur.

Pour que les utilisateurs puisent travailler dans /home/nfs, il faut que l'uid de chaque utilisateur soit identique sur le serveur et sur le client.
Nous trouverons ces uid dans le fichier /etc/passwd.

cat /etc/passwd

Notez l'uid de chaque utilisateur qui se connectera au serveur. Par exemple, vous pourrez imprimer le fichier /etc/passwd.

Pour que les changements soient effectifs, fermez la session et re-ouvrez la

Lancez le partage nfs:

sudo service nfs-kernel-server restart

Manipulations sur le client

Installez nfs côté client:

sudo apt install nfs-common

Ajoutez cette ligne dans le fichier /etc/fstab, après avoir tapé cette commande

sudo nano /etc/fstab

<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