GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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 limité 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.

Prérequis #

Nous utiliserons deux machines, une exécutant Ubuntu 20.04, qui agira comme un serveur NFS, et une 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 adresses IP suivantes :

NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range

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 noyau NFS. Pour installer le package, exécutez :

sudo apt updatesudo apt install nfs-kernel-server

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

Sur Ubuntu 20.04, NFS version 2 est désactivé. Les versions 3 et 4 sont activées. Vous pouvez le vérifier en exécutant le cat suivant 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 partagé aux répertoires que vous souhaitez exporter à l'aide de montages liés.

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/backups ) avec différents paramètres de configuration. Le /var/www/ appartient à l'utilisateur www-data , et /opt/backups appartient à root .

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

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

Liez le montage des répertoires aux points de montage partagés :

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

Pour rendre les montages de liaison permanents lors des redémarrages, ouvrez le /etc/fstab fichier :

sudo nano /etc/fstab

et ajoutez les lignes suivantes :

/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 à ajouter les systèmes de fichiers qui seront exportés et les clients autorisés à accéder à ces partages dans /etc/exports fichier.

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

export host(options)

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

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 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. 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. La sync 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 man exports 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 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 explicitement ces options.

/srv/nfs4/backups
		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, root_squash 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 à partir des clients d'avoir des privilèges root sur les partages montés en mappant 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 Ubuntu. Vous pouvez maintenant passer à l'étape suivante et configurer les clients et vous connecter au serveur NFS.

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 allow from 192.168.33.0/24 to any port nfs

Vérifiez le changement :

sudo ufw status

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

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (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 nous concentrerons 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 n'avons besoin d'installer que les outils nécessaires pour monter un système de fichiers NFS distant.

  • 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, exécutez :

    sudo apt updatesudo 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 l'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 à /srv/nfs4/backups système de fichiers.

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

sudo mkdir -p /backupssudo mkdir -p /srv/www

Vous pouvez créer les répertoires à n'importe quel endroit de votre choix.

Montez les systèmes de fichiers exportés avec le mount commande :

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backupssudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

192.168.33.10 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, omettez le répertoire racine NFS. Utilisez /backups , au lieu de /srv/nfs4/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 :

Filesystem              Size  Used Avail Use% Mounted on
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:/backups  124G  2.8G  115G   3% /backups
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 man 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.

Test d'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 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

Si vous vous en souvenez, le /var/www le répertoire appartient à www-data user, et ce partage a root_squash jeu d'options qui associe l'utilisateur root à nobody utilisateur et nogroup groupe qui ne dispose pas d'autorisations d'écriture sur le partage distant.

En supposant que vous ayez un www-data 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-data :

sudo -u www-data 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 www-data www-data 4096 Apr 10 22:18 .
drwxr-xr-x 3 root     root     4096 Apr 10 22:29 ..
-rw-r--r-- 1 www-data www-data    0 Apr 10 21:58 index.html
-rw-r--r-- 1 www-data www-data    0 Apr 10 22:18 test.txt

Démontage du système de fichiers NFS #

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

Par exemple, pour démonter le fichier /backup partager, vous lanceriez :

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.


Ubuntu
  1. Comment installer et configurer VNC sur Ubuntu 20.04

  2. Comment configurer un serveur NFS et monter des partages NFS sur Ubuntu 14.10

  3. Comment installer et configurer Algo VPN Server sur Ubuntu 20.04

  4. Comment installer et configurer le serveur DHCP sur Ubuntu 20.04

  5. Comment installer et configurer le serveur Redis dans Ubuntu

Comment installer et configurer le serveur OpenLDAP sur Ubuntu 16.04

Comment installer et configurer VNC sur Ubuntu Server 20.04

Comment installer et configurer Parse Server sur Ubuntu 20.04

Comment installer et configurer un serveur TeamSpeak sur Ubuntu 18.04

Comment installer et configurer un serveur Minecraft sur Ubuntu 18.04

Comment installer et configurer un serveur Linux Ubuntu NFS