必须用visudo编辑sudoers文件,因其自动校验语法、加锁防冲突、阻止错误写入;推荐使用/etc/sudoers.d/目录模块化管理,遵循最小权限原则精确授权命令路径,并通过sudo -l和日志审计验证。

直接编辑 /etc/sudoers 风险极高,语法出错会导致 sudo 失效、系统失去管理能力。必须用 visudo——它会自动校验语法、加锁防冲突、集成安全编辑流程。
用 visudo 编辑 sudoers 文件
以 root 或已有 sudo 权限的用户执行:
-
sudo visudo—— 默认调用 vi/vim;不熟悉 vi 可先设编辑器:EDITOR=nano sudo visudo - 文件打开后,移动到末尾(按
G),按i进入插入模式 - 添加规则后,按
Esc,输入:wq保存退出 - 保存时 visudo 自动检查语法,报错则无法写入,避免配置损坏
给普通用户赋全权(基础但需谨慎)
在文件末尾添加一行:
-
username ALL=(ALL:ALL) ALL—— 用户可在任意主机以任意身份运行任意命令 - 替换
username为实际用户名,如alice ALL=(ALL:ALL) ALL - 保存后立即验证:
sudo -l -U username,应显示(ALL : ALL) ALL
按需限制命令范围(推荐做法)
遵循最小权限原则,只放行必要操作:
- 单条命令:
bob ALL=(root) /usr/bin/systemctl restart nginx - 多条命令(逗号分隔、无空格):
devops ALL=(root) /usr/bin/apt, /usr/bin/systemctl, /usr/sbin/reboot - 用别名统一管理:
Cmnd_Alias DEPLOY = /usr/bin/systemctl start app*, /usr/bin/rsync%deployers ALL=(root) DEPLOY
启用模块化管理(适合多人/生产环境)
避免直接改主配置,用 /etc/sudoers.d/ 目录实现清晰拆分:
- 创建独立配置文件:
sudo visudo -f /etc/sudoers.d/10-webadmin - 在里面写规则(格式同主文件),保存即生效
- 设严格权限:
sudo chmod 440 /etc/sudoers.d/10-webadmin - 所有
.sudoers.d/下文件按字母序加载,支持版本控制和回滚
每次修改后必做两件事
确保配置可靠、可审计:
- 语法检查:
sudo visudo -c,输出parsed OK才算通过 - 日志验证:sudo 操作默认记入
/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(RHEL/CentOS),定期查看能发现异常提权行为











