auditd日志膨胀是磁盘满的高频原因,排查需三步:确认是否真凶(df -h、ls -lh /var/log/audit/、auditctl -s)、定位疯涨原因(规则过宽/高频事件/轮转失效/auditd异常)、止血(truncate清空+重启)并根治(logrotate配置+usr1通知)。

auditd 日志膨胀是磁盘满的高频原因,排查要分三步走:确认它是不是真凶、定位它在哪疯长、再切断源头并释放空间。
确认 auditd 是否正在吃掉磁盘
先看整体磁盘是否告急:
- 运行 df -h,重点关注 / 或 /var/log/audit 所在分区的 Use% —— 超过 90% 就得立刻干预
- 查 auditd 日志实际路径:sudo ls -lh /var/log/audit/,看看 audit.log 是否已达 GB 级(比如 5G、10G)
- 确认服务状态:sudo auditctl -s | grep enabled,输出 enabled 1 表示审计开启中,日志确实在持续写入
查清 audit.log 为什么暴涨
不是所有 audit.log 都会猛涨,常见诱因有:
- 规则太宽泛:比如配置了监控整个 /etc 或 /bin 的读操作,每次命令执行都记一条
- 高频事件未过滤:SELinux 拒绝、avc denials、大量失败登录尝试(sshd、pam)会密集打点
- 日志轮转未生效:logrotate 配置缺失或错误,audit.log 从不切分,只追加
- auditd 本身异常:进程卡住、句柄泄漏,导致日志写入失控(可配合 ps -eo pid,%mem,rss,comm | grep auditd 看内存是否异常飙升)
立即止血 + 长效治理
急救阶段优先释放空间,不删文件,只清内容:
- 安全清空当前日志:sudo truncate -s 0 /var/log/audit/audit.log(比
>更稳妥,不破坏 inode) - 检查是否有已删未释放的日志:sudo lsof | grep '/var/log/audit/audit.log.*deleted',若有,重启 auditd:sudo systemctl restart auditd
根治必须配 logrotate 并通知 auditd 切日志:
- 新建配置:sudo nano /etc/logrotate.d/auditd
- 填入(按大小轮转,保留 12 个压缩包):
/var/log/audit/audit.log {
size 100M
rotate 12
compress
delaycompress
missingok
notifempty
create 0600 root root
sharedscripts
postrotate
/bin/systemctl kill --signal=USR1 auditd 2>/dev/null || true
endscript
} - 手动触发一次轮转验证:sudo logrotate -f /etc/logrotate.d/auditd,然后检查 /var/log/audit/ 下是否生成 audit.log.1.gz,且新 audit.log 为空











