Outils pour utilisateurs

Outils du site


issue225:c_c

Ceci est une ancienne révision du document !


Symlinks, or the proper name, symbolic links, are a fundamental feature in any Linux distro. Symbolic links allow you to establish shortcuts to files and folders, even across different locations. Symbolic links act as pointers to files or directories and don’t store the actual data. They are not hard links, which directly reference file data at the inode level; symlinks reference only the file path. If the original file is moved or deleted, the symlink becomes broken. Another way to look at them: • Soft link or symbolic link: This is merely a shortcut to the original file. • Hard link: This points to the memory location of the original file. The command we will be using is ln. If you look at the ln man page, as a newbie, it will tell you almost nothing. In cases like these, I like to refer to geeksforgeeks, if I can (https://www.geeksforgeeks.org/linux-unix/ln-command-in-linux-with-examples/), as there are usually real-world examples.

Les « symlinks », ou, pour utiliser leur nom complet, les « liens symboliques », sont une fonctionnalité fondamentale de toute distribution Linux. Ils permettent de créer des raccourcis vers des fichiers et des dossiers, même situés à des emplacements différents.

Les liens symboliques agissent comme des pointeurs vers des fichiers ou des répertoires et ne stockent pas les données elles-mêmes. Ce ne sont pas des liens physiques, qui référencent directement les données du fichier au niveau de l'inode ; les liens symboliques ne référencent que le chemin d'accès au fichier. Si le fichier d'origine est déplacé ou supprimé, le lien symbolique est rompu.

Autre façon de les considérer : • Lien souple ou lien symbolique : Il s'agit simplement d'un raccourci vers le fichier d'origine. • Lien physique : Il pointe vers l'emplacement en mémoire du fichier d'origine.

La commande que nous utiliserons est « ln ». Si vous consultez la page de manuel de « ln », vous n'y trouverez probablement pas beaucoup d'informations pour un débutant. Dans ce genre de cas, j'aime me référer à geeksforgeeks, si je peux (https://www.geeksforgeeks.org/linux-unix/ln-command-in-linux-with-examples/), car il y a généralement des exemples concrets.

How it works, syntax: ln <option> source alias To create a hard link to a file, you can use the ln command without any options like this: ln source alias To create a symbolic link to a file, use the option -s with the target file name and the link name: ln -s source alias Symlinks are displayed in a different colour in Ubuntu. (this is not true for all terminal emulators). When one does a long listing, it is easier to see (see image below). The other thing I’d like to point out is that the permissions line starts with an “l”, you should know the “d” in the image is for directory. However a link to a directory is still a link and will start with an “l”. We can also symlink a symlink, I actually want you to do that now; make a symlink, then make a symlink to that symlink, and do a long listing and notice the colors in your terminal. Some may even say you are chain linking. Chain linking is generally considered bad, as, let’s say, we are 4 links deep and link 2 breaks… See where this is going?

Fonctionnement et syntaxe :

ln <option> source alias

Pour créer un lien physique vers un fichier, utilisez la commande ln sans option :

ln source alias

Pour créer un lien symbolique vers un fichier, utilisez l’option -s suivie du nom du fichier cible et du nom du lien :

ln -s source alias

Les liens symboliques sont affichés dans une couleur différente dans Ubuntu (ceci n’est pas le cas pour tous les émulateurs de terminal).

Lors de l’affichage d’une liste détaillée, la différence est plus visible (voir l’image ci-dessous).

Il est important de noter que la ligne des permissions commence par un « l ». Le « d » sur l’image indique un répertoire. Cependant, un lien vers un répertoire reste un lien et commencera également par un « l ».

Il est possible de créer un lien symbolique à l’intérieur d’un autre lien symbolique. Je vous invite à le faire : créez un lien symbolique, puis un lien symbolique vers ce lien symbolique, et affichez une liste détaillée pour observer les couleurs dans votre terminal. Certains pourraient même dire que vous êtes en train de créer des maillons en chaîne. Les maillons en chaîne sont généralement considérés comme une mauvaise pratique, car, par exemple, si nous avons quatre maillons et que le deuxième se casse… Vous voyez où je veux en venir ?

This is all fine and well, so far, but what if I delete the source file or break my symbolic link in some other way? Deleting a symlink does not affect the original file, as it is a pointer to that file, but let’s say I deleted my oops.png file, what do you think would happen? How can we fix it? We cannot just “re-direct” it? Or can we? We simply force it, with -f, like so: ln -sf deblist.txt mysymlink Then, as you can see: lrwxrwxrwx 1 edd edd 11 Sep 21 14:40 mysymlink → deblist.txt Nice! Your other option is, -i ln -si snap choons Now choons links to my snaps folder instead of my music folder. lrwxrwxrwx 1 edd edd 4 Sep 21 14:45 choons → snap Any questions? I hope you opened your terminal and tried it if you are a newbie to Ubuntu.

Jusqu'ici tout va bien, mais que se passe-t-il si je supprime le fichier source ou si je casse mon lien symbolique d'une autre manière ? Supprimer un lien symbolique n'affecte pas le fichier d'origine, puisqu'il s'agit d'un pointeur vers ce fichier. Mais imaginons que je supprime mon fichier oops.png, que pensez-vous qu'il se passerait ?

Comment résoudre ce problème ? On ne peut pas simplement le rediriger ? Ou bien si ?

Il suffit de forcer la redirection avec l'option « -f », comme ceci :

ln -sf deblist.txt mysymlink

Vous verrez alors :

lrwxrwxrwx 1 edd edd 11 Sep 21 14:40 mysymlink → deblist.txt

Super ! Autre option : « -i »

ln -si snap choons

Désormais, « choons » pointe vers mon dossier « snaps » au lieu de mon dossier « music ».

lrwxrwxrwx 1 edd edd 4 21 sept. 14:45 choons → snap

Des questions ? J’espère que vous avez ouvert votre terminal et essayé, surtout si vous débutez sous Ubuntu.

Let’s move along. There is also an unlink command, but honestly, I have never seen the need. In all my years of using Linux, I have never needed it. If I want a link gone, I delete it, as rm is much quicker to type :) Deleting the symlink does not affect the source file (Target). While the link itself is of no consequence, when I open the link and edit its contents, the original file changes. Though this seems like common sense, remember common sense is not always common. Remember that I told you to look at the permissions? Other than the “l”, what did you notice? Go ahead and look again if unsure, I’ll wait… The eagle-eyed among you may have noticed that the permissions the symlink always gets created with is 777 (rwxrwxrwx). Usually 777 is a bad thing. However, that does not affect the permissions of the target file or folder, they remain the same. When you click the link, it simply links you to the source file (target), and its permissions, meaning that if you had only read permissions on the file, even if on the symlink, you have write and execute permissions, you will still only have read permissions on the source file (target). You can test it out by trying to change the permissions of the symlink and it will not affect your permissions on the source. Go ahead and try it now. You still remember how chmod works, right? Just remember that permissions are not passed on (your takeaway).

