<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <META NAME="GENERATOR" CONTENT="lfparser_2.8">
 <META NAME="LFCATEGORY" CONTENT="System Administration">
 <TITLE>lf164, System Administration: NFS - Network File System</TITLE>
<!-- stylesheet added by lfparser: --> 
<style type="text/css">
<!--
 pre { font-familiy:monospace,Courier }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://main.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- 2pdaIgnoreStart -->

<MAP name="top">
  <AREA shape="rect" coords="367,9,418,30" alt="Sommaire" href="../index.shtml">
  <AREA shape="rect" coords="423,9,457,30" alt="Carte" href="../map.html">
  <AREA shape="rect" coords="463,9,508,30" alt="Index" href="../Themes/index.html">
  <AREA shape="rect" coords="514,9,558,30" alt="Recherche" href="../Search/index.html">
</MAP>
<MAP name="bottom">
  <AREA shape="rect" coords="78,0,163,15" alt="Nouvelles" href="../News/index.shtml">
  <AREA shape="rect" coords="189,0,284,15" alt="Archives" href="../Archives/index.html">
  <AREA shape="rect" coords="319,0,395,15" alt="Liens" href="../Links/index.html">
  <AREA shape="rect" coords="436,0,523,15" alt="A propos" href="../aboutus.html">
</MAP>
<!-- IMAGE HEADER -->
<CENTER>
  <IMG src="../../common/images/Topbar-fr.gif" width="600" height="40" border="0" alt="[Barre Superieure]" ismap usemap="#top" ><BR>
  <IMG src="../../common/images/Bottombar-fr.gif" width="600" height="21" border="0" alt="[Barre Inferieure]" ismap usemap="#bottom">
</CENTER>
<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Cet article est disponible en: <A href="../../English/November2000/article164.shtml">English</a> &nbsp;<A href="../../Castellano/November2000/article164.shtml">Castellano</a> &nbsp;<A href="../../Deutsch/November2000/article164.shtml">Deutsch</a> &nbsp;<A href="../../Francais/November2000/article164.shtml">Francais</a> &nbsp;<A href="../../Nederlands/November2000/article164.shtml">Nederlands</a> &nbsp;<A href="../../Russian/November2000/article164.shtml">Russian</a> &nbsp;<A href="../../Turkce/November2000/article164.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 

<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0 hspace=4 vspace=4 WIDTH="30%" >
<TR>
<TD>

<!-- 2pdaIgnoreStart -->
<!-- PALM DOC -->
<TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD>
<font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font>
</TD> </TR> </TABLE>
<!-- END PALM DOC -->
<!-- 2pdaIgnoreStop -->
<br>
<img SRC="../../common/images/Frederic_Raynal.png" >
<BR>par  <a href="mailto:pappy@users.sourceforge.net">Fr&eacute;d&eacute;ric Raynal</a>
<BR><BR>
<I>L&acute;auteur:</I><BR>
<P><a href="mailto:frederic.raynal@inria.fr">Fr&eacute;d&eacute;ric Raynal</a>
pr&eacute;pare une th&egrave;se en informatique sur le tatouage d'images
&agrave; l'<a href="http://www.inria.fr">INRIA</a>. Il lit un tr&egrave;s
bon roman policier qui met en sc&egrave;ne Th. Roosevelt au d&eacute;but du si&egrave;cle
alors qu'il &eacute;tait pr&eacute;fet de police. L'ambiance est tr&egrave;s sombre. Il
s'agit d'une enqu&ecirc;te d'un groupe de personnes pour
retrouver un tueur en s&eacute;rie qui s'attaque &agrave; des enfants. Ce groupe
s'appuie sur des techniques nouvelles (psychologies, empreintes
digitales, etc...) pour parvenir &agrave; ces fins. Ce roman de
de Caleb Carr, L'ange des t&eacute;n&egrave;bres, dresse un portrait surprenant du
d&eacute;but du si&egrave;cle.


<BR><i>Sommaire</i>:
<UL>
  <LI><A HREF="#lfindex0">
Le serveur</A></LI>
  <LI><A HREF="#lfindex1">
Le client</A></LI>
  <LI><A HREF="#lfindex2">
Les pr&eacute;cautions</A></LI>
  <LI><A HREF="#lfindex3">
R&eacute;f&eacute;rences</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=164&lang=fr">Discussion sur cet article</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<H2>NFS - Network File System</H2>
 <img src="../../common/images/illustration164.gif" width="100" heigth=100>
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>R&eacute;sum&eacute;</i>:
<P>
<P>Le <i>Network File System</i> (NFS) permet de g&eacute;rer des fichiers
distribu&eacute;s sur plusieurs ordinateurs d'un r&eacute;seau comme s'ils
&eacute;taient sur un disque dur local. Ainsi, l'utilisateur n'a plus &agrave;
se soucier de savoir o&ugrave; sont physiquement ses fichiers pour y acc&eacute;der.

</P>
<HR size="2" noshade align="right"><BR>
<!-- BODY OF THE ARTICLE -->


