exempt_group用于让指定系统组跳过env_reset和secure_path等安全限制,必须使用真实系统组名(如audit),不可用user_alias;正确配置为defaults:%audit !env_reset和defaults:%audit !secure_path,rhel/centos中defaults exempt_group=语法已弃用。

确认系统组而非别名
exempt_group 只接受真实存在的 Linux 系统组名(如 audit),不能是 sudoers 里自定义的 User_Alias 或 Group_Alias。常见错误是写成:
❌ 错误写法User_Alias AUDITORS = alice,bob<br>Defaults exempt_group = AUDITORS
这不会生效。必须先创建系统组并把用户加进去:
- 运行
sudo groupadd audit创建组 - 用
sudo usermod -aG audit alice把用户加入该组 - 验证:执行
id -nG alice,输出中应含audit
在 sudoers 中启用豁免规则
用 sudo visudo 编辑 /etc/sudoers,添加以下两行(顺序不敏感,但建议放在 Defaults 区块):
Defaults:%audit !env_reset<br>Defaults:%audit !secure_path
这两行含义是:
-
!env_reset:不重置环境变量,保留用户原有的PATH、HOME、SHELL等 -
!secure_path:不强制使用 sudo 的secure_path,而是沿用用户自己的PATH
⚠️ 注意:不要写成 Defaults exempt_group = audit —— 这个语法在 RHEL/CentOS 6+ 已被弃用,实际不起作用;现代 sudo 版本(1.8.20+)直接忽略该指令。
配合审计需求做加固
高级审计组往往需要完整环境上下文(比如特定 LD_LIBRARY_PATH、自定义 bin 目录、审计专用 shell),仅豁免还不够,建议同步配置:
- 启用详细日志:
Defaults:%audit logfile=/var/log/sudo-audit - 强制记录命令参数:
Defaults:%audit log_input,log_output - 禁止绕过环境:
Defaults:%audit env_delete -= "LD_PRELOAD"(防注入) - 限制可执行范围(可选):
%audit ALL=(root) NOPASSWD: /usr/local/bin/audit-tool, /bin/journalctl
这样既保障了审计操作所需的环境完整性,又没放开不必要的权限。










