我如何找出谁访问了 Lion 服务器上的文件?

我如何找出谁访问了 Lion 服务器上的文件?

我有一台 Lion 服务器,可供多人访问。是否可以找出哪些用户访问了某个文件?

答案1

在研究了这个问题之后,我认为这是不可能的,因为你需要设置一个日志程序,默认情况下它不是内置的。你可以获取最后访问过该文件的人,但不能获取之前的访问者。

答案2

我没有资格回答这个问题,因为我没有在 Macos 上运行服务的经验,但另一个答案似乎非常具有误导性,我会尝试纠正。

如果我没记错的话,Macos 中的 SMB 实现是桑巴,它也用于大多数基于 Linux 和 BSD 的操作系统。以下解释适用于当前 Gentoo Linux 上安装的 Samba,因此转录文件路径、服务管理命令和日志记录细节留给 padawan 系统管理员练习。

打开 smb.conf 文件,并更改或添加以下行到配置的全局部分:

log level = 2

另外,查找此条目,它会告诉您日志文件的最终位置:

log file = /var/log/samba/log.%m

(该部分已替换为客户端 IP 地址%m。)

保存文件,然后重启 Samba 服务。查看日志文件中的客户端地址(现在我们使用 ipv4 环回)。/var/log/samba/log.127.0.0.1在 unix shell 中,可以使用以下命令完成此操作

$ tail -f /var/log/samba/log.127.0.0.1

如果您现在通过环回地址和文件访问共享(在不同的 shell 中)get,这将与用于访问的用户名一起显示。

$ smbclient ${whatever_options_you_need} //127.0.0.1/${sharename}
smb: \> get testfile.txt

日志文件中的结果应如下所示:

[2012/09/16 13:10:13.562687,  2] smbd/open.c:704(open_file)
  ${user} opened file testfile.txt read=Yes write=No (numopen=1)
[2012/09/16 13:10:13.564096,  2] smbd/close.c:696(close_normal_file)
  ${user} closed file testfile.txt (numopen=0) NT_STATUS_OK

相关内容