为什么我不用读取程序就能执行程序?
$ 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。我的PS1
ZSH 将系统上的 root 用户的“root”替换为“god”,但它仍然是“root”。权限级别由右方括号右侧的字符表示 - 表示#
root,%
表示标准用户,这就是您了解权限级别的方式)
我认为这是因为“root”被视为上帝,几乎可以做任何事情。请仔细检查您使用的用户。
答案2
因为您的 shell 必须读取文件才能知道要执行什么。如果您删除读取权限,它就无法读取文件,因此不知道您要执行什么。