我正在用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用户身份运行命令。
这是一种糟糕的做法。