我有一台 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