如何找出给定命令对哪些文件进行了哪些更改,甚至拦截它们?

如何找出给定命令对哪些文件进行了哪些更改,甚至拦截它们?

说我有一个程序mysterion其执行可能会修改一些文件。为了弄清楚这是否有害,我想以这样的方式运行它:我至少可以知道哪些文件是如何修改的,或者甚至可能以某种方式将另一个程序挂接到它来决定是否接受或否认这些改变它们甚至发生了。是否可以通过某种方式比逐步调试更简单地实现这一点?

果然,对于“确定更改”部分,我可以对整个文件系统及其diff之后进行快照,但这可能就像用大锤制动螺母一样......

答案1

监控部分(没有沙箱)可以通过简单地运行来完成

strace -o file.log -e trace=file /path/to/your/binary

当然,这有点“闲聊”。所以你可能需要进行一些后处理。strace通常包含在同名的包中。还有一个特殊的 64 位版本。

答案2

你可以使用类似的东西系统跟踪这将允许您在没有特权的情况下在沙箱中运行该程序。然后,您可以使用 ptrace 查看程序尝试打开的文件句柄。

如果您使用 SELinux,您的另一个选择是使用SELinux 沙箱。从那里您可以限制它可以打开的文件,使其根本无法打开文件等。

我想有一种方法可以使用 AppArmor 来完成这些事情,但不幸的是我对 AppArmor 不熟悉,无法提供任何有意义的建议。

相关内容