SELinux: como permitir que o httpd exclua arquivos temporários do MySQL?

SELinux: como permitir que o httpd exclua arquivos temporários do MySQL?

Aqui está a configuração: deixei o MySQL despejar tabelas /tmp(elas contêm apenas números, sem dados reais) para o PHP coletar e processar. Depois disso, os arquivos temporários não são mais necessários, então eu os excluo com PHP ( unlink).

Claro, o SELinux não gosta disso. Posso configurar /tmpbem para o MySQL ler/gravar e o PHP ler/gravar a partir dele, mas quando o PHP deseja excluir o arquivo criado pelo MySQL, ele não pode. Achei que poderia ter a ver com a 'parte pegajosa' do /tmp, mas isso não faz diferença.

Eu realmente não consigo encontrar uma solução adequada para este problema, a maioria das soluções aborda a questão de tornar os diretórios legíveis/graváveis ​​para PHP (ou, o usuário httpd), não excluindo os arquivos de outra pessoa.

BTW: se eu desligar o SELinux, o PHP excluirá os arquivos sem problemas. Portanto, é definitivamente algo que preciso mudar no que diz respeito ao SELinux, mas qual seria a melhor abordagem?

Responder1

De acordo com meu comentário: resolvi isso aproveitando o audit2allow.

  1. Procure /var/log/audit/audit.loga regra ofensiva (usei o nome do arquivo que o MySQL havia escrito)
  2. Canalize a regra audit2allowe revise-a:grep {offending rule name} /var/log/audit/audit.log | audit2allow -a
  3. Saí allow httpd_t mysqld_tmp_t:file unlink;da etapa 2, então parecia exatamente o que eu procurava. Com esse resultado, criei um novo módulo: grep {offending rule name} /var/log/audit/audit.log | audit2allow -a -M tmp. Isso gera um arquivo chamado tmp.pp.
  4. Importe o arquivo do módulo:semodule -i tmp.pp

informação relacionada