Retour au blog

Configuration d'un montage NFS sur Ubuntu 20.04

Configuration d'un montage NFS sur Ubuntu 20.04

Le Network File System (NFS) est une solution de stockage distribué. C’est un protocole de système de fichiers qui permet de monter des répertoires distants sur le serveur local et de les utiliser comme s'il s'agissait d'un stockage local. NFS permet à plusieurs clients de partager un stockage distant. Il est particulièrement adapté aux environnements qui nécessitent régulièrement des ressources partagées. NFS est basé sur le système ONC RPC (Open Network Computing Remote Procedure Call). C’est un standard ouvert défini dans les RFC (Request for Comments). Cela permet à quiconque d'implémenter le protocole.

Dans ce guide, nous allons passer en revue les étapes de configuration et de paramétrage d'un montage NFS sur Ubuntu 20.04.

Prérequis

Comme le suggère la description de NFS, la configuration de NFS comporte deux parties :

  • Hôte : Stocke physiquement les données et partage le stockage avec les systèmes « clients ».

  • Client : Le système qui se connecte à l'« hôte » et utilise le stockage distant comme s'il était local.

Pour notre démonstration, nous utiliserons deux serveurs, tous deux configurés avec Ubuntu 20.04. Voici un guide simple sur la configuration de votre serveur Ubuntu. Tout au long de ce guide, ces serveurs seront appelés hôte et client. Notez que l'action pour le client sera la même, même s'il y en a plusieurs.

Les adresses IP suivantes sont attribuées aux serveurs. Ces serveurs sont hébergés par CloudSigma:

  • hôte: 31.171.240.79

  • client: 31.171.250.109

Veillez à les remplacer par les adresses IP appropriées.

Installation de NFS

NFS est facilement disponible dans les dépôts officiels d'Ubuntu. Il existe différents paquets logiciels pour l' hôte et le client systèmes.

  • Installation de NFS sur l'hôte

Sur l'hôte, nous avons besoin des composants qui permettent à la machine de servir d' hôte. Cela se présente sous la forme du paquet nfs-kernel-server. Ubuntu utilise APT comme gestionnaire de paquets. Tout d'abord, lancez le terminal et mettez à jour la base de données des paquets APT :

Server Apt Update

Ensuite, installez le paquet nfs-kernel-server. Si nécessaire, APT se chargera de toutes les dépendances supplémentaires :

Install nfs kernel server

  • Installation de NFS sur le client

Sur le système client, nous avons besoin de la fonctionnalité permettant de se connecter aux répertoires de l' hôte via le réseau. Il n'a pas besoin de la fonctionnalité de serveur NFS. Sur Ubuntu, elle est regroupée dans le paquet nfs-common. Mettez à jour la base de données des paquets APT :

Client apt update

Ensuite, installez le paquet nfs-common :

Install nfs common

Répertoires partagés sur l'hôte

Ensuite, nous allons partager deux répertoires distincts, chacun avec une configuration différente. Nous allons faire la démonstration de deux manières clés dont les montages NFS fonctionnent par rapport à l'accès superutilisateur. Par défaut, les superutilisateurs ont l'autorité nécessaire pour effectuer n'importe quelle action sur l'ensemble du système. Cependant, les répertoires montés via NFS ne font pas partie du système sur lequel ils sont montés. Le serveur NFS refusera d'effectuer toute opération nécessitant des privilèges de superutilisateur. Cette restriction se traduit par le fait que les clients n'ont aucune autorité pour écrire, réattribuer des propriétés et effectuer d'autres tâches de superutilisateur sur les montages NFS.

Il est possible d'autoriser certains utilisateurs de confiance à effectuer ces tâches sur les systèmes de fichiers montés. Cependant, cela comporte un certain risque, car un tel client peut potentiellement obtenir un accès complet à l' hôte. Cela peut être atténué par une gestion appropriée des permissions des utilisateurs. Sous Linux, le fichier sudoers contrôle tous les privilèges des utilisateurs sur le système. Pour plus d'informations, vous pouvez consulter notre tutoriel sur la configuration du fichier sudoers sous Linux.

  • Montage à usage général

