As vezes precisamos saber quem apagou/renomeou/moveu tal arquivo e uma forma de saber isso é habilitando o módulo de auditoria do samba. Na seção [global] do /etc/samba/smb.conf adicione o seguinte:
vfs object = audit
Em seguida é preciso reiniciar o samba:
/etc/init.d/samba restart
Pronto, agora podemos verificar tudo que esta ocorrendo, os logs são gravados em /var/log/messages:
Jun 27 17:10:16 localhost smbd_audit[29426]: connect to service PUBLICA by user rafael
Jun 27 17:10:17 localhost smbd_audit[29426]: open teste.txt (fd 28 )
Jun 27 17:10:17 localhost smbd_audit[29426]: close fd 28
Jun 27 17:10:27 localhost smbd_audit[29417]: opendir .
Jun 27 17:10:27 localhost last message repeated 3 times
Jun 27 17:10:27 localhost smbd_audit[29417]: rename ./teste.txt -> ./teste2.txt
Jun 27 17:10:32 localhost smbd_audit[29417]: unlink ./teste2.txt
Para ficar melhor de buscarmos e não poluir o /var/log/messages, podemos configurar o syslog para por os logs em /var/log/samba/audit.log. Abra o /etc/samba/smb/conf novamente e adicione logo abaixo da linha que adicionamos acima:
audit:facility = LOCAL1
audit:priority = NOTICE
Ficando:
# Auditoria
vfs objects = audit
audit:facility = LOCAL1
audit:priority = NOTICE
E para concluir vamos configurar uma “facility” personalizada no syslog que pode ser da local0 até a local7, no caso eu utilizei a local1 (audit:facility = LOCAL1) e “level/priority” igual a notice (audit:priority = NOTICE) . A adicione (no começo ou final, tanto faz) o seguinte ao /etc/syslog.conf:
# Logs para auditoria do samba
local1.notice /var/log/samba/audit.log
Reinicie o syslog e o samba:
/etc/init.d/sysklogd restart
/etc/init.d/samba restart
Verificando se deu tudo certo:
# tail -f /var/log/samba/audit.log
Jun 27 17:22:46 localhost smbd_audit[29574]: connect to service PUBLICA by user rafael
Jun 27 17:22:46 localhost smbd_audit[29574]: opendir ./
Jun 27 17:37:01 localhost smbd_audit[29574]: opendir teste2
Jun 27 17:37:01 localhost smbd_audit[29574]: rmdir teste2
Tudo beleza!