Це залежить від того, як ви телефонуєте chmod
та платформи, на якій ви працюєте.
Наприклад, в системі Linux man chmod
це говорить:
chmod
ніколи не змінює дозволи символічних посилань; chmod
системний виклик не може змінювати їх дозволу. Це не є проблемою, оскільки дозволи символічних посилань ніколи не використовуються. Однак для кожного символьного посилання, вказаного в командному рядку, chmod
змінюються дозволи файлу, що вказується. На відміну від цього, chmod
ігнорується символічні посилання, що виникають під час рекурсивного обходу каталогів.
Однак на Mac, chmod можна використовувати для зміни дозволів символічного посилання, використовуючи такі параметри, як цей (від man chmod
):
-h Якщо файл є символьним посиланням, змініть режим самого посилання, а не файл, на який вказує посилання.
Для прикладу, давайте припустимо, що ви знаходитесь на машині Linux для решти цієї відповіді.
Якщо в першому випадку ви запустите chmod -R 777 directory
рекурсивно змінювати дозволи, ціль посилання не вплине, але якщо ви це зробите chmod 777 directory/*
, це буде.
Якщо ви зміните дозволи на ціль посилання безпосередньо, ці дозволи будуть виконуватись (оскільки, як кажуть man-сторінка та baraboom , фактичні дозволи на посилання не використовуються ні для чого).
Журнал випробувань для ілюстрації:
$ 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