php执行git




PHP网页即使更新sudoers后也不会启动unix命令 (3)

基本上我试图从一个PHP网页重新启动服务。

这里是代码:

<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>

但是,在/var/log/httpd/error_log ,我得到了

无法更改为sudoers gid:操作不允许

并在/ var / log / messages,我得到

Sep 22 15:01:56 ri kernel:audit(1222063316.536:777):avc:denied {getattr} for pid = 4851 comm =“sh”name =“var”dev = dm-0 ino = 114241 scontext = root:system_r :httpd_sys_script_t tcontext = system_u:object_r:var_t tclass = dir
Sep 22 15:01:56 ri kernel:audit(1222063316.549:778):avc:denied {setrlimit} for pid = 4851 comm =“sudo”scontext = root:system_r:httpd_sys_script_t tcontext = root:system_r:httpd_sys_script_t tclass = process
Sep 22 15:01:56 ri kernel:审计(1222063316.565:779):avc:denied {read} for pid = 4851 comm =“sudo”name =“shadow”dev = dm-0 ino = 379669 scontext = root:system_r :httpd_sys_script_t tcontext = system_u:object_r:shadow_t tclass =文件
Sep 22 15:01:56 ri kernel:audit(1222063316.568:780):avc:denied {read} for pid = 4851 comm =“sudo”name =“shadow”dev = dm-0 ino = 379669 scontext = root:system_r :httpd_sys_script_t tcontext = system_u:object_r:shadow_t tclass =文件
Sep 22 15:01:56 ri kernel:audit(1222063316.571:781):avc:denied {setgid} for pid = 4851 comm =“sudo”capability = 6 scontext = root:system_r:httpd_sys_script_t tcontext = root:system_r:httpd_sys_script_t tclass =能力
Sep 22 15:01:56 ri kernel:audit(1222063316.574:782):avc:denied {setuid} for pid = 4851 comm =“sudo”capability = 7 scontext = root:system_r:httpd_sys_script_t tcontext = root:system_r:httpd_sys_script_t tclass =能力
Sep 22 15:01:56 ri kernel:audit(1222063316.577:783):avc:denied {setgid} for pid = 4851 comm =“sudo”capability = 6 scontext = root:system_r:httpd_sys_script_t tcontext = root:system_r:httpd_sys_script_t tclass =能力

在我的visudo中,我添加了这些行

User_Alias WWW = apache

WWW ALL =(ALL)NOPASSWD:ALL

你能帮我么 ? 难道我做错了什么 ?

谢谢你的帮助,

tiBoun


你得到的错误似乎与你的SELinux配置有关。 您可以尝试暂时禁用该功能。

顺便说一句,我强烈建议你调整你的sudo配置,使其更具限制性。

User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS

这可能就像尝试在非交互式shell中执行sudo一样。

如果你在你的apache用户邮件日志中做了一个“sudo”的grep,你可能会发现像这样的东西

sudo:抱歉,你必须有一个tty来运行sudo


我最近遇到了这个问题,上面的答案已经得到了帮助。 不过,我想发表这个答案来阐述一下,这样下一个人就不需要花太多时间和我一样了!

按照以下链接的第7部分: https//wiki.centos.org/HowTos/SELinux

httpd_sys_script_t做grep。

基本上这些步骤是:

# grep httpd_sys_script_t /var/log/audit/audit.log | audit2allow -M httpdallowsudo
# semodule -i httpdallowsudo.pp