Modificando Permissões vs Execução de Script Raiz. O que é melhor?

1

Após cada suspensão, quando eu acordo meu laptop, ele nunca se conecta a nenhuma rede e precisa reiniciar o NetworkManager novamente. Então, por preguiça, eu escrevi este script que funciona bem como esperado.

Eu usei um bloco if para verificar se o script é sempre executado pelo usuário root:

if [ $(id -u) -ne 0 ]
then
    echo "ERROR : Root Priveleges Required"                                                                                       
    exit NOT_ROOT                                                                                                                 

else                                                                                                                                  
    netrestart                                                                                                                
fi

E eu dei a este script essa permissão (sendo root ao executar este comando):

chmod u+x netrestart

Agora, quando executo esse script como um usuário não raiz, ele mostra isso

bash: ./netrestart: Permission denied

E, em seguida, executar o script com sudo é executado com precisão

sudo ./netrestart

Acho que isso faz com que a verificação de raiz no script seja inútil. Agora eu tenho 2 perguntas:

  1. Devo remover essa parte do código ou ainda usá-la no script?

  2. O que é melhor e como?

    • Verificar se o usuário é root dentro do script e conceder permissões de execução a todos, por exemplo, chmod 755 netrestart
    • Definir as permissões necessárias certas no próprio script e não incluir a verificação de se o usuário é raiz dentro do script, por exemplo, chmod 711 netrestart
por C0deDaedalus 18.01.2018 / 09:18

1 resposta

0

Acho que seu roteiro pode ser condensado para:

#!/bin/bash

NOT_ROOT=2
sudo service network-manager restart || exit $NOT_ROOT
if service network-manager status
then
    echo "Successfully Restarted NetworkManager"
else
    echo "ERROR : Failed to work"
    exit 1
fi

sudo verificará o acesso root para você e solicitará, se necessário. A verificação service ... status informará com mais segurança se o NetworkManager foi iniciado normalmente.

Você pode conceder permissões de execução neste script para todos e sudo cuidará das verificações de permissão.

    
por muru 18.01.2018 / 09:41