【问题标题】:How to run a shell as root from php (apache)如何从 php (apache) 以 root 身份运行 shell
【发布时间】:2021-07-21 09:08:24
【问题描述】:

我正在使用 ubuntu server 20.04 LTS,我有多个 shell 文件,使用 apache 中的 php 我需要从浏览器运行多个 shell 文件,但需要以 root 身份运行。

我已经尝试了命令 shell_exec 并添加了 sudoers (www-data) 并且没有工作,我可以将其放入代码中以以 root 身份输入并能够执行 shell 脚本。

<?php
$code = shell_exec('echo "passwd" | sudo -u root -S sh /home/user/name.sh');
echo "<pre>$code</pre>";
?>

【问题讨论】:

  • 不知道为什么如果 sudoers 是正确的那不起作用。我老了,但请查看setuid

标签: php apache root shell-exec ubuntu-20.04


【解决方案1】:

因为您正在以www-datawww-data 的身份执行此脚本,因此没有执行任何sudo 命令所需的权限。

您可以尝试以下步骤:

  1. 修改/etc/sudoers 中的www-data,使其能够以超级用户身份执行脚本。这是一个敏感文件,您必须使用 visudo 作为编辑器才能进行更改。
$ sudo visudo -f /etc/sudoers
www-data ALL=(ALL) NOPASSWD: /home/user/name.sh

这将允许www-data 以超级用户身份执行脚本而无需密码。

  1. 在您的 PHP 代码中更改 shell_exec() 中的命令,如下所示:
    $code = shell_exec(sudo sh /home/user/name.sh');
    

确保您的name.sh 设置了适当的文件模式以保护您自己。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多