У меня есть файловый сервер под управлением Debian Jessie 8.7 в моей сети с 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
не кажется вариантом для этой проблемы?
По моим наблюдениям, благодаря Модули 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-файлов, файлов мультимедиа Клиентская машина:
открытие файла на клиенте
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#
Если вы планируете внедрить Модули 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