GNU/Linux >> Tutoriels Linux >  >> Linux

Administration du système de fichiers réseau (NFS) sous Linux

Systèmes de fichiers réseau , également abrégé NFS , sont des systèmes de fichiers accessibles sur le réseau.

Par rapport aux systèmes de fichiers qui peuvent être locaux sur votre machine, les systèmes de fichiers réseau sont stockés sur des machines distantes auxquelles on accède via un protocole réseau spécifique :le protocole NFS .

NFS appartient à la grande famille des protocoles de partage de fichiers, parmi lesquels SMB, FTP, HTTP et bien d'autres protocoles de partage de fichiers.

NFS a sa propre façon d'accéder et de sécuriser les systèmes de fichiers distants, ainsi que différentes manières de sécuriser l'accès aux systèmes de fichiers distants.

Dans ce tutoriel, nous allons configurer un serveur NFS sur une machine distante et installer un client NFS pour y accéder.

Nous allons configurer le serveur NFS en fonction de la ressource que nous voulons partager, et nous allons voir les petits trucs qu'il y a à savoir sur NFS.

Ce que vous allez apprendre

Si vous suivez ce tutoriel jusqu'au bout, vous allez apprendre les notions suivantes :

  • Comment vous pouvez configurer un serveur NFSv4 , créez un dossier partagé et exportez-le vers des clients distants ;
  • Comment installer un client NFS et comment le lier à votre serveur NFS ;
  • Comment fonctionne l'authentification des utilisateurs sur NFS et pourquoi les authentifications NFS sont considérées comme faibles ;
  • Qu'est-ce que l'écrasement ? et pourquoi vous devriez toujours activer root_squashing;
  • Comment NFS gère l'édition simultanée par rapport aux autres protocoles de partage de fichiers.

C'est un programme assez long, alors sans plus tarder, commençons par voir comment configurer votre propre serveur NFSv4.

Configuration d'un serveur NFSv4

Pour ce tutoriel, nous allons utiliser une distribution Kubuntu standard, mais le reste de ce tutoriel devrait fonctionner de la même manière si vous utilisez une autre distribution.

$ uname -a

Linux kubuntu 5.3.0-18-generic #19-Ubuntu GNU/Linux

Avant d'installer des packages, assurez-vous que votre système est correctement configuré avec la commande apt.

sudo apt-get update

Maintenant que votre système est mis à jour, vous allez devoir installer plusieurs packages pour votre serveur NFS.

Installation du serveur NFSv4

Pour installer un serveur NFS sous Linux, vous devez installer le "nfs-kernel-server ” avec app.

$ sudo apt-get install nfs-kernel-server

Comme vous pouvez le voir sur la capture d'écran ci-dessus, le nfs-kernel-server est livré avec des fichiers de configuration que vous devrez modifier :

  • exportations :utilisé comme fichier de configuration pour définir les répertoires à exporter via NFS ;
  • nfs-kernel-server :qui peut être utilisé si vous souhaitez configurer l'authentification ou modifier les paramètres liés au RPC de votre serveur NFS.

Pour ce tutoriel, nous sommes uniquement configurés pour modifier le fichier exports afin d'exporter nos répertoires.

Exporter des répertoires avec exports

Comme indiqué plus haut, nous allons modifier le fichier exports situé dans le répertoire etc afin de partager des répertoires.

La syntaxe du fichier d'exportation est assez simple.

Le fichier d'exports est un fichier séparé en colonnes composé des champs suivants :

  • Répertoire local :le répertoire à exporter sur le système de fichiers local ;
  • IP ou nom d'hôte de la machine à laquelle vous souhaitez accorder l'accès ;
  • Options NFS tels que rw (pour lecture-écriture), sync (ce qui signifie que les modifications apportées sont directement enregistrées sur le disque)

Tout d'abord, vous devez créer un répertoire qui sera exporté sur votre système. Vous n'êtes évidemment pas obligé de le créer si le répertoire existe déjà sur votre machine.

$ sudo mkdir -p /var/share

Pour l'instant, vous pouvez laisser root comme propriétaire et comme groupe propriétaire du fichier, mais nous le modifierons ultérieurement en fonction des autorisations que nous souhaitons pour ce dossier partagé.

