So erteilen Sie die Suchberechtigung in SELinux

So erteilen Sie die Suchberechtigung in SELinux

Ich versuche, dspam unter SELinux (CentOS 7) zum Laufen zu bringen. Ich habe das Folgende ohne Probleme hinzugefügt:

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

Allerdings funktioniert dspam weiterhin nicht über Procmail:

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

Wenn ich SELinux auf permissiv einstelle, funktioniert es einwandfrei. Ich habe versucht, audit2allowherauszufinden, was fehlt:

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

Das Hinzufügen dieser Informationen zu meiner Richtlinie führt jedoch checkmodulezu einem Fehler:

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

Ich habe ein bisschen gesucht, aber ich kann keine Lösung finden. Wie kann ich die searchangegebene Berechtigung hinzufügen oder definieren?

Antwort1

Obwohl es das Endproblem für mich nicht löst (dspam funktioniert nicht im SELinux-Erzwingungsmodus), poste ich dies, weil es die eigentliche Frage beantwortet, die ich gestellt habe (wie man eine Suchberechtigung erteilt).

searchEs stellte sich heraus, dass mir im requireBlock für dieses Modul etwas fehlte . Ich hatte:

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

Als ich den Link im Kommentar von @harrymc durchsuchte, stellte ich fest, dass ich Folgendes brauchte:

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

Danach wird das Modul korrekt kompiliert und geladen.

verwandte Informationen