对于我正在编写的应用程序,我想知道哪些进程正在访问特定文件并将该信息转储到日志文件中.最后,其中一个进程将删除此文件,我也想知道进程名称.
我可以使用INotify库来监视文件访问,但它不会给我访问该文件的进程名称.这也许可以使用linux上的Auditctl包,但我也不能使用这个选项:-(
实际上,由于某些原因,最终客户已准备好运行程序但尚未准备好安装新软件包或对现有实用程序进行更改,因此它是受控环境.
解决方法:
不可能仅从用户空间可靠地审核Linux中的直接附加文件访问.
您可以使用lsof进行轮询,但是您可能无法检测轮询之间的访问.原始dnotify模块(由inotify …废弃)的目的是避免不得不承担轮询的开销并避免丢失事件.审计系统在文件打开时提供用户标识.
如果可以将文件移动到NFS服务器,则可以使用NFS日志记录来记录对文件的访问.
如果这是一个生产服务器,或者它是一个即将上线的开发服务器,那么客户可能对于不安装新软件包是正确的.您应该考虑要求授权在下一个开发或测试服务器上设置审核.