列出共享文件夹中的打开文件

我有一台在我的networking上运行Debian Jessie 8.7的Filer Server,使用Samba 4.2.14。

到目前为止,我只有一个共享文件夹configuration为整个networking,我想看看这个共享上是否有打开的文件。



还有其他一些选项来跟踪打开的文件,如:

  • 使用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的正常文件,只有一个例外。

我发现通过lsofsmbstatus -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 2007LibreOffice 4打开.docx文件时,也不会发生同样的情况。


通常会发生什么情况(忘记了以上有关Microsoft Office 2010以上文件的情况:一旦客户端计算机从Samba维护的共享文件夹中打开文件,该文件就caching在客户端计算机的文件系统上,服务器的文件系统。

下面我描述了一些我在Samba VFS模块实验中注意到的一些观察。

这个function的configuration允许审计在每个共享文件夹上执行的操作,在我的回答结束时描述。


对于文本文档,图像,PDF,媒体文件, 客户机

  • 打开文件
  • caching数据
  • closures服务器的本地文件系统上的文件
  • 当保存修改时, Samba将在服务器上创build一个临时文件
  • 当closures文件时, Samba会删除原始文件并将tmp文件重命名为原始文件的名称。

在客户端打开文件

 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等), 客户机

  • 打开文件
  • caching数据
  • closures服务器的本地文件系统上的文件
  • 打开一个tmp / lock文件(。〜lock.my_word_document.docx#)并closures它
  • 客户机上插入每个字节,在原始文件上产生打开/closures操作
  • 当保存文件时, 客户机将修改写入文件
  • 当closures文件时, Samba删除tmp / lock文件

在客户端打开文件

 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# 

如果您打算实施SambaVFS模块 ,下面是一些可以指导您完成设置的链接(不要忘记安装软件包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