Verifique se a opção 'requiretty' não está definida em / etc / sudoers.
Veja esta pergunta para obter mais informações: link
Eu tenho um systemd.socket chamado gunicorn.socket que eu gostaria de reiniciar depois de atualizar algum código em um servidor remoto.
Eu segui as etapas detalhadas em Como permitir que um usuário não raiz reinicie um serviço e systemctl
continue pedindo minha senha de usuário. Aqui está o que eu fiz tentando executar systemctl restart gunicorn.socket
com usuário john
:
# added an appadmin group to allow the restart command to john
addgroup appadmin
usermod -a -G appadmin john
visudo
Em sudoers
:
Cmnd_Alias MYAPP_CMNDS = /bin/systemctl start gunicorn.socket, /bin/systemctl stop gunicorn.socket, /bin/systemctl restart gunicorn.socket
%appadmin ALL=(ALL) NOPASSWD: MYAPP_CMNDS
Então sudo systemctl restart gunicorn.socket
funciona bem enquanto está no servidor, mas quando eu tento remotamente fico:
ssh example.com "sudo systemctl restart gunicorn.socket"
Failed to restart gunicorn.socket: Interactive authentication required.
See system logs and 'systemctl status gunicorn.socket' for details.
Alguma ideia? Estou usando o Ubuntu 17.04.
Atualização: adicionando conteúdo completo de /etc/sudoers
:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Cmnd alias specification
Cmnd_Alias MYAPP_CMNDS = /bin/systemctl start gunicorn.socket, /bin/systemctl stop gunicorn.socket, /bin/systemctl restart gunicorn.socket
%appadmin ALL=(ALL) NOPASSWD: MYAPP_CMNDS
# User privilege specification
root ALL=(ALL:ALL) ALL
john ALL=(ALL:ALL) 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
Verifique se a opção 'requiretty' não está definida em / etc / sudoers.
Veja esta pergunta para obter mais informações: link