TL;DR

Un guide beaucoup plus court est disponible dans le Guide du serveur Ubuntu Si vous avez besoin de plus d’informations, lisez ci-dessous.

Introduction

NFS (Network File System) vous permet de « partager » un répertoire situé sur un ordinateur en réseau avec d’autres ordinateurs / périphériques de ce réseau. L’ordinateur où se trouve le répertoire est appelé le serveur et les ordinateurs ou périphériques se connectant à ce serveur sont appelés clients. Les clients « montent » généralement le répertoire partagé pour en faire une partie de leur propre structure de répertoire.,

NFS est parfait pour créer des NAS (Stockage connecté en réseau) dans un environnement Linux / Unix. C’est un protocole Linux/Unix natif par opposition à Samba qui utilise le protocole SMB développé par Microsoft. Le système d’exploitation d’Apple a un bon support pour NFS. Windows 7 prend en charge NFS.

NFS est peut-être le meilleur pour les répertoires montés sur réseau plus « permanents » tels que les répertoires / home ou les ressources partagées régulièrement accessibles. Si vous souhaitez un partage réseau auquel les utilisateurs invités peuvent facilement se connecter, Samba est plus adapté., En effet, les outils existent plus facilement sur les systèmes d’exploitation anciens et propriétaires pour monter et se détacher temporairement des partages Samba.

Ubuntu Avant de déployer NFS, vous devez être familier avec:

  • Autorisations de fichiers et de répertoires Linux
  • Montage et démontage (démontage) de systèmes de fichiers

Ce HowTo rend Ubuntu server NFSv4 prêt.

NFS quick start

Si vous comprenez ce que vous faites, utilisez cette brève présentation pour configurer un serveur NFSv4 sur Ubuntu (sans sécurité d’authentification). Montez ensuite le partage sur un client Ubuntu., Il a été testé sur Ubuntu 14.04.

serveur NFS

Pour vérifier que le serveur NFS n’est pas installé, vous pouvez le faire…

  • $ dpkg -l | grep nfs-kernel-server

Installer les paquets nécessaires…

  • # apt-get install nfs-kernel-server

Pour faciliter la maintenance, nous isolerons toutes les exportations NFS dans un seul répertoire, où les vrais répertoires seront montés avec l’option bind bind.

  • disons que nous voulons exporter nos répertoires personnels des utilisateurs dans /home/utilisateurs., Nous créons d’abord le système de fichiers d’exportation:

    # mkdir -p /export/users 

    Il est important que /export et /export/users disposent de 777 autorisations car nous accéderons au partage NFS à partir du client sans authentification LDAP/NIS. Cela ne s’appliquera pas si vous utilisez l’authentification (voir ci-dessous)., Maintenant, montez le répertoire real users avec:

    # mount --bind /home/users /export/users

    Pour nous éviter de retaper cela après chaque redémarrage, nous ajoutons la ligne suivante

    à /etc/fstab

    /home/users /export/users none bind 0 0

  • La seule option importante dans /etc/par défaut/nfs-kernel-server pour l’instant est NEED_SVCGSSD. Il est défini sur  » non  » par défaut, ce qui est très bien, car nous n’activons pas la sécurité NFSv4 cette fois.

Pour que les noms d’ID soient automatiquement mappés, le client et le serveur ont besoin du fichier/etc / idmapd.,fichier conf pour avoir le même contenu avec les noms de domaine corrects. De plus, ce fichier devrait avoir les lignes suivantes dans la section Mappage:

  • Nobody-User = nobodyNobody-Group = nogroup

    Cependant, le client peut avoir des exigences différentes pour le Nobody-User et Nobody-Group. Par exemple sur les variantes RedHat, c’est nfsnobody pour les deux. cat/etc /passwd et cat/etc / group devraient afficher les comptes « personne ».

De cette façon, le serveur et le client n’ont pas besoin que les utilisateurs partagent le même UID / GUID.,

Pour ceux qui utilisent l’authentification basée sur LDAP, ajoutez les lignes suivantes à l’idmapd de votre client.conf:

Method = nsswitch

Cela entraînera idmapd à savoir regarder nsswitch.conf pour déterminer où il doit rechercher des informations d’identification (et si l’authentification LDAP fonctionne déjà, nsswitch ne devrait pas nécessiter d’explication supplémentaire).

Pour exporter nos répertoires à un réseau local 192.168.1.0/24 nous ajouter les deux lignes suivantes à /etc/exports

Portmap de Verrouillage

facultatif

