How to Enter Sudo Password in GUI Using Askpass in Linux

August 29, 2023

Frequently, we're required to provide superuser passwords for administrative access to the system. For instance, when mounting a disk/drive using the mount command or modifying a root file like /etc/default/grub, we usually rely on the terminal to enter the password. However, there are instances when we wish to input these passwords through a Graphical User Interface (GUI) rather than solely relying on the terminal. To accomplish this, we can create an "askpass" helper using Zenity.

In this article, I will discuss the concept of the askpass helper, explain how to set it up, and provide insight into how I've integrated it into my daily workflow.

What is Askpass Helper?

Normally, when executing a command with sudo, we're prompted to enter the password within a terminal. The askpass helper is a program employed by sudo to manage password requests. It often involves a Graphical User Interface (GUI) that facilitates entering the password.

How to create the Askpass Helper?

To better grasp how the Askpass Helper operates, let's create a basic example using a tool called zenity. Zenity is a GUI toolkit capable of generating dialog boxes within scripts. Here's how you can establish your own Askpass Helper:

  1. Open a text editor and create a new file. You might name it something like zenity_askpass.sh.
nvim ~/.my_scripts/zenity_askpass.sh
  1. Insert the following lines into the file:
#!/bin/bash
zenity --password --title="Sudo password prompt"

zenity script for askpass in sudo

This script employs Zenity to create a password prompt dialog.

  1. Save and close the file.

📔Note: Ensure that the .my_scripts directory is included in your PATH, and remember to make the script executable using the chmod command. For information on creating scripts, refer to this article.

Integrating the Askpass Helper with Sudo

With our Askpass Helper script in hand, we need to integrate it with sudo. There are two methods to achieve this.

Method 1: Setting the Askpass Helper for All Users

To accomplish this, you need to configure the helper in the /etc/sudo.conf file. Follow these steps:

  1. Open the file using your preferred text editor (neovim, vim, nano, gedit, anything):
sudo nvim /etc/sudo.conf

setting askpass for all users

  1. Uncomment the highlighted line by removing the hash symbol #. Replace /path/to/askpass with the path to your Zenity script.

Method 2: Setting the Askpass Helper for a Specific User

This method, personally preferred by me, prevents meddling with root files, which may require updates upon system upgrades. To implement this method, simply add the following line to the ~/.profile or ~/.xprofile file (or other files depending upon your display server):

export SUDO_ASKPASS="$HOME/.my_scripts/zenity_askpass.sh"

That's all that's needed.

The next time you execute a sudo command like sudo --askpass, the askpass helper will be utilized.

askpass using zenity

📔Note: After setting up these paths in your ~/.profile and/or /path/to/askpass, it's advisable to restart your system (although a simple re-login should suffice for applying changes to ~/.profile and ~/.xprofile).

Practical Applications of the Askpass Helper

The Askpass Helper boasts several practical applications that greatly enhance daily tasks.

Application 1: Editing Root Files with Neovim

Imagine you want to edit system configuration files using Neovim, a popular text editor. Saving these files typically demands administrative privileges, and here's where the Askpass Helper proves valuable. By configuring it, you can seamlessly save files using Neovim's commands like:

:w !sudo tee % <CR>

Neovim triggers the Askpass Helper to prompt you for your password through a user-friendly Zenity dialog, ensuring secure editing. If you haven't yet created an Askpass Helper, you'll be prompted to do so.

saving root files in neovim using askpass

Application 2: Binding Shortcut Keys to Sudo Commands

Suppose you want to bind a shortcut key to a command/script containing sudo (e.g., mounting a disk/drive using the mount command). With sudo --askpass, you can avoid launching the terminal to input the password.

Numerous other applications exist, such as package installation without the terminal (though it's not recommended) and GUI-based administrative interactions with your system.

Conclusion

The Askpass Helper significantly enhances secure and user-friendly password prompts, elevating your experience when interacting with the computer system. By understanding its functions and applications, you can take command of how password prompts are managed in various scenarios, streamlining your administrative tasks while bolstering security.

That concludes our discussion. Thank you. If you have any comments or suggestions, feel free to share them in the comments section below.