
I. Présentation
Dans ce tutoriel, nous allons voir comment et pourquoi créer un lien symbolique sous Linux, que ce soit entre deux fichiers ou deux répertoires.
Un lien symbolique (symlink) peut être vu ici comme un raccourci pointant vers un dossier ou un fichier sur le système. Ce dernier contient juste une référence vers le fichier cible et non les données du fichier en elles-mêmes, contrairement à un lien physique (hard link) qui est plutôt une copie conforme (noms de fichiers différents, mais même inode ou index) de son fichier cible.
Voici quelques avantages liés à l’utilisation des liens symboliques dans le cadre de l’administration d’un système sous Linux :
La centralisation : l’utilisation de liens symboliques permet de centraliser les fichiers de configuration des applications et du système sans les déplacer physiquement. Cela facilite l’administration et la maintenance, ce qui peut offrir un gain de temps aux administrateurs. Par exemple, un lien symbolique dans « /etc/ » peut renvoyer vers un fichier de configuration stocké ailleurs.
Le gain d’espace disque : les liens symboliques, contrairement aux liens physiques, sont des raccourcis qui pointent vers un fichier sans le copier, ce qui prend moins de place sur votre disque dur.
La compatibilité avec plusieurs systèmes de fichiers
Etc.
Version originale de l’article : 20 mars 2013
II. La syntaxe de la commande ln
Sous Linux, il est possible de créer un ou plusieurs liens vers un fichier ou vers un répertoire donné. Dans les deux cas, la syntaxe de création de liens symboliques suit la logique suivante :
ln -s /chemin/vers/fichier_cible lien_symbolique
Quelques explications s’imposent :
La commande « ln » est utilisée pour créer un lien
L’option « -s » permet de spécifier qu’il s’agit d’un lien symbolique
Le fichier ou le répertoire source est placé avant le lien dans la commande
Par ailleurs, le nom du lien doit être différent de celui de tout fichier ou dossier existant dans le répertoire de destination de ce dernier, au risque de recevoir un message indiquant que le fichier ou le dossier existe déjà.
III. Créer un lien symbolique
A. Lien symbolique vers un répertoire
On va, par exemple, créer un lien symbolique vers le dossier « meister » situé à la racine de notre système. Ce lien s’appellera « meister1 » et sera situé dans le répertoire « home » de l’utilisateur root (soit « /root »).
ln -s /meister/ meister1
Ce qui donne en image :
On peut aller vérifier que tout est correct avec la commande suivante :
ls -al
Le résultat est visible sur l’image ci-dessous. Le lien symbolique est représenté par une flèche « -> » mettant en évidence la cible. La lettre « l » en début de lien est également un indicateur.
On va ensuite créer un fichier nommé « test » dans le dossier source «/meister ». Puis, quand ce sera fait, on va se déplacer vers le dossier lien « meister1 » du répertoire « home » de l’utilisateur root afin de lister les fichiers. Ce sera l’occasion de constater qu’on a bien accès au fichier « test » précédemment créé depuis le dossier source, grâce à notre lien symbolique.
# On crée le fichier « touch » depuis le dossier-source
touch /meister/test
# On se déplace ensuite vers le dossier-lien du répertoire « home » de l’utilisateur courant (root)
cd meister1
# On liste enfin les fichiers présents dans le dossier « /root/meister1 »
ls
En image :
B. Lien symbolique vers un fichier
La démarche est exactement la même qu’avec la création d’un lien symbolique vers un répertoire.
On va d’abord créer un fichier de configuration dans le dossier « /var/lib » qu’on appellera « config1 ». On y insère ensuite le texte « ma configuration pour mon application ». On va enfin créer un lien symbolique vers notre fichier dans le répertoire « /etc » (souvent utilisé par défaut pour stocker les fichiers de configuration de nombreuses applications).
# Création du fichier « config1 » dans le dossier « /var/lib »
touch /var/lib/config1
# On écrit ensuite dans le fichier « config1 »
echo ‘ma configuration pour mon application’ > /var/lib/config1
# On crée enfin le lien symbolique vers le fichier config1
ln -s /var/lib/config1 /etc/config
En image :
On peut vérifier le lien avec la commande suivante :
ls -al /etc/config
On peut encore aller plus loin en se rassurant qu’on puisse effectivement avoir accès au contenu du fichier de configuration source à partir du lien symbolique créé.
cat /etc/config
IV. Lister les liens symboliques sur Linux
On va terminer avec une astuce pour lister les liens symboliques sur une machine Linux. On peut utiliser plusieurs commandes pour cela, notamment les commandes find et ls. L’avantage d’utiliser la commande ls couplée à grep, c’est que l’on va pouvoir lister d’autres propriétés sur les fichiers en même temps (utile pour voir la source et la destination du lien).
Voici la syntaxe à adopter :
ls -lR /chemin/dossier | grep ‘^l’
Par exemple, pour lister tous les liens symboliques situés sous “/etc/” de façon récursive :
sudo ls -lR /etc/ | grep ‘^l’
Quelques explications sur cette commande :
ls -lR : liste récursivement tous les fichiers avec détails.
grep ‘^l’ : filtre les fichiers dont la ligne commence par l (indiquant un lien symbolique).
Vous allez probablement obtenir une longue liste, sous cette forme :
lrwxrwxrwx 1 root root 41 avril 24 2024 bluetooth.service -> /usr/lib/systemd/system/bluetooth.service
lrwxrwxrwx 1 root root 44 avril 24 2024 snapd.seeded.service -> /usr/lib/systemd/system/snapd.seeded.service
lrwxrwxrwx 1 root root 44 avril 24 2024 cloud-config.service -> /usr/lib/systemd/system/cloud-config.service
V. Conclusion
À la suite de ce tutoriel, vous savez désormais créer des liens symboliques vers un fichier ou un répertoire sous Linux. Cependant, le lien ne fonctionnera plus une fois qu’on a renommé ou supprimé le fichier ou le répertoire source.
Technicien Informatique et Réseau, Gérant et Directeur Technique chez MEISTER INFORMATIK, une entreprise de services numériques basée à Yaoundé au Cameroun, spécialisée dans l’installation, la maintenance et le suivi des parcs informatiques des PME et des particuliers.