Systemd falha ao iniciar o serviço como raiz

1

Estou tentando iniciar um serviço para assinar os módulos do kernel do VirtualBox, seguindo link

Após ajustar os caminhos referenciados no script bash do Fedora, o script funciona quando executado manualmente como root. No entanto, o serviço sempre falha:

$ systemctl status sign-virtualbox.service 
● sign-virtualbox.service - Signing VirtualBox Kernel Modules for UEFI
   Loaded: loaded (/etc/systemd/system/sign-virtualbox.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code)
  Process: 3018 ExecStart=/root/module-signing/sign-vbox-modules.sh (code=exited, status=203/EXEC)
 Main PID: 3018 (code=exited, status=203/EXEC)

A saída de sudo journalctl -xe diz sign-virtualbox.service: Failed at step EXEC spawning /root/module-signing/sign-vbox-modules.sh: Permission denied

Permissões de arquivo:

$ sudo ls -l /root/module-signing/sign-vbox-modules.sh
-rwx------. 1 root root 309 Aug  7 11:35 /root/module-signing/sign-vbox-modules.sh

Como o serviço é iniciado como root, não deve haver um problema de permissões, deve haver?

    
por zaen 07.08.2018 / 17:58

1 resposta

0

A execução do binário provavelmente está sendo bloqueada pelo SELinux. Você pode confirmar isso nos logs de diário ou talvez nos logs de auditoria (em /var/log/audit/audit.log ) procurando por erros "avc".

Para resolver esse problema, recomendo que você hospede esse script em um diretório em que geralmente há scripts e binários, como /usr/local/bin , em vez de estar no diretório inicial do usuário raiz.

Depois de mover este script, execute restorecon para obtê-lo no tipo adequado de SELinux (que deve ser system_u:object_r:bin_t:s0 ou similar.)

Então:

mv /root/module-signing/sign-vbox-modules.sh /usr/local/bin/
restorecon /usr/local/bin/sign-vbox-modules.sh

Edite seu arquivo de serviço systemd para atualizar o caminho.

E se você quiser inspecionar que possui um tipo SELinux apropriado:

ls -lZ /usr/local/bin/sign-vbox-modules.sh
    
por 08.08.2018 / 04:02

Tags