Foi um erro no meu script "auth" do PAM: o script foi encerrado sem nunca receber um "ok" ou "concluído".
Eu quero que o sudo se comporte assim para todos os usuários:
Se o usuário tiver atualmente uma senha não vazia, solicite a senha.
Se o usuário tiver uma senha vazia, solicite a senha e aceite a string vazia ou não solicite nada e permita.
Isso é possível? No momento, eu tenho (1), mas é o que acontece com um usuário com uma senha vazia:
$ sudo echo
Sorry, try again.
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts
Como alternativa, posso desativar a verificação de senha por usuário, mas não é isso que desejo, porque o usuário pode definir uma senha posteriormente e, em seguida, o sudo deve solicitá-la.
Eu não acho que isso seja possível porque sudo
não saberá que um usuário não tem uma senha ou que é a string vazia até que ela ( sudo
) apresente a senha, vazia ou não, Módulo PAM para validação. Portanto, sempre será necessário solicitar a senha ao usuário antes de prosseguir.
Seu único recurso aqui é configurar usuários que não exigem o uso de uma senha com a opção NOPASSWD
em seu arquivo sudoers. Mas isso é altamente inseguro, e eu recomendo que você considere seriamente qual é o seu objetivo final antes de continuar com esse método.
Este U & Q & A intitulado: Como você cria um usuário sem senha? sugeriu usar esse método que funcionou para mim.
$ sudo passwd --delete samtest
Removing password for user samtest.
passwd: Success
Agora, adicione uma linha como esta ao seu arquivo /etc/sudoers
. NOTA: Edite sempre este arquivo usando sudo visudo
.
samtest ALL=(ALL) NOPASSWD: ALL
Agora tente fazer login como usuário "samtest" sem nenhuma senha.
$ su - samtest
$
Agora, tente usar essa conta usando sudo
:
$ whoami
samtest
$ sudo echo
$
Perguntando por que sudo
através de um console funciona enquanto solicita uma senha por SSH?
Pelo menos no Ubuntu 16.04, a política padrão em /etc/pam.d/common-auth
contém:
auth [success=1 default=ignore] pam_unix.so nullok_secure
Os pam_unix (8) documentos manuais que nullok_secure
apenas permitem senhas vazias ao usar um dos TTYs em /etc/securetty
. Se essa limitação não for desejada, pode-se substituir nullok_secure
por nullok
.
Como alternativa, é possível permitir que um usuário específico use senhas vazias por meio de um arquivo NOPASSWD
sudoers, conforme descrito por slm.
Tags sudo