Ruby 执行脚本的访问权限

Ruby 执行脚本的访问权限,ruby,linux,operating-system,file-permissions,Ruby,Linux,Operating System,File Permissions,我知道一个文件的三种权限(读、写、执行)可以独立设置,因此每个用户(超级用户、组、普通用户)每个文件有八种可能。基于这一事实,我相信超级用户可以将某个脚本文件(在我的例子中是Ruby文件)设置为可执行文件,但不能对普通用户进行读/写。但在的上下文中,Wayne Conrad和Linuxios指出,脚本不能由没有该文件读取权限的用户运行 为什么会这样?如果用户需要读取权限才能执行它,那么为什么可以单独设置这三种权限类型?特别是,将脚本文件权限设置为可执行但不可读意味着什么 是否有某种方法(可能是黑

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

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

  • 是否有某种方法(可能是黑客的)使脚本文件可运行但无法从某个用户处读取


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

    二进制命令的情况并非如此,它确实可以在没有读取权限的情况下设置,并且仍然可以工作