2010-06-08 57 views
1

我有一些功能可以在我的web应用程序中与服务器的操作系统进行交互。我写了一个bash脚本,可以在我的应用程序中运行它。通过我的web应用程序使用sudo运行shell脚本

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

什么是最安全地运行此脚本的最有效的方法?它从Web表单传递参数,但只能由经过身份验证的用户调用,我相信不会对其发表任何声明。

回答

2

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

如果您确实在乎安全性,则需要Web客户端提供密码,并使用ssh密钥然后运行ssh-agent下的脚本,并为敏感零件做ssh [email protected] command...。您可能只想为此创建ssh密钥对,因为将一个正常的SSH密码输入到Web窗体中并不是我会做的(谁信任您的Web窗体,无论如何?)。

如果你不想相当这么多的安全,如果你真的相信你的Web表单可以正确验证它的用户,没有任何错误,可以转而决定信任web服务器来运行你需要的命令。 (我不会)。在这种情况下,我将使用/etc/sudoers文件来允许Web服务器在不提供密码的情况下运行感兴趣的命令。然后你的脚本应该使用sudo来运行这些命令。

+0

我用'sudoers'方法 - 我认为它应该是安全*足够的*。我正在使用正则表达式来处理所有输入,并使用一个通用的身份验证插件,并且觉得这种方法应该没问题。谢谢 :) – nfm 2010-06-10 06:13:34

4

无论你做什么这可能是非常危险的。你可以写一个具有所需特权的本地守护进程,并使用一些生成/使用事件的消息总线来处理这个超级用户需要的组件?

这样的话,你可以仔细验证消息的内容,并减少开发的可能性..

相关问题