这是一个假设性的问题,而不是我目前遇到的问题。
你如何检测哪个进程现在或过去使用了一个文件?
找出哪个进程正在访问filename
,lsof filename
或fuser filename
将完成工作。但是,如果想知道filename
过去 24 小时内访问了哪些进程怎么办?
人们可以摆脱这个丑陋的 (*) hack
while true; do fuser filename; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
让它在另一个学期运行 24 小时。但实际上有没有更好的系统,而不建立一个完整的审计框架?
(*) 更不用说fuser
如果不到 1 秒可能无法检测到访问...
如果您的系统启用了审计,您可以使用该子系统来审计对特定文件的访问。
例如,要审核打开(或尝试打开)/etc/shadow
文件的文件,您可以使用以下规则:
auditctl -a exit,always -S open -F path=/etc/shadow
Run Code Online (Sandbox Code Playgroud)
稍后,您可以使用此命令列出与访问此文件对应的审计事件:
ausearch -f /etc/shadow
Run Code Online (Sandbox Code Playgroud)
请注意,您需要以 root 身份配置和查询审计系统。
有关如何设置规则和ausearch(8) 的更多详细信息,请参阅auditctl(8)手册页有关如何查询审计日志的详细信息,手册页。
如果您没有启用审计,您应该查找有关如何执行特定于您的 Linux 发行版的信息,因为详细信息会有所不同。
归档时间: |
|
查看次数: |
142 次 |
最近记录: |