小编Jon*_*kus的帖子

通过 php 调用时不允许 setresuid 操作

我遇到以下问题:我的 Apache 和 PHP 脚本以用户 www-data 身份运行。

我想调用一个只能以 root 身份执行的脚本,因此我在 /etc/sudoers.d 中添加了一个新文件,以允许 www-data 用户执行此命令:

echo390:/var/www/html# cat /etc/sudoers.d/iptables
www-data ALL= NOPASSWD: /sbin/iptables
Run Code Online (Sandbox Code Playgroud)

我的 PHP 脚本如下所示:

<?php
$command = '"/usr/bin/sudo" "/sbin/iptables" -L  -v -n | grep "220.177.198.43"';
echo 'Benutzer: '.exec('whoami').'<br/>';
echo 'Command: '.$command.'<br/>';
$result = array();
exec($command,$result);
print_r($result);
?>
Run Code Online (Sandbox Code Playgroud)

如果我通过以下方式从命令行调用脚本: sudo -u www-data /usr/bin/php test.php 一切都会按预期运行,但是当我通过 Apache 调用脚本时,我在 apache2/error 中收到以下错误。日志:

sudo: PERM_ROOT: setresuid(0, -1, -1): Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我已将 Ubuntu 从 12.02 升级到 14.04 相同的脚本在 Ubuntu 12.02 中运行没有任何问题。有谁能够帮助我?这里的错误在哪里?

www-data 组:
echo390:~$ groups …

php sudo apache2

1
推荐指数
1
解决办法
5483
查看次数

标签 统计

apache2 ×1

php ×1

sudo ×1