Erstellen Sie eine SELinux-Richtlinie für einen benutzerdefinierten systemd-Dienst

Erstellen Sie eine SELinux-Richtlinie für einen benutzerdefinierten systemd-Dienst

Ich verwende Fedora Workstation 27 Liveein Betriebssystem, in dem ich einen benutzerdefinierten Dienst EnableBIOS.servicezusammen mit dem Betriebssystemstart ausführen möchte. Damit dies funktioniert, muss ich deaktivieren, SELinuxwas in meiner Umgebung ein Problem verursacht. Ich kann es also nicht deaktivieren SELinux.

Alternativ habe ich versucht, ein SELinux policyfür meinen benutzerdefinierten Dienst zu erstellen, habe jedoch keinen Durchbruch erzielt.

Der Dienst meldet die folgende Meldung an /var/log/audit/audit.log:

type=SERVICE_START msg=audit(1527782475.777:239): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=EnableHBA comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=AVC msg=audit(1527782475.779:240): avc:  denied  { execute } for  pid=4223 comm="(leHBA.sh)" name="enableHBA.sh" dev="dm-0" ino=38164 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
type=SERVICE_STOP msg=audit(1527782475.782:241): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=EnableHBA comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'

Und,

[root@localserver]# audit2allow -w -a
type=AVC msg=audit(1527782475.779:240): avc:  denied  { execute } for  pid=4223 comm="(leHBA.sh)" name="enableHBA.sh" dev="dm-0" ino=38164 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
        Was caused by:
                Unknown - would be allowed by active policy
                Possible mismatch between this policy and the one under which the audit message was generated.

                Possible mismatch between current in-memory boolean settings vs. permanent ones.

Zum Erstellen SELinux policyhabe ich die folgenden Befehle ausgeführt:

[root@localserver]# grep enableHBA /var/log/audit/audit.log | audit2allow -M enablehba
[root@localserver]# semodule -i enablehba.pp

Danach habe ich versucht, meinen Dienst erneut auszuführen und die protokollierte Meldung lautete:

[root@localserver]# audit2allow -w -a
type=AVC msg=audit(1527782959.912:250): avc:  denied  { read open } for  pid=4612 comm="(leHBA.sh)" path="/root/enableHBA/enableHBA.sh" dev="dm-0" ino=38164 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
        Was caused by:
                Missing type enforcement (TE) allow rule.

                You can use audit2allow to generate a loadable module to allow this access.

Ich möchte wissen, was ich falsch mache oder ob es eine andere Möglichkeit gibt, meine Anforderung zu erreichen.

Antwort1

Verschieben Sie Ihr Skript nach /usr/local/sbin und überprüfen Sie, ob das Skript richtig beschriftet ist alsbin_t

Das Skript sollte uneingeschränkt laufen und über alle erforderlichen Berechtigungen verfügen

verwandte Informationen