O sudo, vai muito além do que conceder acesso root a um usuário, com ele podemos por exemplo definir que um usuário comum possa ter privilégios elevados em um comando específico, de modo que não afete suas tarefas diárias e também não impacte de forma negativa o gerenciamento de acesso da instituição.
No howto de exemplo, demonstramos como um usuário ramon, possa alterar seu endereço de rede, usuando suas credencias de usuário.
Editando o sudoers
Nessa etapa alteramos os paramentros do sudoers para obtermos log e definição de paths seguros.
sudo visudo
Adicione os seguintes parâmetros ao visudo Estas configurações são úteis para definir o arquivo de log, paths seguros, número tentativas de acesso antes de fechar a requisição... entre outros parâmetros.
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults logfile="/var/log/sudo.log"
Defaults lecture="always"
Defaults badpass_message="Password is wrong, please try again"
Defaults passwd_tries=5
Defaults insults
Defaults log_input,log_output
Usuario especifico
No final do arquivo, adicione os parâmetros que definirão como o usuário poderá acessar a aplicação com privilégios elevados.
ramon ALL=NOPASSWD: /usr/sbin/ip
Trabalhando com grupos
Também é possível trabalhar com grupos de usuários, veja;
sudo groupadd admin_local
sudo usermod -a -G admin_local ramon
%admin_local ALL=NOPASSWD: /usr/sbin/ip
Dessa forma todo o usuário que fizer parte do grupo admin_local, poderá executar o programa com privilégios elevados.
Testando comando
sudo ip addr add dev enp1s0 192.168.122.245/24 broadcast 192.168.122.180
Removendo usuario do grupo
sudo gpasswd -d ramon admin_local
Monitorando alterações
tail -f /var/log/sudo.log