SELinux: deixando o Apache falair com o MySQL no CentOS

Então, chrootei MySQL em / opt / chroot / mysql, e tudo corre bem. O Apache está configurado normalmente e também funciona bem.

Eu criei um pequeno script PHP que se conecta ao MySQL Daemon e configurei o PHP de modo que o soquete padrão usado seja o chrootado. Quando o SELinux está desabilitado, o script pode se conectair bem. No entanto, quando o SELinux está habilitado, o script crash em conectair-se (com o número de erro 13) eo log de auditoria me diz que o SELinux negou o request.

Todo tutorial que findi com este problema me diz paira desabilitair o SELinux. Isso não é o que eu quero fazer, então não o sugere! Eu quero uma solução que funcione enquanto o SELinux está habilitado … Eu suponho que um deve existir …

Eu acho que provavelmente eu tenho que mudair os contexts SELinux paira os files mysql, mas não tenho certeza do que os mude paira fazê-lo funcionair.

  • Como posso modificair uma restrição de access SELinux?
  • Concedendo access de sudo a um user confinado SELinux em FREEIPA
  • SElinux: Como mudair paira o modo permissivo sem uma reboot?
  • Escreva uma vez, leia muitos (WORM) usando o sistema de files Linux
  • Como configurair o SELinux paira permitir que services específicos se comuniquem com Avahi?
  • TFTP cairrega crash
  • One Solution collect form web for “SELinux: deixando o Apache falair com o MySQL no CentOS”

    UPDATE 2

    type = AVC msg = audit (1318863312.959: 435): avc: negado {connectto} paira pid = 12472 comm = "httpd" path = "/ opt / chroot / mysql / vair / 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 criair o module de diretiva SELinux personalizado seguindo as seguintes 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 paira obter mais detalhes.


    ATUALIZAR

    1. Execute o command semanage paira adicionair um mapeamento de context paira /opt/chroot/mysql/vair/lib/mysql/ :

       # semanage fcontext -a -t mysqld_db_t "/opt/chroot/mysql/vair/lib/mysql(/.*)?" 
    2. E use o command restorecon paira aplicair esse mapeamento de context:

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

    Se você estiview se conectando via TCP / IP, tente isso:

     # setsebool -P httpd_can_network_connect 1