允许用户运行特定命令

允许用户运行特定命令

如何让用户运行特定的 sudo 命令而无需输入密码?

我已经尝试了以下操作:

我有一个/usr/local/bin/perform-update具有以下权利的脚本-rwxr-xr-x 1 root root

#!/bin/bash

sudo apt-get update
sudo apt-get -y dist-upgrade
sudo apt-get -y autoremove
sudo snap refresh

我还有一个john属于 sudoers 的用户。他可以通过输入 来执行命令perform-update,但他需要输入密码。为了让他在使用此命令时无需输入密码,我尝试使用 添加新行sudo visudo

john    ALL=(ALL) NOPASSWD: /usr/local/bin/perform-update

但用户在调用命令时仍需要输入密码perform-update。因此我使用以下命令添加了所有必要的 apt 和 snap 命令sudo visudo

john    ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt -y dist-upgrade, /usr/bin/apt -y autoremove, /usr/bin/snap refresh

但用户在调用命令时仍然需要输入密码perform-update

我需要做什么才能让他在执行时不必输入任何密码perform-update

编辑1:

根据@waltinator 和@terdon 的回答,我更新了以下内容。

/usr/local/bin/perform-update

#!/bin/bash

sudo apt update
sudo apt -y dist-upgrade
sudo apt -y autoremove
sudo snap refresh

sudo visudo

john    ALL=(ALL) NOPASSWD: /usr/local/bin/perform-update
john    ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt -y dist-upgrade, /usr/bin/apt -y autoremove, /usr/bin/snap refresh

perform-update不幸的是,当我以用户身份调用时,系统仍要求我输入密码john。错误在哪里visudo

相关内容