Les liens symboliques et la limitation des liens en dur

Il nous faut nous confronter à un malentendu très courant, même chez les utilisateurs d'UNIX. Celui-ci est, essentiellement, dû au fait qu'on attache la notion de liens (d'ailleurs faussement appelés «liens en dur») aux fichiers ordinaires uniquement. Nous avons vu que ce n'est aucunement le cas puisque même les liens symboliques sont «liés». Il nous faudra tout d'abord clarifier ce que sont ces liens symboliques[26].

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 :

 
$ 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

On constatera, d'une part, que le type du fichier monlien est 'l' (les droits d'accès à un lien symbolique n'ont aucune signification : ils seront toujours rwxrwxrwx) ; et d'autre part, qu'il s'agit d'un fichier distinct de monfichier, parce que son numéro d'i-nœud est différent. Mais il se réfère au fichier monfichier de façon symbolique. Ainsi, lorsque vous tapez cat monlien, vous affichez en fait le contenu du fichier monfichier. Pour démontrer qu'un lien symbolique contient une chaîne arbitraire, nous pouvons faire ceci :

 
$ 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
$

Si les liens symboliques existent, c'est parce qu'ils peuvent se libérer de certaines limites imposées aux liens normaux («en dur»)  :

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'«original» est effacé.

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.



[26] En anglais, les liens symboliques sont aussi appelés «soft links», tandis que les liens normaux sont appelés (toujours faussement) «hard links», ce qui donne l'expression française (toujours aussi fausse) de liens «en dur».