Ajoutez la ligne suivante à /etc/hosts.,nier:

rpcbind mountd nfsd statd lockd rquotad : ALL

En bloquant tous les clients d’abord, seuls les clients dans /etc/hosts.autoriser ci-dessous sera autorisé à accéder au serveur.

Maintenant, ajoutez la ligne suivante à /etc/hosts.allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

Où la chaîne « liste des adresses IP » est, vous devez faire une liste des adresses IP qui se compose du serveur et de tous les clients. Ces adresses IP en raison d’une limitation dans portmap (il n’aime pas les noms d’hôtes). Notez que si vous avez configuré NIS, ajoutez-les simplement à la même ligne.,

Remarque: Assurez-vous que la liste des adresses IP autorisées inclut l’adresse localhost (127.0.0.1) car les scripts de démarrage des versions récentes d’Ubuntu utilisent la commande rpcinfo pour découvrir la prise en charge de NFSv3, et cela sera désactivé si localhost ne peut pas se connecter.,décompressez l’arborescence d’exportation complète avec une seule commande:

Nous pouvons également monter un sous-arbre exporté avec:

  • # mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users

Pour nous éviter de retaper ceci après chaque redémarrage, nous ajoutons la ligne suivante à /etc/fstab:

  • <nfs-server-IP>:/ /mnt nfs auto 0 0

    Si après le montage, l’entrée dans /proc/mounts apparaît comme <nfs-server-IP>:// (avec deux barres obliques), vous devrez peut-être spécifier deux barres obliques dans /etc/fstab, ou bien umount pourrait se plaindre de ne pas trouver le montage.,

    L’option auto se monte au démarrage. Cependant, cela ne fonctionnera pas si votre client utilise une connexion wifi gérée au niveau de l’utilisateur (après la connexion), car le réseau ne sera pas disponible au démarrage. Dans Ubuntu 12.04 LTS et versions ultérieures, les connexions Wifi sont gérées au niveau du système par défaut, de sorte que le montage automatique des partages NFS au démarrage devrait fonctionner correctement.

le Serveur Ubuntu ne vient pas avec tout init.d/netfs ou d’autres scripts pour le faire pour vous.

Portmap de Verrouillage

facultatif

Ajoutez la ligne suivante à /etc/hosts.,nier:

rpcbind : ALL

En bloquant tous les clients d’abord, seuls les clients dans /etc/hosts.autoriser ci-dessous sera autorisé à accéder au serveur.

Maintenant, ajoutez la ligne suivante à /etc/hosts.permettre:

rpcbind : NFS server IP address

Où « serveur NFS adresse IP » est l’adresse IP du serveur. Cela doit être numérique! C’est la façon dont fonctionne portmap.

NFS Server

Configuration de préinstallation

Aucune des étapes de préinstallation suivantes n’est strictement nécessaire.

Autorisations utilisateur

Les autorisations utilisateur NFS sont basées sur l’ID utilisateur (UID)., Les UID de tous les utilisateurs du client doivent correspondre à ceux du serveur pour que les utilisateurs y aient accès. Les façons typiques de le faire sont:

  • Synchronisation manuelle des fichiers de mot de passe
  • Utilisation de LDAP

  • Utilisation de NIS

Il est également important de noter que vous devez faire attention sur les systèmes où l’utilisateur principal a un accès root – cet utilisateur peut modifier les UID sur le système pour se permettre d’accéder aux fichiers de n’importe qui. Cette page suppose que l’équipe d’administration est le seul groupe avec un accès root et qu’ils sont tous approuvés., Toute autre chose représente une configuration plus avancée et ne sera pas abordée ici.

Autorisations de groupe

Avec NFS, l’accès d’un utilisateur aux fichiers est déterminé par son appartenance à des groupes sur le client, et non sur le serveur. Cependant, il existe une limitation importante: un maximum de 16 groupes sont transmis du client au serveur et, si un utilisateur est membre de plus de 16 groupes sur le client, certains fichiers ou répertoires peuvent être inaccessibles de manière inattendue.

Noms d’hôtes

facultatif si vous utilisez DNS

Ajoutez n’importe quel nom de client et adresse IP à/etc / hosts. Le réel (pas 127.,0.0.1) L’adresse IP du serveur devrait déjà être ici. Cela garantit que NFS fonctionnera toujours même si DNS tombe en panne. Vous pouvez compter sur DNS si vous le souhaitez, c’est à vous de décider.

NIS

facultatif – effectuer des étapes uniquement si vous utilisez NIS

