Các kịch bản Shell yêu cầu quyền đọc được thực thi, nhưng các tệp nhị phân thì không:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Hiển thị nội dung của một tập tin và thực hiện chúng là hai điều khác nhau. Với các kịch bản shell, những điều này có liên quan vì chúng được "thực thi" bằng cách "đọc" chúng vào một shell mới (hoặc hiện tại), nếu bạn tha thứ cho việc đơn giản hóa. Đây là lý do tại sao bạn cần có thể đọc chúng. Binaries không sử dụng cơ chế đó.
Đối với các thư mục, quyền thực thi là một chút khác nhau; điều đó có nghĩa là bạn có thể thực hiện mọi thứ với các tệp trong thư mục đó (ví dụ: đọc hoặc thực thi chúng). Vì vậy, giả sử bạn có một bộ công cụ /tools
mà bạn muốn mọi người có thể sử dụng, nhưng chỉ khi họ biết về chúng. chmod 711 /tools
. Sau đó, những thứ /tools
có thể thực thi được có thể được chạy một cách rõ ràng (ví dụ /tools/mytool
), nhưng ls /tools/
sẽ bị từ chối. Tương tự, các tài liệu có thể được lưu trữ trong /private-docs
đó có thể được đọc nếu và chỉ khi tên tệp được biết.