CentOS 7下Postfix日志疑似因执行history -c被清除的排查咨询
CentOS 7下Postfix日志疑似因执行history -c被清除的排查咨询
兄弟,先给你明确说下:默认情况下history -c绝对不会碰/var/mail/maillog,这俩完全是不相干的操作——history -c只是清空当前shell会话里的命令历史,连磁盘上的~/.bash_history都不会直接删除(除非你手动再执行history -w去覆盖历史文件),更别说系统级的Postfix日志了。所以你怀疑的这个操作大概率不是日志被清的元凶。
至于怎么排查日志被清除/新日志生成当天发生的事情,给你几个实用的思路:
- 先查系统基础日志:去翻
/var/log/messages和/var/log/secure这两个核心日志文件,重点关注新日志生成时间点前后的记录。比如有没有用户执行了rm、truncate、echo >这类清空/删除文件的命令,或者有没有logrotate(系统日志轮转工具)的运行记录——很多时候日志“消失”其实是被轮转归档了,不是真的被删除。 - 查看日志文件的时间属性:执行
stat /var/mail/maillog,这个命令会显示文件的创建时间(Birth)、修改时间(Modify)等信息,精准定位新日志生成的时间点,再针对性去查这个时间窗口内的系统操作。 - 检查日志轮转配置:看看Postfix的日志轮转规则,配置文件在
/etc/logrotate.d/postfix。里面会定义日志什么时候轮转、轮转后旧日志怎么处理(是归档还是删除),说不定是自动轮转触发了日志的替换,导致你误以为日志被清除了。 - 用auditd审计追踪(如果开启的话):如果系统开了
auditd服务,直接执行ausearch -f /var/mail/maillog,这个命令能列出所有针对这个日志文件的操作记录,包括操作的用户、时间、使用的具体命令,堪称排查这类问题的神器。 - 检查用户命令历史:虽然
history -c会清空当前会话的历史,但用户之前的命令历史可能存在~/.bash_history文件里(每个用户的家目录下都有自己的)。可以去对应用户的家目录查看这个文件,看看有没有在日志变更时间点执行过清空日志的命令。 - 确认Postfix服务状态变化:去
/var/log/messages里搜Postfix相关日志,看看有没有服务重启的记录。如果日志文件被手动删除后,Postfix会自动创建新的日志文件,这种情况也会出现“新日志开始”的现象。
备注:内容来源于stack exchange,提问作者Andrw
相关产品推荐
相关产品推荐

