Formation PUB110 : Linux, 2018 Le système de fichiers

3.3 Les liens symboliques et absolus


Sous Windows, il est possible de créer un raccourci afin d'accéder à un fichier qui est dans un répertoire via un autre répertoire. Sous Linux, au shell, cette technique existe depuis longtemps : ce sont les liens. Notez que les « lanceurs » que vous placez sur votre bureau ou sur le panel ne sont pas des liens.

Il existe deux types de liens : les liens symboliques et les liens statiques.

Lien symbolique (logique, soft link)

Les liens symboliques sont comparables aux raccourcis Windows. Quand on crée un lien symbolique, on a l'impression d'avoir deux fichiers (l'original et le lien) qui sont identiques. En fait, les deux fichiers sont un seul et même fichier auquel on accède via l'un ou l'autre nom. Le lien n'est rien d'autre qu'un pointeur vers le fichier original. La modification à l'un des fichiers est automatiquement reflétée dans l'autre.

Pour créer un lien symbolique :

Syntaxe Linux

ln –s fichier nom_lien

ou

Syntaxe Linux

cp –s fichier nom_lien

Ex :

Linux

ln –s /etc/passwd ~/passwd

Cette commande crée un lien vers le fichier /etc/passwd directement dans notre répertoire personnel. Si on a les droits de le faire, on peut modifier le fichier /etc/passwd directement à partir du lien. Et si le fichier /etc/passwd est modifié d'une façon ou d'une autre, les changements sont reflétés dans le fichier ~/passwd.

Lorsque vous listerez le contenu d'un répertoire avec détails, vous verrez ceci :

Résultat à l'écran

lrwxrwxrwx 1 etudiant etudiant 11 mai 8 14:21 passwd -> /etc/passwd

Remarquez le premier caractère de la ligne : la lettre l. Ceci indique qu'il s'agit d'un lien symbolique. Remarquez également qu'après le nom du lien, on indique sur quel fichier le lien est fait. Une troisième remarque : tout le monde a tous les droits sur le lien mais les droits véritables sont ceux du fichier sur lequel le lien est fait.

Si le fichier original est effacé, le lien demeurera mais sera inutile. Si on tente de l'afficher, on verra le message :

Résultat à l'écran

Aucun fichier ou répertoire de ce type

Lien symbolique vers un répertoire

Il est possible de créer un lien symbolique vers un répertoire. Il suffit de spécifier un nom de répertoire au lieu du nom d'un fichier.

Ex :

Linux

ln –s /var/log ~/depart

Avec ce lien, vous pouvez lister le contenu du répertoire /var/log comme suit :

Linux

ls depart

Lien absolu (statique, direct, matériel, physique, hard link)

Le lien absolu ne correspond pas à la notion de raccourci sous Windows. Quand on crée un lien absolu, on crée aussi deux façons d'accéder à des données. Cependant, on peut par la suite supprimer le lien ou le fichier original et le fichier restant demeure complètement accessible. En fait, c'est comme si le même fichier comportait deux noms.

Quand on crée un lien absolu, son type de fichier correspond à un fichier ordinaire (représenté par un tiret quand on fait ls –l). Cependant, la colonne précédent le nom du propriétaire indique combien de fichiers différents permettent d'accéder directement à l'information de ce fichier. Autrement dit, cette colonne indique combien de liens absolus sont fait, en comptant le fichier original.

Si on supprime un fichier alors qu'un lien absolu existe sur ce fichier, le fichier demeure entier.

Simplement, le nombre de liens est diminué. Le fichier ne sera jamais effacé tant et aussi longtemps qu'il reste au moins un lien dessus.

On crée un lien absolu comme suit :

Syntaxe Linux

ln fichier nom_lien

Ex :

Linux

ls –l

 

résultat : rw-r--rwx 1 etudiant etudiant 11 mai 8 14 :21 essai

 

ln essai lien1
ls –l

 

résultat :-rw-r--rwx 2 etudiant etudiant 11 mai 8 14 :21 essai
          -rw-r--rwx 2 etudiant etudiant 11 mai 8 14 :21 lien1


rm essai
ls –l

 

résultat :-rw-r--rwx 1 etudiant etudiant 11 mai 8 14 :21 lien1

Il n'est pas possible de faire un lien absolu sur un répertoire.

Vérifier où se trouve l'autre nom correspondant au fichier

Lorsqu'on découvre qu'un fichier comporte deux noms (affiche le chiffre 2 dans la colonne à côté des droits), on sait que la destruction de ce fichier ne détruira pas les données. Comment faire pour retrouver l'autre nom du fichier afin de le détruire définitivement? Il faut trouver l'adresse mémoire où le fichier est stocké. En termes techniques, on parlera du numéro d'inode.

La commande ls peut vous donner ce numéro à l'aide de l'option -i :

Linux

ls -i

Vous obtiendrez simplement un chiffre, le numéro d'inode.

La commande find vous permettra ensuite de retrouver tous les noms de fichiers qui correspondent à ce numéro d'inode, grâce à l'option -inum :

Syntaxe Linux

find / -inum no_inode

Ex :

Linux

ls -l

 

résultat :-rw-r--r-- 2 etudiant etudiant 8192 jan 16 15:25 horaire.sxw (on voit qu'il y a deux noms pour ce fichier)


ls -i

 

résultat :260611


find -inum 260611

 

résultat : ./Download/LienAbsolu
           ./horaire.sxw
           (on voit que l'autre nom est situé dans le répertoire Download)

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre