Nessa configuração teremos uma boa ideia de como funciona o
Samba atuando como controlador de domínio primário em uma rede corporativa. Em uma rede acima de 10 máquinas, aconselho utilizar um controlador de domínio com perfil móvel para maior facilidade de administração dos usuários.
Mostrarei como configurar um controlador de domínio de maneira simples e com lixeira de arquivos, fazendo a recuperação dos arquivos delatados ser mais ágil, nosso arquivo de configuração terá, além de lixeira e exclusões de arquivos tmp, grupos e níveis de acessos bem práticos para melhor entendimento.
Um controlador de domínio controla os níveis de acesso dos usuários de uma rede corporativa e a funcionalidade do Samba como PDC é de garantir a segurança e informação dos usuários.
Sobre o perfil móvel, o usuário não precisa estar necessariamente no terminal de uso dele. Dentro do parque da máquinas da empresa, de qualquer estação ele pode fazer logon com seu usuário e senha, que carregará o perfil do usuários, com isso não nos preocuparemos no caso de ter que formatar uma estação de trabalho, pois as informações contidas em cada conta de usuário está guardada no profile do usuário, na estação e também no servidor.
A estação e o servidor ficam sincronizado 24 horas por dia. Quando o usuário efetua logon ou desliga a estação, a pasta do perfil do usuário é salva dentro do servidor e mantendo o profile sempre seguro, pois além de ter uma cópia local em "Documents and Settings", temos os profiles seguros no nosso servidor Samba PDC.
O arquivo de configuração principal é o
smb.conf, ele encontra-se no /etc/samba (Debian ou Ubuntu
Linux). Em derivações BSD se encontra em /usr/local/etc/samba.
Criaremos a pasta onde ficam guardados os Netlogon, que são os responsáveis por fazer os mapeamentos e as sincronizações do relógio das estações. Imagine em uma rede com 100 máquinas, o administrador ter que ir uma a uma para fazer o mapeamento e ajustar a hora do PC de todos usuários? Para automatizar isso usaremos um bloco de notas e faremos a mapeamento e a sincronização do relógio do terminal com o do servidor.
Detalhe importante: para o relógio do terminal sincronizar com o do servidor o usuário do terminal terá que ser no mínimo usuário avançado do sistema, senão a hora não mudará. Lembre-se que estamos subindo além de um PDC, um controlador de domínio, não adianta ter a sincronia dos relógios e não ter permissão de mudança no terminal.
Vamos lá!
Crie em /home a pasta "samba", de permissão total ao dono:
# cd /home
# mkdir samba
# chmod 700 samba
Crie em /home/samba a pasta netlogon:
# cd samba
# mkdir netlogon
Dê a sua devida permissão:
# chmod 700 netlogon
Ou seja, leitura, escrita e execução para o dono.
Dentro da pasta, cada usuário do sistema terá o seu netlogon com nome de usuario.bat. Ex.: Para o usuário cláudio o arquivo bat será claudio.bat.
ren Logon Script ...
NET TIME \\spbrsfs01 /set /yes // sincronizando a hora com a do server.
NET USE N: \\spbrsfs01\geral // Fazendo o mapeamento automático da pasta geral
NET USE P: \\spbrsfs01\artes // Fazendo o mapeamento automático da pasta artes
NET USE Q: \\spbrsfs01\sistemas // Fazendo o mapeamento automático da pasta sistemas.
Salvar esse arquivo dentro da pasta netlogon. Não se preocupe com a permissão do arquivo, pois você já deu permissão na pasta.
Agora vamos criar a pasta dos profiles, nelas ficam guardadas os profiles dos usuários.
# mkdir /home/samba/profiles
# chmod 700 profiles
Criando os grupos para definirmos os acessos aos compartilhamentos:
# vim /etc/group
E adicione manualmente o grupo pertinente a cada usuário, ficando assim.
root:x:0:
grif_suporte:x:2012:claudio,thiago,root #Ou seja o claudio. thiago e root terão acesso a pasta suporte por fazer parte do grupo grif_suporte.
Para melhor entender:
Neste exemplo o grupo grif_suporte (o símbolo at [@] ao lado é sinônimo de grupo para o Samba) é quem pode escrever no diretório. Por padrão eu costumo deixar a máscara em 777, porque somente usuários do domínio NT (simulado pelo Samba) ou pertinentes ao grupo definido podem fazer tudo. A segurança ficaria para nível de acesso, que eu acho mais simples gerenciar.
Agora chegamos na parte principal e nela detalharemos bem a configuração do Samba, aqui é o coração da funcionalidade de tudo.
Dentro do /etc/samba, abrir o smb.conf com o editor preferido, eu gosto do VIM.
# vim smb.conf
[global]
## Nome do domínio e Grupo o mesmo será para as estações..
workgroup = Meu-dominio
## Forma que será visível na rede
netbios name = SPBRSFS01
## Nome e comentário do servidor na rede
server string = SPBRSFS01 SAMBA
wins support = yes
## servidor responde por Dns tbm no nosso caso não
dns proxy = no
## hora ajustável do serve
time server = yes
## Conf padrão
name resolve order = lmhosts host wins bcast
## Ip do maquina onde funcionará o serve
interfaces = 127.0.0.0/8 192.168.1.12
## Visibilidade na rede Sim
bind interfaces only = yes
## arquivo de log padrão
log file = /var/log/samba/log.%m
## Tamanho Maximo a gravar log
max log size = 5120
## ver os log nos clientes não
syslog only = no
## Nivel do log
syslog = 0
## arquivo padrão do samba
panic action = /usr/share/samba/panic-action %d
## criptografando a senha do usuário
encrypt passwords = true
## Padrão do samba
passdb backend = tdbsam
## restringir usuários por acessos
obey pam restrictions = yes
## fazer requisição de password nos acessos de compartilhamento
unix password sync = yes
## Local onde buscara as senhas
passwd program = /usr/bin/passwd %u
## pardrão do samba
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
## pardrão do samba aconselhável para PDC
password level = 8
## pardrão do samba aconselhável para PDC
username level = 16
## forçar autenticação
pam password change = yes
## aqui decide se é controlador de domínio ou não
domain logons = yes
## busca dos profiles que cada usuário terá
logon path = \\%L\profiles\%U
## aqui determinamos os mapeamentos via .BAT
logon script = %U.bat
## add usuarios no samba
add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
## add maquinas cliente no samba.
add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /dev/null -s /bin/false %u
add group script = /usr/sbin/addgroup --force-badname %g
add user to group script = /usr/sbin/adduser %u %g
delete user script = /usr/sbin/userdel %u
delete group script = /usr/sbin/groupdel %g
delete user from group script = /usr/sbin/deluser %u %g
set primary group script = /usr/sbin/usermod -g %g %u
load printers = no
## não será servidor e impressão
#printing = cups
#printcap name = cups
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
## primeiro servidor a responder na rede
## seguir essas conf. até o hosts
preferred master = yes
local master = yes
domain master = yes
os level = 255
log level = 2
unix charset = iso8859-1
display charset = cp850
max mux = 100
max open files = 100000
kernel oplocks = no
oplocks = no
remote announce = 192.168.1.255
## brodcast da sua rede
remote browse sync = 192.168.1.255
## Range de ip da rede no meu caso local, rede interna e VPN
hosts allow = 127., 192.168.1.,192.168.3.
block size = 4096
level2 oplocks = no
## aqui irei bloquear arquivos com essas extensões na minha rede
veto files = /*.mp3/*.wmv/*.wma/*.ogg/*.mpeg/*.mpg
## Criação da auditoria do meu Samba..
vfs objects = full_audit
full_audit:success = write, unlink, rename, mkdir, rmdir, chmod, chown
full_audit:failure = write, unlink, rename, mkdir, rmdir, chmod, chown
full_audit:prefix = %u|%I|%S
## criação da minha lixeira da rede
vfs objects = recycle
recycle:versions = yes
recycle:touch = yes
recycle:keeptree = yes
recycle:exclude = *.tmp *.temp *.o *.obj ~$*
recycle:exclude_dir = tmp, cache
#======= Share Definitions =======================
[homes]
comment = Home escolher o nome que quiser apenas comentário
browseable = no // acessar via browser NÃO
read only = no // visível na rede NÃO
create mask = 0700 // Total apenas para o dono
directory mask = 0700 // Total apenas para o dono
valid users = %S // valido somente para o usuário
vfs objects = recycle, full_audit // aqui chamo a auditoria
recycle:repository = .recycle // aqui chamo a lixeira
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon /Criar a pasta onde ficará os netlogon
guest ok = yes
read only = yes
share modes = no
[profiles]
comment = Users profiles // Comentário
path = /home/samba/profiles // pasta do profile CRIAR
read only = no // NÃO visivel
guest ok = no // NÃO visível
browseable = no // NÃO acessível via browser
create mask = 0600 // Permissão apenas para o dono
directory mask = 0700 // Permissão apenas para o dono
[geral]
comment = Area de transferencia
path = /home/Meu-dominio/misc/gera // Comentário
read only = no // somente leitura não
guest only = yes // Visivel na rede
guest ok = yes // Todos
force create mode = 0755 // Permissão vale para todos
force directory mode = 0755 // Permissão vale para todos
vfs objects = recycle, full_audit // auditoria e lixeira
recycle:maxsize = 524288000 // tamanho da lixeira nesse compartilhamento.
recycle:repository = .recycle
[sistemas]
comment = Sistemas interno
path = /home/Meu-dominio/systems/sistemas
read only = no
force create mode = 0777
force directory mode = 0777
guest only = yes
guest ok = yes
default case = upper
delete readonly = yes
vfs objects = recycle, full_audit
recycle:maxsize = 524288000
recycle:repository = .recycle
[suporte]
comment = Suporte - Diretorio do TI
path = /home/Meu-dominio/ti/suporte
valid users = @grif_suporte // acesso somente a usuários adicionada no grupo grif_suporte
write list = @grif_suporte // somente que faz parte da lista grif_suporte
read only = no // somente leitura não
force create mode = 0777 // Permissão total para o dono, grupo e usuários
force directory mode = 0777 // Permissão total para o dono, grupo e usuários
vfs objects = recycle, full_audit // auditoria e lixeira
recycle:maxsize = 209715200
recycle:repository = .recycle
[controle]
comment = Controle de qualidade
path = /home/Meu-dominio/department/cq/controle
valid users = @grif_cq // Recapitulando
write list = @grif_cq // acesso somente para o grupo grif_cq
read only = no // somente leitura não
force create mode = 0777 // Permissão total para o dono, grupo e usuários
force directory mode = 0777 // Permissão total para o dono, grupo e usuários
vfs objects = recycle, full_audit // arquivo de auditoria e lixeira
recycle:maxsize = 209715200 // tamanho Maximo lixeira
recycle:repository = .recycle // nome da lixeira
[orcamento]
comment = Orcamentos // Comentário
path = /home/Meu-dominio/department/orc // Criar pasta
valid users = @grif_orc // Somente
write list = @grif_orc // Somente
read only = no // somente leitura não
force create mode = 0777 // Permissão total para o dono, grupo e usuários
force directory mode = 0777 // Permissão total para o dono, grupo e usuários
vfs objects = recycle, full_audit // auditoria e lixeira
recycle:maxsize = 209715200 // tamanho Maximo
recycle:repository = .recycle // nome da lixeira
Após essas configurações, reinicie o Samba:
# /etc/init.d/samba restart (em Debian e Ubuntu)
# /etc/usr/local/etc/samba restart (derivações BSD)
Vale lembrar que o arquivo de configuração do Samba é igual para todos as distros. Após concluir a conf do Samba, aconselhável nas máquinas clientes configurar em opções de pastas para não visualizar pastas ocultas, sendo assim os usuários não verão a lixeira estando legível apenas para o administrador da rede.
Dúvidas, estou online 24ho no MSN cLaudio@linuxtec.com.br.
Obrigado pelo espaço...