基本上,我正在尝试从php网页重新启动服务。
以下是代码:
<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>但是,在/var/log/httpd/error_log,我得到
无法更改为sudoers gid:不允许操作
在/var/log/消息中,我得到
9月22日15:01:56 ri内核:审核(1222063316.536:777):avc: 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 { getattr } 9月22日15:01:56 ri内核:审核(1222063316.549:778):avc: pid=4851 comm="sudo“scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=process的{ setrlimit }被拒绝 9月22日15:01:56 ri内核:审核(1222063316.565:779):avc: pid=4851 comm="sudo“name=”影子“dev=dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file { read } 9月22日15:01:56 ri内核:审核(1222063316.568:780):avc: pid=4851 comm="sudo“name=”影子“dev=dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file { read } 9月22日15:01:56 ri内核:审核(1222063316.571:781):avc: pid=4851 comm="sudo“capability=6 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability的{ setgid }拒绝 9月22日15:01:56 ri内核:审核(1222063316.574:782):avc: pid=4851 comm="sudo“capability=7 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability的{ setuid }拒绝 9月22日15:01:56 ri内核:审核(1222063316.577:783):avc: pid=4851 comm="sudo“capability=6 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability的{ setgid }
在我的情书里,我加上了这些行
User_Alias WWW=apache ALL=(ALL) NOPASSWD:ALL
你能帮帮我吗?我做错什么了吗?
谢谢你的帮忙,
tiBoun
发布于 2008-09-22 08:20:10
问题不在于sudo,而在于SELinux,它(合理地)设置为拒绝HTTPD获取根权限。
您需要显式地允许这样做(为此可以使用audit2allow ),或者将SELinux设置为允许的。我建议用前者。
发布于 2008-09-22 08:16:30
您所得到的错误似乎与您的SELinux配置有关。您可以尝试暂时禁用该功能。
顺便说一句,我强烈建议你调整你的sudo配置,使之更具限制性。
User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS发布于 2015-08-28 11:15:59
我最近遇到了这个问题,上面被接受的答案起到了帮助作用。但是,我想贴出这个答案来阐述同样的问题,这样下一个人就不需要花太多的时间,就像我一样!
遵循以下链接的第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.pphttps://stackoverflow.com/questions/113728
复制相似问题