我正在创建一个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]死[uapi] setuids失败:尝试 setuid为RUID 1001的普通用户 /usr/local/cpanel/Cpanel/AccessIds/SetUids.pm第89行。 Cpanel :: AccessIds :: SetUids :: _ log_and_die_if_not_root()在 /usr/local/cpanel/Cpanel/AccessIds/SetUids.pm第66行 Cpanel :: AccessIds :: SetUids :: setuids(“ housediablo”)在 bin / apitool.pl第109行bin :: apitool :: run( CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN , CPANEL_HIDDEN < / strong>, CPANEL_HIDDEN )在bin / apitool.pl第38行退出级别[die] [pid = 19664](setuids失败:尝试将setuid设置为普通用户 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中的变量,它也将起作用。