listar arquivos abertos de pastas compartilhadas

1

Eu tenho um servidor de arquivos rodando Debian Jessie 8.7 na minha rede, com o Samba 4.2.14.

Até agora, só tenho uma pasta compartilhada configurada para toda a rede e gostaria de ver se há arquivos abertos nesse compartilhamento.

  • Ao executar smbstatus -L , ele não aponta nenhuma informação sobre nenhum arquivo aberto ou arquivo bloqueado .

    $  smbstatus -L
    Registered MSG_REQ_POOL_USAGE
    Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
    No locked files
    
  • Usando lsof , só me fornece as informações sobre qual processo está usando a pasta compartilhada, no arquivo local do servidor.

    $ lsof | grep backup
    smbd      1432      root  cwd    DIR     8,9     4096       2 /backup/local
    
  • Também usando fuser , ele não fornece informações sobre arquivos abertos ou arquivos bloqueados . Apenas mostra o sPID que está usando a pasta compartilhada no arquivo local do servidor.

    $ fuser /backup/local
    /backup/local:  1432c
    

Existem algumas outras opções para rastrear arquivos abertos como:

  • Com um Shellscript, liste todos os arquivos com extensões como .doc, .docx, .xls, .xlsx e assim por diante, e crie um if [ -f ".~lock.new_document.docx#" ] ; then para definir se um arquivo do Microsoft Office é aberto ou não, mas isso de solução alternativa, não é o que eu estou procurando.

  • Usando Módulos VFS para operações de auditoria de qualquer O arquivo dentro da pasta compartilhada pode ser uma fonte para um Shellscript, mas não é prático.

Existe alguém que possa conhecer alguma ferramenta que possa listar arquivos abertos / bloqueados das pastas compartilhadas do Samba, já que smbstatus -L não parece ser uma opção para esse problema?

    
por ivanleoncz 30.05.2017 / 17:59

1 resposta

0

De acordo com minhas descobertas, graças aos Módulos VFS , o Samba não mantém os Descritores de Arquivos para os arquivos que estão sendo compartilhados e usados, não importa o tipo de arquivo normal, com apenas uma exceção .

A única situação que eu descobri que arquivos abertos são visíveis via lsof ou smbstatus -L , é quando você tem arquivos abertos do Microsoft Office 2010 em diante.

$ 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

O mesmo não acontece quando você tem, por exemplo, um arquivo .docx aberto via Microsoft Office 2007 ou LibreOffice 4 .

O que geralmente acontece (esquecendo a situação acima sobre os arquivos do Microsoft Office 2010 em diante: uma vez que um Client Machine abre um arquivo de uma pasta compartilhada mantida pelo Samba, esse arquivo é armazenado em cache no sistema de arquivos do Client Machine, fechado no sistema de arquivos do servidor.

Abaixo, descrevi algumas observações que notei durante minhas experiências com Módulos VFS para o Samba .

A configuração desta funcionalidade, que permite auditar as operações realizadas em todas as pastas compartilhadas, é descrita no final da minha resposta.

Para documentos de texto, imagens, PDFs, arquivos de mídia, a máquina cliente :

  • abre o arquivo
  • armazena em cache os dados
  • fecha o arquivo no sistema de arquivos local do Servidor
  • ao salvar modificações, o Samba cria um arquivo temporário no Servidor
  • ao fechar o arquivo, o Samba remove o arquivo original e renomeia o arquivo tmp para o nome do arquivo original.

arquivo de abertura no cliente

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

salvando arquivo

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

fechando arquivos

Samba does not record operations for files that are closed on the Client Machines.

Para arquivos do Microsoft Office (.docx, .doc, .xls, .xlsx, etc.), o Client Machine :

  • abre o arquivo
  • armazena em cache os dados
  • fecha o arquivo no sistema de arquivos local do Servidor
  • abre um arquivo tmp / lock (. ~ lock.my_word_document.docx #) e o fecha
  • cada byte inserido no Client Machine gera operações de abertura / fechamento no arquivo original
  • ao salvar o arquivo, o Client Machine grava as modificações no arquivo
  • ao fechar o arquivo, o Samba remove o arquivo tmp / lock

arquivo de abertura no cliente

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#

escrevendo dados no arquivo (todo byte escrito, gera operações 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

salvando arquivo

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

arquivo de fechamento

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#

Se você está planejando implementar os Módulos VFS para o Samba , aqui estão alguns links que podem orientá-lo na configuração (não se esqueça de instalar o pacote samba-vfs-modules ):

Aqui está um trecho de smb.conf , mostrando a configuração do recurso para uma pasta compartilhada específica:

...
[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
...

Não se esqueça de adicionar uma declaração em rsyslog para gerar dados da pasta compartilhada em um arquivo de log:

$ grep local7 /etc/rsyslog.conf 
local7.*            /var/log/samba/audit.log
    
por 30.05.2017 / 20:52