如何配置运行 sudo 命令时不输入密码

sudo 命令允许受信任的用户以另一个用户(默认情况下是 root 用户)身份运行程序。如果你在命令行上花了很多时间,那么 sudo 将会一直使用其中一个命令。

通常,要授予 sudo 访问权限,请将用户添加到 sudoers 文件中定义的 sudo 组。在 Debian , Ubuntu 及其衍生产品上,该 sudo 组成员获得 sudo 权限,而基于 RedHat 的发行版如 CentOS 和 Fedora , sudo 组的名称是 wheel

在运行 sudo 命令之前,系统将提示该组的每个成员输入密码。这增加了额外的安全层,是向用户授予 sudo 权限的首选方式。

但是,在某些情况下,例如运行自动脚本,您可能需要配置 sudoers 文件并允许某些用户运行 sudo 命令而不要求输入密码。

将用户添加到 Sudoers 文件

sudoers 文件包含确定用户和组的 sudo 权限的信息。

您可以通过修改 sudoers 文件或将配置文件添加到 /etc/sudoers.d 目录来配置用户的 sudo 访问权限。此目录中的所有文件都会被导入到 sudoers 文件中。

在进行任何更改之前,最好备份当前文件:

sudo cp /etc/sudoers{,.backup_$(date +%Y%m%d)}

日期命令将追加当前日期到备份文件名。

使用以下 visudo 命令打开文件 /etc/sudoers

sudo visudo

更改 sudoers 文件时始终使用 visudo。 此命令检查编辑后的内容,如果语法错误,则不会保存更改。如果使用文本编辑器打开文件,语法错误将导致丢失 sudo 访问权限。

在大多数系统上,该 visudo 命令使用 vim 文本编辑器打开 /etc/sudoers 文件。如果您没有使用 vim 的经验,可以使用其他文本编辑器。例如,如果要将编辑器更改为 nano 请运行:

sudo EDITOR=nano visudo

向下滚动到文件的末尾并添加以下行,该行允许用户 “buzheng” 使用 sudo 运行任何命令而无需开始询问密码:

在 /etc/sudoers 文件

buzheng  ALL=(ALL) NOPASSWD:ALL

不要忘记使用您要授予访问权限的用户名更改 “buzheng” 。

如果要允许用户仅运行特定命令而不输入密码,请在 NOPASSWD 关键字后面指定命令。

例如,要仅允许使用的命令 mkdirmv 命令:

在 / etc/sudoers 文件

buzheng ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/mv

完成后,保存文件并退出编辑器

使用 /etc/sudoers.d

您可以将具有授权规则的新文件添加到 /etc/sudoers.d 目录,而不是编辑 sudoers 文件。这种方法将使 sudo 权限的管理更加可维护。

打开文本编辑器并创建文件:

sudo nano /etc/sudoers.d/buzheng

您可以根据需要命名文件,但通常最好使用用户名作为文件名。

/etc/sudoers.d/buzheng

添加与添加到 sudoers 文件中相同的规则:

buzheng  ALL=(ALL) NOPASSWD:ALL

最后,保存文件并关闭编辑器。

结论

当您拥有非 root 用户需要执行管理任务的脚本时,运行不带密码的 sudo 非常有用。