AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 853056
Accepted
ivanleoncz
ivanleoncz
Asked: 2017-05-31 07:59:31 +0800 CST2017-05-31 07:59:31 +0800 CST 2017-05-31 07:59:31 +0800 CST

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

  • 772

我的网络上有一个运行 Debian Jessie 8.7 的 Filer Server,带有 Samba 4.2.14。

到目前为止,我只为整个网络配置了一个共享文件夹,我想看看这个共享上是否有打开的文件。


  • 运行时smbstatus -L,它不指向任何打开文件或锁定文件的任何信息。

    $  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,它不提供有关打开文件或锁定文件的任何信息。它只显示正在使用服务器本地文件系统上的共享文件夹的 sPID。

    $ fuser /backup/local
    /backup/local:  1432c
    

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

  • 使用 Shellscript,列出所有带有.doc、.docx、.xls、.xlsx等扩展名的文件,并创建一个if [ -f ".~lock.new_document.docx#" ] ; then以定义是否打开 Microsoft Office 文件,但这种解决方法不是我在找什么。

  • 使用VFS 模块对共享文件夹中的任何文件进行审计操作可能是 Shellscript 的来源,但这并不实用。


有没有人可能知道任何可以列出 Samba 共享文件夹中打开/锁定文件的工具,因为这smbstatus -L似乎不是解决这个问题的选项?

samba4
  • 1 1 个回答
  • 11511 Views

1 个回答

  • Voted
  1. Best Answer
    ivanleoncz
    2017-05-31T10:52:12+08:002017-05-31T10:52:12+08:00

    根据我的发现,感谢VFS 模块,Samba 不会为正在共享和使用的文件保留文件描述符,无论它是哪种普通文件,只有一个例外。

    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 维护的共享文件夹中打开一个文件,该文件将缓存在客户端计算机的文件系统上,然后在服务器的文件系统。

    下面,我描述了我在使用VFS Modules for Samba进行实验时注意到的一些观察结果。

    此功能的配置允许审核在每个共享文件夹上执行的操作,在我的答案末尾进行了描述。


    对于文本文档、图像、PDF、媒体文件、客户端计算机:

    • 打开文件
    • 缓存数据
    • 关闭服务器本地文件系统上的文件
    • 保存修改时,Samba在服务器上创建一个临时文件
    • 关闭文件时,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
    

    关闭文件

    Samba 不会记录在客户端计算机上关闭的文件的操作。


    对于 Microsoft Office 文件(.docx、.doc、.xls、.xlsx 等),客户端计算机:

    • 打开文件
    • 缓存数据
    • 关闭服务器本地文件系统上的文件
    • 打开一个 tmp/lock 文件 (.~lock.my_word_document.docx#) 并关闭它
    • 在客户端机器上插入的每个字节,都会在原始文件上生成打开/关闭操作
    • 保存文件时,客户端机器将修改写入文件
    • 关闭文件时,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
    

    关闭文件

    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):

    • https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html
    • https://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html

    以下是 的摘录smb.conf,显示了特定共享文件夹的功能设置:

    ...
    [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
    
    • 1

相关问题

  • samba classic 从 samba3 升级到 samba4

  • Samba 文件服务器作为域成员:加入域时出错

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve