访问执行脚本的权限

时间:2013-05-10 09:09:32

标签: ruby linux operating-system file-permissions

据我所知,文件的三种权限(读,写,执行)可以独立设置,因此每个用户每个文件有八种可能性(超级用户,组,普通用户)。基于这个事实,我相信超级用户可以将某个脚本文件(在我的例子中是一个Ruby文件)设置为可执行但不能读/写给普通用户。但是在this question的上下文中,Wayne Conrad和Linuxios告诉我,对该文件没有读取权限的用户不能运行脚本。

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

  2. 是否有某种方式(可能是hackish,可能)使脚本文件可以运行但不能从某个用户读取?

1 个答案:

答案 0 :(得分:1)

对于脚本文件(python,perl,ruby,shell等),文件本身不会被执行"按照通常的意义。相反,用户的shell会打开文件,好像要对它进行fork / exec,找到shebang,然后安排让所请求的解释器启动,然后将文件的其余部分传递给它。如果用户对该文件没有读取权限,那么用户的shell无法读取它,并且此设置失败。

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