我是一名新手,对查看谁访问了文件有一些疑问。
我发现有方法可以通过审计子系统和 inotify 查看文件是否被访问(而不是被修改/更改)。
但是,根据我在网上读到的内容,如下: http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
它说要“监视/监控”文件,我必须使用如下命令来设置监视:
# auditctl -w /etc/passwd -p war -k password-file
因此,如果我创建一个新文件或目录,我是否必须先使用 audit/inotify 命令来“设置”监视以“监视”谁访问了新文件?
另外,有没有办法知道目录是否正在通过审计子系统或 inotify 被“监视”?如何/在哪里可以检查文件的日志?
编辑:
通过进一步谷歌搜索,我发现这个页面说: http://www.kernel.org/doc/man-pages/online/pages/man7/inotify.7.html
inotify API 不提供有关触发 inotify 事件的用户或进程的信息。
所以我猜这意味着我无法确定哪个用户访问了文件?只有审计子系统才能确定谁访问了文件?
答案1
这是一种蛮力方法,但您可以查看用户主目录中的 .bash_history。不过这只会存储一定数量的行。
这可能有效,但我并不是说它会有效:
这假设您的主目录位于 /home,并且用户没有删除其 bash 历史文件或移动其历史文件。
for i in `ls /home/` do
echo "CURRENT USER IS $i"
grep <filename> /home/$i/.bash_history | less
done
应该在主机上的用户的 bash 历史记录中找到任何引用。
然后,您可以 grep last 的输出,查看在您检查的文件上的时间戳发生更改时谁登录了。查找接近文件上的时间戳的时间。
您还需要查找对 echo 命令或任何使用重定向的引用,因为文件可能已经通过重定向进行了修改,即 echo "test" > file_I_should_not_edit 或 echo "foo" >> append_to_file_i_should_not_edit。
我希望我能告诉你问题的确切答案。