Files
“僅執行”文件權限的有效案例是什麼?
我正在閱讀 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
其中可以讀取。