Linux

Comment installer et configurer un serveur NFS sur Ubuntu 20.04

Comment installer et configurer un serveur NFS sur Ubuntu 20.04

NFS ou Network File System est un protocole de système de fichiers distribué qui vous permet de partager des répertoires 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.

Par défaut, le protocole NFS n'est pas crypté et ne fournit pas d'authentification de l'utilisateur. L'accès au serveur est restreint par les adresses IP ou les noms d'hôte du client.

Cet article explique comment configurer un serveur NFSv4 sur Ubuntu 20.04. Nous vous montrerons également comment monter un système de fichiers NFS sur la machine cliente.

Conditions préalables #

Nous utiliserons deux machines, une sous Ubuntu 20.04, qui fera office de serveur NFS, et un autre exécutant toute autre distribution Linux sur laquelle nous monterons le partage. Le serveur et les clients doivent pouvoir communiquer entre eux via un réseau privé. Vous pouvez utiliser des 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 IP suivantes :

IP du serveur NFS : 192.168.33.10 IP Clients NFS : à partir du 192.168.33.plage 0/24 

Configurer le serveur NFS #

La première étape consiste à configurer le serveur NFS. Nous allons installer les packages nécessaires, créer et exporter les répertoires NFS et configurer le pare-feu.

Installation du serveur NFS #

Le package de serveur NFS fournit la prise en charge de l'espace utilisateur nécessaire pour exécuter le serveur du noyau NFS. Pour installer le package, exécutez :

mise à jour sudo aptsudo apt installer nfs-kernel-server

Une fois l'installation terminée, les services NFS démarreront automatiquement.

Sur Ubuntu 20.04, la version 2 de NFS est désactivée. Les versions 3 et 4 sont activées. Vous pouvez vérifier cela en exécutant ce qui suit chat commande :

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2 

NFSv2 est assez ancien maintenant, et il n'y a aucune raison de l'activer.

La configuration du serveur NFS est définie dans /etc/default/nfs-kernel-server et /etc/default/nfs-common des dossiers. Les paramètres par défaut sont suffisants pour la plupart des situations.

Création des systèmes de fichiers #

Le serveur NFSv4 utilise un répertoire racine global, et les répertoires exportés sont relatifs à ce répertoire. Vous pouvez lier le point de montage de partage aux répertoires que vous souhaitez exporter à l'aide de montages de liaison.

Dans cet exemple, nous allons définir 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/sauvegardes) avec différents paramètres de configuration. le /var/www/ appartient à l'utilisateur www-données, et /opt/sauvegardes Est détenue par racine.

Créez d'abord le répertoire racine et les points de montage de partage :

sudo mkdir -p /srv/nfs4/sauvegardessudo mkdir -p /srv/nfs4/www

Liez le montage des répertoires aux points de montage de partage :

sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www

Pour rendre les montages de liaison permanents entre les redémarrages, ouvrez le /etc/fstab déposer:

sudo nano /etc/fstab

et ajoutez les lignes suivantes :

/etc/fstab
/opt/backups /srv/nfs4/backups aucune liaison 0 0 /var/www /srv/nfs4/www aucune liaison 0 0 

Exportation des systèmes de fichiers #

L'étape suivante consiste à ajouter les systèmes de fichiers qui seront exportés et les clients autorisés à accéder à ces partages au /etc/exports déposer.

Chaque ligne d'un système de fichiers exporté a la forme suivante :

hôte d'exportation (options) 

exportation est le répertoire exporté, hôte est un nom d'hôte ou une adresse/plage IP qui peut accéder à l'exportation, et options sont les options d'accueil.

Ouvrez le /etc/exports fichier et ajoutez les lignes suivantes :

sudo nano /etc/exports
/etc/exports
/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.20(rw,sync,no_subtree_check) 

La première ligne contient le fsid=0 option, 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 croix 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. L'accès en lecture est autorisé à l'ensemble 192.168.33.0/24 plage, et accès en lecture et en écriture uniquement au 192.168.33.3 adresse IP. le synchronisation L'option indique à NFS d'écrire les modifications sur le disque avant de répondre.

La dernière ligne est explicite. Pour plus d'informations sur toutes les options disponibles, tapez l'homme exporte dans votre terminal.

Enregistrez le fichier et exportez les partages :

sudo exportfs -ar

Vous devez exécuter la commande ci-dessus à chaque fois que vous modifiez le /etc/exports déposer. S'il y a des erreurs ou des avertissements, ils seront affichés sur le terminal.

Pour afficher les exportations actives actuelles et leur état, utilisez :

sudo exportfs -v

La sortie inclura toutes les actions avec leurs options. Comme vous pouvez le voir, il existe également des options que nous n'avons pas définies dans le /etc/exports déposer. Ce sont des options par défaut et si vous souhaitez les modifier, vous devrez définir explicitement ces options.

/srv/nfs4/sauvegardes 192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/www 192.168.33.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4 192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash) 

Sur Ubuntu, racine_courge est activé par défaut. C'est l'une des options les plus importantes concernant la sécurité NFS. Il empêche les utilisateurs root connectés depuis les clients d'avoir des privilèges root sur les partages montés en mappant root UID et GID à personne/aucun groupe 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 fonction de mappage d'identité 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 Ubuntu. Vous pouvez maintenant passer à l'étape suivante et configurer les clients et vous connecter au serveur NFS.

# de configuration du pare-feu

Si vous installez Jenkins sur un serveur Ubuntu distant protégé par un pare-feu, vous devrez activer le trafic sur le port NFS :

sudo ufw autoriser à partir de 192.168.33.0/24 à n'importe quel port nfs

