<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ouranos</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ouranos"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Ouranos"/>
	<updated>2026-04-22T08:25:32Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13923</id>
		<title>NFS</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13923"/>
		<updated>2006-11-02T10:28:12Z</updated>

		<summary type="html">&lt;p&gt;Ouranos : /* /etc/hosts.allow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Partager ses fichiers]]&lt;br /&gt;
= Installation d&#039;un serveur NFS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Installation d&#039;un serveur NFS&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Guillaume Pierronnet&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;NFS, ou le partage des ressources selon Unix.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
NFS signifie Network File System. C&#039;est, comme son nom l&#039;indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l&#039;utiliser de manière totalement transparente dans son arborescence Linux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je vous invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité ([http://www.linuxselfhelp.com/HOWTO/NFS-HOWTO/security.html celui-ci], en anglais, indique quelques règles à suivre, en parallèle des démarches indiquées [http://people.via.ecp.fr/~alexis/formation-linux/nfs.html dans ce guide nfs pour Debian] ou ci-dessous). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les softs ==&lt;br /&gt;
&lt;br /&gt;
=== Les modules du noyau ===&lt;br /&gt;
&lt;br /&gt;
Dans la configuration du noyau, on va dans la section &amp;quot;&#039;&#039;&#039;File systems ---&amp;gt; Network File Systems&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le client:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS file system support et Provide NFSv3 client support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFS_FS=y ou m&lt;br /&gt;
   CONFIG_NFS_V3=y&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le serveur:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS server support et Provide NFSv3 server support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFSD=y ou m&lt;br /&gt;
   CONFIG_NFSD_V3=y&lt;br /&gt;
&lt;br /&gt;
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug. &amp;lt;br /&amp;gt;Il serait temps d&#039;upgrader si tu ne l&#039;as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)&lt;br /&gt;
&lt;br /&gt;
=== Les packages ===&lt;br /&gt;
&lt;br /&gt;
Les packages (sur ma Debian) sont :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-common&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-user-server&amp;lt;/tt&amp;gt; pour le serveur.&lt;br /&gt;
&lt;br /&gt;
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.&lt;br /&gt;
&lt;br /&gt;
On va aussi installer le &#039;&#039;wrapper&#039;&#039; TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s&#039;appelle &amp;lt;tt&amp;gt;tcpd&amp;lt;/tt&amp;gt;. Les sources se trouvent [ftp://ftp.porcupine.org/pub/security/index.html ici].&lt;br /&gt;
&lt;br /&gt;
== Le serveur ==&lt;br /&gt;
&lt;br /&gt;
Les 3 fichiers de configuration principaux sont &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/exports ===&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt; est très simple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;répertoire machine1(option11,option12) machine2(option21,option22)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
par exemple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;/home 192.168.0.10(rw) 192.168.0.25(ro)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
signifie que l&#039;on autorisera la machine &#039;&#039;192.168.0.10&#039;&#039; à accéder à notre répertoire &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; en lecture et écriture (&amp;lt;tt&amp;gt;rw&amp;lt;/tt&amp;gt;) ainsi que la machine &#039;&#039;192.168.0.25&#039;&#039; mais uniquement en lecture (&amp;lt;tt&amp;gt;ro&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;répertoire&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; le répertoire du serveur à partager.&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;machine&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de &amp;quot;&#039;&#039;dns spoofing&#039;&#039;&amp;quot;).&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;options&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; : &lt;br /&gt;
** &#039;&#039;&#039;ro&#039;&#039;&#039; : &amp;lt;br /&amp;gt;C&#039;est la valeur par défaut, lecture seule.&lt;br /&gt;
** &#039;&#039;&#039;rw&#039;&#039;&#039; : &amp;lt;br /&amp;gt;La machine à un accès en lecture/écriture au répertoire.&lt;br /&gt;
** &#039;&#039;&#039;no_root_squash&#039;&#039;&#039; : &amp;lt;br /&amp;gt;Les accès par l&#039;utilisateur root sur le serveur se font sous l&#039;identité root, au contraire de nobody (par défaut)&amp;lt;br /&amp;gt; À UTILISER AVEC PRÉCAUTION&lt;br /&gt;
** &#039;&#039;&#039;sync&#039;&#039;&#039; : &amp;lt;u&amp;gt;uniquement NFS v2&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d&#039;un mécanisme de &#039;&#039;commit-rollback&#039;&#039; donc cette option n&#039;est pas utile.&lt;br /&gt;
&lt;br /&gt;
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d&#039;utilisateurs sur les deux machines. &amp;lt;br /&amp;gt;Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d&#039;utilisateurs, tu peux tout simplement éditer &amp;lt;tt&amp;gt;/etc/group&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; pour synchroniser ces numéros.&lt;br /&gt;
&lt;br /&gt;
Il n&#039;est pas recommandé d&#039;exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.deny ===&lt;br /&gt;
&lt;br /&gt;
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Un bon vieux &amp;quot;&amp;lt;tt&amp;gt;ALL: ALL&amp;lt;/tt&amp;gt;&amp;quot; interdira l&#039;accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :&lt;br /&gt;
&lt;br /&gt;
 portmap:ALL&lt;br /&gt;
 lockd:ALL&lt;br /&gt;
 mountd:ALL&lt;br /&gt;
 rquotad:ALL&lt;br /&gt;
 statd:ALL&lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.allow ===&lt;br /&gt;
&lt;br /&gt;
Dans le même esprit que pour le &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;, ce fichier a l&#039;architecture suivante :&lt;br /&gt;
&lt;br /&gt;
   [service]: [IP de la machine client]&lt;br /&gt;
&lt;br /&gt;
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :&lt;br /&gt;
&lt;br /&gt;
   portmap:192.168.1.34&lt;br /&gt;
   lockd:192.168.1.34&lt;br /&gt;
   mountd:192.168.1.34&lt;br /&gt;
   rquotad:192.168.1.34&lt;br /&gt;
   statd:192.168.1.34&lt;br /&gt;
&lt;br /&gt;
On va pouvoir lancer les services ; sur ma Debian, je lance :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/init.d/nfs-server start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour Slackware, ce serait&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/rc.d/rc.nfsd start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande &amp;lt;tt&amp;gt;rpcinfo -p&amp;lt;/tt&amp;gt; permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# rpcinfo -p&lt;br /&gt;
  program vers proto   port&lt;br /&gt;
   100000    2   tcp    111  portmapper&lt;br /&gt;
   100000    2   udp    111  portmapper&lt;br /&gt;
   100024    1   udp    737  status&lt;br /&gt;
   100024    1   tcp    739  status&lt;br /&gt;
   100011    1   udp    851  rquotad&lt;br /&gt;
   100011    2   udp    851  rquotad&lt;br /&gt;
   100003    2   udp   2049  nfs&lt;br /&gt;
   100003    2   tcp   2049  nfs&lt;br /&gt;
   100005    1   udp    872  mountd&lt;br /&gt;
   100005    2   udp    872  mountd&lt;br /&gt;
   100005    1   tcp    875  mountd&lt;br /&gt;
   100005    2   tcp    875  mountd&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour recharger les services NFS (par exemple après une modification du fichier de config) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# killall -HUP nfsd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le serveur est prêt ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Le client ==&lt;br /&gt;
&lt;br /&gt;
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt;. Pour voir sa version, taper :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount -V&lt;br /&gt;
 mount: mount-2.11h&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On va maintenant pouvoir monter notre partage!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount mon.serveur.nfs:/home /mnt/home&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En principe tout devrait bien se dérouler.&lt;br /&gt;
&lt;br /&gt;
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre &amp;lt;tt&amp;gt;/etc/fstab&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 master.foo.com:/home  /mnt nfs     rw      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;mount&#039; possède quelques options spécifiques au nfs, et qui peuvent s&#039;avérer utiles :&lt;br /&gt;
* &#039;&#039;&#039;tcp&#039;&#039;&#039; : permet de préciser qu&#039;on ne travaille qu&#039;en TCP&lt;br /&gt;
* &#039;&#039;&#039;rsize=XXX&#039;&#039;&#039; et &#039;&#039;&#039;wsize=XXX&#039;&#039;&#039; : permet de modifier la taille par défaut (1024) du buffer. Une taille de 8192 par exemple permet d&#039;accélerer le transfert.&lt;br /&gt;
* &#039;&#039;&#039;soft&#039;&#039;&#039; et &#039;&#039;&#039;timeo=XXX&#039;&#039;&#039;: sur un problème de transmission, le client peut perdre la connection. Le noyau continuera d&#039;essayer ad vitam eternam. Les processus risquent de se retrouver dans un état D (ininterruptible sleep) que seul un reboot permet de résoudre. L&#039;option &#039;&#039;&#039;soft&#039;&#039;&#039; dit au noyau d&#039;abandonner au bout d&#039;un certain temps, et l&#039;option &#039;&#039;&#039;timeo&#039;&#039;&#039; permet de définir le timeout.&lt;br /&gt;
&lt;br /&gt;
== Sécuriser le NFS ==&lt;br /&gt;
&lt;br /&gt;
Les données transitent en clair sur le réseau, néanmoins il est possible de crypter les échange grâce au &#039;&#039;port forwarding&#039;&#039; de ssh.&lt;br /&gt;
La mise en place de la cryptographie se fait en deux parties : une partie sur le serveur, une partie sur le client.&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de connaître et/ou de définir le port tcp utilisé par mountd. Un petit &amp;lt;code&amp;gt;rpcinfo -p&amp;lt;/code&amp;gt; permettra de savoir quel port est utilisé par mountd. On peut définir celui-ci via l&#039;option &#039;&#039;-d&#039;&#039; lors du lancement du service. Dans notre exemple, il s&#039;agit du port 875.&lt;br /&gt;
Il faut également rajouter l&#039;option &#039;&#039;insecure&#039;&#039; pour les machines/réseaux concernés dans &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;. Cette option permet seulement de pouvoir atteindre le serveur via un port &amp;gt; 1024 (ce que nous allons faire).&lt;br /&gt;
&lt;br /&gt;
=== Configuration du client === &lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de deux ports libres, par exemple 38000 et 38001 pour créer un tunnel sécurisé entre le client et le serveur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -f -L38000:serveur:2049 -L38001:serveur:875 -l root serveur sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;utilisation de l&#039;utilisateur root est nécessaire car on va travailler avec un port &amp;lt; 1024. La mise en place d&#039;une authentification par clé peut être dans ce cas très intéressante.&lt;br /&gt;
Avec cette commande nous venons de créer un tunnel chiffré entre le port 38000 (resp. 38001) de notre client et le 2049 (resp. 875) du serveur.&lt;br /&gt;
La commande &#039;sleep 60&#039; fait tomber le tunnel sécurisé au bout de 60 secondes si celui-ci n&#039;est pas utilisé.&lt;br /&gt;
Il ne reste plus qu&#039;à monter le partage! Le fait d&#039;utiliser un tunnel ssh implique que nous allons utiliser exclusivement une connection tcp.&lt;br /&gt;
Pour monter le partage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount -t nfs -o tcp,rw,port=38000,mountport=38001,soft,timeo=60 localhost:/repertoire /mnt/nfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de monter serveur:/repertoire dans /mnt/nfs. Il faut bien utiliser localhost:/repertoire pour monter le partage. C&#039;est justement cela qui va permettre d&#039;utiliser la connexion sécurisée.&lt;br /&gt;
&lt;br /&gt;
On peut également rajouter cette ligne dans le /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 localhost:/home  /mnt nfs     tcp,rw,port=38000,mountport=38001,soft,timeo=60      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Guillaume Pierronnet le 22/10/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 22/10/2001, Guillaume Pierronnet - 2006 Oudoubah&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;br /&gt;
&lt;br /&gt;
=Autres ressources=&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/ &lt;br /&gt;
* [http://en.tldp.org/HOWTO/LDAP-HOWTO/ LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;/div&gt;</summary>
		<author><name>Ouranos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13922</id>
		<title>NFS</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13922"/>
		<updated>2006-11-02T10:26:54Z</updated>

		<summary type="html">&lt;p&gt;Ouranos : /* /etc/hosts.deny */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Partager ses fichiers]]&lt;br /&gt;
