我有一个运行良好的现有 Ruby on Rails 应用程序,但现在我需要在应用程序通常无法访问的系统文件中添加一行。有没有一种简单的方法可以将文件打开为 SU?(红宝石 1.9.3、Rails 3.2、Ubuntu 12.4)
问问题
99 次
2 回答
2
从安全角度来看,向接受来自世界各地的请求的应用程序授予一般 su 或 sudo 特权是一个坏主意。几个更安全的方法:
1) 更改特定系统文件的组所有权以共享应用程序用户也属于的组,并对该文件设置组写入权限。
# assuming you want to manipulate /etc/foobar and your app runs as user rails in group rails
chgrp rails /etc/foobar
chmod g+rw /etc/foobar
2) 更安全。编写一个单独的程序,根据传递给它的参数实现对目标系统文件的有限更改。使您的 Rails 应用程序用户拥有无密码的 sudo 特权来执行这个程序。有关如何启用此有限权限的信息,请参阅sudoers 文档。
无论使用哪种方法,请注意不要使用从应用程序源外部获得的数据,而无需通过正式解析器和/或白名单仔细验证它。
于 2013-05-04T21:38:47.727 回答
-1
这就是您破坏安全性的方式:
my_user_password = "f00bar"
app_I_want_to_run = "whoami"
system "echo %s | sudo -S %s" % [ my_user_password, app_I_want_to_run ]
#=> root
并且不要忘记将其作为宝石发布。
于 2013-05-04T21:37:26.840 回答