pop*_*nja 21 permissions chmod executable 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
Run Code Online (Sandbox Code Playgroud)
Dop*_*oti 43
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
Run Code Online (Sandbox Code Playgroud)
显示文件的内容和执行它们是两件不同的事情。对于 shell 脚本,这些东西是相关的,因为它们是通过将它们“读”到一个新的 shell(或当前的 shell)中来“执行”的,如果你能原谅简化的话。这就是为什么你需要能够阅读它们。二进制文件不使用这种机制。
对于目录,执行权限稍有不同;这意味着你可以做一些事情来的文件中该目录(例如读取或执行它们)。因此,假设您有一组工具/tools
,您希望人们能够使用这些工具,但前提是他们知道这些工具。chmod 711 /tools
. 然后可执行的东西/tools
可以显式运行(例如/tools/mytool
),但ls /tools/
会被拒绝。类似地,/private-docs
当且仅当文件名已知时,可以将文档存储在其中可以读取。
归档时间: |
|
查看次数: |
3769 次 |
最近记录: |