Como conceder permissão de ‘pesquisa’ no SELinux

Como conceder permissão de ‘pesquisa’ no SELinux

Estou tentando fazer com que o dspam funcione no SELinux (CentOS 7). Eu adicionei o seguinte sem problemas:

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

No entanto, o dspam ainda não funciona via procmail:

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

Quando defino o SELinux como permissivo, ele funciona bem. Tentei usar audit2allowpara identificar o que está faltando:

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

Mas adicionar isso à minha política causa checkmoduleerro:

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

Pesquisei um pouco, mas não consigo encontrar uma solução. Como eu adicionaria ou definiria a searchpermissão conforme indicado?

Responder1

Embora não resolva o problema final para mim (dspam não funciona no modo de aplicação do SELinux), estou postando isso porque responde à pergunta real que fiz (como conceder permissão de pesquisa).

Acontece que estava faltando searchno requirebloco deste módulo. Eu tive:

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

Quando, como descobri navegando no link do comentário de @harrymc, precisei:

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

Depois disso, o módulo compila e carrega corretamente.

informação relacionada