给普通用户开 sudo,优先加组;个别场景再用独立规则。sudo 允许被授权用户以超级用户身份执行命令[1]。
方式一:加入系统 sudo 组
Ubuntu/Debian 默认有 sudo 组,加入即可获得授权[3]:
usermod -aG sudo <用户名>
登录新 shell 或运行 newgrp sudo 后生效。
验证:
su - <用户名> -c "sudo -n true; echo OK"
输出 OK 即成功。
方式二:创建独立 sudoers 规则
需要为单个用户限定命令时,用 /etc/sudoers.d/ 目录:
# 1. 生成规则文件(权限 0440)
cat > /etc/sudoers.d/10-myuser <<'EOF'
myuser ALL=(ALL) NOPASSWD:ALL
EOF
chmod 0440 /etc/sudoers.d/10-myuser
# 2. 语法检查(必须先做)
visudo -c
行首写用户名,后跟主机、runas、命令列表。配置文件的语法和结构由 visudo 检查[2]。
回滚
rm /etc/sudoers.d/10-myuser
# 或组方式
gpasswd -d <用户名> sudo
排错速查
| 现象 | 原因 | 处理 |
|---|---|---|
sudo: 未知用户 |
用户名错误 | 检查 /etc/passwd |
parse error |
sudoers 语法有误 | visudo -c 定位 |
not in sudoers |
未加组且无规则 | 用 root 修 sudoers |
需要密码 |
规则未带 NOPASSWD | 确认行尾选项 |
实测与局限性
- 实测环境:WSL2 Ubuntu 24.04,Sudo 1.9.15p5。
- 已验证:组方式、独立规则、visudo 语法校验、NOPASSWD 生效。
- 未覆盖:LDAP/SSSD 集中授权、AIX/Solaris 等非 Linux 平台、安全策略模块(pam_env、pam_limits)对 sudo 的联动限制。
参考资料
- [1] Sudo Manual(sudo-ws)
- [2] visudo(8) – Linux manual page (man7.org)(man7-visudo)
- [3] RootSudo – Ubuntu Community Help Wiki(ubuntu-sudo)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。