在SSH2上通过root运行命令

时间:2012-09-09 17:59:29

标签: php linux ssh

我正在用PHP开发一个控制面板,我安装了PHPsecLib库,并使用它向远程服务器发出命令。

例如;

$ssh->exec("cd /home/{$user}/{$id}; screen -S {$id} -A -d -m  java -Xmx768M -jar minecraft_server.jar nogui -nojline;"); 

现在我的问题是,因为我以root身份发出命令,这是一个安全威胁,即使所有运行的命令都是预先制作/硬编码而不是来自用户输入。

如果这是一个问题,有人可以建议最好的方法吗?

谢谢, 哈利

4 个答案:

答案 0 :(得分:1)

我建议你采用另一种方式:

1 /你的php不执行命令,而是将它们写入文件

2 / croned php文件或守护程序会定期检查此文件并以root身份执行命令。

即使您使用静态内容来运行命令,也不要对您的UI充满信心。

答案 1 :(得分:1)

您不希望以root身份运行。相反,如果您使用sudo,请稍微加强平台:

username    ALL = NOPASSWD: /bin/screen, PASSWD: ALL

这将允许您的用户:username在不需要sudo /密码的情况下运行屏幕,但仍需要对平台上其余可执行文件进行身份验证。

答案 2 :(得分:1)

你可以用phpseclib做sudo,如下所述:

http://phpseclib.sourceforge.net/ssh/examples.html#sudo

答案 3 :(得分:0)

有一种方法:

永远不要以root身份运行命令。

这是一种不好的做法。