![Erstellen Sie eine SELinux-Richtlinie für einen benutzerdefinierten systemd-Dienst](https://rvso.com/image/134423/Erstellen%20Sie%20eine%20SELinux-Richtlinie%20f%C3%BCr%20einen%20benutzerdefinierten%20systemd-Dienst.png)
Ich verwende Fedora Workstation 27 Live
ein Betriebssystem, in dem ich einen benutzerdefinierten Dienst EnableBIOS.service
zusammen mit dem Betriebssystemstart ausführen möchte. Damit dies funktioniert, muss ich deaktivieren, SELinux
was in meiner Umgebung ein Problem verursacht. Ich kann es also nicht deaktivieren SELinux
.
Alternativ habe ich versucht, ein SELinux policy
fü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 policy
habe 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