在unix中有什么方法可以找出过去1周内访问过某些文件的人吗?它可能是用户或某些脚本ftp到其他地方.我可以获取访问某个文件的用户名列表吗?如何找出谁访问特定文件?
解决方法:
除非您有非常不寻常的日志记录策略,否则访问了哪些文件未被记录(这将是大量信息).您可以在系统日志中找出谁在何时登录;最后一个命令为您提供登录历史记录,而其他日志(如/var/log/auth.log)将告诉您用户如何进行身份验证以及他们登录的位置(哪个终端或远程主机).
上次读取文件的日期称为access time, or atime for short.所有unix文件系统都可以存储它,但许多系统不记录它,因为它具有(通常很小的)性能损失. ls -ltu / path / to / file或stat / path / to / file显示文件的访问时间.
如果用户访问该文件并且没有试图隐藏他的音轨,他的shell历史(例如〜/ .bash_history)可能有线索.
要找出现在打开文件的内容或者谁,请使用lsof / path / to / file.
要记录将来文件发生的情况,有几种方法:
>使用inotifywait.inotifywait -e access / path / to将在有人读取文件时打印一行/ path /到/ ACCESS文件.此界面不会告诉您访问该文件的人员;你可以在这一行显示时立即调用lsof / path / to / file,但是存在竞争条件(lsof开始时访问可能会结束).
> LoggedFS是一个可堆叠的文件系统,它提供文件系统树的视图,并可以通过该视图执行所有访问的更好的日志记录.要进行配置,请参阅LoggedFS configuration file syntax.
>您可以使用Linux的audit subsystem记录大量内容,包括文件系统访问.确保启动了auditd守护程序,然后使用auditctl
配置要记录的内容.每个记录的操作都记录在/var/log/audit/audit.log中(在典型的发行版中).要开始观看特定文件:
auditctl -w /path/to/file
如果将监视放在目录上,则还会以递归方式监视其中的文件及其子目录.