我正在尝试查找文件打开的次数(自操作系统诞生以来)。我打算通过 stat 来执行此操作,但大多数标志仅返回上次打开时间之间的差异。
答案1
这个答案解释道什么需要做,但具体细节如何取决于你的分布、你的设置和目的,以及你选择用来解析数据的工具:
你正在寻找的是已审核Linux 中的守护进程。来自手册页auditd(8):
审计是 Linux 审计系统的用户空间组件。它负责将审计记录写入磁盘。查看日志时使用澳搜或者奥雷波特实用程序。配置审计规则是通过审计控制实用程序。在启动期间
/etc/audit/audit.rules
,审计控制并加载到内核中。或者,还有一个 augenrules 程序,它读取位于中的规则/etc/audit/rules.d/
并将其编译成audit.rules
文件。审计守护程序本身有一些管理员可能希望自定义的配置选项。它们位于文件中找到auditd.conf
。
根据您的指定,审计使用内核内置函数在进行某些系统调用时创建日志。设置完成后,您将在/var/log/audit
发行版的类似位置找到日志。
要审计对文件的访问,您可以使用类似如下的方法:
auditctl -w /path/to/interesting/files/ -p rwxa -k myfileaudits
其中-w
,指定文件路径-p
指定系统将审计r欧洲航空安全局瓦仪式,eX处决,以及A属性或权限更改。最后,该-k
选项允许您指定一个任意键,用于使用搜索此规则时使用澳搜。
请注意,尽管审计通过系统调用运行,-p r
不跟踪读功能,而是打开这样,日志就不会因每次读取而泛滥,而是每次打开文件进行读取时都会创建一个条目。
一旦开启了审计功能,并准备好日志,ausearch 便可用于解析这些日志,以查找对指定文件的所有访问,并且可以使用标准文本或统计工具来生成计数。这些计数可能不同于和,用于grep
计算wc -l
日志条目,或者结合使用脚本和GNU 路由或者格努普特生成图表和报告。
另一种方法是使用SELinux。虽然 SELinux 是一个访问控制工具,通常只记录访问拒绝,但可以将其设置为记录所有访问,并向 auditd 提供类似的信息。
编辑:如果需要访问记录从一开始就:例如,在 OS 安装期间、在 auditd 启动之前或 auditd 安装之前,则需要采取更极端的措施。initrd.img
可能需要创建自定义安装程序或自定义启动文件,以便加载所需的调试器或内核级跟踪工具。这些跟踪工具可能包括跟踪,性能,系统水龙头,克塔普或类似的调试器级工具来捕获启动过程中的访问。一个很好的参考是http://www.brendangregg.com/linuxperf.html这种系统性能分析(而非审计)的一个例子是启动图。
然而,设置这个超出了我的经验范围 - 希望参考资料有用。