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, audit2allow
herauszufinden, 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 checkmodule
zu 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 search
angegebene 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).
search
Es stellte sich heraus, dass mir im require
Block 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.