【问题标题】:run command as root via php通过 php 以 root 身份运行命令
【发布时间】:2012-09-01 23:23:38
【问题描述】:

我有一个包含 su.php 的 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 \  \-\"

【问题讨论】:

标签: php apache sudo su


【解决方案1】:

我最近发布了一个项目,可以让 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

【讨论】:

    【解决方案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-02-10
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多