在Linux系统中,sudo命令用于以超级用户权限执行操作,默认情况下每次执行都需要输入当前用户的密码。如果日常操作中需要频繁使用sudo,反复输入密码会显得繁琐,我们可以通过修改sudoers配置文件实现sudo免密执行,同时不会影响系统的整体安全性。

方法一:针对单个用户配置sudo免密
修改sudoers文件不能直接用普通文本编辑器打开,需要使用visudo命令,这个命令会在保存时自动检查语法错误,避免配置出错导致sudo无法使用。
操作步骤
- 打开终端,执行
visudo命令,默认会打开/etc/sudoers文件 - 找到文件中类似
root ALL=(ALL:ALL) ALL的配置行 - 在该行下方添加配置:
用户名 ALL=(ALL:ALL) NOPASSWD: ALL,将用户名替换为实际需要配置的用户名 - 按Ctrl+O保存,Ctrl+X退出即可生效
配置完成后,该用户执行所有sudo命令都不需要再输入密码,示例如下:
# 假设用户名为testuser,配置前执行sudo需要输入密码 testuser@linux:~$ sudo apt update [sudo] password for testuser: # 配置后执行同样的命令,直接执行无需密码 testuser@linux:~$ sudo apt update Hit:1 http://ipipp.com/ubuntu jammy InRelease
方法二:针对用户组配置sudo免密
如果需要给多个用户配置sudo免密,逐个配置单个用户会比较麻烦,可以直接针对用户组进行配置,属于该组的所有用户都会生效。
操作步骤
- 先确认需要配置的用户组,比如常用的sudo组,或者自定义用户组
- 执行
visudo命令打开sudoers文件 - 找到
%sudo ALL=(ALL:ALL) ALL这样的组配置行,如果没有可以手动添加 - 修改为
%sudo ALL=(ALL:ALL) NOPASSWD: ALL,%后面跟的是用户组名 - 保存退出后,所有属于sudo组的用户执行sudo都无需输入密码
如果需要自定义用户组,可以先创建用户组,再把用户加入组:
# 创建自定义用户组nopasswd_sudo sudo groupadd nopasswd_sudo # 把testuser加入该组 sudo usermod -aG nopasswd_sudo testuser # 然后在visudo中添加配置 %nopasswd_sudo ALL=(ALL:ALL) NOPASSWD: ALL
配置注意事项
- 必须使用
visudo命令修改sudoers文件,不要直接用vim、nano等编辑器打开,否则语法错误会导致所有sudo命令无法使用 - 配置时用户名和用户组名要写正确,用户组名前面需要加%符号,单个用户名不需要
- 如果只需要部分命令免密,可以把
ALL替换为具体命令路径,比如只允许免密执行apt命令:testuser ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt - 修改完成后可以新开一个终端测试,避免当前终端环境变量未更新的问题
注意:生产环境中不建议给普通用户配置所有命令的sudo免密,尽量只开放必要的命令权限,降低安全风险。
常见问题排查
如果配置后还是提示需要输入密码,可以检查以下几点:
- 确认用户名或用户组名拼写正确,用户组配置是否加了%前缀
- 确认用户是否属于配置的用户组,可以用
groups 用户名命令查看 - 检查sudoers文件中是否有其他更靠后的配置覆盖了当前配置,sudoers文件的配置是从上到下生效的,后面的配置会覆盖前面的