1

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

例如;

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

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

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

谢谢,哈利

4

4 回答 4

1

我建议你另一种方式:

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

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

永远不要对你的 UI 有信心,即使你使用静态的东西来运行命令。

于 2012-09-09T18:15:12.757 回答
1

您不想以 root 身份运行。相反,如果您使用 sudo,可以稍微强化平台:

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

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

于 2012-09-09T18:41:33.090 回答
1

您可以使用 phpseclib 执行 sudo,如下所述:

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

于 2012-09-09T19:27:40.933 回答
0

有一种方法:

切勿以 root 身份运行命令。

这是一个不好的做法。

于 2012-09-09T18:05:08.790 回答