Remarque: Cela ne fonctionne que si vous utilisez NIS. Sinon, vous ne pouvez pas utiliser netgroups, et vous devez spécifier des adresses IP ou des noms d’hôte individuels dans /etc/exports. Lisez la section BUGS dans man netgroup.

Éditez/etc / netgroup et ajoutez une ligne pour classer vos clients. (Cette étape n’est pas nécessaire, mais est pour plus de commodité).,

myclients (client1,,) (client2,,)

Évidemment, plus de clients peuvent être ajoutés. myclients peut être tout ce que vous aimez; c’est un nom de netgroup.

Exécuter cette commande pour reconstruire le YP base de données:

sudo make -C /var/yp

Portmap de Verrouillage

facultatif

Ajoutez la ligne suivante à /etc/hosts.nier:

rpcbind mountd nfsd statd lockd rquotad : ALL

En bloquant tous les clients d’abord, seuls les clients dans /etc/hosts.autoriser ci-dessous sera autorisé à accéder au serveur.

Maintenant, ajoutez la ligne suivante à /etc/hosts.,allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

Où la chaîne « liste des adresses IP » est, vous devez faire une liste des adresses IP qui se compose du serveur et de tous les clients. Ces adresses IP en raison d’une limitation dans portmap (il n’aime pas les noms d’hôtes). Notez que si vous avez configuré NIS, ajoutez-les simplement à la même ligne.,

Installation et configuration

Installer le serveur NFS

sudo apt-get install rpcbind nfs-kernel-server

Partages

Éditez/etc/exports et ajoutez les partages:

/home @myclients(rw,sync,no_subtree_check)/usr/local @myclients(rw,sync,no_subtree_check)

Les partages /home et/usr / local ci-dessus à tous les clients du netgroup myclients.

Les actions ci-dessus /home et/usr / local à deux clients avec des adresses IP fixes. Mieux utilisé uniquement avec les machines qui ont des adresses IP statiques.

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

Les actions ci-dessus /home et/usr / local à tous les clients du réseau privé se situant dans la plage d’adresses IP désignée.,

