Sur un système Linux, lors du changement de propriétaire d'un lien symbolique à l'aide de chown
, par défaut cela change la cible du lien symbolique (c'est-à-dire tout ce vers quoi le lien symbolique pointe ).
Si vous souhaitez modifier le propriétaire du lien lui-même, vous devez utiliser le -h
option à chown
:
-h, --no-dereference affecter chaque lien symbolique au lieu de n'importe quel fichier référencé (utile uniquement sur les systèmes qui peuvent changer la propriété d'un lien symbolique)
Par exemple :
$ touch test
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
$ sudo ln -s test test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
$ sudo chown root:root test1
$ ls -l test*
-rw-r--r-- 1 root root 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
Notez que la cible du lien appartient maintenant à root.
$ sudo chown mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
Et encore, le lien test1
appartient toujours à root, même si test
a changé.
$ sudo chown -h mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test
Et enfin on change le propriétaire du lien en utilisant le -h
option.
Lorsque vous agissez sur des liens symboliques, vous devez indiquer à la plupart des outils (chown, chmod, ls...) de ne pas déréférencer le lien :vous devez ajouter le -h
paramètre, comme indiqué dans la page de manuel :
-h, --no-dereference
affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)
Alors essayez :sudo chown -h askar.admin /etc/init.d/jboss1
Notez également que l'erreur que vous avez donnée ci-dessus
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied
n'est pas dû au fait que le propriétaire du lien symbolique est quelqu'un d'autre que le propriétaire du fichier d'origine. Cela est (très probablement) dû au fait que l'utilisateur askar n'a pas accès en écriture au répertoire /etc/init.d
.