「Linux」- 监控文件删除、找到删除文件的进程

问题描述

该笔记将记录:在 Linux 中,如何监控文件系统文件删除,找出删除文件的进程,以及常见问题处理。

解决方案

解决该问题的方案有很多,比如:
1)auditd
2)sysdig
3)inotifywait(仅能获取变化文件,无法获取相关进程)

方案一、通过 auditd 服务

第一步、安装 auditd 服务:

# apt-get install -y auditd

# systemctl enable auditd.service

# systemctl start auditd.service

第二步、添加服务配置,以监控文件删除:

# vi /etc/audit/rules.d/audit.rules
-a always,exit -F dir=/tmp -S unlink -S unlinkat -S rename -S renameat  -S rmdir -k delete_var

# systemctl restart auditd.service

# auditctl -l
-a always,exit -S rename,rmdir,unlink,unlinkat,renameat -F dir=/var/tmp -F key=delete_var

第三步、查看日志,以获取文件删除的原因:

# ausearch -k delete_var

参考文件

How to use auditd to monitor a file deletion in Linux – The Geek Diary
linux – Auditd – auditctl rule to monitor dir only (not all sub dir and files etc..) – Stack Overflow
rm – How to find the pid of the process which has deleted a file? – Ask Ubuntu