Como configurar o SELinux para permitir que o apache execute o git

2

Eu tenho um servidor CentOS 6 e estou tentando fazer com que o servidor web apache execute git pull em um diretório.

O arquivo php é simplesmente:

<?php
    shellexec('cd /var/www/vhosts/domain;git pull');

No entanto, o comando git pull não é executado quando o arquivo é solicitado por meio de um navegador.

Desativar temporariamente o SELinux executando setenforce 0 permite que ele seja executado, mas essa não é uma solução segura.

/ var / log / audit mostra o seguinte erro quando o arquivo é solicitado.

type=AVC msg=audit(1401182476.567:363184): avc:  denied  { read } for  pid=11082 comm="ssh" name="known_hosts" dev=dm-0 ino=11272197 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file
    
por wyred 27.05.2014 / 11:55

1 resposta

4

Execute seu sistema temporariamente com o SELinux no modo Permissivo (setenforce 0). Realize suas operações normais para que os erros sejam registrados em auditoria.log.

Você pode usar audit2why para obter uma explicação sobre o (s) problema (s). Você pode usar audit2allow para gerar um módulo de política carregável. Então, por exemplo

audit2allow <wyred.log
type=AVC msg=audit(1401182476.567:363184): avc:  denied  { read } for  pid=11082 comm="ssh" name="known_hosts" dev=dm-0 ino=11272197 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file

    Was caused by:
            Missing type enforcement (TE) allow rule.

            You can use audit2allow to generate a loadable module to allow this 
            access.

então

audit2allow -M wyred <wyred.log
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i wyred.pp

irá gerar um arquivo .pp e um arquivo readable.te.

    
por 27.05.2014 / 13:42