0

我正在创建一个 php 脚本,它将在 cpanel 中创建一个电子邮件帐户。我正在使用 shell_exec() 在命令行中使用 uapi Email::add_pop 函数,因为我在使用 liveAPI PHP 类时遇到了其他问题。

我做了一些搜索,最初,看起来这可能是因为我没有设置 suexec 或 suphp。但是,唯一因错误而改变的是用于读取 99 而不是现在的 1001 的 RUID。

我有三个文件。我有一个简单的测试表格,位于 /home/housediablo/public_html/index.php

<form action="formhandler.php" method="post">
    username: <br>
    <input type="text" name="username"><br>
    Password: <br>
    <input type="text" name="password"><br>
    <input type="submit" value="Submit">
</form>

我的表单处理程序位于 /home/housediablo/public_html/formhandler.php

<?php
include "/usr/local/cpanel/base/frontend/paper_lantern/createmail.live.php";
?>

我有使用 shell_exec() 的实际脚本,位于 /usr/local/cpanel/base/frontend/paper_lantern/createmail.live.php

<?php
$username = $_POST['username'];
$password = $_POST['password'];
$domain = 'housediablo.com';
$cmdString =  'uapi --user=housediablo Email add_pop email=' . $username . ' password=' . 
$password . ' quota=0 domain=' . $domain . ' skip_update_db=1';
echo ($cmdString);
$output = shell_exec($cmdString . ' 2>&1');
echo "</ br><pre>$output</pre>";
?>

预期的结果是在 cpanel 中创建了一封电子邮件,但我只是得到这个输出:

[2019-07-25 23:00:22 +0000] die [uapi] setuids failed: 在 /usr/local/cpanel/Cpanel/AccessIds/SetUids.pm 第 89 行尝试将 setuid 设置为具有 RUID 1001 的普通用户。 ::AccessIds::SetUids::_log_and_die_if_not_root() 在 /usr/local/cpanel/Cpanel/AccessIds/SetUids.pm 第 66 行调用 Cpanel::AccessIds::SetUids::setuids("housediablo") 在 bin/apitool 调用。 pl line 109 bin::apitool::run( CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN) 在 bin/apitool.pl 第 38 行退出级别调用 [die] [pid=19664] (setuids failed: Attempting to setuid as a normal user with RUID 1001)

我可以从终端以 root 身份运行回显的 $cmdString,它会起作用:

uapi --user=housediablo Email add_pop email=test password=Str0ngT3stPw! quota=0 domain=housediablo.com skip_update_db=1

我还可以从终端以 root 身份运行 php 脚本,使用硬编码的虚拟变量代替 POST 中的变量,它也可以工作。

4

0 回答 0