= Installation d&#039;un serveur NFS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Installation d&#039;un serveur NFS&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Guillaume Pierronnet&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;NFS, ou le partage des ressources selon Unix.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
NFS signifie Network File System. C&#039;est, comme son nom l&#039;indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l&#039;utiliser de manière totalement transparente dans son arborescence Linux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je vous invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité ([http://www.linuxselfhelp.com/HOWTO/NFS-HOWTO/security.html celui-ci], en anglais, indique quelques règles à suivre, en parallèle des démarches indiquées [http://people.via.ecp.fr/~alexis/formation-linux/nfs.html dans ce guide nfs pour Debian] ou ci-dessous). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les softs ==&lt;br /&gt;
&lt;br /&gt;
=== Les modules du noyau ===&lt;br /&gt;
&lt;br /&gt;
Dans la configuration du noyau, on va dans la section &amp;quot;&#039;&#039;&#039;File systems ---&amp;gt; Network File Systems&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le client:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS file system support et Provide NFSv3 client support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFS_FS=y ou m&lt;br /&gt;
   CONFIG_NFS_V3=y&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le serveur:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS server support et Provide NFSv3 server support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFSD=y ou m&lt;br /&gt;
   CONFIG_NFSD_V3=y&lt;br /&gt;
&lt;br /&gt;
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug. &amp;lt;br /&amp;gt;Il serait temps d&#039;upgrader si tu ne l&#039;as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)&lt;br /&gt;
&lt;br /&gt;
=== Les packages ===&lt;br /&gt;
&lt;br /&gt;
Les packages (sur ma Debian) sont :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-common&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-user-server&amp;lt;/tt&amp;gt; pour le serveur.&lt;br /&gt;
&lt;br /&gt;
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.&lt;br /&gt;
&lt;br /&gt;
On va aussi installer le &#039;&#039;wrapper&#039;&#039; TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s&#039;appelle &amp;lt;tt&amp;gt;tcpd&amp;lt;/tt&amp;gt;. Les sources se trouvent [ftp://ftp.porcupine.org/pub/security/index.html ici].&lt;br /&gt;
&lt;br /&gt;
== Le serveur ==&lt;br /&gt;
&lt;br /&gt;
Les 3 fichiers de configuration principaux sont &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/exports ===&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt; est très simple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;répertoire machine1(option11,option12) machine2(option21,option22)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
par exemple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;/home 192.168.0.10(rw) 192.168.0.25(ro)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
signifie que l&#039;on autorisera la machine &#039;&#039;192.168.0.10&#039;&#039; à accéder à notre répertoire &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; en lecture et écriture (&amp;lt;tt&amp;gt;rw&amp;lt;/tt&amp;gt;) ainsi que la machine &#039;&#039;192.168.0.25&#039;&#039; mais uniquement en lecture (&amp;lt;tt&amp;gt;ro&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;répertoire&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; le répertoire du serveur à partager.&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;machine&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de &amp;quot;&#039;&#039;dns spoofing&#039;&#039;&amp;quot;).&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;options&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; : &lt;br /&gt;
** &#039;&#039;&#039;ro&#039;&#039;&#039; : &amp;lt;br /&amp;gt;C&#039;est la valeur par défaut, lecture seule.&lt;br /&gt;
** &#039;&#039;&#039;rw&#039;&#039;&#039; : &amp;lt;br /&amp;gt;La machine à un accès en lecture/écriture au répertoire.&lt;br /&gt;
** &#039;&#039;&#039;no_root_squash&#039;&#039;&#039; : &amp;lt;br /&amp;gt;Les accès par l&#039;utilisateur root sur le serveur se font sous l&#039;identité root, au contraire de nobody (par défaut)&amp;lt;br /&amp;gt; À UTILISER AVEC PRÉCAUTION&lt;br /&gt;
** &#039;&#039;&#039;sync&#039;&#039;&#039; : &amp;lt;u&amp;gt;uniquement NFS v2&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d&#039;un mécanisme de &#039;&#039;commit-rollback&#039;&#039; donc cette option n&#039;est pas utile.&lt;br /&gt;
&lt;br /&gt;
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d&#039;utilisateurs sur les deux machines. &amp;lt;br /&amp;gt;Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d&#039;utilisateurs, tu peux tout simplement éditer &amp;lt;tt&amp;gt;/etc/group&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; pour synchroniser ces numéros.&lt;br /&gt;
&lt;br /&gt;
Il n&#039;est pas recommandé d&#039;exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.deny ===&lt;br /&gt;
&lt;br /&gt;
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Un bon vieux &amp;quot;&amp;lt;tt&amp;gt;ALL: ALL&amp;lt;/tt&amp;gt;&amp;quot; interdira l&#039;accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :&lt;br /&gt;
&lt;br /&gt;
 portmap:ALL&lt;br /&gt;
 lockd:ALL&lt;br /&gt;
 mountd:ALL&lt;br /&gt;
 rquotad:ALL&lt;br /&gt;
 statd:ALL&lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.allow ===&lt;br /&gt;
