auditd通过配置space_left、admin_space_left和disk_full_action三项实现磁盘空间紧张时的可控降级,推荐统一设为suspend;配合max_log_file、max_log_file_action和num_logs控制日志大小与轮转,并将日志路径指向独立分区以保障空间充足。

auditd 本身不会“自动执行紧急动作”来清理磁盘,但它能在磁盘空间濒临耗尽时触发预设响应,防止因日志写满导致系统异常(如误触发关机或丢弃关键崩溃前事件)。核心不是“清理”,而是“可控降级”——暂停写入、轮转日志、发出告警,而非让 auditd 成为系统崩溃的推手。
设置磁盘空间预警与响应动作
在 /etc/audit/auditd.conf 中配置以下三项,它们按空间紧张程度逐级触发:
-
space_left:剩余空间低于该值(单位 MiB,推荐设为 500)时,触发
space_left_action -
admin_space_left:剩余空间更低(如 100 MiB)时,触发更严格的
admin_space_left_action - disk_full_action:空间真正耗尽时的最终动作,严禁设为 HALT 或 SINGLE
对应动作建议统一设为 SUSPEND(暂停日志写入),例如:
space_left = 500 space_left_action = SUSPEND admin_space_left = 100 admin_space_left_action = SUSPEND disk_full_action = SUSPEND
这样 auditd 会停止记录新事件,但服务仍在运行,不干扰其他进程,也避免因强制关机掩盖真实故障。
配合日志轮转避免空间失控
仅靠挂起不够,必须主动控制单个日志大小和保留数量:
- max_log_file:设为合理值(如 100,单位 MiB),防止单个文件撑爆小分区
- max_log_file_action:必须设为 ROTATE(轮转),而非 IGNORE 或 SYSLOG
- num_logs:指定最多保留几个历史日志(如 10),配合 logrotate 更稳妥
示例配置:
max_log_file = 100 max_log_file_action = ROTATE num_logs = 10
确保日志路径独立且空间充足
auditd 默认写入 /var/log/audit/audit.log,若该路径所在分区(如 /var)空间紧张,预警极易被误触发:
- 将 log_file 指向专用分区,例如
log_file = /auditlog/audit.log - 该分区建议单独挂载,最小预留 20GB 以上,专用于审计日志
- 确认目录权限正确:
chown root:root /auditlog && chmod 700 /auditlog
验证与监控配置是否生效
改完配置后需重载并检查实际状态:
- 执行
sudo systemctl restart auditd(RHEL 8+/CentOS 8+)或sudo service auditd reload(CentOS 7) - 用
sudo auditctl -s | grep -E "(space|disk)"查看当前生效的空间策略 - 手动模拟低空间(如用
dd占满测试分区 95%)观察 auditd 是否按预期进入 SUSPEND 状态











