ruby - 执行脚本的访问权限

标签 ruby linux operating-system file-permissions

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

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

  2. 是否有某种方法(可能是 hackish)使脚本文件可运行但特定用户不可读?

最佳答案

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

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

关于ruby - 执行脚本的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16478751/

相关文章:

c++ - 在 Linux 中获取自纪元以来的秒数

python - 不能用pythonw调用qwinsta

ruby-on-rails - Ruby - 将文本文件转换为数组

javascript - rails : Javascript not getting to heroku

ruby-on-rails - 生成 CSV 创建问题,因为我在数据中有引号或逗号

ruby-on-rails - 在 OSX Startup 上启动 unicorn

linux - 为什么os.OpenFile无法创建777文件

const int *ptr=500;它到底存储在哪里

memory-management - 有人可以向我解释有关分页(虚拟内存)的图表吗?

java - 如何安装android studio?