2014-09-23 123 views
2

所以問題在於apache.err中出現錯誤。sudo:PERM_ROOT:setresuid(0,-1,-1):不允許操作

我可以在shell中作爲用戶執行。

[email protected]:~# su www-data 
[email protected]:/root$ sudo /usr/local/bin/metronomectl restart 
Stopped 
Started 
[email protected]:/root$ 

,但是當我通過PHP

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

嘗試相同的命令我得到的錯誤在sudoers中

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

用戶WWW的數據IS。

我在這裏結束了我的智慧... 任何幫助表示讚賞。

PS。請詢問您是否需要任何額外信息。

編輯:

[email protected]:~# 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 
[email protected]:~# 

sudoers的線:

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

回答

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

3

,而不是禁用MPM-ITK徹底的,你可以簡單地對須藤禁用其極限:

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