Maintenant que votre dossier partagé est créé, vous devrez l'ajouter au fichier d'exportation afin de l'exporter.

Retournez à votre /etc/exports fichier et ajoutez les informations que nous avons spécifiées dans la liste à puces ci-dessus.

Dans la première colonne, vous devez spécifier le dossier à exporter qui est le dossier de partage que nous venons de créer.

Ensuite, vous devez spécifier l'adresse IP ou les noms d'hôte qui peuvent monter ce répertoire localement.

Dans ce cas, nous avons choisi d'avoir une IP réseau défini dans le fichier d'exportation, mais cela peut être différent pour vous.

Afin d'exporter tous les répertoires spécifiés dans le fichier "exports", vous devez utiliser le "exportfs " avec l'option "-a" pour "tout".

$ sudo exportfs -a

Ensuite, vous pouvez vérifier que vos dossiers ont été correctement exportés en exécutant la commande "exportfs" avec l'option "-v" pour "verbose".

$ sudo exportfs -v

Comme vous l'avez sans doute remarqué, certaines options qui n'étaient pas précisées dans le fichier d'export étaient définies par défaut par le serveur NFS :

  • rw :les opérations de lecture et d'écriture sont autorisées sur le volume (cette option était initialement spécifiée dans le fichier);
  • wdélai  :le serveur NFS induira un petit délai d'écriture s'il soupçonne que plusieurs opérations d'écriture sont actuellement effectuées en même temps ;
  • root_squash :le compte "root" sera "écrasé" à l'utilisateur anonyme par défaut. Si vous ne savez pas ce qu'est le squashing, vous pouvez en savoir plus dans les sections suivantes ;
  • no_subtree_check :par défaut, le serveur NFS vérifiera que l'opération demandée fait partie du système de fichiers exporté sur le serveur;
  • sec=sys :par défaut, NFS utilisera les informations d'identification définies sur le serveur. Si votre système utilise l'authentification locale, ces informations d'identification seront utilisées, mais si NIS est utilisé, il sera utilisé comme système d'authentification ;
  • sécurisé :cette option vérifie que les requêtes proviennent d'un port inférieur à 1024 (pour rappel, les requêtes des clients NFS proviennent du port 111);
  • no_all_squash  :à l'exception du compte "root", les autres utilisateurs ne sont pas écrasés lorsqu'ils interagissent avec le serveur NFS.

Personnaliser les règles de pare-feu pour NFS

Pour que nos clients puissent se connecter à notre serveur NFS, vous devez vous assurer que le pare-feu est configuré pour accepter les connexions NFS.

Pour rappel, NFS s'exécute sur le port 2049 sur le serveur.

Pour Debian et Ubuntu, vous utilisez probablement un pare-feu UFW (vous pouvez le vérifier avec la commande "ufw status")

Pour autoriser les connexions NFS à votre serveur, exécutez le "ufw ” en tant que root et autoriser les connexions sur le port 2049.

$ sudo ufw allow 2049

D'un autre côté, si vous utilisez une distribution Red Hat ou CentOS, vous devrez modifier le pare-feu intégré "firewalld".

$ sudo firewall-cmd --add-port=2049/tcp

Enfin, assurez-vous que votre adaptateur réseau expose correctement le port 2049 au monde extérieur avec la commande "netstat".

$ netstat -tulpn | grep 2049

Bon, maintenant que vous vous êtes assuré que votre serveur NFS est correctement opérationnel et que vos partages sont exportés, voyons comment vous pouvez configurer vos clients NFS.

Configuration des clients NFSv4

La configuration sur le client est assez simple, mais vous aurez besoin de packages spécifiques pour monter des partitions NFS.

Monter des partitions NFS sur les clients

Tout d'abord, vous devez installer le "nfs-utils ” package afin de pouvoir monter des packages NFS.

Vous devez évidemment avoir les privilèges sudo afin d'installer de nouveaux packages. Voici quelques tutoriels pour Debian/Ubuntu et CentOS/RHEL.

$ sudo apt-get install nfs-utils

$ sudo yum install nfs-utils

Maintenant que le package est installé, vous pouvez simplement monter la partition en utilisant la syntaxe suivante

$ mount -t nfs <dest_ip_or_hostname>:<remote_path> <mount_point>

