Crie uma política SELinux para um serviço systemd personalizado

Crie uma política SELinux para um serviço systemd personalizado

Estou usando Fedora Workstation 27 Liveo sistema operacional no qual desejo executar um serviço personalizado EnableBIOS.servicejunto com a inicialização do sistema operacional. Para que isso funcione, preciso desabilitar SELinuxo que está causando um problema no meu ambiente. Então, não consigo desabilitar SELinux.

Como alternativa, tentei criar um SELinux policypara meu serviço personalizado, mas não obtive nenhum avanço.

O serviço está registrando a mensagem abaixo /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'

e,

[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.

Para criar SELinux policy, executei os comandos abaixo:

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

Depois de fazer isso, tentei executar meu serviço novamente e a mensagem registrada foi:

[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.

Quero saber onde estou errando ou existe alguma outra maneira de atender às minhas necessidades.

Responder1

Mova seu script para /usr/local/sbin e verifique se o script está devidamente rotulado comobin_t

O script deve ser executado sem restrições e ter todos os privilégios necessários

informação relacionada