所以问题是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
答案 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或更高版本上)完全打破了sudo
或crontab
之类的执行,因为它们在内部使用setuid
系统调用
解决方法是不使用mpm_itk
,或避免执行此类二进制文件。