我在Linux系统上安装了一个ruby脚本(script.rb),该系统“需要”另一个文件(required.rb)和一堆自定义方法。
我不想让我的用户阅读required.rb。
如果我删除了读取访问权限(例如chmod 600 required.rb),然后尝试以用户身份运行我的脚本,则会收到以下错误:
no such file to load -- /etc/required.rb
是否允许ruby读取此必需文件但是阻止用户看到它?
答案 0 :(得分:2)
进程是否可以读取文件由所述进程的有效UID控制。如果更改了文件的权限,则用户的进程(包括ruby进程)无法读取它。
一种解决方案是让你的ruby解释器由其他人拥有,然后使其成为setuid,但这将使它能够读取这些“受保护”文件,无论它运行的是什么脚本。总之,不要这样做。
另一种选择是将数据保存在文件系统以外的其他位置,然后使用单独的身份验证系统。
在我看来,正确的方法是在脚本中使用所有方法,但使用某种AAA线束限制访问您不希望用户运行的方法。然后,您可以使用任何AAA后端来验证您的用户(LDAP,密码文件等)。