PHP página web no lanzar comandos de unix, incluso después de actualizado sudoers

StackOverflow https://stackoverflow.com/questions/113728

  •  02-07-2019
  •  | 
  •  

Pregunta

Básicamente estoy tratando de reiniciar un servicio de php de la página web.

Aquí está el código:

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

Pero, en /var/log/httpd/error_log, Tengo

no se puede cambiar a sudoers gid:La operación no permitida

y en /var/log/messages, tengo

Sep 22 15:01:56 ri kernel:de auditoría(1222063316.536:777):avc:negó { getattr } pid=4851 comm="sh" name="var" dev=dm-0 ino=114241 scontext=raíz:system_r:httpd_sys_script_t tcontext=system_u:object_r:var_t tclass=dir
Sep 22 15:01:56 ri kernel:de auditoría(1222063316.549:778):avc:negó { setrlimit } pid=4851 comm="sudo" scontext=raíz:system_r:httpd_sys_script_t tcontext=raíz:system_r:httpd_sys_script_t tclass=proceso
Sep 22 15:01:56 ri kernel:de auditoría(1222063316.565:779):avc:negó { leer } pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=raíz:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=archivo
Sep 22 15:01:56 ri kernel:de auditoría(1222063316.568:780):avc:negó { leer } pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=raíz:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=archivo
Sep 22 15:01:56 ri kernel:de auditoría(1222063316.571:781):avc:negó { setgid } pid=4851 comm="sudo" capacidad=6 scontext=raíz:system_r:httpd_sys_script_t tcontext=raíz:system_r:httpd_sys_script_t tclass=capacidad de
Sep 22 15:01:56 ri kernel:de auditoría(1222063316.574:782):avc:negó { setuid } pid=4851 comm="sudo" capacidad=7 scontext=raíz:system_r:httpd_sys_script_t tcontext=raíz:system_r:httpd_sys_script_t tclass=capacidad de
Sep 22 15:01:56 ri kernel:de auditoría(1222063316.577:783):avc:negó { setgid } pid=4851 comm="sudo" capacidad=6 scontext=raíz:system_r:httpd_sys_script_t tcontext=raíz:system_r:httpd_sys_script_t tclass=capacidad de

En mi visudo, he añadido estas líneas

User_Alias WWW=apache

WWW ALL=(ALL) NOPASSWD:ALL

Puede usted ayudarme por favor ?Estoy haciendo algo mal ?

Gracias por tu ayuda,

tiBoun

¿Fue útil?

Solución

El problema no es con sudo en el momento, pero con SELinux, que es (razonablemente) configurado para denegar el HTTPD de obtener privilegios de root.
Usted tendrá que permitir explícitamente este (puede utilizar audit2allow para esto), o un conjunto de SELinux para ser permisivo en su lugar.Yo sugeriría que el anterior.

Otros consejos

El error que usted está consiguiendo parece estar relacionado con la configuración de SELinux.Usted puede tratar de desactivación temporal de eso.

Como un aparte, me gustaría sugerir fuertemente que usted ajuste su configuración de sudo para que sean más restrictivas.

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

Me encontré con el problema reciente y aceptada respuesta anterior ayudado.Sin embargo, me gustaría publicar esta respuesta para la elaboración de la misma, por lo que la siguiente persona no necesita gastar mucho tiempo, como yo!

Siga la sección 7 del siguiente enlace: https://wiki.centos.org/HowTos/SELinux.

Hacer con grep httpd_sys_script_t.

Básicamente los pasos son:

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

Esto es probablemente algo como intentar ejecutar sudo en un no-shell interactivo.

Si hacer un grep para 'sudo' en su apache usuarios de correo de registro usted puede encontrar cosas como esta

sudo:lo siento, debe tener un tty para ejecutar sudo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top