&lt;br /&gt;
Dans le même esprit que pour le &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt;, ce fichier a l&#039;architecture suivante :&lt;br /&gt;
&lt;br /&gt;
   [service]: [IP de la machine client]&lt;br /&gt;
&lt;br /&gt;
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :&lt;br /&gt;
&lt;br /&gt;
   portmap:192.168.1.34&lt;br /&gt;
   lockd:192.168.1.34&lt;br /&gt;
   mountd:192.168.1.34&lt;br /&gt;
   rquotad:192.168.1.34&lt;br /&gt;
   statd:192.168.1.34&lt;br /&gt;
&lt;br /&gt;
On va pouvoir lancer les services ; sur ma Debian, je lance :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/init.d/nfs-server start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour Slackware, ce serait&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/rc.d/rc.nfsd start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande &amp;lt;tt&amp;gt;rpcinfo -p&amp;lt;/tt&amp;gt; permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# rpcinfo -p&lt;br /&gt;
  program vers proto   port&lt;br /&gt;
   100000    2   tcp    111  portmapper&lt;br /&gt;
   100000    2   udp    111  portmapper&lt;br /&gt;
   100024    1   udp    737  status&lt;br /&gt;
   100024    1   tcp    739  status&lt;br /&gt;
   100011    1   udp    851  rquotad&lt;br /&gt;
   100011    2   udp    851  rquotad&lt;br /&gt;
   100003    2   udp   2049  nfs&lt;br /&gt;
   100003    2   tcp   2049  nfs&lt;br /&gt;
   100005    1   udp    872  mountd&lt;br /&gt;
   100005    2   udp    872  mountd&lt;br /&gt;
   100005    1   tcp    875  mountd&lt;br /&gt;
   100005    2   tcp    875  mountd&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour recharger les services NFS (par exemple après une modification du fichier de config) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# killall -HUP nfsd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le serveur est prêt ! &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Le client ==&lt;br /&gt;
