php - 如何在 php 中使用 sudo 以 root 用户身份访问服务器

标签 php linux terminal

如果我像这样执行多个命令

'sudo -s && cd/apps/10.0.10.200/wso2am-1.7.0/repository/logs && tail wso2carbon.log'

但是当我用我的用户登录服务器时,我必须通过执行以下命令来获得root权限

sudo -s

然后我还必须重新输入密码。 所以我的问题是当我执行上面的命令时,如何传递我的密码。因为我必须执行命令并等待它要求输入密码。 请指导我解决这个问题。 这是我的代码。

include('Net/SSH2.php');
$ssh = new Net_SSH2('10.0.10.200');
$ssh->login('xxxxx', 'xxxx') or die("Login failed");
echo $ssh->exec('sudo -s && cd /apps/10.0.10.200/wso2am-1.7.0/repository/logs && tail wso2carbon.log');

最佳答案

这是一个非常糟糕的主意,因为您需要在您的代码中保留用户密码,这代表了一个不可忽视的安全问题(对 ssh 服务器的完全远程访问)。您应该在要连接的 ssh 服务器上有一个特殊帐户,该帐户允许访问您要显示的日志文件。

但是如果你看一下 this superuser question或运行 sudo --help。您会看到可以使用 sudo -S 获取 sudo 命令以从标准输入读取密码。

所以这应该可以解决问题:

$echo <password> | sudo -S <command>

使用 php:

echo $ssh->exec('echo '.$password.'| sudo -S tail /apps/10.0.10.200/wso2am-1.7.0/repository/logs/wso2carbon.log');

关于php - 如何在 php 中使用 sudo 以 root 用户身份访问服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40173834/

相关文章:

php - 将数组值从 jquery ajax 传递到 php 函数调用

linux - Azure Linux VM(资源管理器)上的“端点”选项卡?

linux - 为移动设备创建 Linux 操作系统

macos - PS1 中的什么导致我的 Terminal.app 命令卡在屏幕上?

javascript - 如何在 Wordpress 中的特定类别图像上显示文本框?

php - 如何使用Capsule和MySQL两种方式查询出 `jump condition `表数据?

php - Mongo 中的时间戳与日期时间

c++ - 如何实现readlink查找路径

php - JavaScript(或JS+PHP)终端客户端

c - 主循环不正常退出