Debian 9: sudo without password

This article will describe how to omit sudo password. This will enable scripts with sudo be automated.

1 Install sudo package

If you install Debian 9 with setting root password, sudo package is not installed.

Switch to root user with root password, install sudo package and add your user to sudo group.

# apt install -y sudo
# gpasswd -a hiroom2 sudo # Change hiroom2 to username
# reboot

After reboot, switch to your user.

2 Omit sudo password

Run visudo and edit /etc/sudoers. This needs sudo password yet.

$ sudo visudo
[sudo] password for hiroom2:

Add "NOPASSWD:" at sudo group.

$ sudo diff -uprN /etc/sudoers.orig /etc/sudoers
--- /etc/sudoers.orig   2017-06-19 00:41:29.421047745 +0900
+++ /etc/sudoers        2017-06-19 00:41:41.481044752 +0900
@@ -20,7 +20,7 @@ Defaults      secure_path="/usr/local/sbin:/u
 root   ALL=(ALL:ALL) ALL

 # Allow members of group sudo to execute any command
-%sudo  ALL=(ALL:ALL) ALL
+%sudo  ALL=(ALL:ALL) NOPASSWD:ALL

 # See sudoers(5) for more information on "#include" directives:

Then it does not need sudo password.

3 Redirect with sudo

This is not how to omit sudo password. But scripts with sudo often needs the redirect with sudo.

For below example, command can run as privilege user but the redirect cannot be executed as privilege user.

$ sudo command > /etc/file

Using "sudo su -c" enable running the redirect as privilege user.

$ sudo su -c 'command > /etc/file'

Or tee command can be excuted as privilege user.

$ sudo command | sudo tee /etc/file