sudo 的记录落在哪
sudo 默认把每次提权记录写进系统认证日志:RHEL 系是 /var/log/secure,Debian 系是 /var/log/auth.log,同时也会被 journald 收走,用 journalctl -t sudo 直接可查。记录内容包括谁、在哪个终端、以什么身份、执行了什么命令。合规场景往往要求独立日志文件与操作会话录制,这两项都可以在 sudoers 里配置。
基本信息
| 默认日志位置 | /var/log/secure(RHEL 系)、/var/log/auth.log(Debian 系)、journald |
|---|---|
| 按标签查 | journalctl -t sudo、grep sudo /var/log/secure |
| 独立日志文件 | sudoers 中 Defaults logfile="/var/log/sudo.log" |
| 会话录制 | Defaults log_input, log_output 与 iolog_dir |
| 配置校验 | visudo -c |
| 权限要求 | 读日志需 root;改 sudoers 需用 visudo 编辑 |
典型使用场景
- 发生操作事故后回溯是谁在什么时候执行了什么命令
- 合规审计要求提供提权操作记录,评估日志是否完整
- 排障时确认某个变更到底是谁做的
- 把 sudo 日志集中转发到日志平台做统一留存
- 按审计要求开启会话录制,保留完整操作过程
默认日志查看
默认日志查看
grep sudo /var/log/secure | tail -20 # RHEL 系查最近 20 条提权记录
journalctl -t sudo -n 50 --no-pager # 按 syslog 标签过滤,跨发行版通用
journalctl -t sudo --since '2026-10-01' --until '2026-10-02' # 指定时间范围回溯
ausearch -ts today -m USER_CMD 2>/dev/null | head # auditd 侧也能查到 sudo 相关事件
last -n 10 # 结合登录记录确认操作人来源独立日志与会话录制
独立日志与会话录制
# /etc/sudoers.d/audit-log
# Defaults logfile="/var/log/sudo.log"
# Defaults log_input, log_output # 录制输入输出,注意隐私与容量
# Defaults iolog_dir="/var/log/sudo-io"
visudo -c # 改完必须做语法校验,语法错会让 sudo 不可用
sudo -l | head # 确认 sudo 本身仍可用
tail -5 /var/log/sudo.log # 验证独立日志已在写入
ls /var/log/sudo-io 2>/dev/null | head # 录制目录是否生成内容
systemctl restart rsyslog # 日志转发场景下确认采集链路正常记录与判读
| 来源 | 内容要点 | 注意点 |
|---|---|---|
| journalctl -t sudo | 时间、用户、终端、执行的命令 | 重启与日志滚动会分散记录 |
| /var/log/secure | 认证类事件与 sudo 记录 | 只保留近期,需配合日志轮转 |
| /var/log/sudo.log | 仅 sudo 的独立记录 | 配置后记录位置变化,别只看默认文件 |
| iolog 目录 | 会话输入输出回放 | 含敏感内容,按数据安全要求管理 |
| ausearch USER_CMD | 审计子系统的提权事件 | 需 auditd 规则覆盖到位 |
会话录制会记录操作内容与输入(含口令类键入),存储位置、访问权限与保留周期要按数据安全要求管理,开启前先评估合规与容量。
配置了独立 logfile 之后记录不再只落在默认认证日志里:排查时若只 grep /var/log/secure 会一无所获,先用 sudo -l 与配置文件确认记录去向。