Le premier exemple sera un montage NFS à usage général avec les comportements NFS par défaut. Avec cette approche, il est extrêmement difficile pour le client d'effectuer des actions de superutilisateur sur les montages. Ce type de montage NFS est couramment déployé pour le stockage de fichiers, le téléversement à l'aide d'un CMS (Content Management System), ou le partage de fichiers de projet, etc.

Les étapes suivantes doivent être effectuées sur le système hôte. Tout d'abord, créez un répertoire à partager nommé nfs:

Create nfs general dir

Comme le répertoire a été créé avec sudo le privilège, le propriétaire sera root:

List nfs general

Par défaut, NFS traduira toute opération root du côté client vers les nobody:nogroup identifiants par mesure de sécurité. Par souci de cohérence, modifiez le propriétaire du répertoire pour qu'il corresponde aux identifiants :

Change owner nogroup

  • Répertoire personnel

Le deuxième exemple consiste à rendre le répertoire personnel de l'utilisateur host disponible pour les clients. Les administrateurs de confiance des clients sélectionnés peuvent y accéder pour gérer facilement les utilisateurs. Le répertoire /home existe par défaut, il n'est donc pas nécessaire de créer un répertoire. Quant aux permissions du répertoire, il n'est pas nécessaire d'effectuer des modifications car cela causerait plus de problèmes que d'avantages.

Configuration des partages NFS (Exports)

Les répertoires à partager sont maintenant créés. Ensuite, NFS doit être configuré pour les rendre disponibles pour les clients. NFS utilise un fichier de configuration pour suivre les répertoires à partager. Ouvrez le fichier de configuration NFS suivant dans l'éditeur de texte de votre choix :

exports file

La section des commentaires du fichier décrit la structure syntaxique générale de la configuration. En résumé, tout répertoire doit être déclaré au format suivant :

Pour les deux répertoires que nous avons décidé de partager, la configuration ressemblera à ceci. Les deux répertoires ont presque les mêmes options de configuration :

exports file mod

Voici une brève description des options de configuration :

  • rw : Le client bénéficie des autorisations de lecture et d'écriture sur le volume.

  • sync : Force NFS à écrire les modifications sur le disque avant de répondre. Cela offre une expérience plus stable et cohérente. La réponse reflétera l'état réel du volume distant. Cependant, les opérations sur les fichiers seront plus lentes.

  • no_subtree_check : Empêche la vérification des sous-arborescences (subtree checking). Si elle n'est pas désactivée, les hôtes seront contraints de vérifier l'existence du fichier dans l'arborescence exportée pour chaque requête du client. Cela peut entraîner de nombreux problèmes, par exemple, si un fichier est renommé pendant que le client l'utilise. Dans la plupart des cas, il est préférable de désactiver la vérification des sous-arborescences.

  • no_root_squash : Comme mentionné précédemment, NFS traduira toute requête de l'utilisateur root distant en un utilisateur non privilégié. Il s'agit d'une fonctionnalité de sécurité intentionnelle pour empêcher tout accès indésirable au système hôte. Cependant, l'utilisation de cette option désactivera ce comportement.

Enregistrez le fichier de configuration et quittez l'éditeur. Pour que les modifications prennent effet, redémarrez le serveur NFS :

Restart nfs kernel server

Ajustement du pare-feu

Pour tout serveur, une configuration correcte du pare-feu est indispensable. En supposant que vous ayez configuré votre serveur Ubuntu 20.04 en conséquence, le pare-feu UFW devrait être actif. C'est un pare-feu simple mais puissant qui est fourni avec la plupart des distributions Linux. Pour les débutants, voici un guide rapide expliquant UFW, son fonctionnement et l'utilisation courante d'UFW avec des exemples.

Par défaut, le pare-feu bloquera tout trafic entrant et sortant. Pour s'assurer que le serveur NFS peut se connecter et échanger du trafic correctement, nous devons ajouter une exception pour le protocole NFS. Tout d'abord, vérifiez l'état du pare-feu. Cela affichera également toutes les règles actuelles :

ufw status

Comme nous pouvons le voir, seul le trafic SSH est autorisé sur le système. We need to add an exception to allow NFS traffic.

