SELinux: Deixando o Apache falar com o MySQL no CentOS

5

Então eu fiz o chroot do MySQL em / opt / chroot / mysql, e tudo roda bem. O Apache é configurado normalmente e também é executado corretamente.

Eu criei um pequeno script PHP que se conecta ao MySQL Daemon e configurei o PHP para que o soquete padrão usado seja o chroot. Quando o SELinux está desativado, o script é capaz de se conectar bem. No entanto, quando o SELinux está ativado, o script não consegue se conectar (com o erro número 13), e o log de auditoria informa que o SELinux negou a solicitação.

Todos os tutoriais que encontrei que lida com esse problema me dizem para desativar o SELinux. Isso não é o que eu quero fazer, então, por favor, não sugira isso! Eu quero uma solução que funcione enquanto o SELinux está habilitado ... Eu suponho que um deve existir ...

Eu acho que eu provavelmente tenho que mudar os contextos do SELinux para os arquivos mysql, mas eu não tenho certeza do que mudá-los para fazê-lo funcionar.

    
por Rsaesha 17.10.2011 / 12:56

1 resposta

5

UPDATE 2

type=AVC msg=audit(1318863312.959:435): avc: denied { connectto } for pid=12472 comm="httpd" path="/opt/chroot/mysql/var/lib/mysql/mysql.sock" scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=unix_stream_socket

Você pode criar o módulo de política SELinux personalizado seguindo as etapas:

# grep httpd_t audit.log | audit2allow -m httpd > httpd.te
# checkmodule -M -m -o httpd.mod httpd.te
# semodule_package -m httpd.mod -o httpd.pp 
# semodule -i httpd.pp

Consulte este tópico para mais detalhes.

UPDATE

  1. Execute o comando semanage para adicionar um mapeamento de contexto para /opt/chroot/mysql/var/lib/mysql/ :

    # semanage fcontext -a -t mysqld_db_t "/opt/chroot/mysql/var/lib/mysql(/.*)?"
    
  2. E use o comando restorecon para aplicar este mapeamento de contexto:

    # restorecon -Rv /opt/chroot/mysql/var/lib/mysql
    

Se você estiver se conectando via TCP / IP, tente isto:

# setsebool -P httpd_can_network_connect 1
    
por 17.10.2011 / 13:14