Por vários motivos, principalmente por não precisar lembrar a senha, esqueço as senhas das contas e preciso executar um comando que exija uma senha, como usar sudo
quando não o uso há muito tempo.
Geralmente, isso ocorre porque usamos chaves SSH para efetuar login na maior parte do tempo e precisamos de um comando que exija a senha, como alterar o shell, executar sudo ou algum outro comando que solicite a senha existente.
No que diz respeito à segurança, poder efetuar login no shell implica que o usuário está autorizado a executar o comando.
Neste caso, quero que o comando gere uma nova senha e a exiba na tela, usando algum pwgen
utilitário parecido.
Você poderia criar um programa como este:
Vamos chamar isso de
/usr/local/bin/reset-password
(por exemplo).Agora você pode ter uma
sudo
regra:Então um usuário pode executar
sudo /usr/local/bin/reset-password
e poderá alterar sua senha sem precisar digitá-la primeiro.Isso deve ser seguro porque
sudo
ele mesmo define aSUDO_USER
variável e, se você não executar issosudo
, não terá permissão para alterar ninguém, exceto sua própria senha.Se o usuário já tiver uma regra como
%wheel ALL=(ALL) ALL
essa, isso pode forçar a solicitação de uma senha. Nesse caso, essa regra pode ser reescrita para%wheel ALL=(ALL) ALL,!/usr/local/bin/reset-password
que não corresponda e a entrada sem senha funcionará.Você pode facilmente adicionar um componente "gerador de senhas" a este script e passá-lo para o
passwd
comando.