Comment configurer un montage NFS sur Rocky Linux 8

De Get Docs
Aller à :navigation, rechercher

Introduction

NFS, ou Network File System, est un protocole de système de fichiers distribué qui vous permet de monter des répertoires distants sur votre serveur. Cela vous permet de gérer l'espace de stockage dans un emplacement différent et d'écrire dans cet espace à partir de plusieurs clients. NFS fournit un moyen relativement standard et performant d'accéder à des systèmes distants sur un réseau et fonctionne bien dans les situations où les ressources partagées doivent être consultées régulièrement.

Dans ce guide, vous expliquerez comment installer le logiciel nécessaire à la fonctionnalité NFS sur Rocky Linux 8, configurer deux montages NFS sur un serveur et un client, et monter et démonter les partages distants.

Conditions préalables

Vous utiliserez deux serveurs dans ce didacticiel, l'un partageant une partie de son système de fichiers avec l'autre. Pour suivre, il vous faudra :

  • Deux serveurs Rocky Linux 8. Chacun d'entre eux doit avoir un utilisateur non root avec sudo privilèges, un pare-feu configuré avec UFW et un réseau privé, s'il est disponible pour vous.
    • Pour obtenir de l'aide sur la configuration d'un utilisateur non-root avec sudo privilèges et un pare-feu, suivez notre guide Configuration initiale du serveur avec Rocky Linux 8.
    • Si vous utilisez DigitalOcean Droplets pour votre serveur et votre client, vous pouvez en savoir plus sur la configuration d'un réseau privé dans notre documentation sur Comment créer un VPC.

Tout au long de ce tutoriel, le serveur qui partage ses répertoires sera appelé hôte et le serveur qui monte ces répertoires comme client. Vous aurez besoin de connaître l'adresse IP des deux. Assurez-vous d'utiliser l'adresse réseau privée, si disponible.

Tout au long de ce didacticiel, ces adresses IP seront référencées par les espaces réservés host_ip et client_ip. Veuillez remplacer au besoin.

Étape 1 - Téléchargement et installation des composants

Vous commencerez par installer les composants nécessaires sur chaque serveur.

Sur l'hôte

Sur le serveur hôte, utilisez le dnf gestionnaire de paquets pour installer le nfs-utils package, qui vous permettra de partager vos répertoires :

sudo dnf install nfs-utils

Une fois ces packages installés, basculez vers le serveur client.

Sur le Client

Sur le serveur client, vous devez installer le même nfs-utils forfait:

sudo dnf install nfs-utils

Maintenant que les deux serveurs disposent des packages nécessaires, vous pouvez commencer à les configurer.

Étape 2 - Création des répertoires de partage sur l'hôte

Vous allez partager deux répertoires distincts, avec des paramètres de configuration différents, afin d'illustrer deux façons principales de configurer les montages NFS en ce qui concerne l'accès superutilisateur.

Les superutilisateurs peuvent faire n'importe quoi n'importe où sur leur système. Cependant, les répertoires montés par NFS ne font pas partie du système sur lequel ils sont montés, donc par défaut, le serveur NFS refuse d'effectuer des opérations qui nécessitent des privilèges de superutilisateur. Cette restriction par défaut signifie que les superutilisateurs sur le client ne peuvent pas écrire de fichiers en tant que racine, réaffecter la propriété ou effectuer toute autre tâche de superutilisateur sur le montage NFS.

Parfois, cependant, il y a des utilisateurs de confiance sur le système client qui doivent effectuer ces actions sur le système de fichiers monté mais qui n'ont pas besoin d'un accès superutilisateur sur l'hôte. Vous pouvez configurer le serveur NFS pour permettre cela, même si cela introduit un élément de risque qu'un utilisateur malveillant puisse obtenir un accès root à l'ensemble du système hôte.

Exemple 1 : Exportation d'un montage à usage général

Dans le premier exemple, vous allez créer un montage NFS à usage général qui utilise le comportement NFS par défaut pour qu'il soit difficile pour un utilisateur disposant de privilèges root sur la machine client d'interagir avec l'hôte en utilisant ces privilèges de superutilisateur client. Vous pouvez utiliser quelque chose comme ça pour stocker des fichiers qui ont été téléchargés à l'aide d'un système de gestion de contenu ou pour créer un espace permettant aux utilisateurs de partager facilement des fichiers de projet.

