SELinux: ¿cómo permitir que httpd elimine archivos temporales de MySQL?

SELinux: ¿cómo permitir que httpd elimine archivos temporales de MySQL?

Aquí está la configuración: dejo que MySQL descargue tablas /tmp(solo contienen números, no datos reales) para que PHP las recoja y las procese. Después de esto, los archivos temporales ya no son necesarios, así que los elimino con PHP ( unlink).

Por supuesto, a SELinux no le gusta esto. Puedo configurar /tmpbien para que MySQL lea/escriba y PHP para leer/escribir, pero cuando PHP quiere eliminar el archivo creado por MySQL, no puede. Pensé que podría tener que ver con la "parte adhesiva" /tmp, pero eso no hace ninguna diferencia.

Realmente no puedo encontrar una solución adecuada para este problema, la mayoría de las soluciones abordan el problema de hacer que los directorios sean legibles/escribibles en PHP (o, es decir, el usuario httpd), sin eliminar los archivos de otra persona.

Por cierto: si desactivo SELinux, PHP eliminará los archivos sin problemas. Definitivamente es algo que tengo que cambiar en SELinux, pero ¿cuál sería el mejor enfoque?

Respuesta1

Según mi comentario: lo resolví aprovechando audit2allow.

  1. Escanee /var/log/audit/audit.logen busca de la regla infractora (usé el nombre del archivo que MySQL había escrito)
  2. Canalice la regla audit2allowy revísela:grep {offending rule name} /var/log/audit/audit.log | audit2allow -a
  3. Obtuve allow httpd_t mysqld_tmp_t:file unlink;el paso 2, por lo que se veía exactamente como lo que buscaba. Con ese resultado, creé un nuevo módulo: grep {offending rule name} /var/log/audit/audit.log | audit2allow -a -M tmp. Esto genera un archivo llamado tmp.pp.
  4. Importe el archivo del módulo:semodule -i tmp.pp

información relacionada