sudo:PERM_ROOT:setresuid(0,-1,-1):不允许操作

时间:2014-09-23 11:30:11

标签: php apache exec sudo

所以问题是apache.err中出现错误。

我可以作为shell中的用户执行。

root@ubuntu:~# su www-data
www-data@ubuntu:/root$ sudo /usr/local/bin/metronomectl restart
Stopped
Started
www-data@ubuntu:/root$

但是当我通过php尝试相同的命令时

exec('sudo /usr/local/bin/metronomectl restart');

我收到错误

sudo: PERM_ROOT: setresuid(0, -1, -1): Operation not permitted

用户www-data IS in sudoers。

我在这里结束了我的智慧...... 任何帮助表示赞赏。

PS。请询问您是否需要任何额外信息。

编辑:

root@ubuntu:~# uname -a
Linux ubuntu 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@ubuntu:~#

sudoers line:

www-data ALL= NOPASSWD: /usr/local/bin/metronomectl

3 个答案:

答案 0 :(得分:3)

您可以直接禁用对sudo的限制,而不是直接禁用mpm-itk:

<IfModule mpm_itk_module>
    # Permit using "sudo"                             
    LimitUIDRange 0 65534
    LimitGIDRange 0 65534
</IfModule>

答案 1 :(得分:0)

通过在apache中禁用mpm_itk模块来解决。

答案 2 :(得分:0)

  

由于mpm-itk必须能够setuid(),因此它以root身份运行(尽管受POSIX功能和seccomp v2限制)

看起来seccomp v2支持(在Linux 3.5.0或更高版本上)完全打破了sudocrontab之类的执行,因为它们在内部使用setuid系统调用

解决方法是不使用mpm_itk,或避免执行此类二进制文件。

参考:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=738131