2011-12-01 33 views
1

我已经在一个Linux系统上安装了一个ruby脚本(script.rb),它需要另一个文件(required.rb)和一堆自定义方法。我可以允许ruby脚本读取文件,但不允许用户调用脚本?

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

如果删除的读取权限(即搭配chmod 600 required.rb),然后尝试运行我的脚本,我碰到下面的错误用户:

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

有没有去让红宝石阅读这个必需的文件,但阻止用户看到它?

+1

属于http://serverfault.com/ –

+1

可以说。这与管理问题一样是一个编程问题。 –

回答

2

进程是否可以读取文件受所述进程的有效UID支配。如果您更改文件的权限,则用户进程(包括ruby进程)无法读取它。

一个解决方案是让别人拥有你的ruby解释器,然后使它成为setuid,但是这将使其有权读取这些“受保护”的文件,而不管它运行什么脚本。总之,不要这样做。

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

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

+1

我担心的是,我不仅希望用户运行该方法 - 我不希望他们甚至能够看到该方法,因为我担心他们只能复制代码并运行。我正在考虑将脚本的UID设置为特权用户,然后使用sudo允许用户运行它。 – user1074981

+0

setuid位不适用于脚本(安全隐患)。尽管你的要求有点奇怪。你认为你的架构需要更多思考吗? –

相关问题