<h1>Introduction</h1>
<P>NFS permet tr&egrave;s simplement de partager des donn&eacute;es entre
plusieurs machines. Par exemple, un utilisateur qui se connecte sur un
r&eacute;seau n'aura plus &agrave; se logger sur une machine pr&eacute;cise
: via NFS, son <i>home directory</i> lui sera livr&eacute; (on dit en fait
export&eacute;) sur la machine o&ugrave; il se connecte.
<p>NFS n'est toutefois pas un protocole tr&egrave;s performant et n'est
pas utilisable de mani&egrave;re confortable au travers une connexion par
modem. En revanche, sur un r&eacute;seau local, son utilisation offre une
grande souplesse tant aux utilisateurs qu'aux administrateurs.
<p>Il faut n&eacute;anmoins prendre quelques pr&eacute;cautions par rapport
&agrave; ce service. En effet, permettre &agrave; n'importe qui d'&eacute;crire
des donn&eacute;es sur son r&eacute;seau n'est pas franchement conseill&eacute;
;-) Certaines mesures indispensables limitent les risques.
<p>Cet article commence donc par une tr&egrave;s br&egrave;ve introduction
sur les syst&egrave;mes de fichiers. Ensuite, nous verrons le fonctionnement
du protocole NFS. La partie suivante, moins th&eacute;orique, d&eacute;taillera
l'installation d'un serveur et d'un client NFS, ainsi que les pr&eacute;cautions
minimum &agrave; prendre. Enfin, nous illustrerons dans un exemple, comment
combiner NFS, NIS et autofs.
<br>&nbsp;
<h1>
Pr&eacute;sentation g&eacute;n&eacute;rale et non-exhaustive de la notion
de <i>syst&egrave;me de fichiers</i></h1>
Avant de parler de NFS, il est n&eacute;cessaire de bien comprendre la
notion de <i>syst&egrave;me de fichiers</i>. Ce terme d&eacute;signe la
mani&egrave;re dont les donn&eacute;es sont stock&eacute;es sur un support,
dont elles sont organis&eacute;es et g&eacute;r&eacute;es. Il en existe
toute une pl&eacute;thore, certains plus utilis&eacute;s que d'autres (New
Technology FileSystem (NTFS), High Performance FileSystem (HPFS), DOS,
FAT 12/16/32, VFAT, Macintosh Hierarchical Filesystem (HFS), ISO 9660 (pour
les CD-ROM), extended filesystems (Ext, Ext2, Ext3), et encore de nombreux
autres).
<p>Par exemple, on peut envisager tout support physique de donn&eacute;es
(un disque dur par exemple) comme un suite de petites cases contenant des
informations : on parle de <i>blocs</i> (<i>blocks</i> en Anglais). Chaque
syst&egrave;me de fichiers g&egrave;re ces blocs diff&eacute;remment. Par
exemple, dans la figure <a href="#frag">1</a> , on cherche &agrave; ins&eacute;rer
un fichier tenant sur 2 blocs. Dans l'illustration sup&eacute;rieure, le
fichier a &eacute;t&eacute; plac&eacute; apr&egrave;s le dernier bloc occup&eacute;,
laissant des espaces vides au d&eacute;but. A l'inverse, dans le sch&eacute;ma
inf&eacute;rieur, il a &eacute;t&eacute; plac&eacute; au premier endroit
pouvant le contenir. Si le terme "fragmentation" vous &eacute;voque quelque
chose, vous savez maintenant ce qu'il repr&eacute;sente ;-)
<br>&nbsp;
<br>&nbsp;
<br>
<br>
<center>
<p><img SRC="../../common/images/image164-1.png" height=387 width=461>
<br><a NAME="frag"></a>Fig. 1 : 2 politiques diff&eacute;rentes pour ins&eacute;rer
des blocs</center>

<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<p>Le syst&egrave;me de fichiers le plus commun sous Linux s'appelle <i>ext2fs</i>
(extended 2 file system). Chaque fichier y est repr&eacute;sent&eacute;
par un <i>inode<a NAME="foot1" href="#foot1"></a></i><sup><a href="#foot1" NAME="foot1">1</a></sup>.
Les r&eacute;pertoires contiennent des listes de fichiers, l'acc&egrave;s
aux devices se fait par l'interm&eacute;diaire d'op&eacute;rations de lecture/&eacute;criture
sur des fichiers particuliers.
<p>Le r&ocirc;le d'un serveur NFS est donc de distribuer &agrave; ses clients
les inodes des fichiers auxquels ils veulent acc&eacute;der. Toutefois,
le client ne pourrait fonctionner correctement s'il ne recevait que l'inode
de ces fichiers! Un serveur NFS offre donc une couche r&eacute;seau suppl&eacute;mentaire
pour permettre &agrave; des machines distantes de manipuler ses inodes.
<br>&nbsp;
<h1>
Le protocole NFS</h1>
Ce que nous appelons commun&eacute;ment NFS se compose en fait de 4 protocoles
distincts. Chacun repose sur les <i>Remote Procedure Calls
</i>(RPC) et
donc <font face="Courier New,Courier">portmap</font> (aussi appel&eacute;
<font face="Courier New,Courier">rpc.portmap</font>).
Rappelons que ce programme convertit les num&eacute;ros de programmes RPC
en num&eacute;ros de ports. Quand un serveur RPC d&eacute;marre, il va
pr&eacute;ciser &agrave; <font face="Courier New,Courier">portmap</font>
quel port il utilisera et les num&eacute;ros de programmes RPC qu'il g&egrave;re.
Quand un client souhaite envoyer une requ&ecirc;te RPC vers un num&eacute;ro
de programme donn&eacute;, il contacte d'abord le serveur <font face="Courier New,Courier">portmap</font>
pour obtenir le num&eacute;ro de port sur lequel tourne le programme souhait&eacute;.
Ensuite, il adresse les paquets RPC au port correspondant.
<p>Les 4 services permettant &agrave; NFS de fonctionner sont :
<br>&nbsp;
<br>&nbsp;
<table BORDER WIDTH="100%" NOSAVE >
<tr>
<td><b><font size=+1>Protocole</font></b></td>

