通过我的Web应用程序使用sudo运行shell脚本

时间:2010-06-08 06:09:51

标签: security web-applications shell privileges sudo

我有一些功能可以在我的Web应用程序中与服务器的操作系统连接。我编写了一个bash脚本,并且可以在我的应用程序中运行它。

但是,脚本的某些功能需要超级用户权限。

安全地运行此脚本最安全的方法是什么?它从Web表单传递参数,但应该只能由经过身份验证的用户调用,我相信不会欺骗它。

2 个答案:

答案 0 :(得分:4)

无论你采用哪种方式,这都可能非常危险。您是否可以编写具有所需权限的本地守护程序,并使用一些消息总线来生成/使用要由此超级用户需要组件处理的事件?

这样,您可以仔细验证消息的内容,并降低利用的可能性..

答案 1 :(得分:2)

  

安全运行此脚本的最理智的方法是什么?

如果您真的关心安全性,请要求网络客户端提供密码并使用ssh密钥。然后在ssh-agent下运行脚本,对于敏感部分执行{{ 1}}。您可能只想为此目的创建ssh密钥对,因为在Web表单中键入一个正常的SSH密码不是我要做的事情(无论如何,谁信任您的Web表单?)。

如果你不想要这么多的安全性,如果你真的,真的相信你的网络表单可以正确地验证其用户,没有任何错误,你可以决定信任网络服务器以运行您需要的命令。 (我不会。)在这种情况下,我会使用ssh root@localhost command...文件来允许Web服务器在不提供密码的情况下运行感兴趣的命令。然后,您的脚本应使用/etc/sudoers来运行这些命令。