我有一台在我的networking上运行Debian Jessie 8.7的Filer Server,使用Samba 4.2.14。
到目前为止,我只有一个共享文件夹configuration为整个networking,我想看看这个共享上是否有打开的文件。
运行smbstatus -L ,不会指出任何有关打开文件或locking文件的信息 。
$ smbstatus -L Registered MSG_REQ_POOL_USAGE Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED No locked files
使用lsof ,它只能给我关于在服务器的本地文件系统上使用共享文件夹的过程的信息。
$ lsof | grep backup smbd 1432 root cwd DIR 8,9 4096 2 /backup/local
也使用fuser ,它不提供有关打开文件或locking文件的任何信息。 它只显示使用服务器的本地文件系统上的共享文件夹的sPID。
$ fuser /backup/local /backup/local: 1432c
还有其他一些选项来跟踪打开的文件,如:
使用Shellscript,列出所有扩展名为.doc,.docx,.xls,.xlsx等的文件,然后制作一个if [ -f ".~lock.new_document.docx#" ] ; then if [ -f ".~lock.new_document.docx#" ] ; then为了定义一个Microsoft Office文件是否打开,但是这个解决方法,并不是我正在寻找的。
使用VFS模块对共享文件夹内的任何文件进行审计操作可能会成为Shellscript的源代码,但这并不实际。
有没有人可能知道任何工具,可以列出从Samba共享文件夹打开/locking的文件,因为smbstatus -L似乎不是这个问题的选项?
根据我的发现,感谢VFS模块 ,Samba不会为共享和使用的文件保留文件描述符,无论它是什么types的正常文件,只有一个例外。
我发现通过lsof或smbstatus -L可以看到打开的文件的唯一情况是当您从Microsoft Office 2010开始打开文件时。
$ lsof | grep bkp bash 1272 root cwd DIR 8,9 4096 651521 /bkp/local/John smbd 2492 root cwd DIR 8,9 4096 2 /bkp/local smbd 6127 root cwd DIR 8,9 4096 2 /bkp/local smbd 6127 root 35r DIR 8,9 4096 651521 /bkp/local/John smbd 6127 root 36r DIR 8,9 4096 2 /bkp/local smbd 6127 root 37r DIR 8,9 4096 2 /bkp/local smbd 6127 root 38r DIR 8,9 4096 2 /bkp/local smbd 6127 root 41r DIR 8,9 4096 2 /bkp/local smbd 6127 root 42r DIR 8,9 4096 651521 /bkp/local/John smbd 6127 root 44uR REG 8,9 0 651529 /bkp/local/John/word_john.docx lsof 6345 root cwd DIR 8,9 4096 651521 /bkp/local/John grep 6346 root cwd DIR 8,9 4096 651521 /bkp/local/John lsof 6347 root cwd DIR 8,9 4096 651521 /bkp/local/John
$ smbstatus -L Registered MSG_REQ_POOL_USAGE Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED Locked files: Pid Uid DenyMode Access R/W Oplock SharePath Name Time 6127 1001 DENY_NONE 0x100081 RDONLY NONE /respaldo/segeco_local . Tue May 30 14:10:14 2017 6127 1001 DENY_NONE 0x100081 RDONLY NONE /respaldo/segeco_local . Tue May 30 14:10:14 2017 6127 1001 DENY_NONE 0x100081 RDONLY NONE /respaldo/segeco_local . Tue May 30 14:10:14 2017 6127 1001 DENY_WRITE 0x12019f RDWR LEVEL_II /respaldo/segeco_local Susana/word_susana.docx Tue May 30 14:10:38 2017 6127 1001 DENY_NONE 0x100081 RDONLY NONE /respaldo/segeco_local Susana Tue May 30 14:14:25 2017 6127 1001 DENY_NONE 0x100081 RDONLY NONE /respaldo/segeco_local Susana Tue May 30 14:14:25 2017
例如,通过Microsoft Office 2007或LibreOffice 4打开.docx文件时,也不会发生同样的情况。
通常会发生什么情况(忘记了以上有关Microsoft Office 2010以上文件的情况:一旦客户端计算机从Samba维护的共享文件夹中打开文件,该文件就caching在客户端计算机的文件系统上,服务器的文件系统。
下面我描述了一些我在Samba VFS模块实验中注意到的一些观察。
这个function的configuration允许审计在每个共享文件夹上执行的操作,在我的回答结束时描述。
对于文本文档,图像,PDF,媒体文件, 客户机 :
在客户端打开文件
May 30 11:13:02 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|Expedientes.txt May 30 11:13:02 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/Expedientes.txt
保存文件
May 30 11:16:52 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|w|~gvfPvwn.tmp May 30 11:16:52 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|pwrite|ok|John/~gvfPvwn.tmp May 30 11:16:52 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/~gvfPvwn.tmp May 30 11:16:52 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|unlink|ok|John/Expedientes.txt May 30 11:16:52 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|rename|ok|John/~gvfPvwn.tmp|John/Expedientes.txt
closures文件
Samba不logging在客户端机器上closures的文件的操作。
对于Microsoft Office文件(.docx,.doc,.xls,.xlsx等), 客户机 :
在客户端打开文件
May 30 11:22:14 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|w|Desktop Word John.docx May 30 11:22:14 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/Desktop Word John.docx May 30 11:22:14 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|Desktop Word John.docx May 30 11:22:14 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|w|.~lock.Desktop Word John.docx# May 30 11:22:14 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/.~lock.Desktop Word John.docx#
将数据写入文件(每写入一个字节,产生OPEN / CLOSE操作)
May 30 11:22:44 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|Desktop Word John.docx May 30 11:22:44 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/Desktop Word John.docx May 30 11:22:44 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|Desktop Word John.docx May 30 11:22:44 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/Desktop Word John.docx May 30 11:22:45 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|Desktop Word John.docx May 30 11:22:45 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/Desktop Word John.docx
保存文件
May 30 11:26:33 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|w|.~lock.Desktop Word John.docx# May 30 11:26:33 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|pwrite|ok|John/.~lock.Desktop Word John.docx# May 30 11:26:33 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/.~lock.Desktop Word John.docx# May 30 11:26:33 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|Desktop Word John.docx May 30 11:26:33 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/Desktop Word John.docx May 30 11:26:33 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|w|Desktop Word John.docx
closures文件
May 30 11:37:39 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|open|ok|r|.~lock.Desktop Word John.docx# May 30 11:37:39 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|close|ok|John/.~lock.Desktop Word John.docx# May 30 11:37:39 server001 smbd_audit: normal.user|192.168.1.67|win7pc|serversharedfolder|unlink|ok|John/.~lock.Desktop Word John.docx#
如果您打算实施Samba的VFS模块 ,下面是一些可以指导您完成设置的链接(不要忘记安装软件包samba-vfs-modules ):
以下是smb.conf的摘录,显示了特定共享文件夹的function设置:
... [fileserver] path = /bkp/local valid users = john, jane, martin, carl force group = sambashare create mode = 0660 directory mode = 0770 available = yes read only = no writable = yes browsable = yes hide files = /lost+found/ vfs objects = full_audit full_audit:prefix = %u|%I|%m|%S full_audit:success = mkdir rename rmdir pwrite write unlink open close full_audit:failure = mkdir rename rmdir pwrite write unlink open close full_audit:facility = local7 full_audit:priority = warning ...
不要忘记在rsyslog上添加一条语句,以便将共享文件夹中的数据生成到日志文件中:
$ grep local7 /etc/rsyslog.conf local7.* /var/log/samba/audit.log