SELinux interferindo com o Apache / PHP [duplicado]

1

Na minha instalação do CentOS 7, o SELinux está habilitado por padrão. Isso está impedindo que o Apache leia corretamente os arquivos PHP na raiz do documento padrão / var / www / html (o navegador fica em branco ao exibir páginas da Web que contêm script PHP). Quando desativo o SELinux, as páginas são exibidas normalmente.

Existe alguma maneira de configurar o SELinux para permitir que o Apache acesse arquivos PHP a partir da raiz do documento? Eu prefiro não desabilitar o SELinux inteiramente, dado que o CentOS acredita claramente que é uma adição de segurança desejável.

    
por Grant_Bailey 06.11.2014 / 01:11

2 respostas

3

Eu não faço muito o SELinux, mas você pode tentar

semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html(/.*)?'

restorecon -R -v /var/www/html/

Isso permite que o Apache execute scripts PHP nesse diretório e persista após uma reinicialização.

Se você usa o MySQL, você pode ter que fazer o mesmo por isso. SELinux: Deixando o Apache falar com o MySQL no CentOS pode ajudar

    
por 06.11.2014 / 01:16
1

A execução de audit2allow < /var/log/audit/audit.log confirmou que o httpd estava sendo bloqueado pelo SELinux (consulte este link . A solução foi criar e aplicar um módulo de política usando as seguintes etapas:

  1. Como root, execute o comando audit2allow -a -M my_httpd (substitua 'my_httpd' pelo nome que preferir).
  2. Novamente como root, execute o comando semodule -i my_httpd.pp para instalar o módulo.

Depois de seguir estes passos, o Apache conseguiu executar scripts PHP no meu servidor sem dificuldade. O reinício do servidor não destrói as alterações.

Conteúdo do arquivo do módulo (my_httpd.te):

module my_httpd 1.0;
require {
    type admin_home_t;
    type httpd_t;
    class file { read getattr open };
}
#============= httpd_t ==============
allow httpd_t admin_home_t:file { read getattr open };
    
por 06.11.2014 / 10:07