Linux运行中每次调用sudo都需要输入密码,如果频繁需要调用可能会显的非常麻烦,华纳云在本篇中分享如何配置sudo命令在不需要输入密码情况下直接运行。
这个设置在/etc/sudoers文件中完成,该文件驱动 sudoers 使用sudo 命令的默认安全策略插件,在用户权限规范部分下。sudoers文件中默认会启用authenticate参数用于身份验证,设置这个参数用户使用sudo命令就必须通过密码或者其他身份验证。可以用nopasswd标签覆盖此默认设置:
user_list host_list=effective_user_list tag_list command_list
在 `sudo` 配置中,以下是关键参数的简述:user_list指已授权使用 `sudo` 的用户或用户组别名。host_list指定用户可以在哪些主机上使用 `sudo`。effective_user_list定义用户必须以哪些身份运行 `sudo`。tag_list包含特定标签,如 `NOPASSWD`,用于指定无密码执行 `sudo`。command_list列出用户可以通过 `sudo` 执行的命令或命令别名。
为允许用户用sudo执行全部命令无需密码,要打开sudoers文件:
$ sudo visudo
添加以下内容:
aaronkilik ALL=(ALL) NOPASSWD: ALL
对于组情况,可以使用组前的字符%,标识该组sys全部成员使用sudo可以免密码运行全部命令。
%sys ALL=(ALL) NOPASSWD: ALL
允许用户使用sudo给定命令无需密码:
aaronkilik ALL=(ALL) NOPASSWD: /bin/kill
允许组成员使用sudo无需密码:
%sys ALL=(ALL) NOPASSWD: /bin/kill, /bin/rm
无密码sudo可能存在一定风险,因此设置前需要了解这样操作对系统的影响。如果需要撤销无密码sudo配置可以按照以下步骤。
先打开终端,使用visudo命令:
sudo visudo
visudo编辑器中找到之前添加的允许无密码操作的sudo配置行:
kimi ALL=(ALL:ALL) NOPASSWD: ALL
或者对于用户组:
%sys ALL=(ALL:ALL) NOPASSWD: ALL
想撤销这些无密码sudo设置,可以完全移除该行,如果不行该用户/该组无密码运行sudo命令可以直接删除整行。还有一种情况是希望保留该用户或者用户组的sudo权限,但是要输入密码。可以简单删除NOPASSWD:标签,使配置行变为:
kimi ALL=(ALL:ALL) ALL
或对于用户组:
%sys ALL=(ALL:ALL) : ALL
最后保存并退出。在visudo中,可以按Ctrl+X然后按Y表示保存更改。最后按Enter键退出。配置更改后,应该测试以确保无密码sudo已经被撤销。用普通用户执行该命令:
sudo ls /root
系统提示输入密码,则说明无密码sudo设置已经撤销成功。