Systemd permissão de script de inicialização do Fedora 25 negada

2

Tenho acompanhado vários tutoriais sobre como escrever um script de inicialização para o systemd (Fedora 25 no Vbox). No entanto, não consigo fazer isso funcionar.

Aqui está o script /home/dario/Desktop/unix/SYSTEMD/print_date.sh que eu quero executar:

#!/bin/bash
date > startup_date

Alterei as permissões no arquivo, chmod 755 print_date.sh

Eu criei o arquivo de serviço /etc/systemd/system/print_date.service (estas são apenas as últimas versões, tentei muitas outras iterações):

[Unit]
Description=Example startup script
After=multi-user.target

[Service]
Type=forking
ExecStart=/home/dario/Desktop/unix/SYSTEMD/print_date.sh
User=root
Group=root

[Install]
WantedBy=multi-user.target

eu corro

systemctl daemon-reload
systemctl enable print_date

e testá-lo sem reinicializar

systemctl start print_date

que me dá o erro

[root@dario SYSTEMD]# systemctl start print_date
Job for print_date.service failed because the control process exited with error code.
See "systemctl status print_date.service" and "journalctl -xe" for details.

Se eu tentar depurá-lo com o diário -xn, o resultado é:

[root@dario SYSTEMD]# journalctl -xn
-- Logs begin at Wed 2016-12-28 13:03:41 PST, end at Sat 2017-03-18 12:25:39 PDT. --
Mar 18 12:25:35 dario systemd[4143]: print_date.service: Failed at step EXEC spawning /home/dario/Desktop/unix/SYSTEMD/print_date.sh: Permissi
-- Subject: Process /home/dario/Desktop/unix/SYSTEMD/print_date.sh could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /home/dario/Desktop/unix/SYSTEMD/print_date.sh could not be executed and failed.
-- 
-- The error number returned by this process is 13.
Mar 18 12:25:35 dario systemd[1]: print_date.service: Control process exited, code=exited status=203
Mar 18 12:25:35 dario systemd[1]: Failed to start Example startup script.
-- Subject: Unit print_date.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit print_date.service has failed.
-- 
-- The result is failed.
Mar 18 12:25:35 dario systemd[1]: print_date.service: Unit entered failed state.
Mar 18 12:25:35 dario audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=print_date
Mar 18 12:25:35 dario systemd[1]: print_date.service: Failed with result 'exit-code'.
Mar 18 12:25:38 dario dbus-daemon[682]: [system] Activating service name='org.fedoraproject.Setroubleshootd' requested by ':1.36' (uid=0 pid=6
Mar 18 12:25:38 dario dbus-daemon[682]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd'
    
por Dario 18.03.2017 / 20:29

1 resposta

1

Eu encontrei uma resposta adequada para mim. No entanto, por favor, explique se você tem uma solução que não seja tão drástica quanto a minha.

No meu caso, o problema depende do modo padrão do SELinux, que é definido como reforçando . Definindo o SELinux como permissivo , posso permitir que meu script seja executado na inicialização (e sempre que eu testá-lo com o systemctl start ...).

Eu realmente não entendo os detalhes do SELinux e parece que estou mexendo com algo maior do que eu. Convido outras pessoas a expandirem essa solução de maneira mais profissional.

Em /etc/selinux/config

defina a linha

SELINUX = enforcing

para

SELINUX = permissive

Permitiria a execução do arquivo de inicialização. Atenciosamente.

    
por 19.03.2017 / 04:21