<td>
<center><b><font size=+1>Description</font></b></center>
</td>

<td>
<center><b><font size=+1>D&eacute;mon</font></b></center>
</td>
</tr>

<tr>
<td><b>nfs</b></td>

<td>Ce protocole est la base qui permet la cr&eacute;ation de fichier,
leur recherche, leur lecture ou leur &eacute;criture. Ce protocole g&egrave;re
donc &eacute;galement l'authentification&nbsp; et les statistiques sur
les fichiers.</td>

<td>
<center>nfsd</center>
</td>
</tr>

<tr>
<td><b>mountd</b></td>

<td>Celui-ci s'occupe du montage des syst&egrave;mes export&eacute;s auxquels
on acc&eacute;dera par <b>nfs</b>. Il envoie donc des requ&ecirc;tes de
type <font face="Courier New,Courier">mount</font> et <font face="Courier New,Courier">umount</font>
au serveur, qui doit donc conserver des informations sur les syst&egrave;mes
de fichiers export&eacute;s (voir section sur XXX).</td>

<td>
<center>mountd</center>
</td>
</tr>

<tr>
<td><b>nsm</b>
<br>(Network Status Monitor)&nbsp;</td>

<td>Il sert &agrave; monitorer les noeuds du r&eacute;seau pour conna&icirc;tre
l'&eacute;tat d'une machine (cliente ou serveur) pour signaler, par exemple,
qu'elle red&eacute;marre.</td>

<td>
<center>statd</center>
</td>
</tr>

<tr>
<td><b>nlm</b>
<br>(Network Lock Manager)&nbsp;</td>

<td>Pour &eacute;viter que des donn&eacute;es soient alt&eacute;r&eacute;es
par plusieurs clients en m&ecirc;me temps, ce protocole g&egrave;re un
syst&egrave;me de locks (<i>serrure</i> ou <i>fermeture</i> en Anglais)
qui permettent de signaler les syst&egrave;mes de fichiers utilis&eacute;s.
Ainsi, &agrave; l'aide du protocole <b>nsm</b> qui sait quand un client
red&eacute;marre, il lib&egrave;re tous les locks du client avant de les
lui restituer si une nouvelle requ&ecirc;te est &eacute;mise.</td>

<td>
<center>lockd</center>
</td>
</tr>
</table>

<p>Le d&eacute;mon <font face="Courier New,Courier">knfsd</font>, disponible
avec les derni&egrave;res versions du noyau, supporte directement les protocoles
<b>nfs</b>
et <b>nlm</b>. En revanche, <b>mountd</b> et <b>nsm</b> ne le sont pas
encore. Une fois le serveur NFS install&eacute; et d&eacute;marr&eacute;,
on peut v&eacute;rifier que tout fonctionne ainsi :
<br>&nbsp;
<blockquote><font face="Courier New,Courier">>> ps auxwww | egrep "nfs|mount|lock|stat"</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1370&nbsp; 0.0&nbsp; 0.2&nbsp; 1176&nbsp; 580 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
S&nbsp;&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 rpc.mountd --no-nfs-version
3</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1379&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1380&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1381&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1382&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1383&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1384&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1385&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1386&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [nfsd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1399&nbsp; 0.0&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 0
pts/0&nbsp;&nbsp;&nbsp; SW&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 [lockd]</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1409&nbsp; 0.0&nbsp; 0.2&nbsp; 1156&nbsp; 560 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
S&nbsp;&nbsp;&nbsp; 22:28&nbsp;&nbsp; 0:00 rpc.statd</font>
<br><font face="Courier New,Courier">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1652&nbsp; 0.0&nbsp; 0.1&nbsp; 1228&nbsp; 484 pts/3&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;
22:49&nbsp;&nbsp; 0:00 egrep nfs|mount|lock|stat</font></blockquote>
Il existe actuellement 2 versions de NFS (versions 2 et 3 - que nous noterons
respectivement NFSv2 et NFSv3 quand nous voudrons les diff&eacute;rencier).
Le serveur NFS de Linux ne supporte pour l'instant que la version 2 (d'o&ugrave;
l'option sur la ligne du <font face="Courier New,Courier">mountd</font>
de l'exemple pr&eacute;c&eacute;dent).
<p>L'objet au centre de toutes les pr&eacute;occupations de NFS s'appelle
un <i>file handle</i>. Il s'agit d'une suite de bits relativement &eacute;sot&eacute;rique
permettant de d&eacute;signer de mani&egrave;re unique chacun des objets
du syst&egrave;mes de fichiers (donc un fichier entre autre, mais pas uniquement).
Il contient par exemple, l'inode du fichier, mais &eacute;galement un fichier
repr&eacute;sentant le device o&ugrave; se trouve ce fichier. On peut donc
voir NFS comme un syst&egrave;me de fichiers qui en encapsule un autre.
<h1>
Installation</h1>

<A NAME="lfindex0">&nbsp;</A>
<H2>
Le serveur</H2>

La toute premi&egrave;re chose &agrave; faire, comme nous l'avons vu, est
de d&eacute;marrer <font face="Courier New,Courier">portmap</font> puisque
les protocoles n&eacute;cessaires &agrave; l'utilisation de NFS se servent
des RPCs.
<blockquote><font face="Courier New,Courier">root >>/usr/sbin/rpcinfo -p</font>
<br><font face="Courier New,Courier">rpcinfo: can't contact portmapper:
RPC: Remote system error - Connection refused</font>
<br><font face="Courier New,Courier">root >>/sbin/portmap</font>
<br><font face="Courier New,Courier">root >>/usr/sbin/rpcinfo -p</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp; program vers proto&nbsp;&nbsp;
port</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 100000&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp; tcp&nbsp;&nbsp;&nbsp; 111&nbsp; portmapper</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 100000&nbsp;&nbsp;&nbsp;
2&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp; 111&nbsp; portmapper</font></blockquote>
La commande <font face="Courier New,Courier">rpcinfo</font> permet de conna&icirc;tre
les services RPC qui fonctionnent sur la machine sp&eacute;cifi&eacute;e
en argument (l'option <font face="Courier New,Courier">-p</font>). On constate
donc que <font face="Courier New,Courier">portmap</font> ne tourne pas
encore : on le d&eacute;marre (la plupart des distributions de Linux mettent
en place des scripts qui permettent de faire ceci de mani&egrave;re automatique
au d&eacute;marrage de la machine) et on v&eacute;rifie qu'il fonctionne
correctement. Une autre possibilit&eacute; expliquant la r&eacute;ponse
n&eacute;gative re&ccedil;ue suite &agrave; l'appel de <font face="Courier New,Courier">rpcinfo</font>
est tout simplement l'interdiction faite au portmapper de r&eacute;pondre,
par l'entremise des fichiers <font face="Courier New,Courier">/etc/hosts.{allow,
deny}</font>.
<p>Avant de d&eacute;marrer NFS proprement dit, il faut le configurer.
Le seul fichier de configuration s'appelle <font face="Courier New,Courier">/etc/exports</font>.
Chaque ligne contient l'emplacement &agrave; exporter suivi d'une liste
de clients autoris&eacute;s &agrave; y acc&eacute;der . Il est possible,
voire indispensable, de rajouter des options &agrave; la suite de chaque
nom de client. La page <font face="Courier New,Courier">man exports</font>
d&eacute;crit clairement les syntaxes valides pour les noms de clients
et les options.
<p>Les formulations accept&eacute;es pour les noms des clients sont :
<ul>
<li>
un nom de machine ;</li>

<li>
des wildcards sur un nom de domaine (ex : linux-*.mondomaine.fr) ;</li>

<li>
un <i>netgroup</i>, sous la forme <font face="Courier New,Courier">@group</font>,
si NIS est utilis&eacute; et en d&eacute;fini ;</li>

<li>
une adresse IP ...</li>
</ul>
Nous ne d&eacute;taillerons pas ici toutes les options de montage possibles,
mais voici les plus importantes :
<ul>
<li>
<font face="Courier New,Courier">rw</font> (read write) : le client peut
lire et &eacute;crire sur le syst&egrave;me export&eacute; ;</li>

<li>
<font face="Courier New,Courier">ro</font>&nbsp; (read only) : le client
peut seulement lire sur le syst&egrave;me export&eacute; ;</li>

<li>
<font face="Courier New,Courier">root_squash</font> : il est pr&eacute;f&eacute;rable
que l'utilisateur <i>root</i> d'un client ne puisse pas &ecirc;tre assimil&eacute;
au <i>root</i> du serveur. Pour &eacute;viter ceci, l'UID/GID 0 (i.e. celui
de <i>root</i>) devient celui de l'utilisateur <i>nobody</i>. Cette option
est active par d&eacute;faut mais peut &ecirc;tre annul&eacute;e par <font face="Courier New,Courier">no_root_squash</font>
;</li>

