Não há uma maneira totalmente portátil de verificar a senha do usuário. Isso requer um executável privilegiado, então isso não é algo que você pode fazer do zero. O PAM , que é usado na maioria dos sistemas Linux não incorporados, bem como em muitos sistemas incorporados e na maioria das outras variantes Unix, vem com um binário setuid mas ele não tem uma interface shell direta, você precisa ir através da pilha PAM.
Você pode usar uma ligação PAM em Perl, Python ou Ruby .
Você pode instalar uma das várias implementações checkpassword
.
Se o usuário tiver permissão para executar o sudo para qualquer coisa, então sudo -kv
solicitará a autenticação (a menos que isso tenha sido desabilitado na configuração do sudo). Mas isso não funciona se não houver regra de sudoers em relação ao usuário.
Você pode executar su
. Isso funciona na maioria das implementações. Esta é provavelmente a melhor aposta no seu caso.
if su -c true "$USER"; then
echo "Correct password"
fi