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

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

$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);

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

最佳答案

您的方法大部分是正确的,但想象一下您在 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);

希望能帮助到你。

关于php - 无法使用 PHP ssh2_exec() 以 super 用户权限执行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17475485/

10-17 01:31