ok. Problema SELinux. Ao criar algumas coisas novas relacionadas ao serviço existente, você precisa ter certeza de que o serviço terá acesso apropriado aos seus arquivos. O log do seu arquivo propõe que ele não tem (a menos que seja executado como unconfined_t
).
executing action "/etc/acpi/actions/lid.sh "button/lid LID open""
action exited with status 126
A execução do comando acima falha (status de saída 126), o que significa que o tipo de fonte apmd_t
não tem capacidade de executar seu arquivo (que possui rótulos desconhecidos para mim). Navegando pela política, como:
$ sesearch -A -s apmd_t -p execute /etc/selinux/targeted/policy/policy.*
podemos notar a linha
allow apmd_t apmd_exec_t : file { ioctl read getattr lock execute execute_no_trans entrypoint open }
permitindo executar apmd_exec_t
types. Alterar os rótulos de seu executável para esse tipo deve avançar:
# chcon -t apmd_exec_t /etc/acpi/actions/lid.sh
Mais adiante, você provavelmente terá problemas ao escrever no arquivo /home/user/lid.txt
, que provavelmente está rotulado como home_t
ou o que for. Seu serviço pode gravar por exemplo apmd_tmp_t
:
$ sesearch -A -s apmd_t -p write /etc/selinux/targeted/policy/policy.*
allow apmd_t apmd_tmp_t : file { ioctl read write create getattr setattr lock append unlink link rename open } ;
Portanto, se você alterar o contexto do seu arquivo de destino para apmd_tmp_t
, isso deve funcionar para você:
# chcon -t apmd_tmp_t /home/user/lid.txt
Esta solução não é permanente. Mais correto seria definir sua própria política cobrindo esses arquivos e contextos, ou mover os arquivos para locais onde o contexto é por padrão. Você deve conseguir alguma ajuda da auditoria ( ausearch -m AVC
e audit2allow
utility). Se algo não funcionar, me avise.