我想建立一个非常简单的基于
PHP的基于Web的控制面板来添加和删除用户和从我的linode vps(Ubuntu 8.04 LTS)上的Nginx配置文件添加和删除部分.
基于基于Web的控制面板的输入,以root身份执行命令的最安全方式是什么?
由于显而易见的原因,我不愿意以root身份运行PHP(即使在IP表防火墙后面).
建议欢迎.它必须是可能的,因为几个商业(和臃肿,为我的需要)控制面板提供类似的功能.
谢谢
解决方法
无论你做什么,它都将是一个可能的安全漏洞.
一些建议:
>编写一个执行其输入的简单shell脚本,并将其chown和setuid root; PHP将调用它并将提供的命令传递给它.
>为将要执行的各种任务使用更具体的脚本,并将它们设置为root;再次,PHP将调用它们.
>写一个恶魔,它接受TCP套接字上的命令并执行它们,让它以root身份运行; PHP将连接到它.
>基于概念的任何其他内容“在系统上还有其他东西能够以root身份执行您想要的操作并让PHP调用它”.
上面的任何内容似乎都比让“控制面板”以root身份运行更安全(并且绝对不简单).而且大多数“控制面板”软件包(例如webmin)只是完全绕过它并以root身份运行.