为什么没有读取权限就可以执行?

为什么没有读取权限就可以执行?

为什么我不用读取程序就能执行程序?

$ echo 'echo "foo"' > test && chmod 100 test && ./test
foo

答案1

root根据我在 Ubuntu Trusty 盒子上使用完全相同的命令进行的测试,我认为您所述的测试命令和案例仅在超级用户下有效。

这是一个非特权帐户:

[teward /home/teward/tmp/]% echo 'echo "foo"' > test && chmod 100 test && ./test
zsh: permission denied: ./test

这是以 root 身份执行的:

[god /home/teward/tmp/]# echo 'echo "foo"' > test && chmod 100 test && ./test
foo

(关于god我的 root 提示符:我root和我的用户使用zsh作为登录 shell。我的PS1ZSH 将系统上的 root 用户的“root”替换为“god”,但它仍然是“root”。权限级别由右方括号右侧的字符表示 - 表示#root,%表示标准用户,这就是您了解权限级别的方式)

我认为这是因为“root”被视为上帝,几乎可以做任何事情。请仔细检查您使用的用户。

答案2

因为您的 shell 必须读取文件才能知道要执行什么。如果您删除读取权限,它就无法读取文件,因此不知道您要执行什么。

相关内容