0

我知道可以独立设置文件的三种类型的权限(读取、写入、执行),因此每个用户(超级用户、组、普通用户)每个文件有八种可能性。基于这个事实,我相信超级用户可以将某个脚本文件(在我的例子中,一个 Ruby 文件)设置为可执行但对普通用户不可读/写。但是在这个问题的上下文中,Wayne Conrad 和 Linuxios 指出,没有对该文件的读取权限的用户无法运行脚本。

  1. 为什么会这样?如果用户需要读取权限才能执行它,那么为什么可以独立设置三种权限类型呢?特别是,将脚本文件权限设置为可执行但不可读是什么意思?

  2. 是否有某种方法(可能是骇人听闻的)使脚本文件可运行但不能被某个用户读取?

4

1 回答 1

1

对于脚本文件(python、perl、ruby、shell 等),文件本身并不是通常意义上的“执行”。取而代之的是,用户的 shell 打开文件,就好像要 fork/exec 一样,发现 shebang,然后安排启动请求的解释器,并将文件的其余部分传递给它。如果用户没有对该文件的读取权限,那么显然用户的 shell 无法读取它,并且此设置失败。

二进制命令不是这种情况,它确实可以在没有读取权限的情况下设置,并且仍然可以工作。

于 2013-05-10T09:22:11.060 回答