sudo bloqueado no Linux: como identificar e desbloquear o usuário
Usuário com a senha certa e o sudo dizendo que está errada? Pode ser bloqueio por tentativas. Como confirmar no log e desbloquear com pam_tally2 ou faillock, dependendo da versão.
Boa noite pessoal, tudo bem?
O suporte de uma ferramenta que roda em um servidor que eu administrava entrou em contato comigo: o usuário deles não conseguia mais executar comandos com sudo. Aparecia a mensagem como se a senha estivesse errada, mas a mesma senha funcionava normalmente no login do servidor.
Investigando
Para analisar, pedi para o administrador da ferramenta tentar de novo o sudo su - enquanto eu acompanhava o log de autenticação:
# Red Hat e derivados
tail -f /var/log/secure
# Debian e Ubuntu
tail -f /var/log/auth.log
# ou, em qualquer distribuição com systemd
journalctl -f _COMM=sudo
No log apareceu o erro da senha e, junto, a contagem de tentativas negadas. Em algum momento o usuário tinha sido bloqueado, ou porque alguém realmente errou a senha várias vezes, ou por algum script ou sessão tentando autenticar repetidamente.
No meu caso, os servidores tinham hardening de segurança aplicado, e um dos itens era justamente bloquear o usuário depois de algumas tentativas erradas. Quem faz isso é o PAM, configurado em /etc/pam.d/.
Desbloqueando
O comando depende do módulo PAM que o servidor usa. Na época, era o pam_tally:
# servidores antigos (RHEL 5 e 6)
/sbin/pam_tally --user UsuarioBloqueado --reset
# RHEL 6 e 7 com pam_tally2
pam_tally2 --user UsuarioBloqueado # mostra quantas falhas
pam_tally2 --user UsuarioBloqueado --reset # zera e desbloqueia
Nas versões atuais (RHEL 8, 9 e 10, Rocky, Alma e também Ubuntu e Debian recentes), o pam_tally2 não existe mais. Quem faz esse papel é o pam_faillock:
# ver as falhas registradas
faillock --user UsuarioBloqueado
# desbloquear
faillock --user UsuarioBloqueado --reset
Pronto! Pode pedir para o usuário testar de novo que vai funcionar.
Onde ajustar a regra
Nas versões com faillock, a política fica em /etc/security/faillock.conf:
# quantas falhas até bloquear
deny = 5
# por quanto tempo fica bloqueado, em segundos (0 = só desbloqueia manualmente)
unlock_time = 900
# janela de tempo em que as falhas são contadas
fail_interval = 900
sudoers só os comandos necessários, e com chave SSH em vez de senha. Menos senha digitada, menos bloqueio, e o log fica muito mais claro.
Considerações Finais
"A senha está certa, mas o sudo não aceita" quase sempre tem uma explicação no log. Primeiro veja o que o PAM está registrando, depois desbloqueie com o comando da sua versão e, por último, descubra quem estava errando a senha.
Abraços e até a próxima.
:wq!
Post publicado originalmente em janeiro de 2016 e atualizado em novembro de 2026.

Comentários
Postar um comentário