【问题标题】:sudo: PERM_ROOT: setresuid(0, -1, -1): Operation not permittedsudo:PERM_ROOT:setresuid(0,-1,-1):不允许操作
【发布时间】:2014-09-23 11:30:10
【问题描述】:

所以问题是 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 在 sudoers 中。

我在我的智慧尽头...... 任何帮助表示赞赏。

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

编辑:

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 行:

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

【问题讨论】:

    标签: php apache exec sudo


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      已通过禁用 apache 中的 mpm_itk 模块修复。

      【讨论】:

        【解决方案3】:

        由于 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-25
          • 1970-01-01
          • 1970-01-01
          • 2022-01-15
          • 2022-01-04
          • 2012-06-11
          • 2012-08-18
          • 1970-01-01
          相关资源
          最近更新 更多