Samba com log de acesso e lixeira - Instalação e configuração no Debian 6/7 e Ubuntu

Publicado por William Cadore em 03/03/2014

[ Hits: 16.902 ]

 


Samba com log de acesso e lixeira - Instalação e configuração no Debian 6/7 e Ubuntu



Ao montar um compartilhamento de rede com Debian 7, me deparei com alguns problemas, todos os tutoriais que têm na Internet, são de sistemas antigos. Ex.: mudou muita coisa do Debian 6 para o Debian 7.

Vamos lá!

Primeiramente, vamos instalar o Samba no Ubuntu ou Debian6/7 (se estiver usando Ubuntu, logue como usuário normal, e use o comando sudo em todos os comandos. Se estiver usando Debian, logue-se como root):

# apt-get upadate && apt-get install samba

Obs.: o sistema irá pedir a confirmação da instalação.

Configurando o Samba

Vamos fazer uma cópia do arquivo de configuração, só por segurança:

# cd /etc/samba/
# mv smb.conf smb.conf.old


Agora, vamos criar um novo arquivo de configuração (dentro do diretório /etc/samba):

# nano smb.conf

Abaixo, irei explicar o que faz em cada linha:

Obs.: configuração baseada nos tutoriais:
#Define a classe "global"
[global]

#Grupo de trabalho
workgroup = WORKGROUP

#Nome que será exibido na rede
netbios name = Servidor de arquivos Samba

#Nome do servidor
server string = Linux

#Level do OS (pode deixar 33 que funciona)
os level = 33

#Arquivo de log, abaixo irei explicar como criar um log personalizado
log file = /var/log/samba/samba.log

#Level do log: (de 0 a 10), sendo que o nível 0 mostra apenas mensagens críticas, o nível 1 mostra alguns detalhes sobre os acessos e os demais mostram diversos níveis de informações de debug, úteis a desenvolvedores, se quiser um log completo, até de erros nos acessos das máquinas clientes deixe 10
log level = 10

#Valor máximo para o arquivo de log
max log size = 10000

#Nível de debug do sistema
debug level = 2

#Segurança de acesso, deixe "user" para solicitar usuário e senha, "share" para não pedir
security = user

#Define se vai ser o servidor padrão da rede, deixe "false"
domain master = false

#Ativa módulos: full_audit = logs, recycle = lixeira
vfs objects = full_audit, recycle  #Se não deseja ter logs ou lixeira basta remover o nome do módulo e os arquivos de configuração do mesmo

###Início da configuração de log
#O próximo passo é definir quais operações devem ser logadas:
# open = abriu arquivo
# opendir = abriu diretório
# write = escreveu arquivo
# unlink = excluiu arquivo
# rename = renomeou arquivo
# mkdir = criou diretório
# rmdir = excluiu diretório
# chmod = editou permissões do diretório/arquivo
# chown = mudou o dono de um arquivo

full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown

#Usando a opção "full_audit:prefix".
#Aqui podemos utilizar algumas variáveis como:
# %u = o nome do usuário
# %I = o IP da máquina
# %S = o nome do compartilhamento onde foi feito o acesso ou a alteração

full_audit:prefix = %u|%I|%S

#Por padrão, o módulo loga não apenas os acessos e modificações, mas também um grande volume de mensagens de alerta e erros gerados durante a operação. A opção "full_audit:failure = none" evita que estas mensagens sejam logadas, fazendo com que o log fique muito mais limpo e seja mais fácil encontrar as opções que realmente interessam
full_audit:failure = none

#Especificamos o nível dos alertas, entre os suportados pelo syslog
full_audit:facility = local5
full_audit:priority = notice

###Fim configuração de log

###Início configuração da lixeira
#Lembrando que o "vfs objects" deve conter o modulo: "recycle"

#Não deixa que os arquivos fiquem misturados, cria o caminho certo de onde o arquivo foi excluído

recycle:keeptree = yes

#Não sobrescreve os arquivos deletados, criar diferentes nomes. Exemplo: arquivo, arquivo2, arquivo3...
recycle:versions = yes

