通过SSH2上的root运行命令


Running commands via root on SSH2

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

例如;

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

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

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

谢谢,Harry

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

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

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

我建议您另一种方式:

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

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

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

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

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

有一种方法:

切勿以root用户身份运行命令。

这是一种糟糕的做法。