У меня есть файловый сервер, на котором запущен Debian Jessie 8.7 в моей сети с Samba 4.2.14.
До сих пор у меня была только одна общая папка, настроенная для всей сети, и я хотел бы посмотреть, есть ли открытые файлы на этой общей папке.
При запуске smbstatus -L
это не указывает любая информация о любых открытых файлах или заблокированных файлах .
$ smbstatus -L
Зарегистрирован MSG_REQ_POOL_USAGE
Зарегистрированы MSG_REQ_DMALLOC_MARK и LOG_CHANGED
Нет заблокированных файлов
Используя lsof
, он дает мне только информацию о том, какой процесс использует общую папку в локальной файловой системе сервера.
$ lsof | grep резервное копирование
smbd 1432 root cwd DIR 8,9 4096 2 / резервное копирование / локальное
Также при использовании фьюзера
он не дает никакой информации о открытых файлах или заблокированных файлах . Он просто показывает sPID, который использует общую папку в локальной файловой системе сервера.
$ fuser / backup / local
/ резервное копирование / местное: 1432c
Есть и другие варианты отслеживания открытых файлов, например:
С помощью Shellscript перечислить все файлы с такими расширениями, как .doc, .docx, .xls, .xlsx и т. Д., И создайте , если [-f ". ~ lock.new_document.docx #"]; затем
, чтобы определить, открыт ли файл Microsoft Office или нет, но это обходное решение не то, что я ищу.
Использование модулей VFS для аудита операций для любого файла внутри общей папки может быть источником Shellscript, но это непрактично.
Есть ли кто-нибудь, кто мог бы знать какие-либо инструменты, которые могли бы отображать открытые / заблокированные файлы из общих папок Samba, поскольку это smbstatus -L
не не кажется ли вариант для этой проблемы?
Согласно моим выводам, благодаря VFS Modules, Samba не хранит File Descriptors для файлов, которыми обмениваются и используют, независимо от того, какой это обычный файл, за одним исключением.
Единственная ситуация, в которой я обнаружил, что открытые файлы видны через lsof
или smbstatus -L
, это когда у вас есть открытые файлы с Microsoft Office 2010 и далее. То же самое не происходит, например, если у вас есть файл .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 и т.д.), клиентский компьютер :
- открывает файл
- , кэширует данные
- , закрывает файл в локальной файловой системе сервера
- , открывает файл tmp/lock (.~lock.my_word_document. docx#) и закрывает его
- каждый байт, вставленный на клиентской машине Client Machine, создает операцию открытия/закрытия исходного файла
- при сохранении файла, клиентская машина Client Machine записывает изменения в файл
- при закрытии файла, 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 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-модулей
):
- 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