&lt;br /&gt;
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt;. Pour voir sa version, taper :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount -V&lt;br /&gt;
 mount: mount-2.11h&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On va maintenant pouvoir monter notre partage!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount mon.serveur.nfs:/home /mnt/home&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En principe tout devrait bien se dérouler.&lt;br /&gt;
&lt;br /&gt;
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre &amp;lt;tt&amp;gt;/etc/fstab&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 master.foo.com:/home  /mnt nfs     rw      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;mount&#039; possède quelques options spécifiques au nfs, et qui peuvent s&#039;avérer utiles :&lt;br /&gt;
* &#039;&#039;&#039;tcp&#039;&#039;&#039; : permet de préciser qu&#039;on ne travaille qu&#039;en TCP&lt;br /&gt;
* &#039;&#039;&#039;rsize=XXX&#039;&#039;&#039; et &#039;&#039;&#039;wsize=XXX&#039;&#039;&#039; : permet de modifier la taille par défaut (1024) du buffer. Une taille de 8192 par exemple permet d&#039;accélerer le transfert.&lt;br /&gt;
* &#039;&#039;&#039;soft&#039;&#039;&#039; et &#039;&#039;&#039;timeo=XXX&#039;&#039;&#039;: sur un problème de transmission, le client peut perdre la connection. Le noyau continuera d&#039;essayer ad vitam eternam. Les processus risquent de se retrouver dans un état D (ininterruptible sleep) que seul un reboot permet de résoudre. L&#039;option &#039;&#039;&#039;soft&#039;&#039;&#039; dit au noyau d&#039;abandonner au bout d&#039;un certain temps, et l&#039;option &#039;&#039;&#039;timeo&#039;&#039;&#039; permet de définir le timeout.&lt;br /&gt;
&lt;br /&gt;
== Sécuriser le NFS ==&lt;br /&gt;
&lt;br /&gt;
Les données transitent en clair sur le réseau, néanmoins il est possible de crypter les échange grâce au &#039;&#039;port forwarding&#039;&#039; de ssh.&lt;br /&gt;
La mise en place de la cryptographie se fait en deux parties : une partie sur le serveur, une partie sur le client.&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de connaître et/ou de définir le port tcp utilisé par mountd. Un petit &amp;lt;code&amp;gt;rpcinfo -p&amp;lt;/code&amp;gt; permettra de savoir quel port est utilisé par mountd. On peut définir celui-ci via l&#039;option &#039;&#039;-d&#039;&#039; lors du lancement du service. Dans notre exemple, il s&#039;agit du port 875.&lt;br /&gt;
Il faut également rajouter l&#039;option &#039;&#039;insecure&#039;&#039; pour les machines/réseaux concernés dans &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;. Cette option permet seulement de pouvoir atteindre le serveur via un port &amp;gt; 1024 (ce que nous allons faire).&lt;br /&gt;
&lt;br /&gt;
=== Configuration du client === &lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de deux ports libres, par exemple 38000 et 38001 pour créer un tunnel sécurisé entre le client et le serveur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -f -L38000:serveur:2049 -L38001:serveur:875 -l root serveur sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;utilisation de l&#039;utilisateur root est nécessaire car on va travailler avec un port &amp;lt; 1024. La mise en place d&#039;une authentification par clé peut être dans ce cas très intéressante.&lt;br /&gt;
Avec cette commande nous venons de créer un tunnel chiffré entre le port 38000 (resp. 38001) de notre client et le 2049 (resp. 875) du serveur.&lt;br /&gt;
La commande &#039;sleep 60&#039; fait tomber le tunnel sécurisé au bout de 60 secondes si celui-ci n&#039;est pas utilisé.&lt;br /&gt;
Il ne reste plus qu&#039;à monter le partage! Le fait d&#039;utiliser un tunnel ssh implique que nous allons utiliser exclusivement une connection tcp.&lt;br /&gt;
Pour monter le partage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount -t nfs -o tcp,rw,port=38000,mountport=38001,soft,timeo=60 localhost:/repertoire /mnt/nfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de monter serveur:/repertoire dans /mnt/nfs. Il faut bien utiliser localhost:/repertoire pour monter le partage. C&#039;est justement cela qui va permettre d&#039;utiliser la connexion sécurisée.&lt;br /&gt;
&lt;br /&gt;
On peut également rajouter cette ligne dans le /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 localhost:/home  /mnt nfs     tcp,rw,port=38000,mountport=38001,soft,timeo=60      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Guillaume Pierronnet le 22/10/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 22/10/2001, Guillaume Pierronnet - 2006 Oudoubah&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;br /&gt;
&lt;br /&gt;
=Autres ressources=&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/ &lt;br /&gt;
* [http://en.tldp.org/HOWTO/LDAP-HOWTO/ LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;/div&gt;</summary>
		<author><name>Ouranos</name></author>
	</entry>
</feed>