-3

我有一个运行良好的现有 Ruby on Rails 应用程序,但现在我需要在应用程序通常无法访问的系统文件中添加一行。有没有一种简单的方法可以将文件打开为 SU?(红宝石 1.9.3、Rails 3.2、Ubuntu 12.4)

4

2 回答 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 回答