Cómo otorgar permiso de 'búsqueda' en SELinux

Cómo otorgar permiso de 'búsqueda' en SELinux

Estoy intentando que dspam funcione en SELinux (CentOS 7). Agregué lo siguiente sin problemas:

allow dspam_t dspam_rw_content_t:dir getattr;
allow dspam_t dspam_rw_content_t:file { append getattr lock open write };

Sin embargo, dspam todavía no funciona a través de procmail:

/bin/sh: /usr/bin/dspam: Permission denied
procmail: Program failure (126) of "/usr/bin/dspam"

Cuando configuro SELinux como permisivo, funciona bien. Intenté usar audit2allowpara identificar lo que falta:

[root@opus ~]# audit2allow -i /var/log/audit/audit.log
#============= dspam_t ==============
allow dspam_t dspam_rw_content_t:dir search;

Pero agregar eso a mi política genera checkmoduleun error:

checkmodule:  loading policy configuration from OPUS.te
OPUS.te:19:ERROR 'permission search is not defined for class dir' at token ';' on line 19:
allow dspam_t dspam_rw_content_t:dir getattr;
allow dspam_t dspam_rw_content_t:dir search;
checkmodule:  error(s) encountered while parsing configuration

He buscado un poco pero no puedo encontrar una solución. ¿Cómo agregaría o definiría el searchpermiso como se indica?

Respuesta1

Aunque no me resuelve el problema final (dspam no funciona en el modo de aplicación de SELinux), estoy publicando esto porque responde a la pregunta real que hice (cómo otorgar permiso de búsqueda).

Resulta que me faltaba searchen el requirebloque de este módulo. Tuve:

require {
[...]
    class dir getattr;
}

Cuando, como descubrí navegando por el enlace en el comentario de @harrymc, necesitaba:

require {
[...]
    class dir { write getattr add_name search };
}

Después de esto, el módulo se compila y carga correctamente.

información relacionada