Nếu người dùng không thể truy cập /a/b
, thì họ không thể truy cập bất kỳ tệp nào bên dưới /a/b/c
. Các quyền trên /a/b/c
không liên quan vì thư mục dừng lại ở /a/b
.
Nếu tất cả những gì bạn muốn là ngăn thư mục /a/b
được liệt kê, nhưng bạn vẫn ổn với người dùng truy cập tệp /a/b
nếu họ đoán tên tệp, thì bạn có thể thực hiện /a/b
nhưng không thể đọc được. Trên một thư mục, quyền đọc chỉ kiểm soát liệt kê nội dung thư mục, trong khi quyền thực thi kiểm soát quyền truy cập vào các mục của thư mục đó.
# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
… contents of /a/b/c …
Nếu bạn không muốn người dùng khác có thể truy cập các tệp /a/b
ngoại trừ /a/b/c
, bạn có thể hiển thị /a/b/c
qua chế độ xem khác, thông qua liên kết gắn kết .
# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
… contents of /a/b/c …
chmod +x /a/b