sudo: PERM_ROOT: setresuid (0, -1, -1): операция не разрешена

Итак, проблема в том, что ошибка возникает в apache.err.

Я МОГУ выполнить как пользователь в оболочке.

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.

Я в конце моего ума здесь ... Любая помощь приветствуется.

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:

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

person Mizukamakiri    schedule 23.09.2014    source источник


Ответы (3)


Вместо того, чтобы сразу отключать mpm-itk, вы можете просто отключить его ограничения на sudo:

<IfModule mpm_itk_module>
    # Permit using "sudo"                             
    LimitUIDRange 0 65534
    LimitGIDRange 0 65534
</IfModule>
person Teddy    schedule 24.10.2015

Исправлено отключением модуля mpm_itk в apache.

person Mizukamakiri    schedule 23.09.2014

Поскольку mpm-itk должен иметь возможность setuid(), он запускается от имени пользователя root (хотя и ограничен возможностями POSIX и seccomp v2, где это возможно).

Похоже, что поддержка seccomp v2 (в Linux 3.5.0 или новее) полностью нарушает выполнение таких вещей, как sudo или crontab, поскольку они используют внутри системный вызов setuid.

Обходной путь — не использовать mpm_itk или избегать выполнения таких двоичных файлов.

Ссылки: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=738131

person Giovanni Toraldo    schedule 27.07.2015