Php sudo:PERM_ROOT:setresuid(0,-1,-1):不允许操作
所以问题是apache.err中出现了错误 我可以作为shell中的用户执行Php sudo:PERM_ROOT:setresuid(0,-1,-1):不允许操作,php,apache,exec,sudo,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
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数据位于sudoers中
我在这里已经绞尽脑汁了。。。
感谢您的帮助
另外,请询问您是否需要任何额外的信息
编辑:
sudoers系列:
www-data ALL= NOPASSWD: /usr/local/bin/metronomectl
通过在apache中禁用mpm_itk模块进行修复 由于mpm itk必须能够设置UID,所以它以root用户身份运行,尽管可能受到POSIX功能和seccomp v2的限制 在Linux 3.5.0或更高版本上,seccomp v2支持似乎完全中断了sudo或crontab之类的执行,因为它们在内部使用setuid系统调用 解决方法是不使用mpm_itk,或避免执行此类二进制文件
参考文献:您可以简单地禁用其对sudo的限制,而不是直接禁用mpm itk:
<IfModule mpm_itk_module>
# Permit using "sudo"
LimitUIDRange 0 65534
LimitGIDRange 0 65534
</IfModule>
<IfModule mpm_itk_module>
# Permit using "sudo"
LimitUIDRange 0 65534
LimitGIDRange 0 65534
</IfModule>