![Linux 上系统范围的文件访问和系统调用监控?](https://linux22.com/image/753113/Linux%20%E4%B8%8A%E7%B3%BB%E7%BB%9F%E8%8C%83%E5%9B%B4%E7%9A%84%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE%E5%92%8C%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E7%9B%91%E6%8E%A7%EF%BC%9F.png)
在 Windows 中,您可以从 Sysinternals 运行 Procmon(进程监视器),它将向您显示系统范围内的每个文件访问、注册表查询等(附有屏幕截图)。然后,您可以回溯以查找哪些进程正在接触/访问特定文件(或注册表查询)。
在 Linux 领域,我有时想找到哪些进程正在访问系统上的特定文件 - 但我不知道从哪个进程开始查看。我知道 strace,我知道我可以将它附加到多个进程 - 但有没有办法在 Linux 下全局输出每个文件访问?
答案1
Sysdig 可以满足您的要求。但是它需要 root 访问权限和 sysdig-probe 模块。
答案2
这是 Linux,当然有多种方法可以做到这一点。
追迹方法。脚本使用 ftrace 或增强型BPF跟踪内核中的任何内容。在此 open() 示例中,请参见opensnoop 的。您可以按 PID 或文件名进行过滤。非常强大,可以临时使用,但并不是每个人都熟悉编写内核探测脚本。
審核方法。配置 auditd 规则来记录某些文件访问或系统调用。按照示例了解如何监控路径”Linux 审计子系统已在企业环境中使用以满足合规性要求。记录良好,擅长记录,但无法动态地检测所有内容。