【问题标题】:Cannot execute commands with super user previleges using PHP ssh2_exec()无法使用 PHP ssh2_exec() 以超级用户权限执行命令
【发布时间】:2013-07-02 18:23:01
【问题描述】:

无法使用 PHP ssh2_exec() 执行具有超级用户权限的命令

如果我想在远程 Linux 机器上的 /var/www 中创建文件夹 test_folder,下面的代码和 ssh 命令似乎是正确的,但是由于缺乏超级用户权限,我无法创建文件夹。我对此感到困惑的是,我已经包含了用户名和密码凭据,但我仍然无法执行该命令。

$con = new SSH2SFTP($addr,
    new SSH2Password($user, $pass),
    22); 
$cmd = "sudo mkdir -p /var/www/test_folder";    
$stream = ssh2_exec($con, $cmd); 
stream_set_blocking($stream, true);
fclose($stream); 

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: php linux ssh


    【解决方案1】:

    您的方法大多是正确的,但想象一下您在 ssh 进入远程计算机后输入了 linux 命令。第一次使用“sudo”时仍需要输入密码。

    因此,您可以将命令修改如下:

    $cmd = "echo '" . $pass . "' | sudo -S " . $cmd;
    

    你的代码会是这样的:

    $con = new SSH2SFTP($addr,
        new SSH2Password($user, $pass),
        22); 
    $cmd = "mkdir -p /var/www/test_folder"; 
    $cmd = "echo '" . $pass . "' | sudo -S " . $cmd;
    $stream = ssh2_exec($con, $cmd); 
    stream_set_blocking($stream, true);
    fclose($stream); 
    

    希望对你有帮助。

    【讨论】:

    • 几乎所有需要 sudo 的命令都可以使用这个技巧。但是,我注意到 ssh 命令不接受使用 echo 方法的密码(通过终端手动或通过 ssh2_exec)。虽然,我不需要在 ssh 中执行 ssh。
    猜你喜欢
    • 2019-02-15
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2023-04-06
    • 2019-12-31
    • 2017-04-03
    相关资源
    最近更新 更多