Pergunta

Basicamente eu estou tentando reiniciar um serviço a partir de uma página php web.

Aqui está o código:

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

Mas, em /var/log/httpd/error_log, recebo

incapaz de mudar para sudoers gid: Operação não permitida

e em / var / log / messages, recebo

22 de setembro 15:01:56 ri do kernel: auditoria (1222063316,536: 777): avc: denied {getattr} para pid = 4851 comm = nome "sh" = "var" dev = dm-0 ino = 114241 scontext = root: system_r: httpd_sys_script_t tcontext = system_u: object_r: var_t tclass = dir
22 de setembro 15:01:56 núcleo ri: auditoria (1222063316,549: 778): avc: denied {setrlimit} para pid = 4851 comm = "sudo" scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = processo < br> 22 de setembro 15:01:56 núcleo ri: auditoria (1222063316,565: 779): avc: negado {} leitura para pid = 4851 comm = nome "sudo" = "sombra" dev = dm-0 ino = 379669 scontext = root: system_r : httpd_sys_script_t tcontext = system_u: object_r: shadow_t tclass = arquivo
22 de setembro 15:01:56 núcleo ri: auditoria (1222063316,568: 780): avc: negado {} leitura para pid = 4851 comm = nome "sudo" = "sombra" dev = dm-0 ino = 379669 scontext = root: system_r : httpd_sys_script_t tcontext = system_u: object_r: shadow_t tclass = arquivo
22 de setembro 15:01:56 núcleo ri: auditoria (1222063316,571: 781): avc: denied {setgid} para pid = 4851 comm = capacidade de "sudo" = 6 scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = capacidade
22 de setembro 15:01:56 núcleo ri: auditoria (1222063316,574: 782): avc: denied {setuid} para pid = 4851 comm = "sudo" capacidade = 7 scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = capacidade
22 de setembro 15:01:56 núcleo ri: auditoria (1222063316,577: 783): avc: denied {setgid} para pid = 4851 comm = capacidade de "sudo" = 6 scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = capacidade

Na minha visudo, eu adicionei as linhas

user_alias WWW = apache

WWW ALL = (ALL) NOPASSWD: ALL

Você pode por favor me ajude? Estou fazendo algo errado?

Obrigado por sua ajuda,

tiBoun

Foi útil?

Solução

O problema não é com o sudo no momento, mas com SELinux , que é (razoavelmente ) conjunto de negar a HTTPD de ganhar privilégios de root.
Você vai precisar para permitir que seja explicitamente isso (você pode usar audit2allow para isso), ou conjunto SELinux para ser permissiva em seu lugar. Eu sugiro que o primeiro.

Outras dicas

O erro que você está recebendo parece estar relacionado à configuração do SELinux. Você pode tentar desativar temporariamente isso.

Como um aparte, gostaria de sugerir fortemente que você ajustar a configuração do sudo para ser mais restritivo.

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

Eu encontrei o problema recentemente e a resposta aceita acima ajudou. No entanto, eu gostaria de postar esta resposta para elaborar o mesmo, para que a próxima pessoa não precisa gastar tempo muito, como eu!

seção Siga 7 do seguinte link: https://wiki.centos.org/HowTos/SELinux .

Do grep com httpd_sys_script_t.

Basicamente os passos são:

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

Este é provavelmente baixo para algo como tentar executar sudo em um shell não interativo.

Se você fizer um grep para 'sudo' em seus usuários apache enviar log que você pode encontrar coisas como esta

sudo: desculpe, você deve ter um tty para executar sudo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top