Tout d'abord, créez le répertoire de partage (en utilisant le -p possibilité de mkdir, qui créera le chemin d'accès complet au fichier si nécessaire) :

sudo mkdir /var/nfs/general -p

Puisque vous le créez avec sudo, le répertoire appartient à l'utilisateur root de l'hôte :

ls -dl /var/nfs/general
Outputdrwxr-xr-x 2 root root 4096 Apr 17 23:51 /var/nfs/general

NFS traduira toutes les opérations racine sur le client en nobody l'utilisateur par mesure de sécurité. Par conséquent, vous devez modifier la propriété du répertoire en nobody:

sudo chown nobody /var/nfs/general

Vous êtes maintenant prêt à exporter ce répertoire.

Exemple 2 : Exportation du répertoire personnel

Dans le deuxième exemple, l'objectif est de rendre les répertoires personnels des utilisateurs stockés sur l'hôte disponibles sur les serveurs client, tout en permettant aux administrateurs de confiance de ces serveurs client d'accéder ils ont besoin de gérer facilement les utilisateurs.

Pour ce faire, vous allez exporter le /home annuaire. Comme il existe déjà, vous n'avez pas besoin de le créer. Vous ne modifierez pas non plus les autorisations. Si vous avez fait, cela pourrait entraîner une série de problèmes pour toute personne ayant un répertoire personnel sur la machine hôte.

Étape 3 - Configuration des exportations NFS sur le serveur hôte

Ensuite, vous plongerez dans le fichier de configuration NFS pour configurer le partage de ces ressources.

L'éditeur de texte par défaut fourni avec Rocky Linux 9 est vi. vi est un éditeur de texte extrêmement puissant, mais il peut être quelque peu obtus pour les utilisateurs qui manquent d'expérience avec lui. Vous voudrez peut-être installer un éditeur plus convivial tel que nano pour faciliter l'édition des fichiers de configuration sur votre serveur Rocky Linux 8 :

sudo dnf install nano

Sur la machine hôte, ouvrez le /etc/exports déposer dans nano ou votre éditeur de texte préféré avec les privilèges root :

sudo nano /etc/exports

Sur Rocky Linux 8, ce fichier sera vide par défaut. Voici la syntaxe que vous devez créer :

/etc/exports

directory_to_share    client(share_option1,...,share_optionN)

Ajoutez une ligne pour chacun des répertoires que vous envisagez de partager. Assurez-vous de changer le client_ip espace réservé affiché ici à votre adresse IP réelle :

/etc/exports

/var/nfs/general    client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

Ici, vous utilisez les mêmes options de configuration pour les deux répertoires à l'exception de no_root_squash. Jetez un œil à la signification de chacune de ces options :

  • rw: Cette option donne à l'ordinateur client un accès en lecture et en écriture au volume.
  • sync: Cette option oblige NFS à écrire les modifications sur le disque avant de répondre. Il en résulte un environnement plus stable et cohérent puisque la réponse reflète l'état réel du volume distant. Cependant, cela réduit également la vitesse des opérations sur les fichiers.
  • no_subtree_check: Cette option empêche la vérification de la sous-arborescence, qui est un processus dans lequel l'hôte doit vérifier si le fichier est réellement toujours disponible dans l'arborescence exportée pour chaque demande. Cela peut causer de nombreux problèmes lorsqu'un fichier est renommé alors que le client l'a ouvert. Dans presque tous les cas, il est préférable de désactiver la vérification des sous-arbres.
  • no_root_squash: Par défaut, NFS traduit les requêtes d'un utilisateur root à distance en un utilisateur non privilégié sur le serveur. Il s'agissait d'une fonction de sécurité destinée à empêcher un compte root sur le client d'utiliser le système de fichiers de l'host en tant que root. no_root_squash désactive ce comportement pour certains partages.

Lorsque vous avez terminé vos modifications, enregistrez et fermez le fichier. Si vous utilisez nano, presse Ctrl+X, puis lorsque vous y êtes invité, Y puis Entrée. Ensuite, pour rendre les partages disponibles pour les clients que vous avez configurés, démarrez le serveur NFS et activez-le pour qu'il s'exécute automatiquement avec systemctl:

