Solução 1: sudo
regras
Adicione ao seu arquivo sudoers
(usando visudo
) a seguinte regra:
<user_name> ALL=(root) NOPASSWD:<path/to/your/script>
Substituindo <user_name>
pelo seu nome de login do usuário não-root e <path/to/your/script>
pelo caminho absoluto pelo que você deseja executar.
A mesma operação pode ser feita colocando essa regra dentro de um arquivo em /etc/sudoers.d
. Observe que esse arquivo deve ser de propriedade de root:root
e ter o modo 0440 para funcionar com sudo
.
O NOPASSWD
é opcional aqui, dependendo se você deseja que seu usuário forneça a senha para autenticar a ação ou não. Isso depende apenas das suas decisões sobre quem pode fazer o que e como é fácil.
Depois disso, você pode executá-lo com sudo <script>
do seu usuário não-root.
NOTA: verifique as regras de sudo
do seu usuário com sudo -l
Solução 2: (PITA) Verifique todas as propriedades e permissões
Para permitir que um usuário não-root execute como o próprio script, certifique-se de que tudo feito pelo script e pelo daemon que inicia dentro esteja dentro das ações permitidas do usuário em execução. Isso significa:
- O usuário deve ter permissões adequadas para qualquer dispositivo usado pelo daemon
- O usuário deve ter permissões adequadas para ler / gravar / executar qualquer pasta dentro de um caminho que tente acessar
- O usuário deve ter permissões adequadas para ler / gravar qualquer arquivo que precise ser aberto.
Então, sim, é possível, mas eu definitivamente escolheria a regra sudo
EDIT : Claro, você precisará deletar a linha no script onde o UID é comparado com 0 (root) feito aqui
[...]
if [ 'id -u' -ne 0 ]; then
[...]