[sudo-users] No error message if reading password fails
rdiezmail-temp2 at yahoo.de
Mon Oct 8 04:08:59 MDT 2018
I am using sudo version 1.8.21p2 (whatever comes with Ubuntu 18.04).
I normally run scripts within Emacs, in a compilation buffer. Such
buffers expect no interaction, and reading from stdin tends to hang. So
I have set this option to make it fail (instead of hanging):
(setq compilation-disable-input t)
If I try to run sudo inside such a compilation buffer, sudo fails to
read the password, and it exits with status code 1. The trouble is, it
does not display any error message at all. It took me a while to figure
out which command was failing inside my script.
I investigated further, and something similar happens without Emacs too:
rdiez at UbuntuMate:~$ sudo -S -- ls </dev/null
[sudo] password for rdiez:
Instead of waiting for the password after printing the password prompt,
sudo quits, as it cannot really read the password. The exit status code
is 1, but no error message is printed.
It would be nice if sudo printed some error indication to stderr.
I thought that maybe sudo was interpreting this scenario as "empty
password", which is not the right password. But then I was expecting the
"Sorry, try again." message.
Closing the stdin file descriptor beforehand as follows seems to have
the same effect:
sudo -S -- ls <&-
More information about the sudo-users