Eu tenho algumas ferramentas automatizadas que precisam ser executadas como um usuário específico. O nome de usuário é "ig_root" e é usado apenas por uma ferramenta de monitoramento (verifica espaço em disco, banco de dados, carga de trabalho da CPU, etc) que nos envia avisos quando algo pode precisar de intervenção humana.
O que precisamos fazer é emitir um comando sudo para executar as coisas como o usuário ig_root. Eu tenho minha conta "invadm" que é membro do grupo sudo e pode "sudo su - root", mas solicita uma senha. O que eu preciso configurar é poder fazer algo semelhante para um usuário não root, mas isso NÃO solicita a senha.
Em outras palavras, como usuário "invadm", queremos fazer isso:
# sudo -u ig_root check_dbspace
...sem ver isso:
[sudo] password for invadm:
Mas também quero conectar ao root para ainda exigir a entrada de senha para todos:
# sudo su - root
[sudo] password for invadm:
Isso é possível?
Minhas entradas atuais do visudo se parecem com isso no meu servidor de teste:
# User privilege specification
root ALL=(ALL:ALL) ALL
invadm ALL=(ig_root) NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Alguma ideia do que estou perdendo? Eu pensei que talvez eu tivesse que emitir o systemctl e parar/reiniciar algo, mas aprendi que não há daemon sudo para reiniciar. Eu também tentei sair e voltar para pegar qualquer novo ambiente... sem sorte.
No momento, a única conta que o sudo não pede uma senha é quando sou usuário root.
# sudo -u ig_root whoami
ig_root
Eu acho que o problema é que quando várias entradas correspondem para o mesmo usuário, a última correspondência é usada. Como
invadm
está no grupo sudo, a%sudo
entrada se aplica, daí a solicitação de uma senha.Basta mover suas regras específicas para o final do arquivo.