Dans la plupart des cas, il est fortement recommandé d'utiliser la règle la plus restrictive qui permet tout de même le trafic nécessaire. Ainsi, nous n'autoriserons que le ou les clients sélectionnés à se connecter à l'hôte :

ufw allow ports

Après cela, vérifiez à nouveau l'état du pare-feu :

ufw status after change

Création du point de montage

Le serveur est maintenant prêt à autoriser le système client à se connecter au protocole NFS. Ensuite, nous devons préparer le client. Pour accéder au volume distant, il doit être monté localement sur le client. En ce qui concerne le point de montage, il est recommandé d'utiliser un répertoire vide dédié.

Pour les deux volumes distants, créez deux points de montage distincts :

Create client nfs general directory

Create client nfs home directory

Maintenant que les points de montage sont prêts, vous devez monter les volumes distants :

Mount general directory on client

Mount home directory on client

Nous pouvons vérifier si les montages ont réussi. Vérifiez la liste de tous les volumes montés :

Disk free in client

Voilà ! Les volumes distants sont montés avec succès. Nous pouvons également vérifier l'utilisation de l'espace à l'aide de la commande suivante :

Disk usage in client home

Test de l'accès NFS

Jusqu'à présent, les volumes distants ont été montés correctement. Cependant, cela ne servira à rien si le client ne peut pas lire/écrire de données sur le volume distant. Pour vérifier, créez un fichier factice sur le(s) montage(s) NFS. Ici, le fichier sera créé avec le privilège root pour tester si les configurations spécifiques à root fonctionnent correctement :

Create file in nfs

Ensuite, vérifiez le propriétaire du fichier :

Check ownership of file created

Comme nous pouvons le voir, NFS traduit le propriétaire du fichier en nobody:nogroup. Le répertoire /var/nfs/ general appartient à nobody:nogroup, donc NFS traduit la propriété du fichier. Il est temps de tester l'autre montage NFS :

Create home file

Vérifiez l'existence et le propriétaire du fichier :

Check ownership of home file

Dans ce cas, NFS n'a pas traduit la propriété du fichier. Ce client a été configuré pour pouvoir effectuer des actions administratives. De plus, le répertoire hôte d'origine /home n'appartient pas à nobody:nogroup.

Astuces supplémentaires

  • Montage au démarrage

Jusqu'à présent, nous devions monter manuellement le volume NFS sur un répertoire local. S'ils ne sont pas démontés, les montages NFS dureront jusqu'au redémarrage du système. Si le volume NFS est utilisé régulièrement, le montage manuel devient extrêmement fastidieux. Dans le cas de montages NFS multiples, il n'est pas pratique de les monter manuellement un par un.

En utilisant le fichier /etc/fstab , nous pouvons automatiser le processus. Pendant le démarrage, ce script montera automatiquement les volumes NFS sur les points de montage cibles. Ouvrez le fichier dans un éditeur de texte :

fstab file

Ajoutez les lignes suivantes pour monter les volumes distants du système hôte :

fstab file after change

Enregistrez le script et fermez l'éditeur de texte. Au prochain démarrage, Linux montera automatiquement les volumes distants. Notez que le démarrage du système peut prendre un certain temps car il se connecte et monte les volumes.

  • Démontage du volume NFS

Si le volume distant n'est plus nécessaire, le démontage des volumes les supprimera du système client. Avant de procéder au démontage, assurez-vous toutefois qu'aucune application ou script n'utilise le volume distant. Le démontage des montages NFS est similaire au démontage de tout autre montage. Dans ce cas, démontez /nfs/home et /nfs/general:

Unmount nfs

Ensuite, vérifiez l'action :

Disks after unmount

Dernières réflexions

Dans ce guide, nous avons créé un serveur NFS et présenté quelques bases du partage à distance NFS. Si vous souhaitez implémenter NFS dans un environnement de production, gardez à l'esprit que le protocole NFS n'est pas chiffré. Cela peut poser des problèmes de sécurité, par exemple des attaques de l'homme du milieu (man-in-the-middle).

Bonne informatique !

author

Pranay Kapgate

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.