我正在对 USB 活动进行脚本化监控:文件读取、写入、文件夹创建等。当插入 USB 设备时,我们的代码库会自动在以下位置设置一个挂载点: ,并在移除 USB 时删除此挂载点。/media/usb/mounted_usb_name
我已配置为使用以下规则auditd
进行观看:/media/usb
-w /media/usb -p r -k USB_r
-w /media/usb -p w -k USB_w
-w /media/usb -p a -k USB_a
-w /media/usb -p x -k USB_x
...能够识别auditd
日志中不同类型的活动。
这在大多数情况下都可以正常工作;我可以在已安装的 USB 位置查看各种操作的日志活动。但是,当我移除并重新插入 USB 时,导致挂载目录被删除并通过我们的代码库重新创建,auditd
从而停止向日志报告任何和所有活动。
两个创建的挂载点之间的所有者或权限没有区别。我还尝试过直接在 中创建文件夹/media/usb
、删除它们并重新创建它们,并且auditd
在跟踪这些文件夹(无论何时存在)时都没有问题。我检查了系统日志,但我发现的唯一线索是这一行:
Volume was not properly unmounted. Some data may be corrupted. Please run fsck.
...当USB连接时发生插入,而不是删除。
我已经在两台不同的机器上尝试过使用多个 USB。行为是一致的。似乎解决该问题的唯一方法是运行:
systemctl restart auditd
...这对于我们的目标来说不是一个好的选择。
如果有任何帮助,我将不胜感激:)
答案1
Auditd 'watches' 通过其 inode 跟踪文件,如果删除 'watch' 所在的目录并重新创建它,inode 会发生更改,并且 'watch' 会停止跟踪有问题的文件。
尝试使用-F path=
它的绝对路径来跟踪文件
auditctl -a always,exit -F path=/media/usb