Nó phụ thuộc vào cách bạn gọi chmod
và nền tảng bạn đang chạy.
Ví dụ, trên một hệ thống Linux, man chmod
nói điều này:
chmod
không bao giờ thay đổi quyền của các liên kết tượng trưng; các chmod
cuộc gọi hệ thống không thể thay đổi điều khoản của họ. Đây không phải là một vấn đề vì quyền của các liên kết tượng trưng không bao giờ được sử dụng. Tuy nhiên, đối với mỗi liên kết tượng trưng được liệt kê trên dòng lệnh, chmod
sẽ thay đổi quyền của tệp được trỏ tới. Ngược lại, chmod
bỏ qua các liên kết tượng trưng gặp phải trong quá trình duyệt thư mục đệ quy.
Tuy nhiên, trên máy Mac, chmod có thể được sử dụng để sửa đổi các quyền của liên kết tượng trưng bằng các tùy chọn như thế này (từ man chmod
):
-h Nếu tệp là một liên kết tượng trưng, hãy thay đổi chế độ của chính liên kết đó thay vì tệp mà liên kết trỏ đến.
Ví dụ, giả sử bạn đang sử dụng máy Linux trong phần còn lại của câu trả lời này.
Nếu trong trường hợp đầu tiên bạn chạy chmod -R 777 directory
để thay đổi đệ quy các quyền, mục tiêu liên kết sẽ không bị ảnh hưởng, nhưng nếu bạn làm vậy chmod 777 directory/*
, nó sẽ.
Nếu bạn thay đổi trực tiếp các quyền trên mục tiêu liên kết, các quyền đó sẽ được thực hiện (vì như trang man và baraboom nói, các quyền liên kết thực tế không được sử dụng cho bất cứ điều gì).
Nhật ký kiểm tra để minh họa:
$ 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