sudo systemctl enable nfs-server
sudo systemctl start nfs-server

Vérifiez que le service a commencé à utiliser systemctl status:

sudo systemctl status nfs-server
Output● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: >
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since Mon 2022-08-08 17:41:18 UTC; 4s ago
  Process: 14348 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemct>
  Process: 14336 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 14335 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 14348 (code=exited, status=0/SUCCESS)

Aug 08 17:41:18 rocky8-nfs-host systemd[1]: Starting NFS server and services...
Aug 08 17:41:18 rocky8-nfs-host systemd[1]: Started NFS server and services.

Cependant, avant de pouvoir utiliser les nouveaux partages, vous devez vous assurer que le trafic vers les partages est autorisé par les règles de pare-feu.

Étape 4 - Réglage du pare-feu sur l'hôte

Si vous exécutez un firewalld pare-feu comme recommandé dans notre guide Configuration initiale du serveur avec Rocky Linux 8, vérifiez quels services sont actuellement autorisés dans le services ligne de la sortie de firewall-cmd:

firewall-cmd --permanent --list-all | grep services
Outputservices: cockpit dhcpv6-client ssh

Sur votre système, seuls les services système de base sont autorisés, vous devrez donc ajouter des règles pour le trafic NFS. NFS sur Rocky Linux utilise trois services différents, et ils doivent tous être autorisés via votre pare-feu. Vous pouvez ajouter ces règles avec firewall-cmd:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

Vous pouvez vérifier qu'ils ont été ajoutés :

firewall-cmd --permanent --list-all | grep services
Outputservices: cockpit dhcpv6-client mountd nfs rpc-bind ssh

Notez que cela ouvrira votre pare-feu pour ces services globalement, plutôt que pour un seul client. Cela ne devrait pas poser de problème, car vous avez déjà configuré vos montages NFS pour qu'ils ne soient accessibles qu'à une seule adresse IP. Si vous avez besoin d'ajouter directement plus de sécurité à votre configuration de pare-feu, vous pouvez implémenter zones de pare-feu.

Étape 5 - Création de points de montage et de répertoires de montage sur le client

Maintenant que le serveur hôte est configuré et sert ses partages, vous allez préparer votre client.

Afin de rendre les partages distants disponibles sur le client, vous devez monter les répertoires sur l'hôte que vous souhaitez partager dans des répertoires vides sur le client. .

Remarque : S'il y a des fichiers et des répertoires dans votre point de montage, ils seront masqués dès que vous monterez le partage NFS. Pour éviter la perte de fichiers importants, assurez-vous que si vous montez dans un répertoire qui existe déjà, ce répertoire est vide.


Vous allez créer deux répertoires pour vos montages :

sudo mkdir -p /nfs/general
sudo mkdir -p /nfs/home

Maintenant que vous avez un emplacement pour placer les partages distants et que vous avez ouvert le pare-feu, vous pouvez monter les partages en utilisant l'adresse IP de votre serveur hôte :

sudo mount host_ip:/var/nfs/general /nfs/general
sudo mount host_ip:/home /nfs/home

Ces commandes monteront les partages de l'ordinateur hôte sur la machine client. Vous pouvez vérifier qu'ils ont été montés avec succès de plusieurs manières. Vous pouvez vérifier cela avec un mount ou findmnt commande, mais df -h fournit une sortie plus lisible :

df -h
OutputFilesystem                   Size  Used Avail Use% Mounted on
Filesystem                       Size  Used Avail Use% Mounted on
devtmpfs                         370M     0  370M   0% /dev
tmpfs                            405M     0  405M   0% /dev/shm
tmpfs                            405M   11M  394M   3% /run
tmpfs                            405M     0  405M   0% /sys/fs/cgroup
/dev/vda1                         25G  1.5G   24G   6% /
tmpfs                             81M     0   81M   0% /run/user/0
host_ip:/var/nfs/general   25G  1.6G   24G   7% /nfs/general
host_ip:/home              25G  1.6G   24G   7% /nfs/home

Les deux partages que vous avez montés apparaissent en bas. Parce qu'ils ont été montés à partir du même système de fichiers, ils affichent la même utilisation du disque.

Étape 6 - Test de l'accès NFS