<li>
<font face="Courier New,Courier">all_squash</font> : tous les clients acc&eacute;dant
au syst&egrave;me export&eacute; utilisent l'UID/GID de nobody ;</li>

<li>
<font face="Courier New,Courier">anonuid</font>, <font face="Courier New,Courier">anongid</font>
: l'utilisateur <i>nobody</i> dispose maintenant de l'UID/GID transmis
par ces options.</li>
</ul>
Il reste maintenant &agrave; d&eacute;marrer les d&eacute;mons <font face="Courier New,Courier">rpc.mountd</font>
et <font face="Courier New,Courier">rpc.nfs</font> pour avoir un serveur
NFS en place. On v&eacute;rifie que tout tourne correctement toujours avec
la commande <font face="Courier New,Courier">rpcinfo</font>. On peut &eacute;galement
initialiser les serveurs pour les protocoles <b>nsm</b> et <b>nlm</b> (respectivement
<font face="Courier New,Courier">rpc.statd</font>
et <font face="Courier New,Courier">rpc.lockd</font>). Ils ne sont pas
indispensables au fonctionnement d'un serveur NFS ... mais fortement conseill&eacute;s
au cas o&ugrave; une machine tomberait en panne, rebooterait intempestivement,
etc...
<p>Lorsqu'on modifie le fichier de configuration <font face="Courier New,Courier">/etc/exports</font>,
il faut signaler aux d&eacute;mons concern&eacute;s que des changements
se sont produits. La commande <font face="Courier New,Courier">exportfs</font>
transmet ces informations aux serveurs. L'option <font face="Courier New,Courier">-r</font>
synchronise le fichier <font face="Courier New,Courier">/etc/mtab<a NAME="foot2" href="#foot2"></a></font><sup><a href="#foot2" NAME="foot2">2</a></sup>&nbsp;
avec le fichier <font face="Courier New,Courier">/etc/exports</font>. L'option
<font face="Courier New,Courier">-v</font>
permet de conna&icirc;tre les syst&egrave;mes de fichiers export&eacute;s
avec leurs options.
<p>Une fois que tout est en place, certains fichiers contiennent des informations
importantes :
<ul>
<li>
<font face="Courier New,Courier">/var/lib/nfs/rmtab</font> : chaque ligne
contient le nom d'un client et le syst&egrave;me de fichiers qu'il importe
de ce serveur ;</li>

