Para os propósitos de um script bash, preciso solicitar ao usuário a senha sudo
, se ainda não tiver sido inserida (e se o usuário não tiver sudo
privileges no momento em que executar o script ).
Primeiro, solicito a senha com dialog
senha bog e, em seguida, alimente-a com sudo
, assim:
SUDOPWD=$(dialog --title "Password" --clear --passwordbox "Enter your sudo password" 10 30 2>&1 > /dev/tty)
echo ${SUDOPWD} | sudo -Sn -v
Mas, infelizmente, isso não funciona! Aparentemente, -S
(leia a senha de stdin
) e -n
(não-interativo sudo
) não são compatíveis! Com -n
presente, a senha sendo alimentada para sudo
é ignorada (e, portanto, nenhuma elevação ocorre) e sem ela sudo
solicita a reentrada se uma senha incorreta foi digitada.
Existe alguma maneira de validar sudo
senha sem solicitar novamente se não é a correta?
Inevitavelmente, alguém indicará que não se deve reinventar a roda e usar apenas o recurso fornecido por
sudo
, ou que alimentar uma senha para
sudo
por meio de um cano tem implicações de segurança. Estou ciente desses fatores, e ainda gostaria de fazer o que estou delineando acima, é possível. Eu também não quero digitar os comandos em
/etc/sudoers
, recompilar
sudo
(como o script deve ser um pouco portátil), ou desabilitar
sudo
password prompt em geral (apenas neste script).
Estou trabalhando nisso no Ubuntu 16.04.