我正在用PHP开发一个控制面板,我安装了PHPsecLib库,并使用它向远程服务器发出命令。
例如;
$ssh->exec("cd /home/{$user}/{$id}; screen -S {$id} -A -d -m java -Xmx768M -jar minecraft_server.jar nogui -nojline;");
现在我的问题是,因为我以root身份发出命令,这是一个安全威胁,即使所有运行的命令都是预先制作/硬编码而不是来自用户输入。
如果这是一个问题,有人可以建议最好的方法吗?
谢谢, 哈利
答案 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,如下所述:
答案 3 :(得分:0)
有一种方法:
永远不要以root身份运行命令。
这是一种不好的做法。