셸 스크립트 에는 읽기 권한이 필요하지만 이진 파일 에는 필요하지 않습니다.
$ 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
파일의 내용을 표시하고 실행하는 것은 서로 다른 두 가지입니다. 쉘 스크립트를 사용하면 단순화를 용서할 경우 이러한 스크립트는 새 쉘 (또는 현재 쉘)로 "읽기"하여 "실행"되기 때문에 관련이 있습니다. 그렇기 때문에 읽을 수 있어야합니다. 바이너리는 그 메커니즘을 사용하지 않습니다.
디렉토리의 경우 실행 권한이 약간 다릅니다. 즉, 해당 디렉토리 내의 파일 에 대해 작업을 수행 할 수 있습니다 (예 : 파일을 읽거나 실행). 따라서 /tools
사람들이 사용할 수 있기를 원하지만 도구에 대해 알고 있는 도구 세트가 있다고 가정 해 봅시다 . chmod 711 /tools
. 그런 다음 실행 파일을 /tools
명시 적으로 실행할 수 /tools/mytool
있지만 ls /tools/
거부됩니다. 마찬가지로 /private-docs
파일 이름을 알고있는 경우에만 읽을 수있는 문서를 저장할 수 있습니다.