Passons à la suite. Il existe aussi une commande « unlink », mais honnêtement, je n'en ai jamais vu l'utilité. En toutes mes années d'utilisation de Linux, je ne l'ai jamais utilisée. Si je veux supprimer un lien, je le supprime, car « rm » est bien plus rapide à taper :) La suppression du lien symbolique n'affecte pas le fichier source (la cible).

Bien que le lien lui-même soit sans conséquence, lorsque je l'ouvre et que je modifie son contenu, le fichier d'origine est modifié. Cela semble évident, mais n'oubliez pas que le bon sens n'est pas toujours la norme.

Vous souvenez-vous que je vous ai dit de regarder les permissions ? À part le « l », qu'avez-vous remarqué ? N'hésitez pas à regarder à nouveau si vous avez un doute, je vous attends…

Les plus observateurs d'entre vous auront peut-être remarqué que les permissions avec lesquelles le lien symbolique est toujours créé sont 777 (rwxrwxrwx). En général, 777 est problématique. Cependant, cela n'affecte pas les permissions du fichier ou du dossier cible, qui restent inchangées. Lorsque vous cliquez sur le lien, vous accédez simplement au fichier source (cible) et à ses permissions. Autrement dit, si vous ne disposez que de permissions de lecture sur le fichier, même si vous avez les permissions d'écriture et d'exécution sur le lien symbolique, vous n'aurez toujours que des permissions de lecture sur le fichier source (cible). Vous pouvez le vérifier en essayant de modifier les permissions du lien symbolique : cela n'affectera pas vos permissions sur la source. Essayez maintenant. Vous vous souvenez encore du fonctionnement de la commande chmod, n'est-ce pas ? Retenez simplement que les permissions ne sont pas transmises (c'est le point essentiel à retenir).

As a bonus, I want you to try to remove read, write and execute permissions from the symlink and see what happens. If you tried the above, and are confused, let us know, or if you think you know without trying, let us know at misc@fullcirclemagazine.org. Those of you with hard beards reading this with a glint in your eye, let the newbies cook and remember this on April fool’s day, next year. This is also a good interview task/question. Ok, we have covered linking and unlinking and fixing broken links. This will cover you for most things (80/20 principle).

En bonus, essayez de supprimer les permissions de lecture, d'écriture et d'exécution du lien symbolique et observez le résultat. Si vous avez déjà essayé et que vous êtes perplexe, n'hésitez pas à nous le faire savoir. Si vous pensez avoir la réponse sans avoir testé, écrivez-nous à misc@fullcirclemagazine.org. À tous ceux qui, la barbe fournie, lisent ceci avec un sourire malicieux : laissez les débutants se débrouiller et souvenez-vous de cette blague le 1er avril prochain. Voilà aussi une excellente question pour un entretien d'embauche.

Bien, nous avons abordé la création et la suppression de liens, ainsi que la réparation des liens brisés. Ces connaissances devraient vous permettre de vous débrouiller dans la plupart des cas (principe des 80/20).

issue225/c_c.1770017424.txt.gz · Dernière modification : 2026/02/02 08:30 de d52fr