1

我有一个包含 su 的 php 脚本。当我在 shell 中运行它时,它要求输入 root 密码并且运行良好。但现在我想为它制作一个界面。如您所知,php-apache 中的所有命令都以 www-data 用户身份运行,并且该用户没有指定密码或不在 sudoers 中。所以我不能使用“echo pass | sudo -S ...”,因为我不知道 www-data 的密码是什么,并且在每个服务器上为 www-data 设置密码或将其添加到 sudoers+nopass 中都不合逻辑, 是吗?

你能建议什么解决方案来解决这个问题?

我的命令之一:

su -c \"/usr/sbin/dmidecode -s baseboard-serial-number | tr \  \-\"
4

2 回答 2

2

phpseclib应该是最好的库选择,因为它不需要任何额外的扩展。

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('example.com');
if (!$ssh->login('user', 'pass')) {
    exit('Login Failed');
}

echo $ssh->exec('whoami');
echo $ssh->exec('pwd');
?>

另一种选择是libssh2,但它必须单独编译,并且difficult以设置/使用而闻名。

于 2012-09-08T07:44:57.957 回答
0

我最近发布了一个项目,可以让 PHP 获得一个真正的 Bash shell 并与之交互,你可以很容易地用 root 获得一个 shell。在这里获取:https ://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);

$strCmd = "\"/usr/sbin/dmidecode -s baseboard-serial-number | tr \  \-\"";
$return1  = $shell->exeCmd($strCmd);

echo $return1;// return from your command
于 2016-05-26T10:03:00.827 回答