<li>
<font face="Courier New,Courier">/var/lib/nfs/etab</font> : le fichier
<font face="Courier New,Courier">/etc/exports</font>
ne contient qu'une liste de voeux. Il est cr&eacute;e par <font face="Courier New,Courier">exportfs</font>
qui y retranscrit sur chaque ligne toutes les informations li&eacute;es
&agrave; l'exportation vers un unique client (et donc &eacute;galement
les options par d&eacute;faut). C'est le fichier de r&eacute;f&eacute;rence
dont se sert <font face="Courier New,Courier">rpc.mountd</font> lors de
son initialisation ;</li>

<li>
<font face="Courier New,Courier">/proc/fs/nfs/exports</font> fournit la
liste des clients reconnus par le noyau ;</li>

<li>
<font face="Courier New,Courier">/var/lib/nfs/xtab</font> : il sert &agrave;
la m&ecirc;me chose que le pr&eacute;c&eacute;dent. Plus pr&eacute;cis&eacute;ment,
alors que <font face="Courier New,Courier">etab</font> contient indiff&eacute;remment
des noms de clients et des groupes de machines (via les wildcards ou les
netgroups), ce fichier ne contient que des noms de machines explicites.</li>
</ul>
Quand un client souhaite acc&eacute;der &agrave; un syst&egrave;me de fichiers,
il commence par le demander &agrave; <font face="Courier New,Courier">mountd</font>.
Celui-ci recherche alors dans <font face="Courier New,Courier">etab</font>
si la requ&ecirc;te est accessible. Il v&eacute;rifie &eacute;galement
aupr&egrave;s du noyau que le client a l&eacute;gitimement le droit de
pr&eacute;senter cette requ&ecirc;te (contr&ocirc;le des <font face="Courier New,Courier">hosts</font>.{<font face="Courier New,Courier">allow</font>,
<font face="Courier New,Courier">deny</font>},
r&egrave;gles de pare-feu, ...). Le noyau emploie <font face="Courier New,Courier">exportfs</font>
pour cette v&eacute;rification, ce qui lui permet en m&ecirc;me temps de
mettre &agrave; jour le fichier <font face="Courier New,Courier">/var/lib/nfs/etab</font>.
Si, dans ce fichier,&nbsp; le syst&egrave;me export&eacute; est destin&eacute;
&agrave; un groupe auquel appartient le client, <font face="Courier New,Courier">mountd</font>
restreint alors la requ&ecirc;te au client. et en informe le noyau qui
met &agrave; jour
<font face="Courier New,Courier">xtab</font> avec ce
nouvel h&ocirc;te.
<A NAME="lfindex1">&nbsp;</A>
<H2>
Le client</H2>

