![](https://m.unixlinux.online/article/uploadfiles/202204/2022042508280315.jpg)
Network File System (NFS) est un protocole de système de fichiers distribué qui vous permet de partager des répertoires distants sur un réseau. Avec NFS, vous pouvez monter des répertoires distants sur votre système et travailler avec les fichiers sur la machine distante comme s'il s'agissait de fichiers locaux.
Le protocole NFS n'est pas crypté par défaut et, contrairement à Samba, il ne fournit pas d'authentification de l'utilisateur. L'accès au serveur est limité par les adresses IP ou les noms d'hôte des clients.
Dans ce didacticiel, vous suivrez les étapes nécessaires pour configurer un serveur NFSv4 sur CentOS 8. Nous vous montrerons également comment monter un système de fichiers NFS sur le client.
Prérequis #
Nous supposons que vous disposez d'un serveur exécutant CentOS 8 sur lequel nous allons configurer le serveur NFS et d'autres machines qui agiront en tant que clients NFS. Le serveur et les clients doivent pouvoir communiquer entre eux via un réseau privé. Si votre hébergeur ne propose pas d'adresses IP privées, vous pouvez utiliser les adresses IP publiques et configurer le pare-feu du serveur pour autoriser le trafic sur le port 2049
uniquement à partir de sources fiables.
Les machines de cet exemple ont les adresses IP suivantes :
NFS Server IP: 192.168.33.148
NFS Clients IPs: From the 192.168.33.0/24 range
Configurer le serveur NFS #
Cette section explique comment installer les packages nécessaires, créer et exporter les répertoires NFS et configurer le pare-feu.
Installation du serveur NFS #
Le package "nfs-utils" fournit les utilitaires et démons NFS pour le serveur NFS. Pour l'installer, exécutez la commande suivante :
sudo dnf install nfs-utils
Une fois l'installation terminée, activez et démarrez le service NFS en tapant :
sudo systemctl enable --now nfs-server
Par défaut, sur CentOS 8, les versions 3 et 4.x de NFS sont activées, la version 2 est désactivée. NFSv2 est assez ancien maintenant, et il n'y a aucune raison de l'activer. Pour le vérifier, exécutez le cat
suivant commande :
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
Les options de configuration du serveur NFS sont définies dans /etc/nfsmount.conf
et /etc/nfs.conf
des dossiers. Les paramètres par défaut sont suffisants pour notre tutoriel.
Création des systèmes de fichiers #
Lors de la configuration d'un serveur NFSv4, il est recommandé d'utiliser un répertoire racine NFS global et de lier le montage des répertoires réels au point de montage partagé. Dans cet exemple, nous utiliserons le /srv/nfs4
répertoire en tant que racine NFS.
Pour mieux expliquer comment les montages NFS peuvent être configurés, nous allons partager deux répertoires (/var/www
et /opt/backups
) avec différents paramètres de configuration.
Le /var/www/
appartient à l'utilisateur et au groupe apache
et /opt/backups
appartient à root
.
Créez le système de fichiers d'exportation à l'aide de mkdir
commande :
sudo mkdir -p /srv/nfs4/{backups,www}
Montez les répertoires réels :
sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www
Pour rendre les montages liés permanents, ajoutez les entrées suivantes au /etc/fstab
fichier :
sudo nano /etc/fstab
/etc/fstab/opt/backups /srv/nfs4/backups none bind 0 0
/var/www /srv/nfs4/www none bind 0 0
Exporter les systèmes de fichiers #
L'étape suivante consiste à définir les systèmes de fichiers qui seront exportés par le serveur NFS, les options de partage et les clients autorisés à accéder à ces systèmes de fichiers. Pour ce faire, ouvrez le fichier /etc/exports
fichier :
sudo nano /etc/exports
Exporter le www
et backups
répertoires et n'autoriser l'accès qu'aux clients sur le 192.168.33.0/24
réseau :
/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www 192.168.33.110(rw,sync,no_subtree_check)
La première ligne contient fsid=0
qui définit le répertoire racine NFS /srv/nfs4
. L'accès à ce volume NFS n'est autorisé qu'aux clients du 192.168.33.0/24
sous-réseau. Le crossmnt
l'option est requise pour partager des répertoires qui sont des sous-répertoires d'un répertoire exporté.
La deuxième ligne montre comment spécifier plusieurs règles d'exportation pour un système de fichiers. Il exporte le /srv/nfs4/backups
répertoire et n'autorise qu'un accès en lecture à l'ensemble 192.168.33.0/24
plage, et accès en lecture et en écriture à 192.168.33.3
. La sync
indique à NFS d'écrire les modifications sur le disque avant de répondre.
La dernière ligne devrait être explicite. Pour plus d'informations sur toutes les options disponibles, tapez man exports
dans votre terminal.
Enregistrez le fichier et exportez les partages :
sudo exportfs -ra
Vous devez exécuter la commande ci-dessus chaque fois que vous modifiez le /etc/exports
dossier. S'il y a des erreurs ou des avertissements, ils seront affichés sur le terminal.
Pour afficher les exportations actives en cours et leur état, utilisez :
sudo exportfs -v
La sortie inclura toutes les actions avec leurs options. Comme vous pouvez le voir, il y a aussi des options que nous n'avons pas définies dans le /etc/exports
dossier. Ce sont des options par défaut, et si vous souhaitez les modifier, vous devrez définir ces options explicitement.
/srv/nfs4/backups
192.168.33.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 192.168.33.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4 192.168.33.0/24(sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
192.168.33.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
root_squash
est l'une des options les plus importantes concernant la sécurité NFS. Il empêche les utilisateurs root connectés à partir des clients d'avoir des privilèges root sur les partages montés. Il mappera la racine UID
et GID
à nobody
/nogroup
UID
/GID
.
Pour que les utilisateurs des machines clientes aient accès, NFS s'attend à ce que les ID d'utilisateur et de groupe du client correspondent à ceux du serveur. Une autre option consiste à utiliser la fonctionnalité de mappage d'identifiants NFSv4 qui traduit les identifiants d'utilisateur et de groupe en noms et inversement.
C'est ça. À ce stade, vous avez configuré un serveur NFS sur votre serveur CentOS. Vous pouvez maintenant passer à l'étape suivante et configurer les clients et vous connecter au serveur NFS.
Configuration du pare-feu #
FirewallD est la solution de pare-feu par défaut sur Centos 8.
Le service NFS inclut des règles prédéfinies pour autoriser l'accès au serveur NFS.
Les commandes suivantes autoriseront en permanence l'accès depuis le 192.168.33.0/24
sous-réseau :
sudo firewall-cmd --new-zone=nfs --permanent
sudo firewall-cmd --zone=nfs --add-service=nfs --permanent
sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent
sudo firewall-cmd --reload
Configurer les clients NFS #
Maintenant que le serveur NFS est configuré et que les partages sont exportés, l'étape suivante consiste à configurer les clients et à monter les systèmes de fichiers distants.
Vous pouvez également monter le partage NFS sur des machines macOS et Windows, mais nous nous concentrerons sur les systèmes Linux.
Installation du client NFS #
Sur les machines du client, installez les outils requis pour monter des systèmes de fichiers NFS distants.
-
Installer le client NFS sur Debian et Ubuntu
Le nom du paquet qui inclut les programmes pour monter les systèmes de fichiers NFS sur les distributions basées sur Debian est
nfs-common
. Pour l'installer, lancez :sudo apt update
sudo apt install nfs-common
-
Installer le client NFS sur CentOS et Fedora
Sur Red Hat et ses dérivés installez le
nfs-utils
paquet :sudo yum install nfs-utils
Montage des systèmes de fichiers #
Nous allons travailler sur la machine cliente avec IP 192.168.33.110
, qui dispose d'un accès en lecture et en écriture au /srv/nfs4/www
système de fichiers et accès en lecture seule à /srv/nfs4/backups
système de fichiers.
Créez deux nouveaux répertoires pour les points de montage. Vous pouvez créer ces répertoires à n'importe quel endroit de votre choix.
sudo mkdir -p /backups
sudo mkdir -p /srv/www
Montez les systèmes de fichiers exportés avec le mount
commande :
sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backups
sudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www
Où 192.168.33.148
est l'IP du serveur NFS. Vous pouvez également utiliser le nom d'hôte au lieu de l'adresse IP, mais il doit pouvoir être résolu par la machine cliente. Cela se fait généralement en mappant le nom d'hôte à l'IP dans le /etc/hosts
fichier.
Lors du montage d'un système de fichiers NFSv4, vous devez omettre le répertoire racine NFS, donc au lieu de /srv/nfs4/backups
vous devez utiliser /backups
.
Vérifiez que les systèmes de fichiers distants sont correctement montés à l'aide du montage ou de df
commande :
df -h
La commande imprimera tous les systèmes de fichiers montés. Les deux dernières lignes sont les partages montés :
...
192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups
192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www
Pour rendre les montages permanents au redémarrage, ouvrez le /etc/fstab
fichier :
sudo nano /etc/fstab
et ajoutez les lignes suivantes :
/etc/fstab192.168.33.148:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0
192.168.33.148:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev 0 0
Pour trouver plus d'informations sur les options disponibles lors du montage d'un système de fichiers NFS, tapez man nfs
dans votre terminal.
Une autre option pour monter les systèmes de fichiers distants consiste à utiliser soit le autofs
outil ou pour créer une unité systemd.
Test d'accès NFS #
Testons l'accès aux partages en créant un nouveau fichier dans chacun d'eux.
Tout d'abord, essayez de créer un fichier de test dans /backups
répertoire en utilisant le touch
commande :
sudo touch /backups/test.txt
Le /backup
le système de fichiers est exporté en lecture seule, et comme prévu, vous verrez un Permission denied
message d'erreur :
touch: cannot touch ‘/backups/test’: Permission denied
Ensuite, essayez de créer un fichier de test dans le /srv/www
répertoire en tant que racine en utilisant le sudo
commande :
sudo touch /srv/www/test.txt
Encore une fois, vous verrez Permission denied
message.
touch: cannot touch ‘/srv/www’: Permission denied
Le /var/www
le répertoire appartient à apache
user, et ce partage a root_squash
jeu d'options, qui mappe l'utilisateur root à nobody
utilisateur et nogroup
groupe qui ne dispose pas d'autorisations d'écriture sur le partage distant.
En supposant qu'un utilisateur apache
existe sur la machine cliente avec le même UID
et GID
comme sur le serveur distant (ce qui devrait être le cas si, par exemple, vous avez installé apache sur les deux machines), vous pouvez tester de créer un fichier en tant qu'utilisateur apache
avec :
sudo -u apache touch /srv/www/test.txt
La commande n'affichera aucune sortie, ce qui signifie que le fichier a été créé avec succès.
Pour le vérifier, listez les fichiers dans le /srv/www
répertoire :
ls -la /srv/www
La sortie doit afficher le fichier nouvellement créé :
drwxr-xr-x 3 apache apache 4096 Jun 23 22:18 .
drwxr-xr-x 3 root root 4096 Jun 23 22:29 ..
-rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html
-rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt
Démontage du système de fichiers NFS #
Si vous n'avez plus besoin du partage NFS distant, vous pouvez le démonter comme tout autre système de fichiers monté à l'aide de la commande umount. Par exemple, pour démonter le fichier /backup
partage que vous exécuteriez :
sudo umount /backups
Si le point de montage est défini dans le /etc/fstab
fichier, assurez-vous de supprimer la ligne ou de la commenter en ajoutant #
au début de la ligne.