2

Every time I enter a wrong sudo command and I want to cancel the command, I use Ctrl+C. On my previous Ubuntu 18 installation, it would cancel immediately and return to the prompt. On my Arch system, it prompts me again for my sudo password, so I have to press it twice every time for it to cancel and restore the command prompt. Why does this happen? Is there anything I can do to stop it from prompting for the password the second time after I've cancelled?

[12:47:54]pintert3@~% sudo echo 'hello'
[sudo] password for pintert3:
[sudo] password for pintert3:
[12:48:40]pintert3@~%

Here's my /etc/sudoers file:

## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##

##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias    WEBSERVERS = www1, www2, www3

##
## User alias specification
##
## Groups of users.  These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias    ADMINS = millert, dowdy, mikef

##
## Cmnd alias specification
##
## Groups of commands.  Often used to group related commands together.
# Cmnd_Alias    PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
#               /usr/bin/pkill, /usr/bin/top
Cmnd_Alias  REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff

##
## Defaults specification
##
## You may wish to keep some of the following environment variables
## when running commands via sudo.
##
## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
##
## Run X applications through sudo; HOME is used to find the
## .Xauthority file.  Note that other programs use HOME to find   
## configuration files and this may lead to privilege escalation!
# Defaults env_keep += "HOME"
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
##
## Desktop path settings
# Defaults env_keep += "QTDIR KDEDIR"
##
## Allow sudo-run commands to inherit the callers' ConsoleKit session
# Defaults env_keep += "XDG_SESSION_COOKIE"
##
## Uncomment to enable special input methods.  Care should be taken as
## this may allow users to subvert the command being run via sudo.
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot.  Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/usr/local/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output

##
## Runas alias specification
%wheel ALL=(ALL) NOPASSWD: REBOOT


##
## User privilege specification
##
root ALL=(ALL) ALL

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL) ALL

## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
# Defaults targetpw  # Ask for the password of the target user
# ALL ALL=(ALL) ALL  # WARNING: only use this together with 'Defaults targetpw'

## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

# Reset environment by default
Defaults    env_reset
# Set default editor to vim, and do not allow visudo to use EDITOR/VISUAL
Defaults    editor=/usr/bin/vim,    !env_editor
Defaults passwd_timeout=0
#Defaults passprompt="[sudo] password for %p: "
Defaults timestamp_timeout=10
Defaults insults
  • just curious, what happens if you enter a correct sudo command? do you need to enter the passwd twice in that case? – computronium Sep 29 at 10:10
  • No, I only need to enter it once if it's correct. Only happens when I try to cancel. – pintert3 Sep 29 at 10:12
  • if you are using XOrg or Wayland, does this issue crop up only during gui session, or also on virtual consoles? Also mention which display server you are using, if relevant to you. – computronium Sep 29 at 10:14
  • 1
    Strange. I can't reproduce this on my Arch system. Could it be a setting in sudoers? Can you edit your question and include your /etc/sudoers file? – terdon Sep 29 at 10:40
  • 4
    Is sudo a wrapper (alias, function, or shell script)? type -a sudo would help there. Another odd idea is that your Control-C is sending something different than you expect. – Jeff Schaller Sep 29 at 11:59
3

So after a good time troubleshooting in the comments, the problem was found. The culprit was the sudo alias in my .zshrc : alias sudo='sudo -v; sudo'; Special thanks to JeffSchaller, computronium and fra-san for the help in the comments.

| improve this answer | |
  • @ilkkachu Using sudo alone doesn't refresh the cache; I'm guessing that's why it uses the timeout. To make sudo reset the timeout, archwiki offers that as a solution. – pintert3 Oct 5 at 22:50
  • ah okay then. I misremembered that somehow... – ilkkachu Oct 6 at 9:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.