Par exemple, supposons que votre serveur NFS est situé sur l'adresse IP 192.168.178.31/24 et que vous souhaitez partager le dossier /var/share sur le serveur.

Pour exporter ce dossier, vous écririez la commande suivante

$ sudo mount -t nfs 192.168.178.31:/var/share /var/share

Le dépannage du client NFS n'est pas très pratique, mais si votre terminal est entre les mains, cela signifie probablement que vous ne pouvez pas atteindre l'hôte de destination.

Si la commande s'exécute avec succès, vous devriez pouvoir répertorier votre nouveau point de montage à l'aide de la commande df.

$ df -H

Création de nouveaux fichiers sur le volume NFS

Comme vous vous en souvenez probablement dans la dernière section, nous avons vu que notre volume NFS est configuré pour écraser le compte root par défaut mais aucun autre utilisateur.

De plus, le dossier partagé appartient à root et au groupe root.

Si vous essayez de créer de nouveaux fichiers sur ce volume, vous obtiendrez une erreur d'autorisation refusée, même lorsque vous essayez de les créer avec sudo.

Pourquoi ?

Le compte client n'appartient pas au groupe "root" sur le serveur, et si vous essayez de créer un fichier en tant que root sur le client, vous serez écrasé sur le compte anonyme.

Un mot sur la gestion des utilisateurs NFS

Avant de configurer notre serveur et notre client afin de partager correctement les dossiers, passons en revue rapidement le fonctionnement de la gestion des utilisateurs sur les volumes NFS.

Comme vous l'avez probablement appris dans nos tutoriels précédents, un utilisateur est identifié par un ID utilisateur (également appelé UID ) et cet UID est unique sur une machine mais il ne le sera pas sur plusieurs machines d'un même site.

Toutefois, si votre système n'est pas configuré pour fonctionner avec un système central de gestion des utilisateurs (tel que NIS, OpenLDAP ou Samba), vos ID utilisateur peuvent entrer en conflit sur les systèmes sur lesquels vous travaillez.

Dans ce cas, si nous considérons que vous n'avez pas de système de gestion central, nous indiquerons simplement que vous conservez une liste d'utilisateurs cohérente entre les systèmes.

Maintenant que les utilisateurs et les groupes sont cohérents entre les hôtes, créons un groupe qui pourra ajouter et supprimer des fichiers dans le dossier.

Création d'un groupe pour le partage NFS

Dans ce didacticiel, nous allons supposer que "les administrateurs " sont en mesure d'ajouter et de supprimer des fichiers sur ce dossier.

Tout d'abord, sur le serveur, utilisez le "groupadd ” commande afin de créer ce nouveau groupe

$ sudo groupadd administrators

Vous pouvez ensuite changer le groupe propriétaire de votre partage NFS en "administrateurs

$ sudo chown :administrators /var/share

Sur le serveur, ajoutez les utilisateurs autorisés au groupe que vous venez de créer.

$ sudo usermod -aG administrators <user>

Vous n'avez pas besoin de réexporter vos Drive partagés, vous pouvez simplement commencer à créer des fichiers maintenant que les autorisations sont correctement configurées.

Sur le client, créons un nouveau fichier dans le lecteur partagé à l'aide de la commande touch.

$ cd /var/share && touch file-example

Sur le serveur, vous pourrez voir que votre fichier a été correctement créé.

Génial!

Vous avez réussi à créer un volume NFS et vous l'avez partagé avec les machines clientes.

Montages NFS persistants avec fstab

Comme vous le savez déjà dans les didacticiels précédents, le montage d'un lecteur sous Linux à l'aide de la commande mount ne le rend pas persistant lors des redémarrages.

Afin de rendre vos montages persistants, vous devez les ajouter au fichier fstab.

En tant qu'utilisateur privilégié, modifiez le fichier fstab et ajoutez une ligne pour votre lecteur NFS

#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.

<ip_address>:<remote_path>   <mountpoint>  nfs  <options>  0   0

Par exemple, étant donné le volume NFS créé auparavant sur "192.168.178.31" sur le chemin "/var/share", cela donnerait

#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.

192.168.178.31:/var/share  /var/share  nfs  defaults  0   0