#Aqui podemos colocar os arquivos em um diretório, ou podemos deixar apenas na lixeira, que ele cria no diretório raiz de cada compartilhamento
recycle:repository = /var/samba/trash/

#Aqui ignoramos alguns arquivos, porque não há necessidade de deixar os mesmos salvos como um "backup" e ocupar espaço em disco
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso

#Mesma coisa, mas neste caso são pastas não importantes
recycle:exclude_dir = tmp, cache

###Fim configuração da lixeira

#Obs.: estas configurações se aplicam a todo compartilhamento, para criar configurações específicas para cada compartilhamento retire da opção "global" e coloque em cada seção de compartilhamento, que será explicado abaixo

#Agora vamos configurar os compartilhamento, irei criar dois como exemplos
#Nome do compartilhamento: Usuario

[Arquivos Usuario]

#Comentário para o compartilhamento
comment = Arquivos Usuario

#Diretório para o compartilhamento
path = /home/server/files/usuario

#Usuários que poderão acessar o compartilhamento. Obs.: os usuários devem estar no sistema também. Abaixo explicarei como adicionar os usuários
#Vamos supor que esta empresa tenha três usuários:

valid users = william, joao, maria #Os três usuários poderão ter acesso

#Informa se o compartilhamento é público
public = no

#Permite somente conexões guest ao recurso. O UID do usuário é mapeado para guest mesmo que forneça uma senha correta
guest only = no

#Informa se o compartilhamento será "somente leitura" assim não podendo deletar, criar ou renomear arquivos e pastas
read only = no

#Define se o compartilhamento será ou não exibido
browseable = yes

#Define se será possível "escrever" no compartilhamento
writable = yes

#Solicita que o Samba force o tipo de permissão dos arquivos criados
force create mode = 777

#Mesmo que force create mode, mas para diretórios criados nos compartilhamentos
force directory mode = 777


#Nome do compartilhamento (financeiro)
[Arquivos Financeiro]

#Comentário para o compartilhamento
comment = Arquivos Financeiro

#Diretório para o compartilhamento
path = /home/server/files/financeiro

#Usuários que poderão acessar o compartilhamento.
#Obs.: os usuários devem estar no sistema também, abaixo explicarei como adicionar os usuários

valid users = william, maria  #Apenas o usuário "william" e o usuário "maria" poderão acessar este compartilhamento enquanto que o usuário "joao" não

#Informa se o compartilhamento é público
public = no

#Permite somente conexões guest ao recurso. O UID do usuário é mapeado para guest mesmo que forneça uma senha correta
guest only = no

#Informa se o compartilhamento será "somente leitura" assim não podendo deletar, criar ou renomear arquivos e pastas
read only = no

#Define se o compartilhamento será ou não exibido
browseable = yes

#Define se será possível "escrever" no compartilhamento
writable = yes

#Solicita que o Samba force o tipo de permissão dos arquivos criados
force create mode = 777

#Mesmo que force create mode, mas para diretórios criados nos compartilhamentos
force directory mode = 777

#Obs.: para mostrar a lixeira junto na rede crie um novo compartilhamento informando o diretório da lixeira

Configurando Syslog

Agora, vamos configurar o syslog do sistema para executar os logs do Samba.

Abra o arquivo /etc/syslog.conf se estiver usando Ubuntu ou Debian até a versaõ 6. Se estiver usando o Debian 7, o arquivo é /etc/rsyslog.conf.

Insira esta linha no final do arquivo:

local5.notice /var/log/samba-full_audit.log

Note que o local5.notice corresponde aos valores informados nas opções full_audit:facility e full_audit:priority. Enquanto o /var/log/samba-full_audit.log é o arquivo de log que será gerado.

Em seguida, iremos criar os diretórios:

# mkdir /home/server/files/usuario && mkdir /home/server/files/financeiro

Agora, iremos dar permissão total a esses diretórios:

# chmod 777 /home/server && chmod 777 /home/server/files && chmod 777 /home/server/files/usuario && chmod 777 /home/server/files/financeiro

Ainda temos que criar os usuários: william, maria e joao:

# adduser william

Informe a senha e outras informações conforme o servidor pedir. Faremos igual para os outros dois:

