%groupname语法授权是最安全易维护的批量方式,通过组统一管理用户权限,需用绝对路径指定命令、限定命令范围、设440权限并用sudo -l验证。

直接在 /etc/sudoers 中用 %groupname 语法授权,是最安全、最易维护的批量方式。不需要逐个加用户,也不需要改每条规则——加人只管加组,授权只改一行。
用 %groupname 在 sudoers 中统一授权
sudoers 文件里以 % 开头的条目就代表系统用户组。只要用户属于该组,就自动继承对应权限。
- 先确认组已存在:比如
sudo groupadd ops创建组,再用sudo usermod -aG ops alice bob charlie把用户加进去 - 运行
sudo visudo编辑配置,在文件末尾添加类似这一行:%ops ALL=(root) /usr/bin/systemctl restart nginx, /usr/bin/journalctl -u nginx - 保存退出后,组内所有用户立即获得指定命令权限(需重新登录或运行
newgrp ops刷新会话)
推荐搭配 /etc/sudoers.d/ 管理多组权限
避免把所有规则堆在主配置文件里,企业环境常用模块化方式:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 为每个组单独建一个配置文件:
sudo visudo -f /etc/sudoers.d/ops - 写入内容(格式和主文件一致):
%ops ALL=(root) NOPASSWD: /usr/bin/systemctl reload httpd - 设好权限:
sudo chmod 440 /etc/sudoers.d/ops(必须是 440,否则 sudo 拒绝加载)
注意几个关键细节
批量授权不是“图省事”,而是要更严谨:
- 命令必须写绝对路径,
systemctl不行,得写/usr/bin/systemctl - 不要用
ALL=(ALL) ALL授权整个组,应按职责限定命令范围 - 若需免密,把
NOPASSWD:放在命令列表前,如:%devs ALL=(root) NOPASSWD: /usr/local/bin/deploy.sh - 验证是否生效:切换到组内用户,执行
sudo -l查看被允许的命令列表
不复杂但容易忽略










