Назад | Перейти на главную страницу

список открытых файлов из общих папок

У меня есть файловый сервер под управлением Debian Jessie 8.7 в моей сети с Samba 4.2.14.

До сих пор у меня была только одна общая папка, настроенная для всей сети, и я хотел бы посмотреть, есть ли в этой общей папке открытые файлы.



Есть и другие варианты отслеживания открытых файлов, например:


Есть ли кто-нибудь, кто мог бы знать какие-либо инструменты, которые могли бы отображать открытые / заблокированные файлы из общих папок Samba, поскольку это smbstatus -L не кажется вариантом для этой проблемы?

По моим наблюдениям, благодаря Модули 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

Этого не происходит, например, если у вас есть файл .docx, открытый через Microsoft Office 2007 или LibreOffice 4.


Что обычно происходит (забывая о ситуации, описанной выше о файлах из Microsoft Office 2010 и далее: как только клиентская машина открывает файл из общей папки, поддерживаемой Samba, этот файл кэшируется в файловой системе клиентской машины, закрывается на файловая система Сервера.

Ниже я описал некоторые наблюдения, которые я заметил во время экспериментов с Модули VFS для Samba.

Конфигурация этой функции, которая позволяет проверять операции, выполняемые в каждой общей папке, описана в конце моего ответа.


Для текстовых документов, изображений, PDF-файлов, файлов мультимедиа Клиентская машина:

  • открывает файл
  • кэширует данные
  • закрывает файл в локальной файловой системе Сервер
  • при сохранении модификаций, Самба создает временный файл на Сервер
  • при закрытии файла, Самба удаляет исходный файл и переименовывает файл 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 #) и закрывает его
  • каждый байт вставлен в Клиентская машина, генерирует операции открытия / закрытия для исходного файла
  • при сохранении файла Клиентская машина записывает изменения в файл
  • при закрытии файла, Самба удаляет файл 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 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#

Если вы планируете внедрить Модули VFS для Samba, вот несколько ссылок, которые помогут вам выполнить настройку (не забудьте установить пакет 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