Bom dia pessoal,
Esse é o primeiro post do meu blog. Resolvi criá-lo para compartilhar o pouco de conhecimento que tenho e contribuir com a comunidade!
Nesse primeiro post, vamos ver sobre compartilhamento com o Samba, utilizando recursos como lixeira, auditoria de acessos e alterações, acesso por IP ou por login.
A versão do S.O utilizado por mim é o Debian Squeezy (6.0.5) e a versão do samba é a 3.5.6.
Instalação:
apt-get install samba
Estrutura do Samba:
/etc/samba
/usr/lib/samba
/usr/share/samba
/var/log/samba
Se caso você for utilizar o acesso por login e senha, veremos abaixo os comandos para a criação dos logins:
adduser –disabled-login –no-create-home –home=/home/luna luna
–disable-login → Utilizado para não ter permissão de acesso ao S.O, somente pelo Samba.
–no-create-home → Não cria o diretório padrão do usuário.
–home → Diretório a qual o login pertencerá.
Para ativar o usuário no samba:
smbpasswd -a login criado anteriormente, ex: smbpasswd -a luna
Pedirá a senha para o acesso.
smbpasswd -d luna → Desabilitará temporariamente o login, como por exemplo, se o usuário pegar férias e querer garantir que ninguém usará o seu acesso.
smbpasswd -e luna → Habilita o login quando ele estiver desabilitado.
smbpasswd -x luna → Exclui o usuário do Samba.
Também é possível a criação e edição de grupos em /etc/group
ex: comercial:x:123:luna,stark,myagi
Ou por comando:
grupadd comercial → Criará o grupo
usermod -G comercial luna → Adiciona o usuário luna ao grupo comercial
Na seção global, fiz alguns comentários que podem ser alterados
Na parte para habilitar os módulos para o samba, deverão ser separados por “,”, não crie dois “vfs objects” pois o debaixo vai substituir o de cima.
O módulo “recycle” é o utilizado pela lixeira, e o “full_audit” é utilizado para fazer auditoria.
Na parte de bloquear extensões, utilizado na sessão global, afetará todos os diretórios compartilhados, não precisa de espaço ou vírgula para fazer a separação das extensões. Como por exemplo:
veto files = /*.mp3/*.avi/*.flv/*.mpg/*.wma/*.wav/*.mpeg/*.bmp
Na parte da lixeira temos os itens:
- recycle:repository → Onde será gravado os arquivos excluídos e o %U significa que será criado diretório dos usuários para fazer a divisão dos arquivos excluídos e deixar mais organizado, facilitando na hora de recuperar os arquivos.
- recycle:exclude → Extensões que não devem ir para a lixeira e serão excluídos totalmente.
- recycle:exclude_dir → Diretórios que não devem ir para a lixeira e que também serão excluídos totalmente.
Na parte de autoria temos os itens:
- full_audit:success → Funções que serão auditadas
- full_audit:prefix → Modelo do log %u|%I|%S , ficaria usuário|IP|compartilhamento.
- full_audit:failure → Não audita erros.
- full_audit:facility → Nível do log
- full_audit:priority → Nível do log
Existem outras opções do prefix em:
http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#FULL_AUDIT:PREFIX
Na sessão “VARIABLE SUBSTITUTIONS”.
Possíveis opções no success:
- open → Abertura de um arquivo ou diretório
- opendir → Visualiza os arquivos dentro de um diretório
- write → Alterações realizadas em arquivos e diretórios
- unlink → Deletar um arquivo ou diretório
- rename → Renomeia um arquivo ou diretório. Quando a lixeira é ativada, o rename é utilizado no log para identificar o arquivo sendo enviado para a lixeira .
- mkdir → Criar um diretório.
- rmdir → Remover um diretório.
- chmod → Alteração das permissões de arquivo ou diretório.
- chown → Mudança de dono do arquivo ou diretório.
Para ativar a auditoria, teremos que fazer uma modificação no arquivo /etc/rsyslog.conf e adicionar a seguinte linha embaixo de “user.* -/var/log/user.log” da sessão “Rules”:
local5.notice /var/log/samba//smb_audit.log
Sessão Global finalizada, vamos para a sessão “Share Definitions” que é a sessão usada para o compartilhamento dos diretórios.
Exemplo de diretório publico:
[Publico] → Nome que aparecerá quando acessar o computador compartilhado.
comment = Publico → Comentário sobre o diretório.
path = “/home/Publico”
# veto files =
guest ok = Yes
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
writable = Yes
browseable = Yes
public = Yes
Um pouco sobre os campos:
[Diretório] → Nome que aparecerá quando acessar o computador compartilhado.
comment → Comentário sobre o diretório.
Path → Caminho do diretório completo, eu gosto de utilizar o caminho entre aspas por causa de utilizar diretórios com mais de uma palavra ou com acento, para funcionarem corretamente.
veto files → bloqueio de extensão de arquivos.
guest ok → Permite usuário sem login.
create mask → Permissão do arquivo quando criado.
directory mask → Permissão do diretório quando criado.
force directory mode Força a permissão do diretório quando criado.
force create mode → Força a permissão do arquivo quando criado.
writable → Permite ou nega a escrita
browseable → Visibilidade do diretório, permite ou não o diretório ser visualizado quando é acessado o IP ou Host do computador sem o caminho completo. Por exemplo, caso o browseable for “no”, se acessado smb://192.168.1.5 esse diretório não aparecerá, mas será possível acessar com o caminho smb://192.168.1.5/diretorio
public → O diretório pode ser acessado por qualquer pessoa.
Exemplo de diretório com permissão e bloqueio por login e por IP:
[Comercial]
comment = Setor comercial
path = “/home/Comercial”
veto files = /*.mp3/*.avi/
valid users = luna,stark,myagi,pipoca
guest ok = No
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
browseable = Yes
writable = Yes
write list = stark,pipoca
read list = luna,myagi
Caso queira utilizar grupo, utilize +grupo, por exemplo: write list = +comercial
Foi removido o item “public” e adicionado os itens “valid users”, “write list” e “read list”.
Foi alterado o campo “guest ok” para “no”, para não permitir login de visitante.
valid users → Todos os usuários que terão algum acesso no diretório.
write list → Usuários que poderão modificar e criar arquivos e diretórios.
Read list → Usuários que poderão visualizar o conteúdo dos arquivos e diretório mas não poderão fazer qualquer modificação neles.
Essa foi as permissões por login e senha, caso utilize o “security = share”, ficaria deste modo:
[Comercial]
comment = Setor comercial
path = “/home/Comercial”
valid users = luna,stark,myagi,pipoca
guest ok = No
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
browseable = Yes
writable = Yes
hosts allow = 192.168.1.23, 192.168.1.30, 192.168.1.9
hosts deny = 192.168.1.90
Pode-se também liberar por faixa de IP e bloquear alguns, por exemplo:
hosts allow = 192.168.1. EXCEPT 192.168.1.90, 192.168.1.92
Ou também desta forma, o que ficar melhor para você organizar
hosts allow = 192.168.1.
hosts deny = 192.168.1.23, 192.168.1.24
Pode-se também utilizar o mesmo método para o bloqueio
hosts deny = 192.168.1. EXCEPT 192.168.1.90, 192.168.1.92
Abaixo o smb.conf utilizando o acesso por login e senha.
Não esquecendo de reiniciar os serviços!
/etc/init.d/samba restart
/etc/init.d/rsyslog restart
Espero que gostem deste primeiro post! Agradeço a leitura e qualquer sugestão ou critica é bem-vinda =)
#======================= Global Settings =======================
# Seção das configurações gerais do samba
[global]
#Grupo a qual pertence o servidor
workgroup = INFRAESTRUTURA
#Descrição do servidor
server string = Documentos
dns proxy = no
#Local de gravação do log
log file = /var/log/samba/log.%m
#Tamanho do log
max log size = 1000
#Tipo de seguranção “user”, utilizado para login e senha, e o “share” utilizado com o IP
security = user
encrypt passwords = true
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
#Banco de dados do smbpasswd
passdb backend = smbpasswd
pam password change = yes
unix extensions = no
wide links = yes
#Nome do usuário para o visitante
user guest account = guest
### Habilita módulos
vfs objects = recycle, full_audit
### Bloquear extensões
#veto files = /*.mp3/*.avi/*.flv/*.mpg/*.wma/*.wav/*.mpeg/*.bmp
### Lixeira
recycle:keeptree = yes
recycle:versions = yes
recycle:repository = /cfile/lixeira/%U
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso, *.mp3, *.wav
recycle:exclude_dir = tmp, cache
### Log
log level = 1
log file = /var/log/samba.log
max log size = 1000
### Auditoria
full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir
full_audit:prefix = %u|%I|%S
full_audit:failure = none
full_audit:facility = local5
full_audit:priority = notice
#======================= Share Definitions =======================
[Publico]
comment = Publico
path = “/home/Publico”
# veto files =
guest ok = Yes
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
writable = Yes
browseable = Yes
public = Yes
[Comercial]
comment = Setor comercial
path = “/home/Comercial”
veto files = /*.mp3/*.avi/
valid users = luna,stark,myagi,pipoca
guest ok = No
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
browseable = Yes
writable = Yes
write list = stark,pipoca
read list = luna,myagi