Ubuntu sudo 免密配置
目标
让 ubuntu 用户执行 sudo 命令时不再需要输入密码。
原理
sudo 允许在 /etc/sudoers.d/ 目录下放置独立的授权文件,系统会在解析 /etc/sudoers 时一并读取。在其中写入 NOPASSWD 规则即可实现免密。
配置步骤
1. 创建 sudoers 规则文件
sudo bash -c 'echo "ubuntu ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ubuntu-nopasswd'
各字段含义:
| 字段 | 含义 |
|---|---|
ubuntu | 免密的目标用户 |
ALL=(ALL) | 允许在所有主机上以任意身份执行 |
NOPASSWD: ALL | 执行所有命令都不需要密码 |
2. 设置正确的文件权限
sudoers 文件对权限有严格要求,权限错误会导致 sudo 拒绝加载:
sudo chmod 440 /etc/sudoers.d/ubuntu-nopasswd
3. 校验语法
sudo visudo -c -f /etc/sudoers.d/ubuntu-nopasswd
输出 parsed OK 表示语法正确。
注意:语法校验前千万不要关闭当前终端,以防写错导致 sudo 无法使用。
4. 验证是否生效
sudo -n whoami
输出 root 即表示免密生效(-n 表示非交互模式,若不支持免密会直接报错)。
恢复为需要密码
删除规则文件即可恢复:
sudo rm /etc/sudoers.d/ubuntu-nopasswd
安全建议
-
NOPASSWD: ALL等于授予完全 root 权限,建议仅在受信任的个人环境使用。 -
如需限制范围,可改为仅对特定命令免密,例如:
ubuntu ALL=(ALL) NOPASSWD: /usr/bin/systemctl -
生产环境建议优先使用 sudo 密码 + 密钥登录的双重保护。