Vérifiez la modification :

statut sudo ufw

La sortie doit montrer que le trafic sur le port 2049 est autorisée:

Vers Action De -- ------ ---- 2049 AUTORISER 192.168.33.0/24 22/tcp AUTORISER n'importe où 22/tcp (v6) AUTORISER n'importe où (v6) 

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.

Nous allons nous concentrer sur les systèmes Linux, mais vous pouvez également monter le partage NFS sur les machines macOS et Windows.

Installation du client NFS #

Sur les machines clientes, nous devons installer uniquement les outils nécessaires pour monter un système de fichiers NFS distant.

Systèmes de fichiers de montage #

Nous allons travailler sur la machine cliente avec IP 192.168.33.20, 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 au /srv/nfs4/sauvegardes système de fichiers.

Créez deux nouveaux répertoires pour les points de montage :

sudo mkdir -p /sauvegardessudo mkdir -p /srv/www

Vous pouvez créer les répertoires à n'importe quel endroit que vous voulez.

Montez les systèmes de fichiers exportés avec le monter commander:

sudo mount -t nfs -o vers=4 192.168.33.10 :/sauvegardes/sauvegardessudo mount -t nfs -o vers=4 192.168.33.10:/www/srv/www

192.168.33.dix est l'IP du serveur NFS. Vous pouvez également utiliser le nom d'hôte au lieu de l'adresse IP, mais il doit être résolu par la machine cliente. Cela se fait généralement en mappant le nom d'hôte à l'adresse IP dans le /etc/hôtes déposer.

Lors du montage d'un système de fichiers NFSv4, omettez le répertoire racine NFS. Utiliser /sauvegardes, à la place de /srv/nfs4/sauvegardes.

Vérifiez que les systèmes de fichiers distants sont montés avec succès à l'aide du montage ou df commander:

df -h

La commande imprimera tous les systèmes de fichiers montés. Les deux dernières lignes sont les partages montés :

Taille du système de fichiers utilisée % d'utilisation disponible Monté sur udev 951M 0 951M 0% /dev tmpfs 199M 676K 199M 1% /run /dev/sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/sda1 456M 197M 226M 47% /boot tmpfs 199M 0 199M 0% /run/user/1000 192.168.33.10 :/sauvegardes 124G 2.8G 115G 3% /sauvegardes 192.168.33.10:/www 124G 2.8G 115G 3% /srv/www

Pour rendre les montages permanents au redémarrage, ouvrez le /etc/fstab fichier et ajoutez les lignes suivantes : :

sudo nano /etc/fstab
/etc/fstab
192.168.33.10:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0 192.168.33.10:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev 0 0 

Pour plus d'informations sur les options disponibles lors du montage d'un système de fichiers NFS, tapez homme nfs dans votre terminal.

Une autre option pour monter des systèmes de fichiers distants consiste à utiliser soit le autofs outil ou pour créer une unité systemd.

Tester l'accès NFS #

Testons l'accès aux partages en créant un nouveau fichier sur chacun d'eux.

Tout d'abord, essayez de créer un fichier de test sur le /sauvegardes répertoire à l'aide du toucher commander:

sudo touch /sauvegardes/test.SMS

le /sauvegarde le système de fichiers est exporté en lecture seule et comme prévu, vous verrez un Permission refusée Message d'erreur:

touch : impossible de toucher '/backups/test' : autorisation refusée 

Ensuite, essayez de créer un fichier de test sur le /srv/www répertoire en tant que root en utilisant le sudo commander:

sudo touch /srv/www/test.SMS

Encore une fois, vous verrez Permission refusée un message.

touch : impossible de toucher '/srv/www' : autorisation refusée 

Si vous vous souvenez, le /var/www le répertoire appartient au www-données utilisateur, et ce partage a racine_courge jeu d'options qui mappe l'utilisateur root sur le personne utilisateur et aucun groupe groupe qui n'a pas d'autorisations d'écriture sur le partage distant.

En supposant que vous ayez un www-données utiliser 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é nginx sur les deux machines), vous pouvez essayer de créer un fichier en tant qu'utilisateur www-données:

sudo -u www-data touch /srv/www/test.SMS

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 annuaire:

ls -la /srv/www

La sortie doit afficher le fichier nouvellement créé :

drwxr-xr-x 3 www-données www-données 4096 10 avril 22:18 . drwxr-xr-x 3 root root 4096 10 avril 22:29… -rw-r--r-- 1 www-data www-data 0 avril 10 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Avr 10 22:18 test.SMS 

Démontage du système de fichiers NFS #

Si le partage NFS distant n'est plus nécessaire, vous pouvez le démonter comme tout autre système de fichiers monté à l'aide de la démonter commander.

Par exemple, pour démonter le /sauvegarde partager, vous exécuteriez :

sudo umount / sauvegardes

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.

Conclusion #

Nous vous avons montré comment configurer un serveur NFS et comment monter les systèmes de fichiers distants sur les machines clientes. Si vous implémentez NFS en production et partagez des données sensibles, c'est une bonne idée d'activer l'authentification Kerberos.

Comme alternative à NFS, vous pouvez utiliser SSHFS pour monter des répertoires distants via une connexion SSH. SSHFS est crypté par défaut et beaucoup plus facile à configurer et à utiliser.

N'hésitez pas à laisser un commentaire si vous avez des questions.

Comment inverser le sens de défilement de la souris et des pavés tactiles dans Windows 10
Souris et Pavé tactiles rendent non seulement l'informatique facile, mais plus efficace et moins chronophage. Nous ne pouvons pas imaginer une vie san...
Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...
Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...