Auditoria de exclusão no Samba: quem apagou o arquivo?

Em muitos ambientes o compartilhamento Samba funciona perfeitamente… até o dia em que alguém pergunta:

“Quem deletou o arquivo?”

Se você usa apenas um compartilhamento simples como este:

[documentos]
   path = /srv/samba/documentos
   read only = no
   browsable = yes

o Samba não registra quem excluiu arquivos.
E mesmo usando o módulo de lixeira (recycle), você só recupera o arquivo — não sabe quem apagou.

A solução correta é combinar lixeira + auditoria.


1. Ativando lixeira no compartilhamento

Adicione ao share:

[documentos]
   path = /srv/samba/documentos
   read only = no
   browsable = yes

   vfs objects = recycle

   recycle:repository = .lixeira
   recycle:keeptree = yes
   recycle:versions = yes
   recycle:touch = yes
   recycle:directory_mode = 0777
   recycle:subdir_mode = 0777
   recycle:maxsize = 0
   recycle:exclude = *.tmp,*.temp
   recycle:exclude_dir = tmp,temp,cache

Agora, quando um arquivo for apagado, ele irá para:

/srv/samba/documentos/.lixeira

Preservando a estrutura original de diretórios.


2. Registrando quem apagou arquivos

Para logar exclusões usamos o módulo full_audit do Samba. (lembre-se que para este item funcionar, você deve trabalhar com hierarquia de usuários, caso contrário, o testparm aceita as alterações, mas o sistema pode apresentar falhas de acesso quando guest)

Ele registra operações como:

  • exclusão
  • criação
  • renomeação
  • escrita

Adicione ao mesmo compartilhamento:

vfs objects = recycle full_audit

full_audit:prefix = %u|%I|%S
full_audit:success = unlink rmdir rename
full_audit:failure = unlink rmdir rename
full_audit:facility = LOCAL7
full_audit:priority = NOTICE

O que cada variável significa

%u  → usuário autenticado
%I  → IP do cliente
%S  → compartilhamento usado

3. Exemplo de log gerado

Quando um usuário excluir um arquivo:

joao|192.168.1.45|documentos|unlink|ok|contrato.pdf

Interpretação:

usuario | IP | share | operação | status | arquivo

Operações comuns:

unlink  → exclusão de arquivo
rmdir   → exclusão de diretório
rename  → renomeação/movimentação

4. Onde os logs aparecem

Normalmente no syslog:

/var/log/syslog

ou

/var/log/messages

5. Separando logs de auditoria

Para criar um log exclusivo do Samba, use rsyslog.

Crie o arquivo:

/etc/rsyslog.d/samba_audit.conf

Conteúdo:

local7.* /var/log/samba_audit.log

Reinicie os serviços:

systemctl restart rsyslog
systemctl restart smbd

Agora os logs estarão em:

/var/log/samba_audit.log

6. Auditoria completa (recomendado)

Se quiser registrar também criação e edição de arquivos:

full_audit:success = mkdir rmdir open write unlink rename

Assim você passa a saber:

  • quem criou arquivos
  • quem alterou
  • quem moveu
  • quem apagou

7. Precisa compilar algo?

Não.

Os módulos recycle e full_audit já vêm compilados no Samba padrão das distribuições Linux.

Basta configurar e reiniciar o serviço.


Conclusão

Com duas linhas no vfs objects você ganha:

  • lixeira de arquivos
  • auditoria completa de exclusões
  • registro de usuário e IP

Pequena configuração, enorme ganho de rastreabilidade.

Rolar para cima