# adduser maria
# adduser joao


Agora, temos de adicioná-los ao Samba:

# smbpasswd -a william

Informe a senha para usuário.

Obs.: a senha deve ser igual à criada anteriormente, para evitarmos negação de direito nos diretórios.

O mesmo para os outros dois:

# smbpasswd -a maria
# smbpasswd -a joao


Se desejar que os usuários não possam logar no sistema do servidor via SSH, ou pelo próprio sistema, vamos inativar o acesso deles ao sistema com o comando usermod.

Onde:
  • -L = LOCK (bloqueia)
  • -U = UNLOCK (desbloqueia)

# usermod -L william
# usermod -L maria
# usermod -L joao


Para liberar o acesso, basta trocar o -L por -U.

Depois de concluída toda a configuração, reinicie os serviços e o compartilhamento passará a funcionar imediatamente:

# service samba restart

Devemos reiniciar o serviço de log também:

# service rsyslog restart

Fazendo assim, deverá funcionar, configurei o meu desse mesmo jeito. Se der algum problema, ou alguma coisa não está como você queria, revise o tutorial.

Obs.: a dica abaixo foi retirada de:

Acessando arquivos de log

Para acessar os arquivos de log, configuramos o arquivo para ser gerado em /var/log/samba-full_audit.log.

Dentro do arquivo, você verá entradas contendo a data e hora, o usuário, o IP da máquina, o nome do compartilhamento, a operação realizada e o nome do arquivo, ou pasta, onde ela foi realizada, como em:

Nov 18 15:21:15 m5 smbd_audit: joao|192.168.1.23|arquivos|opendir|ok|.
Nov 18 15:21:29 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|r|addr.txt
Nov 18 15:21:34 m5 smbd_audit: joao|192.168.1.23|arquivos|mkdir|ok|trabalho
Nov 18 15:21:36 m5 smbd_audit: joao|192.168.1.23|arquivos|opendir|ok|trabalho
Nov 18 15:21:43 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|w|trabalho/Samba.sxw
Nov 18 15:21:44 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|w|trabalho/foto.jpg

O log conterá entradas referentes a todos os usuários e máquinas, mas, é fácil ver apenas as entradas referentes a um determinado usuário, compartilhamento, endereço IP ou outro parâmetro qualquer, ao listar o arquivo pelo terminal usando o grep, que permite mostrar apenas as linhas contendo determinados trechos de texto, como em:

Mostra os acessos provenientes do usuário joao:

# cat /var/log/samba-full_audit.log | grep joao

Acessos feitos ao compartilhamento "financeiro", por parte de qualquer usuário:

# cat /var/log/samba-full_audit.log | grep |financeiro|

Dica: adicione "> arquivos.log" no final de cada linha anterior, para copiar o log para um arquivo externo.


Dúvidas ou problemas postem nos comentários abaixo. Abraço...

Fontes:
Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Problemas na instalação do Mandriva a partir de um mirror local

Montagem de partições para perfeito funcionamento - fstab

Recuperando / corrigindo erros em partição / (raiz) em LVM - Fedora Core 5

Montando dispositivos criptografados pelo TrueCrypt

Projeto Root - Deduplicação de Dados com OpenDedup

  

Comentários
[1] Comentário enviado por lafiera em 15/05/2014 - 14:31h

Muito bom! Parabens. Me ajudou bastante.

Obrigado

[2] Comentário enviado por tulioramos em 16/08/2017 - 17:16h

Parabéns. Muito útil.

[3] Comentário enviado por Wcadore em 16/08/2017 - 17:30h


[2] Comentário enviado por tulioramos em 16/08/2017 - 17:16h

Parabéns. Muito útil.


Obrigado, estamos aqui para contribuir, qualquer duvida estamos ai!

[4] Comentário enviado por Wcadore em 16/08/2017 - 17:31h


[1] Comentário enviado por lafiera em 15/05/2014 - 14:31h

Muito bom! Parabens. Me ajudou bastante.

Obrigado


Obrigado, desculpe a demora, estava fora por uns tempos!
Conseguiu usar, ficou alguma duvida?



Contribuir com comentário