Todos os comandos apresentados neste tutorial foram testados na distribuição
Ubuntu-server 14.04 LTS, Samba 4.1.6.
1) Efetuar a instalação do samba:
# apt-get install samba
Após efetuar a instalação, acesse o arquivo de configuração, normalmente localizado em
/etc/samba/smb.conf. Utilize um editor de sua preferência para editá-lo, como vim ou nano. Antes de começar a editar efetue uma backup do arquivo original:
# cd /etc/samba
# cp smb.conf smb.conf.bkp
Na seção global defina as seguintes configurações:
[global]
##Identificação do servidor
netbios name = NomeDoHost
workgroup = Grupo
####### Authentication #######
security = user
map to guest = bad user
NOTA: a variável share utilizada para definição de autenticação em outras versões do samba não funciona na versão 4.1, agora utilizamos:
map to guest = bad user
Agora defina os diretórios:
#======================= Share Definitions =======================
[lixeira]
path = /dados/lixeira
browseable = yes
writable = yes
public = yes
[arquivos]
comment = Arquivos temporarios
path = /dados/arquivos
guest ok = yes
read only = on
[Financeiro]
path = /dados/Financeiro
comment = Pasta de arquivos financeiro.
writeable = yes
valid users = @gfinanceiro
force create mode = 0660
force directory mode = 0770
force group = gfinanceiro
browseable = yes
veto files = /*.mp3/*.wma/*.avi
[RecursosHumanos]
path = /dados/RecursosHumanos
comment = Pasta de arquivos RH.
writeable = yes
valid users = @grh
force create mode = 0660
force directory mode = 0770
force group = grh
browseable = yes
veto files = /*.mp3/*.wma/*.avi
Mãos na massa! Tomemos um diretório como exemplo...
Crie um diretório em qualquer pasta, no meu caso criei o volume /dados, faça as adaptações de acordo com a sua necessidade.
Crie uma pasta em /dados/RecursosHumanos, logo depois crie um grupo no samba:
# groupadd NomeDoGrupo
Em seguida crie um usuário:
# adduser NomeDoUsuário
Depois ainda é necessário adicionar o usuário ao samba:
# smbpasswd -a NomeDoUsuário
Seguindo em frente, ainda é necessário vincular o usuário a grupo criado:
# gpasswd -a NomeDoUsuário NomeDoGrupo
Agora temos que alterar algumas configurações nas pastas de acordo com a nossa necessidade. Comece dando permissão na pasta:
# chmod 770 /dados/RecursosHumanos
Onde o primeiro "7" define permissão total ao dono da pasta, o segundo ao grupo dono da pasta, e o "0" na terceira posição define restrição total a outros usuários. Com o comando "ls -la" é possível visualizar as pastas, com os respectivos donos e grupos proprietários.
Se o procedimento descritos acima foram realizados corretamente, será possível acessar as pastas do servidor samba com autenticação de grupo.
Também é possível criar uma lixeira no samba, assim quando o usuário excluir algum arquivo, o que as vezes acaba acontecendo por acidente, o mesmo ficará armazenado numa pasta definida no servidor. Vejamos como fazer isso!
1) Crie uma pasta em qualquer lugar do servidor e dê permissão:
# mkdir /dados/lixeira
# chmod 777 /dados/lixeira
2) Agora coloque as configurações abaixo na sessão global do aquivo de configuração do samba:
##Configuração da lixeira
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:repository = /dados/lixeira/%U
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso
recycle:exclude_dir = tmp, cache
3) Reinicie o samba e a lixeira já estará funcionado:
# /etc/init.d/samba restart
Também no samba é possível auditar o acesso as pastas do servidor, desta forma conseguimos identificar qual usuário que acessou determinada pasta, ou excluiu, modificou...
Como fazer! Defina o seguinte bloco na sessão global:
vfs objects = full_audit
full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown
full_audit:prefix = %u|%I|%S
full_audit:failure = none
full_audit:facility = local5
full_audit:priority = notice
Obs.: veja que na variável full_audit podemos definir qual ação será auditada, também é possível definir essa linha por compartilhamento.
Abra o arquivo
/etc/rsyslog.conf e adicione a linha abaixo:
local5.notice /var/log/samba-full_audit.log
Reinicie o samba e o rsyslog para que as configurações sejam aplicadas:
# /etc/init.d/samba restart
# /etc/init.d/syslogd restart
Se tudo foi realizado conforme descrito, os logs já devem estar funcionando...
Ver logs de um usuário:
# grep NomeDoUsuário /var/log/samba-full_audit.log
Ver logs de determinado usuário com o IP 192.168.1.23:
# grep NomeDoUsuário /var/log/samba-full_audit.log | grep 192.168.1.23
Ver logs de quem abriu pastas do samba:
# grep opendir /var/log/samba-full_audit.log