Linux, comme la plupart des systèmes de type Unix (Apple OS/X étant l'une des rares exceptions), ignore les permissions sur les liens symboliques lorsqu'il s'agit de résoudre leurs cibles par exemple.
Cependant, la propriété des liens symboliques, comme d'autres fichiers, est pertinente lorsqu'il s'agit de l'autorisation de renommer ou de dissocier leurs entrées dans les répertoires qui ont le t
jeu de bits, tel que /tmp
.
Pour pouvoir supprimer ou renommer un fichier (lien symbolique ou non) en /tmp
, vous devez être le propriétaire du fichier. C'est l'une des raisons pour lesquelles on peut vouloir changer la propriété d'un lien symbolique (pour accorder ou retirer l'autorisation de le dissocier/le renommer).
$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed
$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted
De plus, comme mentionné par Mark Plotnick dans sa réponse maintenant supprimée, les applications de sauvegarde et d'archivage ont besoin de lchown()
pour restaurer les liens symboliques à leurs propriétaires d'origine. Une autre option serait de changer euid et egid avant de créer le lien symbolique, mais cela ne serait pas efficace et compliquerait la gestion des droits sur le répertoire dans lequel le lien symbolique est extrait.