Вывод списка открытых файлов из общих папок
У меня в сети есть файл-сервер под управлением 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
, он только дает мне информацию о том, какой процесс использует общую папку on, в локальной файловой системе сервера.$ 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
не кажется вариантом для этой проблемы?
1 ответ
Согласно моим выводам, благодаря модулям 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-файлов, медиа-файлов, клиентского компьютера:
- открывает файл
- кеширует данные
- закрывает файл в локальной файловой системе Сервера
- при сохранении изменений 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#
Если вы планируете внедрить модули VFS для Samba, вот несколько ссылок, которые могут помочь вам в настройке (не забудьте установить пакет 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