Qu'est-ce qu'un lien symbolique sous Linux et pourquoi est-il utilisé ?
Un lien symbolique, également appelé lien symbolique ou lien symbolique , est un type de fichier spécial qui pointe simplement vers un autre fichier ou répertoire, tout comme les raccourcis dans Windows. Créer un lien symbolique revient à créer un alias vers un fichier réel.
Si vous essayez d'accéder au lien symbolique, vous accédez en fait au fichier cible vers lequel pointe le lien symbolique. Les modifications effectuées sur le contenu du fichier de lien modifient le contenu du fichier cible réel.
Si vous utilisez la commande ls avec l'option -l, voici à quoi ressemble un lien symbolique :
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Dans la plupart des distributions Linux, les liens sont affichés dans une couleur différente du reste des entrées afin que vous puissiez distinguer les liens des fichiers et répertoires normaux.
Les liens symboliques offrent un moyen pratique d'organiser et de partager des fichiers. Ils fournissent un accès rapide à des chemins de répertoire longs et déroutants. Ils sont largement utilisés dans les bibliothèques de liens sous Linux.
Maintenant que vous en savez un peu plus sur les liens symboliques, voyons comment les créer.
Comment créer un lien symbolique sous Linux
Pour créer un lien symbolique vers le fichier cible à partir du nom du lien , vous pouvez utiliser la commande ln avec l'option -s comme ceci :
ln -s target_file link_name
L'option -s est importante ici. Il détermine que le lien est un lien symbolique. Si vous ne l'utilisez pas, cela créera un lien physique. J'expliquerai la différence entre les liens symboliques et les liens physiques dans un autre article.
Ce qu'il faut garder à l'esprit à propos des liens symboliques
Les liens symboliques peuvent parfois prêter à confusion, c'est pourquoi vous devez prendre note de quelques éléments.
Les modifications apportées au lien sont reflétées dans le fichier d'origine
C'est tout le but des liens après tout. Vous accédez au fichier cible en accédant au lien. Vous pouvez apporter des modifications au fichier cible via les liens. Voyons avec exemple.
J'ai un fichier prog.py dans newdir/test_dir. Il a les attributs suivants :
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py
Maintenant, je vais créer un lien symbolique vers ce fichier dans mon répertoire actuel :
ln -s newdir/test_dir/prog.py link_prog
Voici les attributs du lien nouvellement créé :
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Remarquez le l (c'est L, pas un) en début de ligne ? Si vous connaissez les autorisations de fichiers sous Linux, vous saurez que le « l » signifie un lien et qu'il vous indique donc que ce fichier est en fait un lien. Pour vous rafraîchir la mémoire, - signifie fichier et d signifie répertoire.
Maintenant, si j'utilise ce lien pour modifier le contenu ou les attributs, la même chose se reflétera dans le fichier cible. Par exemple, j'utilise la commande touch sur le lien symbolique et vous remarquerez qu'elle modifie l'horodatage du fichier cible.
touch link_prog
ls -l newdir/test_dir/prog.py
-rw-r--r-- 1 abhishek abhishek 163 Jul 2 10:04 newdir/test_dir/prog.py
Est-il lié à un fichier ou à un répertoire ? Vous ne le savez peut-être pas !
Comment sauriez-vous si le lien pointe vers un fichier ou un répertoire ? Vous ne pouvez pas le savoir tant que vous n'avez pas suivi le chemin et accédé au fichier cible lui-même.
Vous pouvez créer des liens vers un fichier ou un répertoire inexistant
Oui, c'est tout à fait possible. C'est pourquoi vous devez être prudent lors de la création de liens symboliques sous Linux. Le fichier cible auquel vous créez un lien n'a pas besoin d'exister. Vous ne recevrez aucune erreur ou avertissement pour la création d'un lien vers un fichier/répertoire qui n'existe pas.
Vous obtiendrez une erreur uniquement lorsque vous essayez d'accéder au fichier cible, soit via le lien, soit par lui-même. La commande ls fonctionnera toujours.
ln -s non_existant_dir link_dir
less link_dir
link_dir: No such file or directory
Les liens symboliques sont créés avec la permission 777 mais cela ne veut rien dire
Avez-vous remarqué la permission du fichier sur le lien symbolique ? Les liens symboliques sont toujours créés avec la permission 777 (rwxrwxrwx). Pour un fichier normal, cela signifierait que n'importe qui peut accéder au fichier. Mais ce n'est pas le cas pour les liens.
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Si les autorisations de fichiers sur les liens étaient traitées telles quelles, n'importe quel utilisateur pourrait créer un lien symbolique vers un fichier sécurisé et y accéder librement. Ce serait un problème de sécurité majeur. Heureusement, cela n'arrive pas. Parce que l'autorisation sur les fichiers cibles compte, pas l'autorisation sur les liens.
Vous pouvez utiliser la commande chmod pour modifier l'autorisation sur le lien, mais cela modifiera l'autorisation du fichier lié, pas le lien lui-même.
Vous pouvez créer un lien vers un lien d'un lien, c'est-à-dire un lien symbolique chaîné
Vous pouvez faire un lien symbolique qui pointe vers un autre lien et ainsi de suite. C'est ce qu'on appelle un lien symbolique chaîné. Il vaut mieux les éviter car cela crée plus de confusion.
Eh bien c'est ça. Je suppose que vous avez maintenant une meilleure connaissance des liens symboliques et que vous savez comment créer des liens symboliques sous Linux. Vous pouvez en savoir plus sur la commande symlinks qui peut vous aider à trouver des liens symboliques brisés sous Linux et à les gérer facilement.
Si vous avez des questions ou des suggestions, veuillez laisser un commentaire ci-dessous.