Mise en oeuvre de NFS sur CentOS / Red Hat 7
NFS – Network File System – est un protocole réseau, initialement créé par SUN en 1984 sur Unix, pour le partage de fichiers entre machines appartenant à un même réseau. Il fonctionne aussi bien sur Linux que sur Windows.
Installation d’un serveur NFS sur CentOS 7
Par défaut, le serveur NFS est installé sur CentOS 7, avec le package nfs-utils. Vous pouvez d’ailleurs le vérifier à l’aide de la commande :
rpm -q nfs-utils
Configuration des ports UDP/TCP utilisés
Les ports UDP/TCP associés au service de partage de fichiers NFS sont déterminés automatiquement dans le fichier de configuration /etc/nfs.conf. Je vous recommande d’ailleurs de modifier ceux de status et de nlockmgr, vous pouvez les visualiser à l’aide de la commande rpcinfo -p.
Ouverture des ports avec firewalld
Afin que vous puissiez parvenir accéder aux partages NFS, vous devrez ouvrir les ports TCP/111, UDP/111, TCP/2049, UDP/2049, TCP/20048, UDP/20048.
firewall-cmd --permanent --zone=public --add-port=111/tcp firewall-cmd --permanent --zone=public --add-port=111/udp firewall-cmd --permanent --zone=public --add-port=2049/tcp firewall-cmd --permanent --zone=public --add-port=2049/udp firewall-cmd --permanent --zone=public --add-port=20048/tcp firewall-cmd --permanent --zone=public --add-port=20048/udp firewall-cmd --reload
Lancement du service NFS
A partir de CentOS / Red Hat 7, le lancement du service NFS s’effectue avec systemd :
systemctl start nfs systemctl enable nfs
Créer un partage NFS
La gestion des droits au niveau d’un partage NFS repose sur l’UID et le GID de l’utilisateur. Un utilisateur issu d’une autre machine peut accéder au partage NFS, même s’il ne dispose pas du même nom. Le mot de passe de l’utilisateur n’entre pas en ligne de compte au niveau du NFS. Pour connaître l’UID et le GID d’un utilisateur sur un système Linux, tapez la commande id, suivi du login de l’utilisateur :
root@vmcentos7 06:45:33 ~ > id denis uid=1000(denis) gid=1000(denis) groupes=1000(denis)
Je crée un répertoire sur le serveur Linux CentOS 7 à partir duquel sera effectué le partage NFS :
mkdir -p /home/partage
Je donne les droits à l’utilisateur denis sur ce répértoire :
chown denis:denis /home/partage -R chmod 660 /home/partage -R
Efin, j’édite le fichier /etc/exports, dans lequel j’ajoute :
/home/partage 192.168.1.0/24(rw,sync)
Pour mettre à disposition à chaud le partage NFS, je tape alors la commande :
exportfs -a
Accéder à un partage NFS sur Linux
Vous devez disposer d’un utilisateur disposant du même UID sur votre distribution Linux cliente. Je vais alors réaliser un point de montage :
mkdir -p /mnt/partage mount 192.168.1.21:/home/partage /mnt/partage
Je peux aussi monter de façon permanente en modifiant le fichier /etc/fstab , afin de disposer de ce partage après un reboot de la machine Linux cliente :
192.168.1.21:/home/partage /mnt/partage nfs rw,sync 0 0
Pour actualiser le système de fichiers à chaud modifié dans le fichier /etc/fstab, je tape :
mount -a
Le client NFS sur Windows
Sur Windows Server 2016, vous disposez d’un client NFS :
Une fois installé, vous devez aller ajouter deux valeurs de registre DWORD32 AnonymousUID et AnonymousGID reprenant le numéro de l’UID et du GID associé à l’utilisateur Linux, dans la ruche HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default. :
Curieusement, le changement de cette clé de registre exige que vous rebootiez le serveur Windows !!!
Vous pouvez enfin monter le partage NFS partir de la ligne de commande Windows :
C:\>mount -o anon \\192.168.1.21\home\partage P: P: est désormais connecté à \\192.168.1.21\home\partage La commande s'est terminée correctement. C:\>umount P: Déconnexion P: \\192.168.1.21\home\partage La commande s'est terminée correctement.