在 Linux 中监控文件访问

Gee*_*eek 5 linux audit inotify

对于我正在编写的应用程序,我想知道哪些进程正在访问特定文件并将该信息转储到日志文件中。最后,其中一个进程将删除此文件,我也想知道它的进程名称。

我可以使用 INotify 库来监视文件访问,但它没有给我访问文件的进程名称。这也可以在 linux 上使用 Auditctl 包,但我也不能使用此选项:-(

实际上,出于某些原因,它是一个受控环境,最终客户已准备好运行程序,但尚未准备好安装新软件包或更改现有实用程序。

Eli*_*uft 1

仅从用户空间可靠地审核 Linux 中的直接附加文件访问是不可能的。

您可以使用 lsof 进行轮询,但可能会存在无法检测到轮询之间的访问的风险。最初的 dnotify 模块(已被 inotify 废弃...)的目的是避免产生轮询的开销并避免丢失事件。审计系统在打开文件时给出用户身份。

如果可以将文件移动到 NFS 服务器,则可以使用 NFS 日志记录来记录对该文件的访问。

如果这是生产服务器或即将上线的开发服务器,则客户关于不安装新软件包的说法可能是正确的。您应该考虑请求授权在下一个开发或测试服务器上设置审核。