ネットワーク上でDebianJessie8.7を実行しているファイラーサーバーとSamba4.2.14があります。
これまで、ネットワーク全体に1つの共有フォルダーを構成しただけで、この共有に開いているファイルがあるかどうかを確認したいと思います。
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
次のような開いているファイルを追跡する他のオプションがいくつかあります。
シェルスクリプトを使用して、。doc、.docx、.xls、.xlsxなどの拡張子を持つすべてのファイルを一覧表示し、定義するためにif [ -f ".~lock.new_document.docx#" ] ; then
を作成しますMicrosoft Officeファイルが開かれているかどうかにかかわらず、これは回避策であり、私が探しているものではありません。
VFS Modules を使用して、共有フォルダー内のファイルの操作を監査することは、シェルスクリプトのソースになる可能性がありますが、実用的ではありません。
smbstatus -L
はこの問題のオプションではないように思われるので、Samba共有フォルダーから開いている/ロックされているファイルを一覧表示できるツールを知っている可能性のある人はいますか?
私の調査結果によると、VFS Modulesのおかげで、Sambaは、1つの例外を除いて、通常のファイルの種類に関係なく、共有および使用されているファイルのファイル記述子を保持しません。
開いているファイルがlsof
またはsmbstatus -L
を介して表示されることがわかった唯一の状況は、Microsoft Office 201以降のファイルを開いている場合です。
$ 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によって維持されている共有フォルダーからファイルを開くと、このファイルはクライアントマシンのファイルシステムにキャッシュされ、サーバーのファイルシステム。
以下に、Samba用のVFSモジュールを使用した実験中に気付いたいくつかの観察結果について説明します。
すべての共有フォルダーで実行される操作を監査できるこの機能の構成については、私の回答の最後に説明されています。
テキストドキュメント、画像、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
ファイルを閉じる
Sambaは、クライアントマシンで閉じられたファイルの操作を記録しません。
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 opsを生成します)
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
をインストールすることを忘れないでください)。
これは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