rw effectue le partage en lecture / écriture, et sync exige que le serveur ne réponde aux demandes qu’une fois que les modifications ont été vidées sur le disque. C’est l’option la plus sûre (async est plus rapide, mais dangereux. Il est fortement recommandé de lire les exportations man.

Après avoir configuré/etc/exports, exportez les partages:

sudo exportfs -ra

Vous voudrez effectuer cette commande chaque fois que/etc / exports est modifié.,

Redémarrer les services

Si /etc/default/portmap a été modifié, portmap devra être redémarré:

sudo service portmap restart

Le serveur du noyau NFS nécessitera également un redémarrage:

sudo service nfs-kernel-server restart

Note de sécurité

En dehors des problèmes d’UID discutés ci-dessus, il convient de noter qu’un attaquant pourrait potentiellement se faire passer pour une machine autorisée à mapper le partage, ce qui lui permet de créer des UID arbitraires pour accéder à vos fichiers. Une solution potentielle à cela est IPSec, voir aussi la section NFS et IPSec ci-dessous., Vous pouvez configurer tous les membres de votre domaine pour qu’ils ne se parlent qu’entre eux via IPSec, ce qui authentifiera efficacement que votre client est bien celui qu’il dit être.

IPSec fonctionne en chiffrant le trafic vers le serveur avec la clé du serveur, et le serveur renvoie toutes les réponses chiffrées avec la clé du client. Le trafic est déchiffré avec les clés respectives. Si le client n’a pas les clés qu’il est censé avoir, il ne peut ni envoyer ni recevoir de données.

Une alternative à IPSec est des réseaux physiquement séparés., Cela nécessite un commutateur réseau séparé et des cartes Ethernet séparées, et la sécurité physique de ce réseau.

NFS Client

Installation

sudo apt-get install rpcbind nfs-common

Portmap de Verrouillage

facultatif

Ajoutez la ligne suivante à /etc/hosts.nier:

rpcbind : ALL

En bloquant tous les clients d’abord, seuls les clients dans /etc/hosts.autoriser ci-dessous sera autorisé à accéder au serveur.

Maintenant, ajoutez la ligne suivante à /etc/hosts.permettre:

rpcbind : NFS server IP address

Où « serveur NFS adresse IP » est l’adresse IP du serveur. Cela doit être numérique!, C’est la façon dont fonctionne portmap.

Noms d’hôtes

facultatif si vous utilisez DNS

Ajoutez le nom du serveur à/etc / hosts. Cela garantit que les montages NFS fonctionneront toujours même si DNS tombe en panne. Vous pouvez compter sur DNS si vous le souhaitez, c’est à vous de décider.

Montures

Vérifier pour voir si tout fonctionne

Tu devrais essayer de monter maintenant., Le modèle de base que vous utiliserez est:

sudo mount ServerIP:/folder/already/setup/to/be/shared /home/username/folder/in/your/local/computer

ainsi, par exemple:

sudo mount 192.168.1.42:/home/music /home/poningru/music

Montage au démarrage

Les supports NFS peuvent être montés automatiquement lors de l’accès à l’aide d’autofs ou peuvent être configurés avec des supports statiques Les deux sont expliquées ci-dessous.

Automounter

Install autofs:

sudo apt-get install autofs

L’exemple de configuration suivant configure les répertoires personnels pour automatiser un serveur NFS lors de la connexion. D’autres répertoires peuvent également être configurés pour automount lors de l’accès.,

Ajoutez la ligne suivante à la fin de /etc/auto.maître:

 /home /etc/auto.home

Maintenant créer /etc/auto.home et insérez ce qui suit:

 * solarisbox1.company.com.au,solarisbox2.company.com.au:/export/home/&

Redémarrez autofs pour activer la configuration:

sudo service autofs start

Supports statiques

Avant de configurer les supports, assurez-vous que les répertoires qui serviront de points de montage sont déjà créés.

Dans/etc/fstab, ajoutez des lignes pour les partages telles que:

servername:dir /mntpoint nfs rw,hard,intr 0 0

Le rw le monte en lecture / écriture., Évidemment, si le serveur le partage en lecture seule, le client ne pourra pas le monter comme autre chose que cela. Le disque dur monte le partage de telle sorte que si le serveur devient indisponible, le programme attendra jusqu’à ce qu’il soit disponible. L’alternative est douce. intr vous permet d’interrompre / tuer le processus. Sinon, elle va vous ignorer. La documentation pour ceux-ci peut être trouvée dans la section Options de montage pour nfs de man mount.

Les systèmes de fichiers peuvent maintenant être montés avec mount /mountpoint, ou mount-a pour monter tout ce qui doit être monté au démarrage.,

Notes

Configuration minimaliste de NFS

Les étapes ci-dessus sont très complètes. Le nombre minimum d’étapes requis pour configurer NFS est répertorié ici:

http://www.ubuntuforums.org/showthread.php?t=249889

Utilisation de groupes avec des partages NFS

Lorsque vous utilisez des groupes sur des partages NFS (NFSv2 ou NFSv3), gardez à l’esprit que cela peut ne pas fonctionner si un utilisateur est membre de plus de 16 groupes. Cela est dû aux limitations du protocole NFS., Vous pouvez trouver plus d’informations sur Launchpad (« Autorisation refusée lorsque l’utilisateur appartient à un groupe qui possède des répertoires groupables en écriture ou setgid montés via NFS ») et dans cet article: « Quel est le problème sur la limitation de 16 id de groupe dans NFS? »

Notes IPSec

Si vous utilisez IPSec, l’ordre d’arrêt par défaut dans Breezy / Dapper provoque le blocage du client lors de son arrêt, car IPSec tombe en panne avant NFS., Pour y remédier, procédez comme suit:

sudo update-rc.d -f setkey removesudo update-rc.d setkey start 37 0 6 S .

Un bogue a été déposé ici: https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536

Dépannage

Le montage de partages NFS dans une maison cryptée ne fonctionnera pas au démarrage

Le montage décrypté. Cela signifie que l’utilisation de /etc / fstab pour monter des partages NFS au démarrage ne fonctionnera pas, car votre maison n’a pas été déchiffrée au moment du montage., Il existe un moyen simple de contourner cela en utilisant des liens symboliques:

  • Créez un répertoire alternatif pour monter les partages NFS dans:
$ sudo mkdir /nfs$ sudo mkdir /nfs/music
  • Éditez /etc/fstab pour monter le partage NFS dans ce répertoire à la place:

nfsServer:music /nfs/music nfs auto 0 0

  • Créez un lien symbolique à l’intérieur de votre maison, pointant vers l’emplacement de montage réel (dans notre cas, supprimez d’abord le répertoire ‘Music’ qui y existe déjà):
$ rmdir /home/user/Music$ ln -s /nfs/music/ /home/user/Music