
最简方式是将用户加入sudo(Ubuntu/Debian)或wheel(CentOS/RHEL)组;推荐用visudo精确授权具体命令路径;可对特定命令设NOPASSWD,但禁用NOPASSWD: ALL;用Cmnd_Alias和User_Alias提升可维护性,规则建议存于/etc/sudoers.d/下独立文件。
多数现代 Linux 发行版(如 Ubuntu/Debian)默认将 sudo 组设为特权组,CentOS/RHEL 则用 wheel 组。只要把用户加入对应组,就能获得完整 sudo 权限:
sudo usermod -aG sudo username
sudo usermod -aG whe
el username
su - username 切换会话才生效不希望用户能执行所有命令?用 visudo 编辑规则,限制到具体二进制路径和参数:
username ALL=(root) /usr/bin/systemctl restart nginx
username ALL=(root) /bin/journalctl -u nginx, /usr/bin/systemctl status nginx
systemctl,得写 /usr/bin/systemctl),否则 sudo 拒绝执行开发或自动化场景常需跳过密码提示,但要明确限定范围:
username ALL=(root) NOPASSWD: /usr/bin/apt update, /usr/bin/dpkg -i
/sbin/reboot、/bin/rm)NOPASSWD: ALL —— 这等于开放 root shell,违背最小权限原则多人多命令时,靠别名管理更清晰、不易出错:
Cmnd_Alias WEB_CMD = /usr/bin/systemctl restart nginx, /usr/bin/nginx -t
User_Alias DEV_TEAM = alice, bob, %webadmins
DEV_TEAM ALL=(root) NOPASSWD: WEB_CMD
/etc/sudoers.d/ 下独立文件中(如 /etc/sudoers.d/web-team),避免污染主配置