<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Les liens symboliques et la limitation des liens en dur</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Manuel de référence"><link rel="up" href="ext2fs.html" title="Chapitre 9. Le système de fichiers Linux"><link rel="previous" href="ext2fs-special.html" title="Les fichiers spéciaux : fichiers mode bloc et caractère"><link rel="next" href="ext2fs-attr.html" title="Les attributs des fichiers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Les liens symboliques et la limitation des liens en dur</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext2fs-special.html">Précédent</a> </td><th width="60%" align="center">Chapitre 9. Le système de fichiers Linux</th><td width="20%" align="right"> <a accesskey="n" href="ext2fs-attr.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ext2fs-ln-s"></a>Les liens symboliques et la limitation des liens <tt class="literal">en dur</tt></h2></div></div><div></div></div><p><a name="BId-ext2fs-pa52"></a>Il nous faut nous confronter à un malentendu très courant, même chez les utilisateurs d'<span class="application">UNIX</span>. Celui-ci est, essentiellement, dû au fait qu'on attache la notion de liens (d'ailleurs faussement appelés « <span class="quote">liens en dur</span> ») aux fichiers ordinaires uniquement. Nous avons vu que ce n'est aucunement le cas puisque même les liens symboliques sont « <span class="quote">liés</span> ». Il nous faudra tout d'abord clarifier ce que sont ces liens symboliques<sup>[<a name="id2556158" href="#ftn.id2556158">26</a>]</sup>. </p><p><a name="BId-ext2fs-pa53"></a><a class="indexterm" name="BId-ext2fs-it21"></a>Les liens symboliques sont des fichiers d'un type particulier dont le seul contenu est une chaîne de caractères arbitraire, qui peut ou non pointer sur un vrai nom de fichier. Quand vous mentionnez un lien symbolique sur la ligne de commande ou dans un programme, vous accédez en fait au fichier sur lequel pointe le lien, s'il existe. Par exemple :</p><a name="BId-ext2fs-pl10"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"> $ echo Bonjour >monfichier $ ln -s monfichier monlien $ ls -il total 4 169 -rw-rw-r-- 1 reine reine 6 déc 10 21:30 monfichier 416 lrwxrwxrwx 1 reine reine 6 déc 10 21:30 monlien -> monfichier $ cat monfichier Bonjour $ cat monlien Bonjour</pre></td></tr></table><p><a name="BId-ext2fs-pa54"></a> On constatera, d'une part, que le type du fichier <tt class="filename">monlien</tt> est <tt class="literal">'l'</tt> (les droits d'accès à un lien symbolique n'ont aucune signification : ils seront toujours <tt class="literal">rwxrwxrwx</tt>) ; et d'autre part, qu'il s'agit d'un fichier distinct de <tt class="filename">monfichier</tt>, parce que son numéro d'i-nœud est différent. Mais il se réfère au fichier <tt class="filename">monfichier</tt> de façon symbolique. Ainsi, lorsque vous tapez <span><b class="command">cat monlien</b></span>, vous affichez en fait le contenu du fichier <tt class="filename">monfichier</tt>. Pour démontrer qu'un lien symbolique contient une chaîne arbitraire, nous pouvons faire ceci : </p><a name="BId-ext2fs-pl11"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting"> $ ln -s "Je n'existe pas" unautrelien $ ls -il unautrelien 747 lrwxrwxrwx 1 reine reine 15 déc 15 18:01 unautrelien -> Je n'existe pas $ cat unautrelien cat: unautrelien: Aucun fichier ou répertoire de ce type $</pre></td></tr></table><p><a name="BId-ext2fs-pa55"></a>Si les liens symboliques existent, c'est parce qu'ils peuvent se libérer de certaines limites imposées aux liens normaux (« <span class="quote">en dur</span> ») : <a class="indexterm" name="BId-ext2fs-it22"></a></p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-ext2fs-pa56"></a> deux fichiers qui existent sur des systèmes de fichiers distincts ne peuvent être liés ; et ceci pour une raison bien simple : le compteur de liens est stocké dans l'i-nœud lui-même, et les i-nœuds ne peuvent être partagés par plusieurs systèmes de fichiers. Les liens symboliques, quant à eux, le permettent ; </p></li><li><p><a name="BId-ext2fs-pa57"></a>deux répertoires ne peuvent être liés pour éviter de créer des boucles dans le système de fichiers. Cependant, on pourra faire pointer un lien symbolique sur un répertoire et l'utiliser comme s'il s'agissait vraiment d'un répertoire.</p></li></ul></div><p><a name="BId-ext2fs-pa58"></a>Les liens symboliques sont souvent d'une très grande utilité dans de nombreuses situations. Cependant, il est fréquent de les voir utiliser pour lier des fichiers qui pourraient l'être par un lien normal. Pourtant, l'avantage de ce dernier est qu'il empêche la perte du fichier lorsque l'« <span class="quote">original</span> » est effacé. </p><p><a name="BId-ext2fs-pa59"></a> Et puis, pour finir, vous aurez remarqué que la taille d'un lien symbolique correspond tout simplement à... la taille de la chaîne de caractères. </p><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2556158" href="#id2556158">26</a>] </sup>En anglais, les liens symboliques sont aussi appelés « <span class="quote">soft links</span> », tandis que les liens normaux sont appelés (toujours faussement) « <span class="quote">hard links</span> », ce qui donne l'expression française (toujours aussi fausse) de liens « <span class="quote">en dur</span> ».</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext2fs-special.html">Précédent</a> </td><td width="20%" align="center"><a accesskey="u" href="ext2fs.html">Niveau supérieur</a></td><td width="40%" align="right"> <a accesskey="n" href="ext2fs-attr.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">Les fichiers spéciaux : fichiers mode bloc et caractère </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> Les attributs des fichiers</td></tr></table></div></body></html>