Как предоставить разрешение «поиск» в SELinux

Как предоставить разрешение «поиск» в SELinux

Я пытаюсь заставить dspam работать под SELinux (CentOS 7). Я добавил следующее без проблем:

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

Однако dspam по-прежнему не работает через procmail:

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

Когда я устанавливаю SELinux в режим permissive, все работает нормально. Я попытался использовать, audit2allowчтобы определить, чего не хватает:

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

Но добавление этого к моей политике приводит checkmoduleк ошибке:

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

Я немного поискал, но не могу найти решение. Как мне добавить или определить разрешение, searchкак указано?

решение1

Хотя это не решает для меня конечную проблему (dspam не работает в принудительном режиме SELinux), я публикую это, потому что это дает ответ на фактический вопрос, который я задал (как предоставить разрешение на поиск).

Оказывается, я пропустил searchблок requireдля этого модуля. У меня было:

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

Когда, как я обнаружил, просматривая ссылку в комментарии @harrymc, мне было нужно:

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

После этого модуль корректно компилируется и загружается.

Связанный контент