1

我在 Linux 系统上安装了一个 ruby​​ 脚本(script.rb),它“需要”另一个文件(required.rb)和一堆自定义方法。

我不想让我的用户阅读 required.rb。

如果我删除读取访问权限(即 chmod 600 required.rb),然后尝试以用户身份运行我的脚本,我会收到以下错误:

no such file to load -- /etc/required.rb

是否允许 ruby​​ 读取这个必需的文件但阻止用户看到它?

4

1 回答 1

2

进程是否可以读取文件由该进程的有效 UID 决定。如果您更改文件的权限,则用户的进程(包括 ruby​​ 进程)无法读取它。

一种解决方案是让您的 ruby​​ 解释器归其他人所有,然后将其设为 setuid,但这将赋予它读取这些“受保护”文件的能力,而不管它运行什么脚本。简而言之,不要这样做。

另一种选择是将您的数据保存在文件系统之外的某个位置,然后为此使用单独的身份验证系统。

我认为正确的方法是在脚本中包含所有方法,但使用某种 AAA 工具来限制对您不希望用户运行的方法的访问。然后,您可以使用任何 AAA 后端来验证您的用户(LDAP、密码文件等)。

于 2011-12-01T08:27:25.577 回答