-
LINUX > partager des fichiers avec nfs
SERVEUR
sudo apt install nfs-server
Attribuer les droits d’accès et d’écriture :
sudo chmod 755 /chemin/partage/
Les partages NFS sont définis dans le fichier /etc/exports
sudo vi /etc/exports /chemin/partage 192.168.0.0/24(rw,sync,no_subtree_check) /chemin/partage2 192.168.0.0/24(rw,sync,all_squash,no_subtree_check,fsid=0) /chemin/partage3 192.168.0.0/24(rw,all_squash,anonuid=1000,anongid=1000,sync,no_subtree_check)
Pour chaque ligne, on indique le répertoire à partager, puis une tabulation, puis l’adresse du réseau avec les options de partage entre parenthèse. Voici les options :
rwle partage est en lecture-écrituresyncindique que les opérations sont effectuées les unes à la suite des autres. Conseillé pour les partages en lecture-écriture.no_subtree_checkpour ne pas vérifier qu’un fichier est bien dans l’arborescence de partage.fsid=0identifie un système de fichier par un code. Le code 0 indique que c’est la racine de notre répertoire de partageroot_squashoption de sécurité. root_squash indique donc que l’utilisateur root des clients NFS sera reconnu comme l’utilisateur “nobody” d’UID 65534 et de groupe “nogroup” de GID 65534. force le mapping de l’utilisateur root vers l’utilisateur anonyme (par défaut).all_squashcomme pour l’option précédente mais tous les utilisateurs seront reconnus comme l’utilisateur “nobody” avec le groupe “nogroup”. force le mapping de tous les utilisateurs vers l’utilisateur anonyme.no_root_squashn’effectue pas de mapping pour l’utilisateur root.anonuidindique au serveur NFS l’UID de l’utilisateur anonyme (considéré comme tel dans les précédentes options de mapping).anongidindique au serveur NFS le GID de l’utilisateur anonyme (considéré comme tel dans les précédentes options de mapping).subtree_check: Si un sous-répertoire dans un système de fichiers est partagé, mais que le système de fichiers ne l’est pas, alors chaque fois qu’une requête NFS arrive, le serveur doit non seulement vérifier que le fichier accédé est dans le système de fichiers approprié (ce qui est facile), mais aussi qu’il est dans l’arborescence partagée (ce qui est plus compliqué).Si vous obtenez l’erreur suivante au montage : mount.nfs4: access denied by server while mounting, vérifiez les droits d’accès au dossier partagé.
relancer le service NFS pour prendre en compte les modifications.
sudo service nfs-server reload
Vérifier les montages offerts par le serveur NFS :
showmount -e Export list for serveur: /chemin/partage 192.168.0.0/24
Si la commande ne renvoie pas l’export correct de la liste, faire
sudo service nfs-server restart
Vous pouvez valider vos changements de configuration et vérifier vos partages actifs par les commandes :
sudo exportfs -r
CLIENT
LINUX
sudo apt install nfs-common
Pour parcourir les partages NFS d’un serveur :
showmount -e 192.168.0.100 Export list for 192.168.0.100: /media/FILMS 192.168.0.0/24
Créer un dossier dans lequel monter le NFS :
sudo mkdir /mnt/NFS
Dans
/etc/fstabpour monter un partage réseau :192.168.0.100:/media/FILMS /mnt/NFS nfs4 rw,hard,intr,_netdev 0 0 192.168.0.100:/media/FILMS /media/NFS nfs defaults,user,auto,noatime,bg 0 0
Ici, on monte le dossier /media/FILMS du serveur (
192.168.0.100)dans /mnt/NFS. Le système de fichier est de type nfs4 et les options :rwle montage est en lecture-écriturehardle montage sera traité comme un périphérique standard. Il sera permanent et ne sera pas démonté automatiquement au bout d’un certain temps d’inactivité.intr: une opération peut être interrompue en attente de réponse du serveur (conseillé), car en cas de coupure du serveur, le client ne reste pas coincé en attente._netdevle montage ne doit être réalisé qu’une fois le réseau opérationnel0 0pour ne pas vérifier si le disque contient des erreurs (le serveur s’en occupera)Demander le montage :
sudo mount -a
Optimisation possible:
- Si le réseau est en Gigabit ethernet, on peut ajouter en option de montage:
,rsize=16384,wsize=16384- Si le serveur est peu puissant (Pentium 3 >12 ans) on peut augmenter les performances en ajoutant en "options de montage"
,vers=3,udppour utiliser la version 3 de NFS ainsi que le protocole UDP.sudo mkdir /mnt/partage
WINDOWS
Obtention de Windows Services for Unix pour Windows 7
WSFU sont normalement intégrés. Il faut les installer via le panneau de configuration > ajout/suppression de programmes > composants Windows. (Sous 7 sous le nom de Services pour NFS)
Configuration de Windows Services for Unix pour Windows 7
Il faut malheureusement batailler. Windows 7 n’intègre pas le User Name Mapping. De fait, il est impossible de monter un répertoire NFS sans un windows capable de faire du routage de nom d’utilisateur. On trouve une aide en ligne sous Windows dans votre Panneau de configuration dans les "Administrative Tools"
Utilisation de Windows Services for Unix pour Windows 7
Il suffit de monter un partage NFS plus ou moins comme on le ferait sous Linux
Tout d’abord ouvrez l’invité de commande MS-DOS:mount \\ip_serveur\dossier\partagé Lettre : mount \\192.168.0.100\home\Partage R :
Si après avoir monté votre partage <>NFS sous windows, Windows se plaint d’une erreur incohérente comme quoi vous n’avez pas les droits pour accéder au partage, faites un clic droit sur le partage problématique dans le Poste de Travail puis Propriétés. Dans la fenêtre qui s’affiche, allez dans les Attributs NFS et cochez tout ! Si certains refusent de se cocher, ce n’est pas grave. Faites appliquer et sortez d’ici, illogiquement ça devrait marcher !
Attention, veuillez garder à l’esprit que <>NFS et Windows ne font pas forcement bon ménage, si vous n’arrivez pas à partager avec Windows via NFS vous pouvez utiliser Samba
SECURITE AVEC TCPwrapper
Si vous utilisez denyhosts sur le serveur, il vous faudra ajouter les lignes suivantes dans le fichier /etc/hosts.allow :
portmap: <ip de la machine cliente> lockd: <ip de la machine cliente> nfsd: <ip de la machine cliente> mountd: <ip de la machine cliente> rquotad: <ip de la machine cliente> statd: <ip de la machine cliente>
et également afin de sécuriser un peu plus votre installation, ajouter dans le fichier /etc/hosts.deny :
# Tout interdire sur portmap, nfsd et mountd portmap:ALL nfsd:ALL mountd:ALL
PROBLÈMES ET ERREURS
mount.nfs: access denied by server while mounting"ipserveur"
Les adresses IP autorisées dans export sont bonnes, mais NFSv4 n’utilise pas l’authentification par IP, il faut donc rétrograder en v3
verrouillage de fichiers avec LibreOffice
Commenter les lignes suivantes dans les fichiers /usr/bin/libreoffice et /usr/bin/soffice (# devant les deux lignes)
SAL_ENABLE_FILE_LOCKING=1 export SAL_ENABLE_FILE_LOCKING
temps de montage sur les clients
Ubuntu 13 et 14 présentent un temps de latence très long pour le montage. Pour le résoudre, sur le client Modifier le fichier /etc/default/nfs-common et éditer la ligne
# Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=yes
puis blacklister le module ‘rpcsec_gss_krb5′ en éditant le fichier /etc/modprobe.d/blacklist.conf en y ajoutant à la fin la ligne :
#To improve NFS mounting time blacklist 'rpcsec_gss_krb5'