您可以使用来跟踪系统调用strace
,但是确实存在不可避免的速度损失。strace
如果命令以提升的特权运行,则需要以root用户身份运行:
sudo strace -f -o foo.trace su user -c 'mycommand'
另一种可能更快的方法是预加载一个环绕文件系统访问功能的库:LD_PRELOAD=/path/to/libmywrapper.so mycommand
。该LD_PRELOAD
环境变量不会被传递到与提升的权限调用程序。您必须编写该包装器库的代码(这是“为乐趣和利益而构建库插入器”的示例);我不知道网络上是否有可重用的代码。
如果要监视特定目录层次结构中的文件,则可以使用LoggedFS来查看文件系统,以便记录通过该视图进行的所有访问。
loggedfs -c my-loggedfs.xml /logged-view
mycommand /logged-view/somedir
要配置LoggedFS,请从程序附带的示例配置开始,并阅读LoggedFS配置文件语法。
另一种可能性是Linux的审计子系统。确保auditd
守护程序已启动,然后配置要使用的日志auditctl
。每个记录的操作都记录在/var/log/audit/audit.log
(在典型分布中)。要开始观看特定文件:
auditctl -a exit,always -w /path/to/file
如果将监视放在目录中,则还将以递归方式监视其中的文件及其子目录。注意不要观看包含审核日志的目录。您可以将日志记录限制为某些进程,请参见auditctl
手册页以获取可用的过滤器。您需要具有root才能使用审核系统。
strace
,我认为您对Linux特别感兴趣。正确?