普通用户配sudo权限必须用visudo修改/etc/sudoers或sudoers.d下文件,语法正确后生效,推荐最小权限原则并记录日志审计。

给普通用户配 sudo 权限,核心是安全地修改 /etc/sudoers 文件,而不是直接编辑——错误配置可能导致整个系统无法使用 sudo,甚至锁死。最稳妥的做法始终是用 visudo,它会在保存前自动检查语法。
用 visudo 添加用户权限
这是唯一推荐的入门方式:
- 以 root 或已有 sudo 权限的用户登录,运行
sudo visudo - 在文件末尾新增一行,格式为:
用户名 ALL=(ALL:ALL) ALL
例如:为用户alice授权 →alice ALL=(ALL:ALL) ALL - 按 Esc,输入
:wq保存退出 - 立即验证:切换到该用户,执行
sudo -l,应看到类似(ALL : ALL) ALL的输出
按需限制命令范围(更安全)
授全权(ALL)风险高,日常运维建议只放行必要命令:
- 仅允许重启 Nginx:
bob ALL=(root) /usr/bin/systemctl restart nginx - 允许多个指定命令(用逗号分隔,无空格):
devops ALL=(root) /usr/bin/apt, /usr/bin/systemctl, /usr/sbin/reboot - 用
Cmnd_Alias管理命令组(适合多人共用场景):Cmnd_Alias DEPLOY = /usr/bin/systemctl start app*, /usr/bin/rsync<br>%deployers ALL=(root) DEPLOY
免密码执行(谨慎启用)
仅适用于自动化或高频低风险操作,必须配合命令白名单:
- 用户
backup免密运行 rsync:backup ALL=(root) NOPASSWD: /usr/bin/rsync - 开发组免密更新软件:
%developers ALL=(root) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade -
切勿写成
NOPASSWD: ALL—— 这等于交出 root 密码
用 sudoers.d 实现模块化管理
比直接改主配置更清晰、易维护,也方便版本控制:
- 创建独立配置文件:
sudo visudo -f /etc/sudoers.d/10-deploy-perms - 在里面写权限规则(格式同上),保存后自动生效
- 设好权限防止篡改:
sudo chmod 440 /etc/sudoers.d/10-deploy-perms - 所有
/etc/sudoers.d/下的文件都会被读取,按字母序加载
每次改完务必运行 sudo visudo -c 检查语法;所有 sudo 操作默认记入 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS),定期查看能及时发现异常提权行为。










