Cela dépend de la façon dont vous appelez chmod
et de la plate-forme sur laquelle vous vous trouvez.
Par exemple, sur un système Linux, man chmod
dit ceci:
chmod
ne change jamais les permissions des liens symboliques; l' chmod
appel système ne peut pas modifier leurs autorisations. Ce n'est pas un problème puisque les permissions des liens symboliques ne sont jamais utilisées. Toutefois, pour chaque lien symbolique répertorié sur la ligne de commande, chmod
modifie les autorisations du fichier pointé. En revanche, chmod
ignore les liens symboliques rencontrés lors de parcours récursifs de répertoires.
Cependant, sur un Mac, chmod peut être utilisé pour modifier les autorisations d'un lien symbolique à l'aide d'options telles que (à partir de man chmod
):
-h Si le fichier est un lien symbolique, changez le mode du lien lui-même plutôt que le fichier vers lequel le lien pointe.
À titre d'exemple, supposons que vous êtes sur une machine Linux pour le reste de cette réponse.
Si, dans le premier cas, vous exécutez chmod -R 777 directory
une modification récursive des autorisations, la cible du lien ne sera pas affectée mais, dans le cas contraire chmod 777 directory/*
, elle le sera.
Si vous modifiez directement les autorisations sur la cible du lien, ces autorisations seront conservées (puisque, comme l' indiquent les pages de manuel et baraboom , les autorisations de lien réelles ne sont utilisées à aucune fin).
Journal de test pour illustration:
$ mkdir dir && touch dir/file{1,2} /tmp/file3 && ln -s {/tmp,dir}/file3
$ ls -l dir/* /tmp/file3
-rw-r--r-- 1 user group 0 2011-06-27 22:02 /tmp/file3
-rw-r--r-- 1 user group 0 2011-06-27 22:02 dir/file1
-rw-r--r-- 1 user group 0 2011-06-27 22:02 dir/file2
lrwxrwxrwx 1 user group 10 2011-06-27 22:02 dir/file3 -> /tmp/file3
$ chmod -R 777 dir && ls -l dir/* /tmp/file3
-rw-r--r-- 1 user group 0 2011-06-27 22:02 /tmp/file3
-rwxrwxrwx 1 user group 0 2011-06-27 22:02 dir/file1
-rwxrwxrwx 1 user group 0 2011-06-27 22:02 dir/file2
lrwxrwxrwx 1 user group 10 2011-06-27 22:02 dir/file3 -> /tmp/file3
$ chmod 700 dir/* && ls -l dir/* /tmp/file3
-rwx------ 1 user group 0 2011-06-27 22:02 /tmp/file3
-rwx------ 1 user group 0 2011-06-27 22:02 dir/file1
-rwx------ 1 user group 0 2011-06-27 22:02 dir/file2
lrwxrwxrwx 1 user group 10 2011-06-27 22:02 dir/file3 -> /tmp/file3