Ensuite, testez l'accès aux partages en écrivant quelque chose sur chacun d'eux.

Exemple 1 : La part à usage général

Tout d'abord, écrivez un fichier de test sur le /var/nfs/general partager:

sudo touch /nfs/general/general.test

Ensuite, vérifiez sa propriété :

ls -l /nfs/general/general.test
Output-rw-r--r--. 1 nobody nobody 0 Aug  8 18:24 /nfs/general/general.test

Étant donné que vous avez monté ce volume sans modifier le comportement par défaut de NFS et que vous avez créé le fichier en tant qu'utilisateur racine de la machine client via le sudo commande, la propriété du fichier par défaut est nobody. Les superutilisateurs client ne pourront pas effectuer d'actions administratives typiques, comme changer le propriétaire d'un fichier ou créer un nouveau répertoire pour un groupe d'utilisateurs, sur ce partage monté sur NFS.

Exemple 2 : le partage du répertoire personnel

Pour comparer les autorisations du partage à usage général avec le partage du répertoire personnel, créez un fichier dans /nfs/home de la même façon:

sudo touch /nfs/home/home.test

Ensuite, regardez la propriété du fichier :

ls -l /nfs/home/home.test
Output-rw-r--r--. 1 root root 0 Aug  8 18:26 /nfs/home/home.test

Vous avez créé home.test en tant que racine' en utilisant le sudo commande, exactement de la même manière que vous avez créé la general.test dossier. Cependant, dans ce cas, il appartient à root car vous avez remplacé le comportement par défaut lorsque vous avez spécifié le no_root_squash option sur ce support. Cela permet à vos utilisateurs root sur la machine client d'agir en tant que root et rend l'administration des comptes d'utilisateurs beaucoup plus pratique. En même temps, cela signifie que vous n'avez pas à donner à ces utilisateurs un accès root sur l'hôte '.

Étape 7 - Montage des répertoires NFS distants au démarrage

Vous pouvez monter les partages NFS distants automatiquement au démarrage en les ajoutant à /etc/fstab fichier sur le client.

Ouvert /etc/fstab avec les privilèges root dans votre éditeur de texte :

sudo nano /etc/fstab

En bas du fichier, ajoutez une ligne pour chacun de vos partages. Ils ressembleront à ceci :

/etc/fstab

. . .
host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Remarque : Vous pouvez trouver plus d'informations sur les options que vous spécifiez ici dans le manuel NFS [1].


Le client montera automatiquement les partitions distantes au démarrage, bien que cela puisse prendre quelques instants pour établir la connexion et pour que les partages soient disponibles.

Étape 8 - Démontage d'un partage distant NFS

Si vous ne souhaitez plus que le répertoire distant soit monté sur votre système, vous pouvez le démonter en sortant de la structure de répertoires du partage et en le démontant, comme ceci :

cd ~
sudo umount /nfs/home
sudo umount /nfs/general

Notez que la commande est nommée umount ne pas unmount comme vous pouvez vous y attendre.

Cela supprimera les partages distants, ne laissant que votre stockage local accessible :

df -h
OutputFilesystem      Size  Used Avail Use% Mounted on
devtmpfs        370M     0  370M   0% /dev
tmpfs           405M     0  405M   0% /dev/shm
tmpfs           405M   11M  394M   3% /run
tmpfs           405M     0  405M   0% /sys/fs/cgroup
/dev/vda1        25G  1.5G   24G   6% /
tmpfs            81M     0   81M   0% /run/user/0

Si vous souhaitez également les empêcher d'être remontés au prochain redémarrage, modifiez /etc/fstab et supprimez la ligne ou commentez-la en plaçant un # caractère en début de ligne. Vous pouvez également empêcher le montage automatique en supprimant le auto option, qui vous permettra de toujours le monter manuellement.

Conclusion

Dans ce didacticiel, vous avez créé un hôte NFS et illustré certains comportements NFS clés en créant deux montages NFS différents, que vous avez partagés avec un client NFS.

Si vous cherchez à implémenter NFS en production, il est important de noter que le protocole lui-même n'est pas chiffré. Dans les cas où vous partagez sur un réseau privé, cela peut ne pas être un problème. Dans d'autres cas, un VPN ou un autre type de tunnel crypté sera nécessaire pour protéger vos données.