如何使用'sudo”从 PHP 运行提升的 Shell 脚本?

Mary-Kate Olsen
发布: 2024-11-19 17:13:03
原创
886 人浏览过

How to Run Elevated Shell Scripts from PHP Using `sudo`?

在 PHP 中执行具有提升权限的 Shell 脚本

使用 shell_exec 从 PHP 中执行需要提升权限(通过 SUDO)的 bash 脚本,有两种主要方法:

选项 1:禁用密码提示

此方法涉及通过添加允许的规则来修改 sudoers 文件 (/etc/sudoers) Web 服务器用户(例如 www-data)在没有密码提示的情况下运行指定的命令。使用 visudo 命令打开 sudoers 文件并添加类似于以下内容的行:

www-data ALL=NOPASSWD: /path/to/script
登录后复制

这将允许 Web 服务器用户执行脚本,而不会提示输入密码。

选项 2:使用 PHP 的 proc_open

另一种方法是使用 PHP 中的 proc_open 函数。此函数允许您打开进程并指定其他选项,包括提供 SUDO 密码作为参数:

<?php
$descriptorspec = array(
    0 => array("pipe", "r"),  // stdin
    1 => array("pipe", "w"),  // stdout
    2 => array("pipe", "w")   // stderr
);
$process = proc_open(
    "sudo /path/to/script",
    $descriptorspec,
    $pipes
);

// Write the password to stdin
fwrite($pipes[0], "your_sudo_password\n");
fclose($pipes[0]);

// Read stdout and stderr from pipes
while (!feof($pipes[1])) {
    $stdout .= fgets($pipes[1]);
}
while (!feof($pipes[2])) {
    $stderr .= fgets($pipes[2]);
}

proc_close($process);
?>
登录后复制

在此示例中,SUDO 密码在 fwrite 语句中作为字符串提供。这两种方法都有效地实现了从 PHP 执行特权脚本而不提示输入密码的目标。

以上是如何使用'sudo”从 PHP 运行提升的 Shell 脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板