Files

“僅執行”文件權限的有效案例是什麼?

  • March 11, 2017

我正在閱讀 chmod 及其八進制模式。我看到那1隻是執行。什麼是僅執行權限的有效案例?要執行文件,通常需要讀取和執行權限。

$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo

Shell 腳本需要讀取權限才能執行,但二進製文件不需要:

$ 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

顯示文件的內容和執行它們是兩件不同的事情。使用 shell 腳本,這些東西是相關的,因為它們是通過將它們“讀取”到新的 shell(或目前的 shell)中來“執行”的,如果您願意簡化的話。這就是為什麼您需要能夠閱讀它們的原因。二進製文件不使用該機制。

對於目錄,執行權限略有不同;這意味著您可以對該目錄中的文件執行操作*(*例如讀取或執行它們)。因此,假設您有一組工具/tools,您希望人們能夠使用它們,但前提是他們知道它們。chmod 711 /tools. 然後可執行的東西/tools可以顯式執行(例如/tools/mytool),但ls /tools/會被拒絕。類似地,當且僅當文件名已知時,可以將文件儲存在/private-docs其中可以讀取。

引用自:https://unix.stackexchange.com/questions/350625