Minicurso Samba
Visão geral do funcionamento do samba e do protocolo CIFS.
Exemplo de configuração do samba como servidor de arquivos e como controlador de domínio.
2. Agenda – Fase 1
● Motivação
● Introdução
● Compartilhamento de arquivos e impressoras
● SMB – Server Message Block
● CIFS – Common Internet File System
● Como o CIFS trabalha
● Componentes do Samba
● Funcionalidades do Samba
3. Motivação
Integração de Redes Heterogêneas é importante porque...
● Uso crescente de máquinas Windows e Linux
● Os dois ambientes possuem recursos que podem ser compartilhados
● A integração aproveita o melhor dos dois mundos:
● Windows como plataforma desktop popular e com muitos recursos
● Linux como plataforma de infraestrutura escalável e flexível
4. Introdução
● O Samba começou a ser desenvolvido por Andrew Tridgell em 1992 como
ferramenta para compartilhamento de diretórios e arquivos entre máquinas
*nix e máquinas com sistemas operacionais como Windows e OS/2 da IBM.
● Utilizando engenharia reversa no protocolo SMB (Server Message Block),
Andrew fez a implementação do protocolo em seu computador Unix.
● Dessa forma, os sistemas de arquivos do servidor Unix podiam então ser
montados e acessados por estações Windows.
● O projeto é mantido por um grupo de voluntários sob a supervisão de
Andrew Tridgell.
● Ferramenta opensource, é solução viável para as necessidades de
armazenamento centralizado de dados, autenticação e uso uso de recursos.
5. Compartilhamento de arquivos e impressoras
● Recursos como compartilhamento de arquivos e impressoras ficam disponíveis
na rede através do uso do protocolo CIFS (Common Internet File System), que
permite a comunicação entre diversas máquinas operando em diferentes
plataformas.
● O Samba utiliza o lado servidor do CIFS que permite que máquinas Linux se
comuniquem com outros sistemas operacionais disponibilizando e usando
recursos.
● Dessa forma, uma máquina Linux, por exemplo, é vista como outra máquina
Windows na rede.
● O Samba oferece escalabilidade, podendo inicialmente começar em uma
infraestrutura de máquinas comuns baseadas em arquiteturas Intel e crescer
até a implementação em Mainframes.
7. SMB – Server Message Block
● “Coração” do CIFS
● Foi uma extensão que a Microsoft acrescentou ao DOS para permitir que o
I/O de disco fosse redirecionado ao NetBIOS (Network Basic Input/Output
System).
● NetBIOS serve como interface entre a rede e um aplicativo fornecendo:
● Serviço de Nomes (responsável por exibir os nomes vistos no Ambiente de
Rede)
● Serviço de Sessão (utilizado pelo CIFS para enviar e receber mensagens
SMB)
8. CIFS – Common Internet File System
● Padrão aberto, criado pela IETF – Internet Engineering Task Force
● Trabalha na arquitetura cliente-servidor
● Provê os seguintes serviços:
● Compartilhamento de arquivos
● Impressão em rede
● Autenticação e autorização
● Resolução de nomes
● Anúncio de serviços (browsing ou navegação de recursos como
impressoras e servidor de arquivos)
9. Como o CIFS trabalha?
● Cliente e servidor trocam mensagens a fim de acessarem recursos
● Isso é feito através do Server Message Block Protocol.
Mensagens SMB:
SMB Request ● Solicitações de início e término de
conexão em compartilhamentos de
SMB Response arquivo e impressão;
● Operações com arquivos:
Cliente Servidor ● Open/Close
● Read/Write
● Pesquisa em diretórios
● Definição e checagem de permissões
10. Como o CIFS trabalha?
● Cliente e servidor trocam mensagens a fim de acessarem recursos
● Isso é feito através do Server Message Block Protocol.
Mensagens SMB:
SMB Request ● Solicitações de início e término de
conexão em compartilhamentos de
SMB Response arquivo e impressão;
● Operações com arquivos:
Cliente Servidor ● Open/Close
● Read/Write
● Pesquisa em diretórios
● Definição e checagem de permissões
11. Componentes do Samba
nmbd
●
Responsável pela resolução de nomes, faz parte do processo de navegação
●
(browsing) e varredura de recursos disponíveis em uma máquina
smbd
●
Responsável
● por compartilhar recursos (arquivos, impressoras),
autenticação, controle da autorização e acesso aos recursos
winbind
●
Responsável pelo mapeamento de bases de usuários em um domínio
●
Windows.
12. Funcionalidades do Samba
● Compartilhamento de um ou mais sistemas de arquivos;
● Compartilhamento de impressoras em ambientes Windows, ou atuar
como cliente;
● Autenticação de clientes em um domínio Windows;
● Manter registros das ações dos usuários no servidor;
● Permitir e garantir ao administrador direitos de domínio como restrições
de logins, inserção e retirada de máquinas e usuários da rede;
● Melhor controle de acesso aos recursos compartilhados no sistema;
● Facilidade na localização de arquivos e realização de backups.
14. Agenda – Fase 2
● Instalação de Pacotes – ambiente Debian
● Análise do smb.conf
● Definindo compartilhamentos personalizados
● Teste do arquivo smb.conf
● Criando usuários
● Teste no ambiente Windows
● Teste no ambiente Linux
15. Instalação de pacotes
Para configurar o servidor samba, é necessário instalar os seguintes
pacotes:
# aptget install samba smbclient smbfs
O comando acima irá instalar os seguintes pacotes:
● samba – servidor samba
● samba-common – arquivos de configuração do samba
● smbclient – cliente samba para Linux
● smbfs – utilitários para montagem de compartilhamentos através do Linux
Dica!
É uma boa prática, antes de instalar um pacote, verificar se o mesmo já está
instalado no sistema:
# dpkg -l | grep samba
# dpkg -l | grep smbclient
# dpkg -l | grep smbfs
16. Dica para o administrador
Dica!
Nos próximo slides, iremos analisar as principais diretivas do smb.conf.
Porém, antes de fazer qualquer alteração, primeiro vamos salvar uma cópia
do arquivo original, que pode ser utilizado para futuras consultas.
# cp /etc/samba/smb.conf /etc/samba/smb.conf.original
Feito o backup do arquivo original, podemos partir para análise do arquivo:
# cd /etc/samba/
# vim smb.conf
17. Arquivo smb.conf
A configuração do Samba é feita através no arquivo /etc/samba/smb.conf,
que é composto por seções, parâmetros e variáveis.
Seções são iniciadas por uma palavra colocada entre colchetes, como por
exemplo [global], [homes], entre outras. Alguns nomes de seções tem o nome
reservado para configurações específicas. No próximo slide vamos conhecer as
seções reservadas.
Parâmetros definem os atributos das seções onde se encontram.
Variáveis são utilizadas para substituir textos fixos, como por exemplo
“path=/tmp/%u” pode ser interpretada como “path=/tmp/aluno”, caso se
tenha acessado o sistema com o usuário aluno.
18. Seções reservadas no smb.conf
[global] – Define configurações como nome do servidor, grupo de trabalho, e
outras que tem efeito em todos compartilhamentos.
[homes] – Responsável por compartilhar o diretório home de cada usuário que
irá acessar o Samba.
[netlogon] – Utilizado para armazenar os scripts de logon quando o Samba está
sendo utilizado como PDC (Primary Domain Controller).
[profile] – Define um perfil quando o Samba é usado como PDC. Permite que os
clientes utilizem o mesmo perfil em qualquer máquina em que se autentique na
rede.
[printers] – Define opções gerais para controle das impressoras do sistema.
19. Análise do arquivo smb.conf
Seção [global]
workgroup = Laboratorio – Define em qual grupo de trabalho ou domínio da
rede Microsoft ele estará contido.
server string = Servidor de Arquivos – Comentário sobre o servidor.
wins support = yes – Define o Samba como servidor WINS, resolvendo nome
para máquinas Windows.
client lanman auth = yes – Utilizado pelo comando smbclient.
wins server = w.x.y.z – se já existir um servidor WINS na rede, aqui é informado
o endereço IP do servidor.
log file = /var/log/samba/%m.log – arquivo de log gerado pelo samba (o valor
%m indica que o nome do arquivo terá o nome NetBIOS do host de acesso).
20. Análise do arquivo smb.conf
Seção [global]
max log size = 1024 – tamanho do arquivo de log (em KB)
security = share – configuração da política de acesso e autenticação para os
serviços compartilhados.
encrypt passwords = yes – Habilita ou não o uso de senhas criptografadas.
passdb backend = tdbsam – Se estiver usando senhas criptografadas, essa
opção permite criar uma base de senhas samba.
unix password sync = yes – Habilita sincronização de senhas do Samba com as
senhas do Linux.
passwd program = /usr/bin/passwd %u – Programa que realiza a alteração de
senhas e os parâmetros.
21. Análise do arquivo smb.conf
Seção [global]
smb passwd file = /etc/samba/smbpasswd – Arquivo que guarda as senhas
criptografadas.
load printers = yes – Disponibiliza as impressoras listadas no arquivo
/etc/printcap.
printcap name = /etc/printcap – Arquivo onde se localizam as impressoras
configuradas no sistema.
printing = cups – Define o tipo do servidor de impressão (CUPS – Common Unix
Printing System).
22. Análise do arquivo smb.conf
Seção [homes]
comment = Home Directories – Descrição do compartilhamento.
browseable = no – Permite ou não a visualização do compartilhamento.
ready only = yes – Por padrão, os diretórios são exportados somente com
permissão de leitura.
create mask = 0644 – Permissão padrão de criação de arquivos no
compartilhamento.
directory mask = 0775 – Permissão padrão de criação de diretórios no
compartilhamento.
valid users = %S – Define que a pasta home será acessível apenas pelo usuário
dono (a variável %S é substituída pelo nome do usuário).
23. Análise do arquivo smb.conf
[printers]
comment = All Printers – Descrição do compartilhamento
path = /var/spool/samba – Diretório do spool de impressão no servidor
browseable = no – Permite ou não a visualização do compartilhamento.
guest ok = no – Define se será solicitado senha ao acessar a impressora
compartilhada.
writable = no – Permite ou não gravação no recurso compartilhado.
printable = yes – Especifica se o compartilhamento é uma impressora (yes) ou
um arquivo/diretório (no).
24. Aquecimento
● Objetivo: configurar um compartilhamento personalizado:
● Compartilhar a pasta /srv/samba/publico
● Definir dono e grupo para a pasta
● Ajustar as permissões
● O arquivo de configuração de um servidor Samba para o aquecimento
segue no próximo slide.
Servidor
Samba
Clientes
25. Ajuste do smb.conf
[global]
workgroup = Laboratorio
server string = Servidor de Arquivos
wins support = yes
client lanman auth = yes
security = share
[Publico]
comment = Diretorio Publico
path = /srv/samba/publico
force user = smbuser
force group = users
read only = no
guest ok = yes
26. Testando a configuração
O samba oferece um utilitário para checar se a sintaxe do arquivo smb.conf
está correta:
# testparm
O comando acima irá checar se a sintaxe dos parâmetros está correta. Após
a checagem, é exibido um dump do arquivo de configuração.
Lembrando que qualquer compartilhamento extra criado, mesmo que não
apresente erro durante a verificação do testparm, exige algumas ações como
criar o diretório localmente, definir as permissões, entre outras.
27. Criando usuários
Depois de configurar o arquivo smb.conf, é necessário criar os usuários que
irão utilizá-lo.
O Samba não usa a mesma base de dados de usuários do sistema
(/etc/passwd) porque o Windows usa um tipo de autenticação diferente. Mas
para que seja criado um usuário no Samba é obrigatório que este já exista no
sistema.
Nesse aquecimento, o usuário que irá utilizar o compartilhamento é o
smbuser que faz parte do grupo users:
# useradd smbuser -g users
28. Criando a pasta compartilhada
Após criar o usuário que terá acesso ao compartilhamento, é hora de criar a
pasta que será compartilhada e definir as permissões.
No smb.conf, foi definido que o diretório compartilhado é o
/srv/samba/publico; assim temos que criá-lo no caminho indicado no arquivo
de configuração.
● Criando o diretório:
# mkdir -p /srv/samba/publico
● Alterando as permissões:
# chown smbuser:users /srv/samba/publico
● Checando se as permissões estão corretas:
# ls -ld /srv/samba/publico
29. Antes de testar...
● Reiniciar o servidor samba, para que as configurações adicionadas tenham
efeito:
# invoke-rc.d samba stop
# invoke-rc.d samba start
● Checar se os daemons smbd e nmbd estão atendendo requisições:
# netstat -anutp
Opção Descrição
a Listar todos serviços
n Listar de forma numérica (não resolver nomes)
u Listar serviços UDP
t Listar serviços TCP
p Programa ou serviço
30. Portas que o Samba utiliza
● NetBIOS
● Utiliza as portas 137/UDP, 138/UDP e 139/TCP para compartilhamento de
arquivos e impressoras em redes Microsoft, sendo que cada uma possui
uma função específica:
● 137/UDP – Usada para a navegação, incluindo a visualização dos
compartilhamentos disponíveis.
● 138/UDP – Usada para a resolução dos nomes da rede.
● 139/TCP – Usada para a transferência de dados.
● CIFS
● Utiliza a porta 445/TCP. O protocolo CIFS é uma versão atualizada do
antigo protocolo NetBIOS. Por padrão é utilizado em clientes rodando o
Windows 2000, XP e Vista, além de ser usado pelas versões recentes do
Samba.
31. Teste no ambiente Linux
● Verificar o compartilhamento local:
# smbclient -L localhost
Enter root's password:
Domain=[LABORATORIO] OS=[Unix] Server=[Samba 3.2.5]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
Publico Disk Diretorio Publico
IPC$ IPC IPC Service (Servidor de Arquivos)
Domain=[LABORATORIO] OS=[Unix] Server=[Samba 3.2.5]
Server Comment
--------- -------
LAB-SAMBA Servidor de Arquivos
Workgroup Master
--------- -------
LABORATORIO
32. Teste no ambiente Linux
● Verificar o compartilhamento na máquina do colega:
# smbclient -L <IP do colega>
● Montar o compartilhamento da máquina do colega na sua máquina:
# smbmount //<IP do colega>/Publico /mnt
# mount -t cifs //<IP do colega>/Publico /mnt
● Confirmar se o compartilhamento foi montado:
# mount
● Criar um arquivo no compartilhamento:
# touch /mnt/$HOSTNAME.txt
● Checar as permissões do arquivo criado pelo colega:
# ls -la /srv/samba/publico
33. Teste no ambiente Windows
● Iniciar
● Pesquisar
● Arquivos ou Pastas
● Computadores ou pessoas
34. Teste no ambiente Windows
● Adicionar o compartilhamento criado na máquina Windows.
● Fazer o backup das configurações do Windows no compartilhamento
criado:
● Iniciar → Programas → Acessórios → Ferramentas de Sistema →
Assistente para Transferência de Arquivos e Configuração.
● Verificar no servidor Samba se o backup foi gravado.
36. Agenda – Fase 3
● Introdução
● Samba como Controlador de Domínio
● Etapas da configuração do PDC
● Análise das diretivas do PDC no smb.conf
● Configurações adicionais
37. Introdução
Além de servir como um servidor de compartilhamento de recursos em
rede, o Samba também pode atuar como um controlador de domínio.
Um domínio é um conjunto de computadores que residem na mesma
subrede e pertencem ao mesmo grupo de trabalho.
O controlador de domínio (Domain Controller) é responsável por armazenar
as informações sobre os usuários e suas respectivas senhas.
Um PDC (Primary Domain Controller) é um servidor que autentica os
usuários em um domínio.
38. Introdução
Domain Controller
Workgroup
No modelo workgroup, cada máquina Nesse Domain Controller, a
é responsável por suas configurações política de acesso aos recursos é
locais. centralizada no Domain Controller.
39. Samba como PDC
A configuração do Samba como controlador de domínio em uma rede
Windows, requer mudanças em algumas diretivas da seção [global] no arquivo
de configuração smb.conf.
Algumas configurações a serem checadas antes de editar o arquivo:
● Verificar o nome da máquina:
# hostname
● Checar se o pacote do samba está instalado:
# dpkg l | grep samba
● Verificar se a máquina está na rede:
# ifconfig
40. Etapas da configuração do PDC
Servidor PDC
1) No servidor:
● Editar o arquivo smb.conf
● Criar um Domínio para a Rede
● Criar as contas de máquina
switch
● Criar os usuários do domínio
2) No cliente
● Ingressar o cliente no domínio
● Autenticar o cliente pelo domínio Cliente Windows
41. Análise do arquivo smb.conf
● workgroup = Laboratorio
● Define o nome do domínio da rede.
● netbios name =labsamba
● Nome da máquina.
● server string = PDC
● Comentário sobre o servidor.
● security = user
● Tipo de acesso. Como o Samba está sendo configurado para autenticar
a rede no domínio, é necessário alterar o tipo de acesso para user.
42. Análise do arquivo smb.conf
● encrypt passwords = yes
● Habilita o uso de senhas criptografadas.
● passdb backend = tdbsam
● Se estiver usando senhas criptografadas, essa opção permite criar uma
base de senhas samba.
● unix password sync = yes
● Habilita sincronização de senhas do Samba com as senhas do Linux.
● passwd program = /usr/bin/passwd %u
● Programa que realiza a alteração de senhas e os parâmetros.
43. Análise do arquivo smb.conf
● smb passwd file = /etc/samba/smbpasswd
● Caminho do arquivo que irá armazenar as senhas samba dos usuários.
● domain logons = yes
● Transforma o Samba em um servidor de logon.
● logon path = %Lprofiles%U
● Define o local onde ficará armazenado o perfil do usuário. A variável %L
será substituída pelo nome do servidor e a variável %U pelo nome do
usuário.
● logon drive = H:
● Unidade que será mapeada para o home do usuário
44. Análise do arquivo smb.conf
● os level = 80
● Quando uma eleição é realizada na rede, para saber quem será o PDC
da rede, cada computador faz um broadcast pela rede enviando
informações sobre si mesmo. Essas informações incluem o sistema
operacional da máquina, o tempo que o cliente está conectado na rede
e seu nome.
A cada sistema operacional é atribuído um valor numérico na eleição
(OS level), e para que o Samba seja o Domain Controller da rede, é
necessário colocar um valor alto nessa opção.
Sistema Operacional OS Level
Windows NT/2000 Server, rodando como PDC 32
Windows NT/2000/XP, não PDC 16
Windows 95/98/Me 1
Windows for Workgroups 1
Fonte: http://www.samba.org/samba/docs/using_samba/ch07.html#samba2-CHP-7-TABLE-2
45. Análise do arquivo smb.conf
● logon home = %Lhomes%U
● Define o local onde ficará armazenado o diretório home do usuário. A
variável %L será substituída pelo nome do servidor e a variável %U pelo
nome do usuário.
● logon script = logon.bat
● Arquivo que será executado no login do usuário. Esse script deverá ser
gravado no servidor no diretório definido na seção [netlogon].
● domain master = yes
● Define o Samba como o principal navegador do domínio.
46. Análise do arquivo smb.conf
● preferred master = yes
● Dá prioridade ao Samba vencer a eleição.
● local master = yes
● Define se o Samba irá participar ou não da eleição para navegador local
do grupo de trabalho.
● preserve case = yes
● Seleciona se arquivos com nomes extensos criados serão criados com os
caracteres em maiúsculas/minúsculas.
● short preserve case = yes
● Seleciona se os arquivos com nomes curtos (formato 8.3) serão criados
com os caracteres mistos.
47. Análise do arquivo smb.conf
● case sensitive = no
● Permite que os nomes dos arquivos/diretórios tenham as letras
maiúsculas/minúsculas mantidas.
● unix charset = iso88591
● Seleciona o conjunto de caracteres dos arquivos exibidos pelo Samba.
● display charset = cp850
● Seleciona a página de código do Samba que irá tratar dos caracteres.
As opções unix charset e display charset são usadas para que o samba
respeite a acentuação dos arquivos na hora de realizar a gravação em disco.
52. Configurações adicionais
Para que os usuários Windows possam efetuar login no domínio é
necessário que tanto o host quanto o usuário estejam cadastrados no Linux e
no Samba.
No arquivo, especificamos que o root irá realizar esse procedimento
(diretiva admin users = root). Para adicionar a conta root no samba, executar o
comando abaixo:
# smbpasswd a root
Também é necessário criar os diretórios definidos no arquivo smb.conf:
# mkdir /srv/samba/homes
# mkdir /srv/samba/profiles
# mkdir /srv/samba/netlogon
53. Configurações adicionais
Para checar se os diretórios foram criados:
# ls l /srv/samba
Alterar as permissões dos diretórios criados:
# chmod 775 /srv/samba/homes
# chmod 775 /srv/samba/profiles
# chmod 775 /srv/samba/netlogon
# chown root:users /srv/samba/profiles
Cada máquina cliente Windows deverá ter uma conta de máquina no
servidor Linux, ou seja, no samba.
Conta de máquina nada mais é do que um usuário no servidor que tenha o
mesmo nome da máquina Windows.
54. Configurações adicionais
Criando a conta de máquina:
# useradd c “HOSTNAME” d /dev/null g users s /dev/null
cliwin$
# smbpasswd m a cliwin
OBS: cliwin é o nome da máquina cliente Windows.
Criar o usuário que irá autenticar no samba:
# useradd c “Aluno User” m d /srv/samba/homes/aluno g
users s /bin/false aluno
Atribuir senha para o usuário criado:
# smbpasswd a aluno
55. Configurações adicionais
Agora já podemos começar a inserir as máquinas no domínio.
Para isso, na máquina Windows, acesse na Área de Trabalho -> Meu
Computador -> Propriedades, e adicione a máquina no domínio.
Com isso, na máquina Windows poderemos realizar login com os usuários
cadastrados no domínio Unix do Samba, que nós criamos no exemplo.
56. Configurações adicionais
Na janela “Alterações de nome do
computador, clicar em “Domínio” e
inserir o nome do domínio especificado
no arquivo smb.conf
Em “Propriedades do sistema”, clicar
em “Alterar”
57. Configurações adicionais
Em seguida, a máquina tera ingresso no
domínio. É necessário reiniciar o Windows
para que as alterações entrem em vigor.
Será solicitado o nome do usuário
que tem permissão para ingressar
no domínio; no caso, o root.
59. Referências
● OFFICIAL SAMBA-3 HOWTO AND REFERENCE GUIDE, THE (2ND
EDITION) (BRUCE PERENS' OPEN SOURCE SERIES); TERPSTRA, John
H; VERNOOI, H.; JELMER, R. J; 2ª. Ed; Prentice Hall Professional
Technical Reference; 2003
● SAMBA 3 – GUIA RÁPIDO DO ADMINISTRADOR DE REDES; BOAS,
Tiago V.; MENDONÇA, N.; 3ª. Ed; São Paulo; Brasport; 2006
● Página oficial do projeto Samba. Disponível em: <http://samba.org/>.
Acessado em Agosto/2011.