Si vous utilisez un système basé sur systemd, vous pouvez recharger les démons dépendants en exécutant la commande daemon-reload

$ systemctl daemon-reload

Génial!

Vous pouvez maintenant redémarrer votre ordinateur client et vérifier que votre lecteur a été correctement monté au démarrage.

Aller plus loin avec NFS

Dans cette section, nous allons aborder des sujets avancés sur NFS, en particulier la façon dont l'édition simultanée est gérée et comment vous pouvez ajuster vos configurations NFS à des hôtes clients spécifiques.

Édition simultanée

Lorsque vous utilisez NFS, vous finirez probablement par modifier certains fichiers avec plusieurs autres utilisateurs.

Nativement, le serveur NFS ne vous empêchera pas de modifier le même fichier.

Si vous utilisez vi comme éditeur de texte, vous serez averti que certaines modifications sont déjà effectuées par un autre utilisateur (via un fichier swp).

Cependant, les échanges de fichiers NFS ne vous empêcheront pas d'éditer le fichier :il affichera simplement un message d'avertissement sur les fichiers en cours d'édition.

De plus, si vous utilisez d'autres éditeurs de texte, aucun fichier "swp" ne sera créé et le fichier aura le contenu de la dernière modification effectuée.

Notez qu'il existe un moyen de verrouiller les fichiers localement en utilisant le " local_lock " paramètre côté client , vous pouvez consulter la documentation Linux si cette option vous intéresse.

Exporter des dossiers vers des adresses IP client spécifiques

Dans certains cas, vous devrez peut-être exporter un dossier vers des clients spécifiques sur votre sous-réseau.

Afin de déterminer l'adresse IP de votre client, rendez-vous sur la machine cliente et utilisez la commande "ip" avec l'option "a" pour l'adresse.

$ ip a

Comme vous pouvez le voir, mon hôte client a deux interfaces :l'interface de bouclage (ou localhost) et une carte réseau nommée "enp0s3".

Ce dernier possède une adresse IP déjà attribuée à l'interface visible sur la ligne « inet » :192.168.178.27/24.

Si vous souhaitez exporter vos dossiers vers un sous-réseau entier, vous pouvez spécifier l'IP du sous-réseau :par conséquent, chaque IP du sous-réseau pourra exporter votre dossier.

De même, il est possible de vérifier le nom d'hôte de la machine cliente afin de l'exporter ultérieurement sur le serveur.

$ hostname

De retour au fichier d'exportation, vous pouvez choisir d'exporter une ou plusieurs adresses IP ou d'exporter une machine par son nom d'hôte.

Surveillance NFS

Lors de l'installation du package nfs-common, vous finirez également par installer le "nfsstat ” utilitaire qui est un programme qui expose les statistiques NFS.

En utilisant nfsstat, vous pourrez voir le nombre total d'opérations effectuées sur votre serveur NFS ainsi que l'activité en cours.

Conclusion

Dans ce didacticiel, vous avez appris comment configurer un serveur NFSv4 facilement à l'aide de l'utilitaire nfs-kernel-server.

Vous avez également appris comment monter les lecteurs sur les clients et les différentes options dont vous disposez pour modifier vos montages NFS.

Enfin, vous avez approfondi les lecteurs NFS et appris comment la gestion des utilisateurs est effectuée sur plusieurs machines hôtes et comment vous devez configurer votre propre système de gestion des utilisateurs.

Si vous êtes intéressé par l'administration du système Linux, nous avons une section complète qui lui est consacrée sur le site Web, alors assurez-vous de la consulter !


Linux
  1. Configuration rapide du serveur NFS sur le système Redhat 7 Linux

  2. Qu'est-ce que NFS et comment l'installer sous Linux

  3. Linux - Tout est un fichier ?

  4. Dépannage des problèmes NFS courants sous Linux

  5. Comment monter et démonter un système de fichiers sous Linux

Mes commandes de dépannage du réseau Linux

Mon parcours dans l'administration système Linux

Comment vérifier/réparer le système de fichiers Linux au démarrage

Comment réparer les erreurs du système de fichiers dans Linux Mint

Qu'est-ce que le système de fichiers Linux ? Guide facile

Questions d'entretien sur le système de fichiers réseau Linux (NFS)