Rien &agrave; faire ... en g&eacute;n&eacute;ral. L'acc&egrave;s &agrave;
un syst&egrave;me de fichiers export&eacute; par NFS est directement g&eacute;r&eacute;
&agrave; partir du noyau qui sait comment acc&eacute;der &agrave; des donn&eacute;es
sur un support physique via les syst&egrave;mes de fichiers ad&eacute;quates.
Pour conna&icirc;tre ceux support&eacute;s par votre noyau, le r&eacute;pertoire
<font face="Courier New,Courier">/lib/modules/&lt;version
du noyau>/fs</font> contient tous les modules li&eacute;s aux syst&egrave;mes
de fichiers. Le fichier <font face="Courier New,Courier">/proc/filesystems</font>
liste tous ceux support&eacute;s directement dans le noyau. Il faut donc
uniquement pr&eacute;ciser au noyau qu'on souhaite acc&eacute;der &agrave;
un syst&egrave;me export&eacute; par NFS.
<p>La commande <font face="Courier New,Courier">mount</font> permet d'acc&eacute;der
&agrave; diff&eacute;rents syst&egrave;mes de fichiers. Elle signale au
noyau qu'un nouveau syst&egrave;me de fichier est utilisable en indiquant
son type, son <i>device</i> et un point de montage. L'option <font face="Courier New,Courier">-t</font>&nbsp;
permet de pr&eacute;ciser le syst&egrave;me auquel un client veut acc&eacute;der.
Seuls les modules &eacute;voqu&eacute;s ci-dessus sont reconnus par le
noyau. Pour un syst&egrave;me NFS, l'argument s'&eacute;crit donc : <font face="Courier New,Courier">-t
nfs</font>.
<p><font face="Courier New,Courier">mount</font> dispose d'options propres
&agrave; NFS. Par exemple, les options <font face="Courier New,Courier">rsize</font>
et <font face="Courier New,Courier">wsize</font> permettent de modifier
les tailles des blocs en lecture et en &eacute;criture. On peut combiner
les options sp&eacute;cifiques &agrave; NFS avec des options plus g&eacute;n&eacute;rales,
comme <font face="Courier New,Courier">intr</font>,
<font face="Courier New,Courier">noexec</font>
ou <font face="Courier New,Courier">nosuid</font>. La page man de <font face="Courier New,Courier">mount</font>
contient toutes ces options.
<p>Supposons que la machine <i>charly</i> dispose d'un serveur NFS et exporte
son r&eacute;pertoire <font face="Courier New,Courier">/usr/local</font>.
Nous souhaitons y acc&eacute;der de la machine <i>jill</i>, il suffit alors
de monter le r&eacute;pertoire export&eacute; de <i>charly</i> sur <i>jill</i>
:
<blockquote><font face="Courier New,Courier">root@jill >> mount -t nfs
-o nosuid,hard,intr charly:/usr/local /usr/local</font></blockquote>
La commande indique donc que nous allons monter un syst&egrave;me de fichiers
de type NFS (<font face="Courier New,Courier">-t nfs</font>), avec les
options <font face="Courier New,Courier">nosuid</font>, <font face="Courier New,Courier">hard</font>
et <font face="Courier New,Courier">intr</font>. Les 2 derniers arguments
sont les plus int&eacute;ressants. Le premier sp&eacute;cifie le <i>device</i>
qui doit &ecirc;tre mont&eacute;. Dans le cas de NFS, la syntaxe diff&egrave;re
de l'usage habituel de <font face="Courier New,Courier">mount</font>. En
effet, on commence par stipuler un serveur, puis un r&eacute;pertoire de
ce serveur (Attention : un r&eacute;pertoire n'est normalement pas un device).
Le dernier argument indique l'endroit auquel correspond ce syst&egrave;me
de fichiers sur le client. On vient donc de partager le <font face="Courier New,Courier">/usr/local</font>
de <i>charly</i> avec <i>jill</i>, ce qui &eacute;vite d'avoir &agrave;
installer plusieurs fois certains programmes. Pour que ceci soit &eacute;tabli
de mani&egrave;re permanente, on peut &eacute;galement le sp&eacute;cifier
dans le fichier /<font face="Courier New,Courier">etc/fstab</font> de <i>jill</i>
qui contient tous les devices &agrave; installer au d&eacute;marrage. Ainsi,
de mani&egrave;re &eacute;quivalente, le fichier <font face="Courier New,Courier">/etc/fstab</font>
contiendrait la ligne :
<br>&nbsp;
<blockquote><font face="Courier New,Courier">#&nbsp;&nbsp;&nbsp; device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
point de&nbsp;&nbsp;&nbsp;&nbsp; syst&egrave;me de&nbsp;&nbsp;&nbsp; options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dump&nbsp; fsckorder</font>
<br><font face="Courier New,Courier">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
montage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fichiers</font>
<br><font face="Courier New,Courier">charly:/usr/local&nbsp;&nbsp;&nbsp;
/usr/local&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
nosuid,hard,intr&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</font></blockquote>

<A NAME="lfindex2">&nbsp;</A>
<H2>
Les pr&eacute;cautions</H2>

Un probl&egrave;me fondamental de NFS vient du fait qu'il existe une relation
de confiance, par d&eacute;faut, entre un client et un serveur NFS. Dans
ce cas, si le compte <i>root</i> du serveur est compromis, celui du client
le sera &eacute;galement. Le NFS-HOWTO d&eacute;crit un ensemble de mesures
&eacute;l&eacute;mentaires n&eacute;cessaires &agrave; prendre.
<p>Un client ne peut croire aveugl&eacute;ment un serveur, il faut donc
pr&eacute;ciser des options contraignantes lors de l'utilisation de la
commande <font face="Courier New,Courier">mount</font>. Nous avons d&eacute;j&agrave;
vu la premi&egrave;re : <font face="Courier New,Courier">nosuid</font>.
Elle annule l'effet des bits SUID et SGID. Ainsi, une personne <i>root</i>
sur le serveur doit se connecter d'abord en tant qu'utilisateur quelconque
sur le client pour ensuite seulement redevenir <i>root</i>. Une autre option,
plus contraignante, est <font face="Courier New,Courier">noexec</font>.
Elle interdit l'ex&eacute;cution des programmes contenus sur le syst&egrave;me
export&eacute;. Cette option n'est utilisable que pour les syst&egrave;mes
contenant uniquement des donn&eacute;es.
<p>Du c&ocirc;t&eacute; du serveur NFS, on peut &eacute;galement sp&eacute;cifier
qu'on ne fait pas confiance au compte <i>root</i> des clients. On doit
alors pr&eacute;ciser dans le <font face="Courier New,Courier">/etc/exports</font>
l'option <font face="Courier New,Courier">root_squash</font>. Ainsi, si
un utilisateur avec l'UID 0 (celui de <i>root</i>) sur le client acc&egrave;de
au syst&egrave;me export&eacute; par le serveur,&nbsp; il se voit attribuer
l'UID de <i>nobody</i> pour effectuer les requ&ecirc;tes sur les fichiers.
Cette option est active par d&eacute;faut sous Linux mais s'annule par
l'option <font face="Courier New,Courier">no_root_squash</font>. Notons
qu'on peut pr&eacute;ciser une plage d'UID pour lesquels l'option s'applique.
Rappelons &eacute;galement que les options <font face="Courier New,Courier">anonuid</font>
et <font face="Courier New,Courier">anongid</font> permettent de changer
l'UID/GID de l'utilisateur <i>nobody</i> en celui souhait&eacute;.
<p>Certaines mesures sont d'un ordre plus g&eacute;n&eacute;ral et concernent
plut&ocirc;t le <font face="Courier New,Courier">portmapper</font>. Par
exemple, on interdit l'acc&egrave;s &agrave; ce service &agrave; toutes
les machines par la ligne suivante dans le fichier
<font face="Courier New,Courier">/etc/hosts.deny</font>
:
<br>&nbsp;
<blockquote><font face="Courier New,Courier"># hosts.deny : interdiction
absolue pour tout le monde de</font>
<br><font face="Courier New,Courier">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
se servir du portmap</font>
<br><font face="Courier New,Courier">portmap: ALL</font></blockquote>

<p><br>Ensuite, dans le <font face="Courier New,Courier">/etc/hosts.allow</font>,
on contrebalance cette interdiction drastique en autorisant l'acc&egrave;s
&agrave; toutes les machines souhait&eacute;es.
<p>Des r&egrave;gles de firewalling ad&eacute;quates contribuent &eacute;galement
&agrave; une meilleure protection. Il faut prendre garde aux ports employ&eacute;s
par les divers services ainsi qu'aux protocoles utilis&eacute;s :
<br>&nbsp;
<center><table BORDER WIDTH="60%" NOSAVE >
<tr>
<td><b>Service RPC</b></td>

<td><b>Port</b></td>

<td><b>Protocoles</b></td>
</tr>

<tr>
<td>portmap</td>

<td>111</td>

<td>upd / tcp</td>
</tr>

<tr>
<td>nfsd</td>

<td>2049</td>

<td>udp</td>
</tr>

<tr>
<td>mountd</td>

<td>variable</td>

<td>udp / tcp</td>
</tr>
</table></center>

<h1>
Application : NIS, NFS et autofs</h1>
Pour illustrer notre propos, reprenons le r&eacute;seau mis en place lors
du pr&eacute;c&eacute;dent article sur NIS. Le serveur principal s'appelle
"<i>charly</i>", les 3 autres machines du sous-r&eacute;seau sont "<i>sabrina</i>",
"<i>jill</i>" et "<i>kelly</i>". Nous avons configur&eacute;
<i>charly</i>
comme serveur NIS du domaine <i>bosley</i>. Les autres machines sont uniquement
des clients NIS de <i>charly</i> (en pratique, nous devrions avoir un serveur
NIS esclave, mais l&agrave; n'est pas le propos aujourd'hui).
<p>Voyons d'abord la configuration sur notre serveur <i>charly</i>. Nous
commen&ccedil;ons par d&eacute;finir quelques maps NIS qui contiendront
toutes les informations dont nous avons besoin.
<p>Le fichier <font face="Courier New,Courier">/etc/netgroup</font> contient
des groupes de machines ayant des caract&eacute;ristiques communes (une
m&ecirc;me architecture par exemple). Il s'agit d'une map de NIS tr&egrave;s
pratique &agrave; utiliser pour NFS. Il suffit juste de rassembler dans
un groupe toutes les machines pouvant acc&eacute;der &agrave; un m&ecirc;me
syst&egrave;me de fichiers export&eacute;. Ce groupe sert ensuite dans
le /<font face="Courier New,Courier">etc/exports</font> plut&ocirc;t que
de pr&eacute;ciser tous les client un &agrave; un :
<blockquote><font face="Courier New,Courier"># /etc/netgroup</font>
<br><font face="Courier New,Courier">charlysangels (sabrina,,) (jill,,)
(kelly)</font></blockquote>
&nbsp;Concernant NFS, nous savons que la configuration est assez restreinte.
Le fichier <font face="Courier New,Courier">/etc/exports</font> de <i>charly</i>
contient :
<blockquote><font face="Courier New,Courier"># /etc/exports</font>
<br><font face="Courier New,Courier">/usr/local&nbsp;&nbsp;&nbsp; @charlysangels(ro)</font></blockquote>
Par ailleurs, nous d&eacute;cidons d'utiliser l'<font face="Courier New,Courier">automount</font>
pour acc&eacute;der au r&eacute;pertoire <font face="Courier New,Courier">/usr/local</font>
ainsi export&eacute;. En effet, plut&ocirc;t que de monter directement
ce syst&egrave;me au boot, ce sera fait automatiquement si un utilisateur
acc&egrave;de &agrave; un fichier de ce r&eacute;pertoire.&nbsp; Nous cr&eacute;ons
le fichier <font face="Courier New,Courier">/etc/auto.map</font> pour d&eacute;finir
ce qui sera accessible &agrave; la fois par <font face="Courier New,Courier">automount</font>
et par NIS :
<blockquote><font face="Courier New,Courier"># /etc/auto.map</font>
<br><font face="Courier New,Courier">charly&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
charly:/usr/local</font></blockquote>
Comme nous voulons que ces informations (les nouveaux <font face="Courier New,Courier">auto.map</font>
et <font face="Courier New,Courier">netgroup</font>) soient int&eacute;gr&eacute;es
dans la base de donn&eacute;es de NIS, nous devons modifier le <font face="Courier New,Courier">Makefile</font>
avant de la reconstruire. En effet, il faut s'assurer que <font face="Courier New,Courier">netgroup</font>
sera bien ajout&eacute; &agrave; la base. Concernant <font face="Courier New,Courier">auto.map</font>,
ce fichier n'est pas d&eacute;fini par d&eacute;faut, il faut signaler
son existence. Il suffit pour cela d'ajouter une nouvelle entr&eacute;e
dans le <font face="Courier New,Courier">Makefile</font>, ainsi que la
r&egrave;gle associ&eacute;e (en prenant mod&egrave;le sur ce qui existe
d&eacute;j&agrave;) :
<blockquote>#A ajouter dans le Makefile des Yellow Pages</blockquote>

<blockquote>AUTO_MAP&nbsp;&nbsp;&nbsp; = $(YPSRCDIR)/auto.map
<br># ...
<br>#...
<br><font face="Courier New,Courier">auto.map: $(AUTO_MAP) $(YPDIR)/Makefile</font></blockquote>

<blockquote><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@echo "Updating $@..."</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-@sed -e "/^#/d" -e s/#.*$$// $(AUTO_MAP) | $(DBLOAD) \</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-i $(AUTO_MAP) -o $(YPMAPDIR)/$@ - $@</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@</font></blockquote>
Cette r&egrave;gle de production se contente d'enlever les commentaires,
d'ajouter une nouvelle entr&eacute;e &agrave; la base de donn&eacute;es
puis de transmettre l'information &agrave; tous les serveurs.
<p>Il ne reste plus qu'&agrave; ex&eacute;cuter un <font face="Courier New,Courier">make</font>
dans le r&eacute;pertoire <font face="Courier New,Courier">/var/yp</font>.
<p>Au tour de nos trois clients <i>sabrina</i>,
<i>jill
</i>et
<i>kelly</i>.
L&agrave;, il n'y a presque rien &agrave; faire :) Nous devons pr&eacute;ciser
&agrave;
<font face="Courier New,Courier">autofs</font> qu'il doit g&eacute;rer
une nouvelle map qui lui sera fournie via les YPs. Dans chacun des <font face="Courier New,Courier">/etc/auto.master</font>
des clients, la ligne suivante permet de signaler la pr&eacute;sence d'une
map auto.map qui sera obtenue via les services des YPs.
<blockquote><font face="Courier New,Courier">#/etc/auto.master</font>
<br><font face="Courier New,Courier">/usr/local&nbsp;&nbsp;&nbsp; yp auto.map&nbsp;&nbsp;&nbsp;
--intr,nosuid,nodev</font></blockquote>
puis il faut red&eacute;marrer <font face="Courier New,Courier">autofs</font>
pour que cette nouvelle map soit prise en compte.
<p>Ainsi, il existe un unique r&eacute;pertoire <font face="Courier New,Courier">/usr/local</font>
physiquement sur <i>charly</i>. Du coup, pour installer des programmes
tr&egrave;s sp&eacute;cifiques, en les disposant sur <i>charly</i>, toutes
nos machines pourront &eacute;galement en profiter.
<p>Cet exemple peut aller beaucoup plus loin en n'installant qu'un seul
syst&egrave;me <font face="Courier New,Courier">/usr</font>, <font face="Courier New,Courier">/usr/doc</font>
ou d'autres, mais la pratique montre que ce n'est pas tr&egrave;s raisonnable.
Les installations n&eacute;cessitent souvent de modifier des fichiers dans
le r&eacute;pertoire <font face="Courier New,Courier">/etc</font> ou autres.
Il faudrait donc aller faire des retouches sur toutes les machines pour
mettre &agrave; jour les fichiers non-export&eacute;s, ce qui devient vite
tr&egrave;s fastidueux.
<br>&nbsp;
<A NAME="lfindex3">&nbsp;</A>
<H3>
R&eacute;f&eacute;rences</H3>

<u>Syst&egrave;mes de Fichiers</u>
<ul>
<li>
Filesystems-HOWTO :&nbsp; <a href="http://www.linuxdoc.org">www.linuxdoc.org</a></li>

<li>
Design and Implementation of the Second Extended Filesystem : un excellent
article de R&eacute;my Card, Th&eacute;odore Ts'o et Stephen Tweedie, les
cr&eacute;ateurs du ext2fs : <a href="http://khg.redhat.com/HyperNews/get/fs/ext2intro.html">http://khg.redhat.com/HyperNews/get/fs/ext2intro.html</a></li>
</ul>

<p><br><u>NFS</u>
<ul>
<li>
NFS-HOWTO :&nbsp; <a href="http://www.linuxdoc.org">www.linuxdoc.org</a></li>

<li>
The Linux kernel NFSD implementation : pour aller (beaucoup) plus loin,
une bonne et compl&egrave;te description de la programmation et du fonctionnement
de NFS pour Linux : <a href="http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html">http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html</a></li>
</ul>

<p><br>
<hr>
<h4>
Footnotes</h4>

<dl>
<dt>
<a NAME="foot1"></a>... inode<a NAME="foot1" href="#foot1"></a><sup><a href="#foot1" NAME="foot1">1</a></sup></dt>

<dd>
Il s'agit d'un descripteur (une suite de bits) contenant, entre autre,
les droits d'acc&egrave;s au fichier, son propri&eacute;taire, les adresses
des blocs physiques contenant les donn&eacute;es, etc ...</dd>
</dl>

<dl>
<dt>
<a NAME="foot2"></a>... /etc/mtab<a NAME="foot2" href="#foot2"></a><sup><a href="#foot2" NAME="foot2">2</a></sup></dt>

<dd>
Ce fichier contient la liste de tous les syst&egrave;mes de fichiers qui
sont mont&eacute;s par le noyau, que ce soit "en dur" (par un mount, comme
c'est le cas avec les syst&egrave;mes d&eacute;crits dans la fstab), ou
par des moyens moins permanents (via <font face="Courier New,Courier">autofs</font>/<font face="Courier New,Courier">automount</font>).</dd>
</dl>

<hr>



<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Discussion sur cet article</h2>
Chaque article poss&egrave;de sa page de discussion. Vous pouvez y soumettre un commentaire ou lire ceux d&acute;autres lecteurs:
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=164&lang=fr"><b>&nbsp;page de discussion&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="95%">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA">
<A HREF="../../common/lfteam.html">Site Web maintenu par l&acute;&eacute;quipe d&acute;&eacute;dition LinuxFocus</A>
<BR><FONT COLOR="#FFFFFF">&copy; Fr&eacute;d&eacute;ric Raynal, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
<BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=fr&article=article164.shtml" target="_TOP">Cliquez ici pour signaler une erreur ou envoyer un commentaire à Linuxfocus</A><BR></TD>
<!-- OLD FORMAT, NO TRANSLATION INFO -->
</TR></TABLE></CENTER>
<p><font size=1>2001-03-18, generated by lfparser version 2.8</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>