【发布时间】:2018-02-13 19:34:24
【问题描述】:
我已编辑 sudoers 文件以允许无密码执行相关脚本:
wordpress ALL=(root) NOPASSWD: /home/vgnadmin/createnewsite
Defaults:wordpress !requiretty
这是应该执行命令的代码:
if ($_SERVER["REQUEST_METHOD"] == "POST" && $usernameerr == "" && $sitenameerr == "") {
$username=escapeshellarg($username);
$sitename=escapeshellarg($sitename);
exec("sudo /home/vgnadmin/createnewsite $username $sitename 2>&1", $output, $retval);
if ($retval == 1) {
echo "<h1>Script Failed.</h1><br>";
echo "Error Message:<br>";
foreach ($output as $line) {
echo "$line<br>";
}
但在输入表单信息并尝试运行脚本时,我收到错误消息:
sudo: PERM_ROOT: setresuid(0, -1, -1): 不允许操作
sudo: 无法初始化策略插件
我检查了journalctl -xe 以查看该命令是否正在运行,或者是否在服务器端产生任何错误并且没有。我错过了什么吗?
其他不是sudo 的命令运行良好(例如ls)。
【问题讨论】:
-
您的网络服务器在名为
wordpress的用户帐户下运行? -
不是整个网络服务器,我在 Apache 中使用 AssignUserID 为每个站点设置单独的配额(我正在运行多租户构建)。该命令以“wordpress”用户身份执行,但我通过运行 exec("whoami") 进行了双重检查。
-
好的,我不熟悉。当 PHP 代码执行时,Apache 正在以 Linux 用户
wordpress的身份运行?这需要检查。 -
是的,Abra,我用 whoami 替换了代码,它返回了值“wordpress”。