How to Run Specific Sudo Commands Without a Password in Ubuntu?
Tags: ubuntu
Published: 2021-12-01 16:33:33

---
title: How to Run Specific Sudo Commands Without a Password in Ubuntu?
published: true
date: 2021-11-25 16:59:15 UTC
tags: Ubuntu
canonical_url: https://stackallflow.com/ubuntu/how-to-run-specific-sudo-commands-without-a-password-in-ubuntu/
---

<header>
<p><span style="font-size: 1.2em; color: initial;">password</span><span style="font-size: 1.2em; color: initial;">sudo</span></p>
</header>

On one particular machine I often need to run `sudo` commands every now and then.  
I am fine with entering password on `sudo` in most of the cases.

However there are **three `sudo` commands** I want to run **without entering password** :

- `sudo reboot`
- `sudo shutdown -r now`
- `sudo shutdown -P now`

How can I exclude these commands from password protection to `sudo`?

#### Accepted Answer

## Use the `NOPASSWD` directive

You can use the `NOPASSWD` directive in your [`/etc/sudoers` file](http://manpages.ubuntu.com/manpages/precise/en/man5/sudoers.5.html).

If your user is called `user` and your host is called `host` you could add these lines to `/etc/sudoers`:

```
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

```

This will allow the user `user` to run the desired commands on `host` without entering a password. All other [`sudo`](http://manpages.ubuntu.com/manpages/precise/en/man8/sudo.8.html)ed commands will still require a password.

The commands specified in the `sudoers` file _must_ be fully qualified (i.e. using the absolute path to the command to run) as described in the [`sudoers` man page](http://manpages.ubuntu.com/manpages/precise/en/man5/sudoers.5.html). Providing a relative path is considered a syntax error.

If the command ends with a trailing `/` character and points to a directory, the user will be able to run any command in that directory (but not in any sub-directories therein). In the following example, the user `user` can run any command in the directory `/home/someuser/bin/`:

```
user host = (root) NOPASSWD: /home/someuser/bin/

```

**Note:** Always use the command [`visudo`](http://manpages.ubuntu.com/manpages/precise/en/man8/visudo.8.html) to edit the `sudoers` file to make sure you do not lock yourself out of the system – just in case you accidentally write something incorrect to the `sudoers` file. `visudo` will save your modified file to a temporary location and will _only_ overwrite the real `sudoers` file if the modified file can be parsed without errors.

## Using `/etc/sudoers.d` instead of modifying `/etc/sudoers`

As an alternative to editing the `/etc/sudoers` file, you could add the two lines to a new file in `/etc/sudoers.d` e.g. `/etc/sudoers.d/shutdown`. This is an elegant way of separating different changes to the `sudo` rights and also leaves the original `sudoers` file untouched for easier upgrades.

**Note:** Again, you should use the command [`visudo`](http://manpages.ubuntu.com/manpages/precise/en/man8/visudo.8.html) to edit the file to make sure you do not lock yourself out of the system:

```
sudo visudo -f /etc/sudoers.d/shutdown 

```

This also automatically ensures that the owner and permissions of the new file is set correctly.

## If `sudoers` is messed up

If you did not use `visudo` to edit your files and then accidentally messed up `/etc/sudoers` or messed up a file in `/etc/sudoers.d` then you will be locked out of `sudo`.

The solution could be to fix the files using [`pkexec`](http://manpages.ubuntu.com/manpages/precise/en/man1/pkexec.1.html) which is an alternative to `sudo`.

To fix `/etc/sudoers`:

```
pkexec visudo

```

To fix `/etc/sudoers.d/shutdown`:

```
pkexec visudo -f /etc/sudoers.d/shutdown

```

If the ownership and/or permissions are incorrect for any `sudoers` file, the file will be ignored by `sudo` so you might also find yourself locked out in this situation. Again, you can use `pkexec` to fix this.

The correct permissions should be like this:

```
$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

```

Use `pkexec` like this to fix [ownership and permissions](https://help.ubuntu.com/community/FilePermissions):

```
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown

```

The post [How to Run Specific Sudo Commands Without a Password in Ubuntu?](https://stackallflow.com/ubuntu/how-to-run-specific-sudo-commands-without-a-password-in-ubuntu/) appeared first on [Stack All Flow](https://stackallflow.com).