Escolar Documentos
Profissional Documentos
Cultura Documentos
www.4linux.com.br
Sumário
Capítulo 1
Primeiro Contato......................................................................................................................7
1.1. O que é o Samba...........................................................................................................8
1.2. Origens – A história do Samba.....................................................................................8
1.3. Funcionamento.............................................................................................................9
1.3.1. SMBD................................................................................................................................10
1.3.2. NMBD................................................................................................................................11
1.3.3. Resolução de Nomes.........................................................................................................11
1.3.4. Browsing...........................................................................................................................13
1.4. Formas de Funcionamento.........................................................................................14
1.5. Exercícios Teóricos.....................................................................................................15
Capítulo 2
Instalação e Arquivos............................................................................................................18
2.1. Instalação....................................................................................................................19
2.1.1. Instalação a partir dos pacotes pré-compilados..............................................................19
2.1.2. Instalação a partir do código-fonte..................................................................................20
2.2. Visualizando Pacotes..................................................................................................22
2.3. Principais Arquivos.....................................................................................................22
2.3.1. smb.conf............................................................................................................................22
2.3.2. Arquivos .tdb.....................................................................................................................23
2.3.3. Gerenciamento dos Arquivos .tdb....................................................................................25
2.3.4. tdbbackup.........................................................................................................................25
2.3.5. tdbdump............................................................................................................................26
2.3.6. tdbtool...............................................................................................................................27
2.4. Exercícios Teóricos.....................................................................................................28
2.5. Prática Dirigida..........................................................................................................30
2.6. Laboratório.................................................................................................................33
Capítulo 3
Diretivas de Configuração.....................................................................................................34
3.1. O smb.conf..................................................................................................................35
3.2. Seções Especiais........................................................................................................36
3.2.1. [global]..............................................................................................................................36
2/7
3.2.2. [homes]..............................................................................................................................36
3.2.3. [printers]...........................................................................................................................36
3.2.4. [IPC$]................................................................................................................................37
3.2.5. [ADMIN$]..........................................................................................................................37
3.3. Configurando o Servidor............................................................................................38
3.4. Modos de Funcionamento..........................................................................................38
3.4.1. security = share................................................................................................................40
3.4.2. security = user..................................................................................................................41
3.4.3. security = domain.............................................................................................................41
3.4.4. security = ADS..................................................................................................................43
3.4.5. security = server...............................................................................................................43
3.5. Diretivas Globais........................................................................................................44
3.5.1. Diretivas de compartilhamentos......................................................................................45
3.5.2. Substituição de Variáveis (Macros)..................................................................................47
3.6. Exercícios Teóricos.....................................................................................................49
3.7. Prática Dirigida..........................................................................................................52
Capítulo 4
Ferramentas...........................................................................................................................54
4.1. Introdução..................................................................................................................55
4.2. testparm......................................................................................................................55
4.3. smbpasswd.................................................................................................................57
4.4. findsmb.......................................................................................................................57
4.5. smbclient....................................................................................................................58
4.6. Outras Ferramentas...................................................................................................60
4.7. Exercícios Teóricos.....................................................................................................62
Capítulo 5
Backends de Usuários...........................................................................................................63
5.1. Autenticação e Permissões no Samba.......................................................................64
5.2. Backends.....................................................................................................................65
5.2.1. Plaintext............................................................................................................................65
5.2.2. Smbpasswd:......................................................................................................................65
5.2.3. Tdbsam..............................................................................................................................66
5.2.4. LDAPsam...........................................................................................................................66
5.3. Escolhendo o Backend...............................................................................................67
5.3.1. smbpasswd........................................................................................................................67
5.3.2. tdbsam...............................................................................................................................67
3/7
5.3.3. ldapsam.............................................................................................................................67
5.4. Gerenciando Usuários no Samba...............................................................................68
5.5. Exercícios Teóricos.....................................................................................................69
Capítulo 6
Servidores Samba Standalone..............................................................................................70
6.1. Introdução..................................................................................................................71
6.2. Prática dirigida...........................................................................................................73
6.2.1. Configuração Standalone Utilizando “security = share”................................................73
6.2.2. Configuração Standalone Utilizando “security = user”..................................................75
6.3. Exercícios Teóricos.....................................................................................................77
6.4. Laboratório.................................................................................................................78
Capítulo 7
Samba em Domínios..............................................................................................................79
7.1. Introdução..................................................................................................................80
7.2. Domínios NT4.............................................................................................................82
7.3. Prática dirigida...........................................................................................................84
7.3.1. Configuração do Samba como PDC..................................................................................84
7.4. Script de Logon..........................................................................................................86
7.5. Perfis de Usuário........................................................................................................87
7.6. Prática dirigida...........................................................................................................89
7.6.1. Configuração do Samba como BDC.................................................................................89
7.7. Prática dirigida...........................................................................................................93
7.7.1. Configuração do Samba como DMS.................................................................................93
7.8. Exercícios Teóricos.....................................................................................................95
Capítulo 8
Controle de Acesso a Compartilhamentos............................................................................98
8.1. Introdução..................................................................................................................99
8.2. Permissionamento em Definições de Compartilhamentos........................................99
8.3. Permissionamento Nativo Windows Utilizando ACLs.............................................102
8.4. Exercícios Teóricos...................................................................................................105
8.5. Prática Dirigida 1.....................................................................................................106
8.6. Prática Dirigida 2.....................................................................................................109
8.7. Laboratório 1............................................................................................................112
8.8. Laboratório 2............................................................................................................113
4/7
Capítulo 9
Gerenciamento de Usuários no Domínio............................................................................114
9.1. Introdução................................................................................................................115
9.2. Exercícios Teóricos...................................................................................................117
9.3. Prática Dirigida........................................................................................................118
Capítulo 10
Utilizando o LDAP como Backend de Usuários..................................................................120
10.1. Introdução..............................................................................................................121
10.2. Prática Dirigida......................................................................................................123
10.2.1. Instalação e Configuração do OpenLDAP....................................................................123
10.3. Prática Dirigida......................................................................................................127
10.3.1. Configuração do Backend Ldapsam.............................................................................127
10.3.2. Configurando o smbldap-tools.....................................................................................128
10.4. Gerenciamento de Usuários...................................................................................131
10.5. Exercícios Teóricos.................................................................................................133
Capítulo 11
Winbind e Samba como Membro de Domínios Active Directory.......................................134
11.1. Introdução..............................................................................................................135
11.2. Prática Dirigida......................................................................................................138
REFERÊNCIAS
BIBLIOGRÁFICAS................................................................................................................141
ANEXOS...............................................................................................................................143
Tabela de OS Levels........................................................................................................144
Flags de Controle de Contas SAM..................................................................................145
Respostas dos Exercícios Teóricos..................................................................................146
Capítulo 1..................................................................................................................................146
Capítulo 2..................................................................................................................................147
Capítulo 3..................................................................................................................................147
Capítulo 4..................................................................................................................................148
Capítulo 5..................................................................................................................................148
Capítulo 6..................................................................................................................................148
Capítulo 7..................................................................................................................................149
Capítulo 8..................................................................................................................................150
Capítulo 9..................................................................................................................................150
5/7
Capítulo 10................................................................................................................................150
Capítulo 11................................................................................................................................151
Repostas dos Laboratórios..............................................................................................152
Capítulo 2..................................................................................................................................152
Capítulo 8..................................................................................................................................153
Capítulo 9..................................................................................................................................155
6/7
Capítulo 1 Primeiro Contato
Capítulo 1
Primeiro Contato
OBJETIVOS
• Apresentar o servidor Samba
• Falar sobre a história do Samba
• Explicar em linhas gerais o funcionamento do Samba
7/7
1.1. O que é o Samba
O Samba é um conjunto de serviços que fornecem serviços como compartilhamento
de arquivos e de impressoras utilizando um protocolo denominado CIFS (Common Internet
File System), o mesmo utilizado nativamente por, entre outras plataformas, estações e
servidores Windows. Assim ele permite que máquinas *nix se “enxerguem” em uma mesma
rede e interajam sem que os usuários de Windows tenham que utilizar programas de terceiros.
1.2. Origens – A história do Samba
Tudo começou com uma parceria entre IBM e Sytec, que desenvolveram
conjuntamente uma maneira simples de interconectar computadores em pequenas redes
locais. O coração da solução era um software chamado NetBIOS (Network Basic Input/Output
System), que era um programa que fornecia meios de programas se comunicarem com o
hardware de rede. Entre outras coisas ele fornecia um esquema de endereçamento que
permitia que os programas enxergassem os computadores da rede como nomes.
Trabalhando em cima deste programa a Microsoft criou uma maneira de redirecionar
solicitações de I/O (leitura e escrita) de disco para o NetBIOS, que permitiu compartilhar o
conteúdo do disco através da rede. Isso foi disponibilizado por um protocolo chamado, na
época, de SMB (Server Message Block), que viria a ser renomeado para CIFS.
Com a evolução das redes o NetBIOS foi adaptado para trabalhar acima do protocolo
TCP/IP, permitindo que endereços de rede IP fossem referenciados através de nomes, de
forma que se tornou possível inclusive a utilização de nomes em redes roteadas. A Microsoft
também adicionou mais duas funcionalidades ao protocolo SMB: um anúncio de serviços,
chamado browsing, e um serviço de autenticação central chamado Windows NT Domain
Control.
Enquanto isso Andrew Tridgel, um Australiano que possuía um servidor Unix e uma
estação DOS, precisava montar um disco de seu servidor em sua estação. A princípio isto não
era um grande problema pois ele possuía um cliente NFS de DOS que atendia essa
necessidade, porém ele também precisava usar este espaço em um programa que se
comunicava somente através de NetBIOS (e trabalhar com múltiplos protocolos
REFERÊNCIAS BIBLIOGRÁFICAS
simultaneamente em DOS era um problema).
Assim ele escreveu um programa para capturar pacotes de rede (sniffer) e efetuou a
engenharia reversa do protocolo SMB, implementandoo assim em seu servidor Unix. Com
isso conseguiu que seu computador enxergasse o servidor e montasse seus
compartilhamentos ao mesmo tempo que utilizava as aplicações NetBIOS. Andrew
disponibilizou o código à comunidade no início de 1992, sem sequer ter um nome (ele apenas
o chamou de “um servidor de arquivos Unix para DOS”), e lançou algumas atualizações e
correções de bugs por um breve período, deixando depois o projeto de lado.
Dois anos depois ele decidiu ligar a máquina Windows de sua esposa ao seu sistema
Linux e, por não encontrar alternativas melhores, resolveu utilizar seu próprio código,
descobrindo que ainda funcionava. Nesta época também descobriu que os protocolos SMB e
NetBIOS eram documentados (apesar que apenas parcialmente) e voltou a trabalhar no
projeto, chamandoo de “NetBIOS for Unix”. Pouco tempo depois foi contatado por uma
empresa pois o nome NetBIOS havia sido registrado, e escolheu o nome Samba após
procurar no dicionário palavras que contivessem as letras “S”, “M” e “B”.
1.3. Funcionamento
O Samba é formado por 2 programas principais, que implementam 4 serviços básicos
do protocolo CIFS:
• Compartilhamento e Impressão
• Autenticação e Autorização
• Resolução de Nomes
• Anúncio de Serviços (Browsing)
Os serviços de compartilhamento de arquivos e de impressoras são implementados
pelo smbd, o “daemon” responsável pela implementação dos serviços SMB (smbd: SMB
Daemon). Este “daemon” também é responsável por lidar com a autenticação e autorização
dos usuários acessando os compartilhamentos.
9 / 155
Capítulo 1 Primeiro Contato
Os outros dois serviços, resolução de nomes e browsing, são implementados pelo
nmbd, que faz o gerenciamento e distribuição de nomes NetBIOS.
1.3.1. SMBD
É o “daemon” responsável por fornecer serviços de compartilhamento e impressão
para clientes. Isso é feito implementando o protocolo SMB (ou CIFS). É criada uma sessão
para cada cliente acessando o servidor, cada qual com sua própria cópia do processo SMBD.
Ele também é responsável pela autenticação e autorização dos usuários acessando estes
compartilhamentos.
Assim em um servidor de arquivos será comum existir vários processos SMBD em
execução, um para cada cliente conectado, cujos donos são os usuários que estão acessando
os compartilhamentos. É importante ter isso em mente: por ser executado como o usuário que
acessa o compartilhamento no ambiente Unix, isso tem duas grandes implicações:
1) Todo usuário do Samba deverá também ser um usuário Unix
2) Todas as permissões do sistema de arquivos se aplicará ao usuário.
O SMBD relê suas configurações a cada minuto, aplicando as alterações para novas
conexões porém as sessões já existentes não serão afetadas. Para garantir que as
configurações sejam aplicadas para todos os usuários é necessário finalizar e reiniciar o
SMBD.
Ele utiliza as seguintes portas TCP:
• 139: SMB sobre NetBIOS sobre TCP
• 445: SMB sobre TCP, sem encapsulamento NetBIOS
10 / 7
Capítulo 1 Primeiro Contato
1.3.2. NMBD
É o daemon que monitora e responde solicitações NetBIOS na rede, sendo assim
responsável pela resolução de nomes. Também participa no processo de browsing, conforme
explicado a seguir.
Utiliza as seguintes portas UDP:
• 138: Comunicação de datagramas NetBIOS
1.3.3. Resolução de Nomes
A resolução de nomes pode ser feita de duas maneiras: através de envios de pacotes
para toda a rede (broadcast) ou através de resolução pontoaponto, com um servidor central
que armazena os nomes e endereços IP das máquinas de rede, configurado individualmente
em cada estação.
O método de broadcast é o mais semelhante ao funcionamento original do NetBIOS e
basicamente uma estação que deseja acessar um compartilhamento deverá enviar um pacote
para todas as máquinas da rede perguntando o endereço daquela estação, e aguardará uma
resposta para sua solicitação. Este método gera um pequeno tráfego extra na rede porém isso
normalmente não é tão problemático pois é restrito à rede local.
O outro método envolve a utilização de um NBNS (NetBIOS Name Service), que é um
servidor central que irá armazenar listas de nomes e endereços das estações disponíveis. A
implementação deste serviço pela Microsoft foi chamada WINS (Windows Internet Name
Service).
As estações se registram no servidor de nomes, deixando seu nome NetBIOS e seu
endereço IP, e quando há necessidade outras estações vão até esse servidor para verificar os
endereços, informando o nome da estação para o NBNS. Clientes em subredes diferentes
podem utilizar o mesmo servidor e assim é possível que as estações nestas redes se
comuniquem.
11 / 7
Capítulo 1 Primeiro Contato
A resolução de nome NetBIOS é feita utilizando o protocolo UDP e, de acordo com a
configuração de rede, cada estação (chamada formalmente de “Node”) pode ser configurada
para resolver nomes das seguinte maneiras:
• bnode (tipo 0x01): Apenas broadcast NetBIOS através de UDP
• mnode (tipo 0x04): Broadcast + Wins
• hnode (tipo 0x05): Wins + Broadcast
Por padrão o Windows é configurado como bnode, ou seja, irá fazer broadcast na
rede. O Samba também funciona desta maneira a menos que seja definido um servidor WINS
em sua configuração.
Além das estações existem também os grupos NetBIOS, que são serviços oferecidos
para um conjunto de máquinas na rede. Um exemplo de grupo NetBIOS é o nome de um
Domínio que as estações fazem parte. Assim como os recursos de estações, estes grupos
são identificados por um nome, de até 15 caracteres ASCII, e por um último caractere que
indica o tipo de recurso:
12 / 7
Capítulo 1 Primeiro Contato
1.3.4. Browsing
Já o serviço de browsing (descoberta e anúncio de serviços) funciona da seguinte
maneira: os computadores presentes na LAN fazem uma eleição que definirá qual deles irá
manter uma lista contendo todos os compartilhamentos de arquivos e impressoras presentes
na rede.
Os seguintes critérios são adotados para se determinar a máquina que agirá como
LMB, em ordem:
• Maior OS Level
• Opção Preferred Master
• Uptime (tempo online)
• Nome NetBIOS (ordem alfabética)
Além dos LMBs podem existir Domain Master Browsers (DMBs), que podem
coordenar as listas de serviços entre subredes diferentes. O LMB utiliza o servidor NBNS
para localizar o DMB de sua rede, e então combina sua lista local com a do domínio.
13 / 7
Capítulo 1 Primeiro Contato
Juntamente com o LMB é eleito um ou mais Backup Browsers, que mantém cópias da
lista de serviços do LMB e atendem a solicitações dos clientes. Isso é feito para reduzir a
carga nos LMBs, uma vez que as estações clientes irão selecionar aleatoriamente um Backup
Browser e apenas consultarão o LMB caso não consigam obter a lista com estes.
Caso o LMB saia do ar, uma nova eleição será realizada e um novo LMB será
selecionado. É importante ter em mente que, quando estamos trabalhando com um Domínio,
o controlador primário deste sempre será o LMB de sua rede, além de agir como DMB.
1.4. Formas de Funcionamento
De forma resumida, é possível que o Samba trabalhe de duas maneiras:
• Participante de um Domínio: Quando configurados para participar de um domínio,
os servidores e estações possuirão uma base centralizada para autenticação de
usuários. A configuração inicial é mais trabalhosa que a configuração de um servidor
standalone, porém os benefícios trazidos por sua utilização são maiores, em
ambientes com um número razoável de usuários, devido à facilidade de
administração posterior.
14 / 7
Capítulo 1 Primeiro Contato
1.5. Exercícios Teóricos
1) O que é o NetBIOS?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) O que é o SMB?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) Um nome NetBIOS pode ter até quantos caracteres?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) O que é o último caractere de um nome NetBIOS?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
15 / 7
Capítulo 1 Primeiro Contato
5) Quais são os 4 serviços básicos fornecido pelo protocolo SMB/CIFS?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
6) Quais são os daemons principais do Samba, e o que cada um implementa?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
7) Quais são as portas utilizadas pelos daemons principais do Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
8) Como pode ser feita a resolução de nomes no protocolo SMB/CIFS?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
16 / 7
Capítulo 1 Primeiro Contato
9) O que é o WINS?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
10) O que é o LMB e como ele é definido em uma rede?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
17 / 7
Capítulo 2 Instalação e Arquivos
Capítulo 2
Instalação e Arquivos
OBJETIVOS
• Instalar o Samba a partir de pacotes précompilados
• Instalar o Samba a partir do códigofonte
• Identificar os arquivos de configuração do Samba
• Identificar outros arquivoschave para o funcionamento do Samba
18 / 7
Capítulo 2 Instalação e Arquivos
2.1. Instalação
O primeiro passo a ser tomado, quando se deseja instalar o Samba em um servidor
Gnu/Linux, é definir sua estratégia de instalação: se iremos utilizar pacotes précompilados,
disponibilizados pelos mantenedores de nossa distribuição preferida, ou se iremos compilar o
Samba a partir de seu códigofonte.
Instalar a partir dos pacotes traz benefícios óbvios, como a facilidade da própria
instalação (geralmente sendo necessário apenas um comando), a aplicação automática de
patches de correção de bugs e atualizações de segurança disponibilizadas de forma
igualmente automatizada.
Em alguns cenários, no entanto, pode ser necessário obter o códigofonte e compilálo
manualmente. A situação mais comum é quando há a necessidade de instalação do Samba
em um servidor antigo e será necessário o acesso a partir de clientes Windows mais novos,
suportados apenas pelas últimas versões do Samba.
2.1.1. Instalação a partir dos pacotes précompilados
Em distribuições Debian (e derivadas) a instalação do Samba pode ser feita através
dos comandos aptget ou aptitude, instalandose o pacote “samba”. Também é desejável,
muitas vezes, a instalação das ferramentas para lidar com compartilhamentos, como o
smbclient. Para isso também devemos instalálo:
Normalmente o serviço do Samba é iniciado automaticamente após a instalação, e
podemos verificar isso ao listarmos os processos em execução no sistema. Devemos
encontrar os dois daemons, smbd e nmbd:
19 / 7
Capítulo 2 Instalação e Arquivos
Para gerenciar o funcionamento dos daemons podemos utilizar o script de controle
existentes em /etc/init.d:
Parar os daemons:
# /etc/init.d/samba stop
Iniciar os daemons:
# /etc/init.d/samba start
Reiniciar os daemons:
# /etc/init.d/samba restart
2.1.2. Instalação a partir do códigofonte
Caso haja a necessidade de instalar Samba a partir do códigofonte, o primeiro passo
é obter os arquivos no site oficial do projeto Samba:
http://samba.org/samba/download/
A última versão estável é sempre a mais recomendada, por já ter passado por um
período de testes, e se chama sambalatest.tar.gz. Ele irá conter o servidor Samba (nmbd e
smbd), e extras como o Winbind (utilizado para utilizar usuários de um domínio como usuários
locais na máquina), Swat (interface de administração) e ferramentas como o smbclient.
Além disso devem ser instaladas as dependências para a compilação. No Debian,
podese utilizar o seguinte comando para instalálas de maneira automática:
Após baixar o pacote do Samba e instalar as dependências para compilação, devese
seguir os seguintes passos:
20 / 7
Capítulo 2 Instalação e Arquivos
Descompactar o pacote obtido:
Acessar o diretório “source3” dentro do diretório que foi criado após descompactar o
pacote. O nome exato deste diretório irá variar conforme a última versão do Samba disponível:
# cd samba-3.5.6/source3
Executar o script que irá ajustar o Makefile para compilação:
# ./configure
Nota: Neste passo podem haver erros se não foram instaladas todas as dependências
para a compilação. Neste caso devese instalar os pacotes necessários (seus nomes serão
informados pela mensagem de erro) e executar novamente o script.
Compilar o código:
# make
Instalar os arquivos gerados pela compilação:
# make install
Por padrão os arquivos serão instalados em /usr/local/bin. Para maiores informações
sobre o processo de compilação, podese visitar a página do HowTo oficial do Samba, que
possui uma seção especificamente tratando este assunto (em inglês):
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/compiling.html
21 / 7
Capítulo 2 Instalação e Arquivos
2.2. Visualizando Pacotes
Pode ser útil, quando há algum problema no servidor, realizar uma captura dos
pacotes de rede e verificar as informações que estão sendo recebidas e enviadas pelo
Samba. Entre outras coisas conseguimos identificar nomes de domínios e ver solicitações
enviadas por outras máquinas da rede desta forma.
Para efetuar uma captura de pacotes precisamos, primeiro, de uma ferramenta como
o tcpdump ou wireshark, que irão interceptar todo o tráfego entrando ou saindo da placa de
rede. Para instalar o tcpdump, devemos fazer o seguinte:
Em seguida podemos, então, usálo para capturar os pacotes em uma dada interface
de rede. É possível capturar todo o tráfego ou filtrálo de acordo com a necessidade. Para
capturarmos os pacotes NetBIOS, por exemplo deveremos solicitar a captura de pacotes UDP
nas portas 137 e 138:
# tcpdump -nvvi eth0 udp and '( port 137 or port 138 )'
2.3. Principais Arquivos
Após a instalação teremos vários novos arquivos no sistema, e conhecer alguns deles
é essencial para entender o funcionamento do Samba, configurálo, estabelecer políticas de
backup e resolver problemas que possam vir a surgir.
2.3.1. smb.conf
O primeiro deles é o arquivo de configuração smb.conf. Este é o arquivo onde são
colocados todos os parâmetros de configuração do Samba, que irão definir o funcionamento
do smbd e nmbd.
22 / 7
Capítulo 2 Instalação e Arquivos
Este é um arquivo de texto, que pode ser modificado com qualquer editor, e possui
sintaxe semelhante aos antigos arquivos .ini utilizados pelo Windows, com pares “atributo =
valor”. Em uma instalação a partir dos pacotes Debian, este arquivo estará localizado em
/etc/samba/smb.conf. Iremos falar mais sobre as opções de configuração mais adiante.
2.3.2. Arquivos .tdb
Além do arquivo de configuração, o Samba também utiliza arquivos no formato .tdb
(Trivial Database) como banco de dados, para armazenar informações importantes relativas
ao funcionamento do servidor. Existem diversos arquivos .tdb, que podem ser classificados em
persistentes e temporários.
O Trivial Database, utilizado pelo Samba, é um banco de dados simples cujo formato
dos arquivos permite gravações simultâneas e utiliza um mecanismo interno para evitar que
uma operação de escrita interfira em outra em execução.
Os arquivos .tdb estão localizados em /var/lib/samba, e podem ser listados com o
seguinte comando:
# ls /var/lib/samba
Os arquivos persistentes armazenam informações que devem ser salvas em backups
e devem ser copiados juntamente com as configurações em caso de migração do servidor.
Estes arquivos são os seguintes:
• account_policy: políticas de de contas
• group_mapping: mapeamentos entre SID>grupos UNIX
• ntdrivers: informações de drivers de impressoras instalados
• ntforms: informações de forms de impressoras instalados
• ntprinters: configurações de impressoras instaladas
• passdb: armazena informações de contas SambaSAMAccount
• registry: esqueleto somente leitura de registro Windows
23 / 7
Capítulo 2 Instalação e Arquivos
• secrets: armazena SIDs (identificadores), senha do LDAP e dados
sensíveis e críticos para o funcionamento do Samba.
• share_info: Armazena ACLs de compartilhamentos
• winbindd_idmap: base de mapeamentos de endereço do Winbind
Além dos arquivos persistentes, pode haver uma série de outros arquivos .tdb que
armazenam informações em caráter temporário e são “zerados” a cada vez que o servidor é
reiniciado. São normalmente informações de cache e informações sobre sessões ativas.
Estes arquivos não são essenciais para o funcionamento do servidor e, portanto, não
é necessário efetuar backup ou copiar os mesmos em caso de mudança de servidor. Os
arquivos temporários são os seguintes:
• brlock: Informações de byterange locking de arquivos
• connections: Cache de informações de conexões em uso para gerenciamento
de número de conexões
• eventlog/*tdb: Cache de logs de sistema
• gencache: Cache de servidores WINS nãofuncionais e dados de domínio
• login_cache: Cache de informações de login e tentativas incorretas de senha
• messages: Armazena temporariamente mensagens sendo processadas pelo
smdb
• netsamlogon_cache: Cache de estruturas de dados de logon
• perfmon/*.tdb: Informações do contador de performance
• printing/*.tdb: Cache das filas de impressão
• schannel_store: Informações criptográficas de credenciais de sessões ativas
• sessionid: Dados genéricos de sessão
• unexpected: Armazena pacotes recebidos que não são para os daemons do
Samba
• winbindd_cache: Cache de informações de identidade recebidas pelo Winbind
24 / 7
Capítulo 2 Instalação e Arquivos
2.3.3. Gerenciamento dos Arquivos .tdb
Para gerenciar os arquivos .tdb devemos instalar um pacote chamado tdbtools, que
nos fornece ferramentas para visualizar, editar e fazer backup das bases:
É extremamente importante ter em mente que não se deve copiar um arquivo .tdb em
uso, pois podem estar havendo gravações no momento da cópia e os dados se encontrarem
em um estado inconsistente.
2.3.4. tdbbackup
A primeira ferramenta que iremos conhecer é o tdbbackup. Como o nome implica, é
utilizada para se obter um backup dos arquivos .tdb. Diferente de uma cópia manual, o
tdbbackup irá garantir a integridade da base lidando corretamente com gravações que possam
estar sendo executadas. Ele irá gerar um arquivo de mesmo nome que o .tdb porém
adicionando o sufixo .bak.
Sua utilização é simples, e o comando a ser executado segue a seguinte sintaxe:
# tdbbackup nome_do_arquivo.tdb
25 / 7
Capítulo 2 Instalação e Arquivos
# cd /var/lib/samba
# tdbbackup -v passdb.tdb
passdb.tdb : 8 records
Esta é a saída do comando em um arquivo .tdb íntegro. Ele irá mostrar quantos
registros existem naquele arquivo e terminar com sucesso. Caso o arquivo esteja corrompido,
a saída será diferente:
# tdbbackup -v passdb.tdb
restoring passdb.tdb
Na situação acima o arquivo estava corrompido e seu backup foi automaticamente
restaurado. Isso só é possível caso o arquivo passdb.tdb.bak se encontre no mesmo diretório;
caso contrário, o comando informaria que o arquivo estava corrompido e não foi possível
restaurar o backup:
# tdbbackup -v passdb.tdb
restoring passdb.tdb
passdb.tdb.bak: No such file or directory
Nesse caso será necessário restaurar o arquivo .bak de algum backup que foi
efetuado anteriormente e executar novamente o comando tdbbackup. É importante notar que,
quando utilizado o parâmetro “v” o arquivo .bak não será gerado mesmo se o arquivo estiver
íntegro, e será necessário executar o tdbbackup sem nenhum parâmetro para gerar o backup.
2.3.5. tdbdump
O tdbdump permite visualizar de forma rápida o conteúdo de um arquivo .tdb. Sua
maior utilidade é auxiliar na resolução de problemas, pois possibilita que o administrador do
sistema verifique se dados (como o cadastro de um usuário) estão realmente presentes no
sistema.
26 / 7
Capítulo 2 Instalação e Arquivos
Ele é usado da seguinte forma:
# tdbdump nome_do_arquivo.tdb
2.3.6. tdbtool
Essa é a ferramenta mais poderosa, permitindo visualizar, editar registros, verificar
integridade e efetuar testes de performance nos arquivos .tdb. É executada de forma
interativa, isto é, ao rodar o comando tdbtool um novo prompt será mostrado e os comandos
são dados neste prompt.
Para executála, devese digitar o seguinte:
# tdbtool
tdb>
Uma vez no prompt tdb, podese abrir um arquivo com o comando “open” e, por
exemplo, mostrar a primeira entrada com o comando “1”:
Uma lista completa de comandos disponíveis pode ser vista digitandose o comando
“?”. Não é recomendado, apesar de ser possível, alterar os valores das entradas existentes
pois colocar um valor de forma incorreta pode resultar na impossibilidade do Samba utilizar a
base.
27 / 7
Capítulo 2 Instalação e Arquivos
2.4. Exercícios Teóricos
1) Quais daemons estarão em execução quando o Samba está rodando?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Qual a função do arquivo smb.conf?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) O que é um arquivo .tdb?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) Aonde os arquivos .tdb ficam, em uma instalação a partir dos pacotes no
Debian?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
28 / 7
Capítulo 2 Instalação e Arquivos
5) Quais são os tipos de arquivo .tdb existentes?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
6) Quais os arquivos que precisam ser copiados em caso de migração do servidor
Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
7) Qual a maneira correta de se realizar o backup de arquivos .tdb? Porque não
devem ser copiados manualmente?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
8) Como é feita a restauração de um arquivo .tdb corrompido, e o quê é necessário
para fazêla?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
29 / 7
Capítulo 2 Instalação e Arquivos
2.5. Prática Dirigida
1) Vamos verificar a utilização dos valores HEX (sufixos NetBIOS) vistos
anteriormente utilizando o tcpdump. Para isso, vamos fazer o seguinte:
Parar os daemons do Samba:
# /etc/init.d/samba stop
Fazer um backup do nosso /etc/samba/smb.conf existente
# mv /etc/samba/smb.conf /etc/samba/smb.conf.ori
Criar um novo /etc/samba/smb.conf com o seguinte conteúdo:
[global]
workgroup = 4LINUX
netbios name = DEBIANXX
Nota: Altere XX no nome DEBIANXX para o número de sua máquina (por ex,
DEBIAN01)
Abra um segundo terminal e execute o tcpdump nele:
# tcpdump -nvvi wlan0 udp and '( port 137 or port 138 )'
Para facilitar a visualização, podemos apenas mostrar a linha com o nome e tipo da
estação, filtrando os resultados do tcpdump com o comando grep:
# tcpdump -nvvi wlan0 udp and '( port 137 or port 138 )'|grep Name
30 / 7
Capítulo 2 Instalação e Arquivos
Com o tcpdump rodando, vamos iniciar novamente nosso servidor Samba. Devemos
logo visualizar linhas como esta (utilizando a filtragem com o comando grep):
2) Vamos verificar o processo de recuperação de uma base de dados do Samba.
Para isso iremos fazer o backup de um dos arquivos persistentes, corrompêlo
propositalmente e depois utilizar a ferramenta tdbbackup para restaurar o backup.
Para isso devemos usar os passos abaixo:
Entrar no diretório /var/lib/samba
# cd /var/lib/samba
Fazer o backup do arquivo passdb.tdb
# tdbbackup passdb.tdb
Verificar se foi criado o arquivo passdb.tdb.bak
# ls passdb.tdb*
passdb.tdb passdb.tdb.bak
Adicionar um caractere qualquer no início do arquivo passdb.tdb. Podemos fazer isso
através de um editor de texto ou usando o comando sed:
31 / 7
Capítulo 2 Instalação e Arquivos
3) Tentar efetuar um novo backup do arquivo usando o tdbbackup
# tdbbackup passdb.tdb
Failed to open passdb.tdb
Executar o tdbbackup em modo de verificação e restauração
# tdbbackup -v passdb.tdb
restoring passdb.tdb
32 / 7
Capítulo 2 Instalação e Arquivos
2.6. Laboratório
Faça um script para realizar o backup do arquivo de configuração e das bases de
dados .tdb do Samba. Para isso, o script deverá fazer o seguinte:
• Copiar o arquivo de configuração para um diretório de backup
• Executar o tdbdump, gerando os arquivos .bak das bases do Samba
• Copiar os arquivos .bak para o diretório de backup
• Bonus: Verificar se o .bak foi gerado com sucesso; caso não tenha, restaurar o último
backup válido
33 / 7
Capítulo 3 Diretivas de Configuração
Capítulo 3
Diretivas de Configuração
OBJETIVOS
• Entender como é estruturado o arquivo de configuração
• Estudar as principais diretivas do Samba
• Entender os diferentes modos de trabalho (diretiva security)
• Compartilhar diretórios em diferentes modos de trabalho
34 / 7
Capítulo 3 Diretivas de Configuração
3.1. O smb.conf
Como foi mencionado anteriormente, o principal arquivo utilizado na configuração dos
daemons do Samba é o arquivo /etc/samba/smb.conf. Os parâmetros presentes nele irão
determinar o comportamento do Samba: se é um servidor Standalone ou faz parte de um
Domínio, quais compartilhamentos irão existir, permissões de acesso e muitos outros.
Este arquivo pode ser editado manualmente, utilizando o editor de texto de sua
preferência, ou através de ferramentas de gerenciamento do Samba, como o SWAT,
distribuído pela própria equipe do Samba, ou ainda, pelo Webmin, uma ferramenta que
gerencia vários serviços através de uma interface web. Devese, entretanto, tomar cuidado ao
usar ferramentas desse tipo, pois podem desfazer alterações que haviam sido feitas
manualmente e também são limitadas quanto aos ajustes que suportam.
As linhas que iniciam com “#” ou “;” são ignoradas pelo servidor, portanto podese
utilizar esses caracteres para comentar linhas. Além disso podese terminar uma linha com o
caractere “\”, que causará que a linha seguinte seja tratada ainda como parte da linha atual.
O smb.conf é dividido em seções chamadas de Stanzas, que assumem a forma de
[nome] (nome da seção entre colchetes) e podem definir compartilhamentos ou metaserviços,
sendo que algumas dessas seções possuem nomes reservados. Este nome é utilizado como
nome do diretório compartilhado para acesso remoto. Assim, se em nosso smb.conf tivermos
a seguinte seção:
[compartilhamento]
Exceto no caso das seções especiais, cada Stanza é tratada como um
compartilhamento e as diretivas presentes dentro delas vão afetar apenas aquele recurso
específico. Uma Stanza termina onde a próxima inicia.
35 / 7
Capítulo 3 Diretivas de Configuração
3.2. Seções Especiais
3.2.1. [global]
Esta é uma seção especial que contém diretivas que irão afetar todo o servidor Samba
ou valores que serão utilizados como padrão a menos que um compartilhamento especifique
que o valor será diferente para ele.
3.2.2. [homes]
Caso esta Stanza seja especificada no smb.conf, um compartilhamento do diretório
pessoal (home) do usuário será criado no momento em que a estação cliente se conectar no
servidor.
O nome “real” do compartilhamento, para o cliente, será seu próprio nome de usuário.
Caso já exista um compartilhamento com o nome do usuário, as configurações do mesmo
serão utilizadas; caso contrário, as configurações do [homes] serão “clonadas” para o
compartilhamento de nome do usuário.
Neste caso é extremamente útil utilizar variáveis para informar a localização do home
do usuário (veremos como fazer isso em breve).
3.2.3. [printers]
Este é um compartilhamento especial que deve ser explícito para que funcione, este
compartilhamento serve para compartilhar automaticamente todas as impressoras instaladas
no SO.
Quando este compartilhamento está habilitado o administrador não terá necessidade
de especificar manualmente o compartilhamento de todas as impressoras no sistema, isto é
feito de forma automática conforme as diretivas habilitadas.
36 / 7
Capítulo 3 Diretivas de Configuração
3.2.4. [IPC$]
Este é um compartilhamento especial que não precisa ser definido no smb.conf a
menos que se deseje implementar diretivas de segurança no servidor, permitindo acesso
apenas a partir de hosts confiáveis.
Ele é utilizado no serviço de browsing de serviços e também no estabelecimento de
conexões TCP/IP com o servidor Samba.
Algumas falhas de segurança já descobertas no protocolo SMB/CIFS dependem do
estabelecimento de conexões com este compartilhamento, então o seguinte pode ser feito
para proteger o servidor, permitindo apenas o acesso de hosts confiáveis:
[IPC$]
hosts allow = 192.168.115.0/24 127.0.0.1
hosts deny = 0.0.0.0/0
Veremos as diretivas mas adiante, porém isso faria com que apenas máquinas na
rede 192.168.115.0/24 e o próprio servidor conseguissem se conectar e listar os
compartilhamentos do servidor, além de possivelmente não conseguirem acessar outros
recursos compartilhados.
3.2.5. [ADMIN$]
Este é um compartilhamento IPC especial utilizado para ingressar servidores ASU no
domínio e necessário para algumas tarefas administrativas (como utilizar a ferramenta “Print
Migrator” da Microsoft).
37 / 7
Capítulo 3 Diretivas de Configuração
3.3. Configurando o Servidor
Uma configuração simples da máquina, com um compartilhamento, ficaria da seguinte
forma:
[global]
workgroup = GRUPO
netbios name = MAQUINA
[compartilhamento]
path = /tmp
Nesta situação podemos ver duas stanzas: [global] e [compartilhamento], em negrito.
Os parâmetros “workgroup” e “netbios name” são configurações que se aplicam a todo o
servidor e significam o seguinte:
• workgroup: Grupo de trabalho ou Domínio que o Samba participará
• netbios name: Nome com o qual o servidor será identificado na rede
3.4. Modos de Funcionamento
Existem diferentes papéis (roles) que um servidor SMB/CIFS pode assumir, de acordo
com sua configuração:
38 / 7
Capítulo 3 Diretivas de Configuração
• Controlador de Domínio
• Primary Domain Controller (PDC)
• Backup Domain Controller (BDC)
• Active Directory Domain Controller
• Membro de Domínio
• Active Directory Domain Server
• NT4 Domain Server
• Servidor Standalone
O Samba, até a versão 3, consegue trabalhar em todos os contextos anteriores exceto
como controlador de um domínio Active Directory. A versão 4 do Samba deverá ser capaz de
trabalhar neste papel e atualmente está sendo distribuída para testes fora de ambientes de
produção juntamente com as versões estáveis do Samba 3.
Para entender a diferença entre os modos de funcionamento, é necessário entender a
maneira com que sessões são estabelecidas e a autenticação é feita quando utilizamos o
protocolo SMB/CIFS.
Quando uma estação (cliente) se conecta a um recurso no servidor, este informa os
tipos de segurança suportados por ele. O cliente então seleciona um dos modos e informa ao
servidor, podendo nesse momento passar uma senha ou um par de usuário e senha,
dependendo do modo escolhido. Existem dois tipos possíveis de segurança:
• share: o compartilhamento possui uma única senha para acesso, independente de
usuário.
• user: o compartilhamento possui acesso controlado a nível de usuário, podendo ter
diferentes níveis de acesso para usuários distintos.
Esses são dois dos cinco modos de suportados pelo Samba. Quando estamos usando
segurança do tipo “user” o servidor pode autenticar o usuário de duas maneiras distintas:
39 / 7
Capítulo 3 Diretivas de Configuração
• Usar uma base local de usuários
• Usar uma base centralizada de usuários
A implementação de base centralizada de usuários é o Domínio. Quando o servidor
participa de um Domínio, ele pode agir como controlador (ele possui essa base de usuários e
a disponibiliza para ser utilizada por outros servidores e clientes) ou como membro (recebe as
credenciais e as verifica em um dos controladores do domínio). Além disso o Domínio pode
ser do tipo NT4 (implementação original) ou Active Directory (pósWindows 2000).
3.4.1. security = share
Neste modo o cliente se autentica separadamente para cada compartilhamento
acessado. Ele irá enviar uma senha a cada solicitação de conexão, sem enviar explicitamente
um nome de usuário, pois o cliente espera que cada compartilhamento possua uma senha,
independente de usuário.
Normalmente o cliente envia um nome de usuário na solicitação de início de sessão,
enviando neste momento um nome de usuário porém nenhuma senha. Esse nome de usuário
é armazenado pelo Samba em uma lista de usuários possíveis, assim como qualquer usuário
que esteja presente em uma diretiva “user” de um compartilhamento. Assim quando o cliente
solicita a montagem do compartilhamento o Samba irá comparar a senha contra esta lista de
usuários, e a autenticação ocorrerá como aquele usuário caso haja correspondência.
40 / 7
Capítulo 3 Diretivas de Configuração
Caso não seja possível gerar uma lista de usuários possíveis, o Samba irá efetuar
uma chamada de sistema tentando verificar se a senha é válida para algum usuário existente,
utilizando os métodos fornecidos pelo serviço NSS (configurado pelo /etc/nsswitch.conf).
3.4.2. security = user
Neste modo o cliente irá enviar uma solicitação de início de sessão e durante a
negociação enviará um par de usuário e senha, que serão verificados pelo Samba. Nesse
momento o cliente ainda não solicitou montar nenhum compartilhamento, e as únicas
informações que o Samba tem é o nome de usuário, senha e nome da máquina que está se
conectando.
Caso seja autenticado com sucesso o cliente irá então solicitar a montagem dos
compartilhamentos, usando a sessão já estabelecida. É possível que um cliente estabeleça
múltiplas sessões com usuários diferentes simultaneamente.
3.4.3. security = domain
Este modo provê um mecanismo para que as informações de usuário sejam
armazenadas em um repositório central, compartilhado entre os controladores do domínio que
podem efetuar a autenticação para todas as máquinas que participam do domínio. O modo
“security = domain” especificamente permite que o Samba utilize chamadas RPC como as
usadas em domínios NT4.
Em um domínio deste estilo existem dois tipos de controladores: o controlador primário
ou PDC – Primary Domain Controller, que é o servidor responsável por manter a integridade
da base de dados com informações de usuários, e controladores backup ou BDCs – Backup
Domain Controllers que fornecem apenas os serviços de autenticação e logon no domínio
(netlogon).
41 / 7
Capítulo 3 Diretivas de Configuração
Este mecanismo é implementado sobre o mecanismo de segurança a nível de usuário
(security = user), e os clientes se autenticam da mesma maneira ao iniciarem, com a diferença
que além da conta de usuário também existe uma conta de máquina, validada na inicialização
junto aos controladores. Esta conta é criada ao ingressar a máquina no domínio, tornandoa
um membro deste.
A conta de máquina possui uma senha que é gerada automaticamente e conhecida
apenas pela estação e pelo servidor, e é utilizada para garantir que aquela estação possui
permissão de solicitar os serviços de autorização fornecidos pelos controladores. Caso esta
conta não exista os usuários não conseguirão utilizar os usuários do domínio para acessarem
o sistema.
As contas de máquina são, para o servidor, exatamente iguais a contas de usuários,
possuindo apenas uma flag adicional que as marca como tal. Isso é significativo para o
Samba pois isso significa que as máquinas também terão de ser “usuários de sistema”,
presentes no passwd do servidor (ou no backend de armazenamento de contas utilizado).
O Samba pode ser configurado para agir de 3 maneiras neste contexto:
• PDC
• BDC
• DMS
Na configuração mais simples, o Samba será um DMS (Domain Member Server), que
nada mais é que um servidor que participa de um domínio e utiliza os serviços de um PDC ou
BDCs para autenticar os usuários acessando seus compartilhamentos. Ser um membro
significa participar do contexto de segurança do domínio, possuindo uma relação de confiança
com os controladores que é verificada através da existência de uma conta de máquina para o
servidor Samba.
Iremos ver mais detalhes quando configurarmos o servidor em um domínio.
42 / 7
Capítulo 3 Diretivas de Configuração
3.4.4. security = ADS
Esse modo faz com que o Samba ingresse em um domínio Active Directory em modo
nativo ao invés de usar os protocolos de segurança no estilo Windows NT. Isso é útil quando
as políticas do domínio proíbem a utilização dos protocolos antigos, quando se deseja
ingressar em domínios do Windows 2003 ou posteriores e quando se deseja utilizar tickets do
Kerberos para autenticação.
Quando está trabalhando em um domínio Active Directory o Samba pode apenas
assumir o role (papel) de DMS, não agindo como um controlador deste. Esta funcionalidade
deverá estar presente na versão 4 do Samba.
Assim como o modo “security = domain”, este modo é implementado sobre o modo de
segurança a nível de usuário.
3.4.5. security = server
Nesse modo o servidor Samba irá informar para o cliente que utiliza segurança a nível
de usuário (security = user) e recebe o par de usuário e senha do cliente. Então o Samba irá,
utilizando essas credenciais, tentar efetuar log in em um terceiro servidor (normalmente um
controlador de domínio), simulando uma conexão de um usuário. É necessário informar qual o
nome do servidor que irá efetuar a autenticação dos usuários.
• Possível bloqueio nos servidores Windows, pois por medidas de segurança o Samba
sempre envia primeiro um usuário e senha incorretos para o servidor de
autenticação.
• Não há como garantir a identidade do servidor que irá receber as senhas
• Não permite utilização de perfis remotos
43 / 7
Capítulo 3 Diretivas de Configuração
3.5. Diretivas Globais
Além da diretiva “security”, outras diretivas existem para configuração do servidor e
são utilizadas dentro da stanza [global], afetando o funcionamento do Samba. Algumas delas
são:
• netbios name: Nome NetBIOS do servidor, que será informado para outras
máquinas da rede e utilizado para acesso aos compartilhamentos.
• os level: Valor numérico (inteiro) que o servidor Samba irá informar nas eleições
para master browser. Os sistemas com maior OS Level tem preferência durante as
eleições. Este valor pode variar de 0 a 255, e os níveis dos sistemas operacionais
estão descritos no Apêndice A. Por padrão o Samba assume o OS Level 32.
• domain master: Configura o smbd para agir como master browser de seu grupo de
trabalho ou domínio. É um dos parâmetros necessários para configurar o servidor
como controlador.
• preferred master: Faz com que o nmbd force eleições para master browser sempre
que o servidor for iniciado. Quando usado em conjunto com o parâmetro “domain
master” e um “os level” mais alto que outros integrantes da rede garantirá que o
servidor Samba se torne o Master Browser de seu grupo/PDC do domínio.
44 / 7
Capítulo 3 Diretivas de Configuração
Estas são apenas algumas das diretivas principais, e uma lista completa e atualizada
das diretivas possíveis em sua versão do Samba pode ser vista na página do manual do
smb.conf, acessada através do seguinte comando:
# man 5 smb.conf
3.5.1. Diretivas de compartilhamentos
Além das diretivas presentes na stanza [global], existem diretivas que são comumente
utilizadas em compartilhamentos e não fazem sentido em outras situações. Iremos ver
algumas delas:
• path: Especifica o diretório que será compartilhado aos usuários ou onde dados de
impressão serão armazenados (spool) antes de enviados à impressora
• O padrão é “yes”, tornando todos o compartilhamento visível. Um compartilhamento
invisível ainda poderá ser acessado diretamente (digitandose o caminho dele no
cliente).
• writeable: Se este parâmetro for “yes” qualquer usuário poderá criar e modificar
arquivos no compartilhamento, desde que as permissões do sistema de arquivos
permitamlhe isso.
• O padrão para esta opção é “no”, ou seja, usuários apenas possuem permissão de
leitura dos arquivos.
• public: Se este parâmetro for “yes” nenhuma senha é necessária para acessar este
compartilhamento.
O padrão para esta diretiva é “no”, exigindo que o usuário se autentique no
servidor. É sinônimo da diretiva “guest ok”.
45 / 7
Capítulo 3 Diretivas de Configuração
• user: Lista de nomes de usuário, separados por vírgulas, que a senha do
compartilhamento será testada contra, quando usando “security = share” e a estação
cliente não fornecer um nome de usuário.
• Normalmente não é uma boa ideia utilizar este método pois, além de ser lento,
usuários diferentes podem ter a mesma senha e um usuário poderá usar os
privilégios de outro.
• Este parâmetro não limita quais usuários podem acessar o compartilhamento (veja
“valid users” para isso), e sim funcionam como uma “dica” para o Samba em casos
que o usuário não foi fornecido no estabelecimento da sessão.
• Para tentar validar o acesso como os usuários fulano e fulano2, a diretiva seria a
seguinte:
• valid users: Lista de nomes de usuário, separados por vírgulas ou espaços, que
podem acessar o compartilhamento. Grupos de sistema também podem ser
especificados, adicionadose o prefixo “@” ao nome do grupo (por exemplo: @grupo
).
• Caso este parâmetro não seja especificado qualquer usuário autenticado poderá
acessar o compartilhamento.
• Para permitir acesso aos usuários fulano, fulano2 e a todos do grupo “usuarios”, a
diretiva ficaria da seguinte forma:
• invalid users: Semelhante ao parâmetro anterior, porém especifica uma lista de
usuários e grupos que não podem acessar o compartilhamento. Caso o mesmo
usuário esteja nas duas listas, seu acesso será negado.
• hosts allow: Este parâmetro determina quais máquinas podem se conectar ao
compartilhamento, e uma lista, separada por espaços ou vírgulas, de endereços IP,
nomes NetBIOS ou máscaras de rede deve ser utilizada. Um exemplo seria:
46 / 7
Capítulo 3 Diretivas de Configuração
Esta diretiva também pode ser colocada na stanza [global], de forma que limitará o
acesso a todos os compartilhamentos. Nesse caso, permissões diferentes ainda
podem ser colocadas em compartilhamentos individuais.
• hosts deny: É semelhante à diretiva anterior, exceto que determina quais máquinas
não terão acesso ao compartilhamento. Caso as duas estejam presentes, a diretiva
de negação terá preferência. Por exemplo:
Esta configuração permitiria o acesso de todas as máquinas da rede 192.168.0.0/24
com exceção da 192.168.0.5.
Assim como a “hosts allow” também pode ser utilizada na stanza [global].
• write list: Esta diretiva define quais usuários e/ou grupos específicos terão acesso
de gravação em um compartilhamento. Usuários que não estiverem nesta lista ainda
terão acesso à leitura de arquivos (a menos que outra diretiva, como a “valid users”
ou “invalid users”, proíba seu acesso).
Sua sintaxe é semelhante à outras listas de usuários, como a “valid users”
3.5.2. Substituição de Variáveis (Macros)
Muitas strings utilizadas na configuração podem ser substituídas por variáveis,
chamadas macros, que serão processadas no momento que aquela diretiva entrar em efeito.
Isso permite uma flexibilidade muito maior quando são definidas as regras do servidor.
Algumas das macros disponíveis no Samba são as seguintes:
47 / 7
Capítulo 3 Diretivas de Configuração
Macro Descrição
%U Usuário passado pelo cliente
%G Grupo primário do usuário passado, pelo cliente (%U)
%h Nome DNS do servidor SAMBA
%m Nome NetBios do cliente
%L Nome NetBios do servidor
%M Nome DNS do cliente
%I IP do cliente
%i IP do servidor que o cliente está conectado
%T Hora atual do servidor
%D Nome do grupo ou domínio
%$(variavel) Qualquer variável de ambiente
%S Nome do compartilhamento atual
%u Usuário conectado ao compartilhamento
%g Grupo primário do usuário, passado pelo cliente (%u)
%H Diretório home do usuário, passado pelo cliente (%u)
Uma situação na qual o uso das variáveis é muito útil é ao compartilhar diretórios
pessoais. Por exemplo, para criar um compartilhamento cujo diretório seja
/home/nome_do_usuario, poderíamos usar a seguinte linha:
[compartilhamento]
path = /home/%u
48 / 7
Capítulo 3 Diretivas de Configuração
3.6. Exercícios Teóricos
1) Quais as duas maneiras de se trabalhar com o Samba, em relação ao seu
comportamento em um grupo de computadores?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Quais caracteres podem ser utilizados para comentar linhas no arquivo
smb.conf?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) O que é uma Stanza?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) Quais são as seções (Stanzas) especiais do Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
49 / 7
Capítulo 3 Diretivas de Configuração
5) O que é a diretiva "workgroup" no smb.conf?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
6) O que é a diretiva "path" em uma stanza?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
7) O que determina a diretiva security?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
8) Qual a diferença entre "security = user" e "security = share"?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
9) Qual a diferença entre "security = user" e "security = domain"?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
50 / 7
Capítulo 3 Diretivas de Configuração
10) Quais as maneiras de um servidor Samba particiar de um domínio NT4?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
11) O que são macros no arquivo smb.conf?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
51 / 7
Capítulo 3 Diretivas de Configuração
3.7. Prática Dirigida
Vamos modificar nosso smb.conf e criar um compartilhamento acessível por usuários
não autenticados (público), que deverá direcionar o usuário para
/samba/nome_netbios_do_servidor.
Iremos também criar um arquivo de texto para verificar que o acesso funciona
corretamente.
• O primeiro passo é criar o diretório que será acessado, no caso, /samba/debianxx.
Altere “debianxx” para o nome NetBIOS do seu servidor.
• O Samba sempre tratará o nome NetBIOS como se fosse escrito em caracteres
minúsculos quando for buscar este diretório:
# mkdir -p /samba/debianxx
• Vamos agora criar um arquivo dentro deste diretório:
• Agora devemos editar nosso smb.conf e adicionar uma stanza compartilhando este
diretório. O arquivo /etc/samba/smb.conf deverá ficar assim (substitua DEBIANXX
pelo nome de sua estação):
1 [global]
2 workgroup = 4LINUX
3 netbios name = DEBIANXX
4
5 [compartilhamento]
6 path = /samba/%L
7 public = yes
1) Início da stanza [global]
2) Nome do grupo de trabalho
3) Nome NetBIOS do servidor
52 / 7
Capítulo 3 Diretivas de Configuração
4)
5) Início do compartilhamento chamado “compartilhamento”. Este é o início de sua
stanza e também o final da stanza [global]
6) Diretório que está sendo compartilhado. A variável %L será substituída pelo nome
NetBIOS do servidor quando o compartilhamento for acessado.
7) Este parâmetro indica que o diretório é acessível por usuários não autenticados.
• O próximo passo é reiniciar os daemons do Samba para que as alterações sejam
aplicadas:
# /etc/init.d/samba restart
• Para testar o funcionamento da macro %L, altere o nome NetBIOS do servidor, crie
um diretório “/samba/novo_nome” e reinicie o daemons do Samba.
53 / 7
Capítulo 4 Ferramentas
Capítulo 4
Ferramentas
OBJETIVOS
• Conhecer as ferramentas disponíveis para executar várias tarefas relacionadas ao
protocolo SMB
54 / 7
Capítulo 4 Ferramentas
4.1. Introdução
Os pacotes samba, smbclient e sambatools trazem consigo diversas ferramentas de
linha de comando que podemos utilizar para verificar a validade do arquivo de configuração,
descobrir e acessar compartilhamentos em servidores utilizando o protocolo SMB/CIFS.
Neste capítulo iremos apresentar as ferramentas e ver com mais detalhes como
utilizar algumas delas, essenciais para um bom gerenciamento e utilização do servidor.
4.2. testparm
A primeira ferramenta que todo administrador deve conhecer é atestparm, que irá ler
um arquivo de configuração do Samba, verificar se não existem erros de sintaxe que
impediriam a inicialização do servidor e também pode mostrar todas as configurações
efetivamente em uso.
Esta ferramenta é instalada por padrão quando instalamos o pacote “samba”, como
parte de suas dependências (pacote sambacommon, no Debian).
A forma mais simples de usar a ferramenta é a seguinte:
# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[compartilhamento]"
Loaded services file OK.
WARNING: You have some share names that are longer than 12
characters.
These may not be accessible to some older clients.
(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Note que foi emitido um aviso, pois o compartilhamento “compartilhamento” possui um
nome longo que não seria acessível por estações utilizando versões antigas do protocolo
SMB, porém não há qualquer problema se todos os clientes forem Windows XP ou mais novos
ou clientes Samba recentes.
55 / 7
Capítulo 4 Ferramentas
Ao final é solicitado apertar “enter” para ver um dump das definições de serviços. Isso
irá mostrar seu arquivo de configuração smb.conf, porém somente com as definições
efetivamente utilizadas. Você poderá perceber que algumas linhas “sumiram”; isso ocorre pois
qualquer valor que foi declarado que não é diferente do valor padrão não será processado:
Neste exemplo note que o parâmetro “netbios name”, que estava definido, não
aparece. Isso pois o nome era igual ao hostname do servidor, que é adotado como valor
padrão. O parâmetro “public” também foi substituído por “guest ok”, seu sinônimo.
Podese também invocar o testparm com o parâmetro “v”, que irá fazer com que
mostre todos os valores que serão usados pelo servidor, incluindo os valores padrão que
podem não estar declarados no arquivo de configuração smb.conf:
# testparm -v
Também é possível informar o arquivo de configuração específico que iremos analisar.
Isso é útil, por exemplo, para analisar a configuração de um arquivo de configuração que
estamos preparando e não queremos sobrescrever o atualmente em uso:
# testparm /etc/samba/smb.conf.ori
Caso um cliente esteja tendo problemas ao acessar o servidor, podese executar o
testparm informando o nome NetBIOS e o IP da estação cliente para que seja verificado se as
regras de acesso do servidor permitem que a conexão seja efetuada, facilitando muito a
resolução de problemas ou testes quando utilizamos os parâmetros “hosts allow” e “hosts
deny”:
56 / 7
Capítulo 4 Ferramentas
4.3. smbpasswd
Ferramenta utilizada para gerenciamento de usuários e senhas do Samba. Permite
adicionar, remover e alterar senhas de usuários no Samba. Veremos a parte de gerenciamento
de usuários mais adiante, porém a sintaxe básica para alteração de senha é a seguinte:
# smbpasswd usuario
Para adicionar um novo usuário no Samba, a sintaxe é a seguinte:
# smbpasswd -a usuario
Para excluir um usuário, usaríamos o seguinte comando:
# smbpasswd -x usuario
4.4. findsmb
É um script em perl que faz parte do pacote smbclient, e descobre e traz informações
sobre máquinas utilizando o protocolo SMB/CIFS. É útil para descobrir quais máquinas e
grupos de trabalho/domínios existem na rede. Utilização:
# findsmb
57 / 7
Capítulo 4 Ferramentas
4.5. smbclient
A primeira funcionalidade é listar os compartilhamentos presentes em uma máquina:
1 # smbclient -L debianXX
2 Enter root's password: [enter]
14 Server Comment
15 --------- -------
16 GILEAD Samba 3.5.4
17
18 Workgroup Master
19 --------- -------
20 4LINUX GILEAD
21 TUDO SAGALINUX
No exemplo acima conectamos em uma máquina cujo nome NetBIOS é “gilead”. Ao
ser solicitada uma senha foi apenas pressionada a tecla “enter” para que a listagem fosse feita
com um usuário anônimo. Nas linhas 8 e 10 podemos ver dois compartilhamentos, chamados
“compartilhamento” e “músicas”, e na linha 9 podemos ver o compartilhamento padrão “IPC$”.
58 / 7
Capítulo 4 Ferramentas
Além disso o smbclient traz uma lista dos grupos com seus respectivos LMBs visíveis,
como podemos verificar nas linhas 20 e 21.
Podemos também acessar um compartilhamento e efetuar diversas operações, como
fazer download e upload de arquivos. O funcionamento, uma vez conectado, é bem
semelhante a um cliente ftp. Para acessarmos nosso compartilhamento chamado
“compartilhamento”, usaríamos o seguinte comando:
# smbclient //gilead/compartilhamento
Enter root's password:
Anonymous login successful
Domain=[4LINUX] OS=[Unix] Server=[Samba 3.5.4]
smb: \>
A partir deste momento estaremos no prompt interativo do smbclient, a partir do qual
podemos usar comandos para efetuar operações. Para listar o conteúdo do nosso
compartilhamento podemos usar o comando ls:
smb: \> ls
. D 0 Fri Dec 10 14:17:18 2010
.. D 0 Fri Dec 10 14:17:01 2010
teste.txt 20 Fri Dec 10 14:17:18 2010
46140 blocks of size 131072. 5079 blocks available
Para fazer download do arquivo teste.txt devemos usar o seguinte comando:
Opcionalmente poderíamos salvar o arquivo com outro nome em nossa máquina:
Para enviar arquivos, o comando utilizado seria o seguinte:
59 / 7
Capítulo 4 Ferramentas
Porém nossa configuração atual não permite a gravação de arquivos, e o resultado
será o seguinte:
Para se obter uma lista completa dos comandos disponíveis no shell interativo pode
se digitar o comando “?”. Uma lista com todas as possibilidades será mostrada:
smb: \> ?
? allinfo altname archive
blocksize
cancel case_sensitive cd chmod chown
close del dir du echo
exit get getfacl hardlink help
history iosize lcd link lock
lowercase ls l mask md
mget mkdir more mput newer
open posix posix_encrypt posix_open
posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit
readlink
rd recurse reget rename reput
rm rmdir showacls setmode stat
symlink tar tarmode translate unlock
volume vuid wdel logon
listconnect
showconnect .. !
4.6. Outras Ferramentas
Além das ferramentas mencionadas temos outras disponíveis:
• smbcacls: Lê e define ACLs estilo Windows em arquivos ou diretórios, em sistemas
de arquivos que suportam esse recurso. Atualmente isso é possível em servidores
Windows utilizando NTFS e servidores Samba em partições EXT3 ou EXT4 com
suporte a ACLs habilitado.
60 / 7
Capítulo 4 Ferramentas
• smbget: Faz download de arquivos de um compartilhamento, como a ferramenta
“wget”. Particularmente útil para utilização em scripts.
• smbspool: Imprime um arquivo utilizando uma impressora compartilhada.
61 / 7
Capítulo 4 Ferramentas
4.7. Exercícios Teóricos
1) Qual comando podemos utilizar para testar se o arquivo smb.conf é válido?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Para quê é utilizada a ferramenta smbpasswd?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) Qual a principal ferramenta utilizada para lidar com compartilhamentos e permite,
por exemplo, fazer download de enviar arquivos?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
62 / 7
Capítulo 5 Backends de Usuários
Capítulo 5
Backends de Usuários
OBJETIVOS
• Entender o funcionamento da autenticação no Samba
• Entender o que são backends
• Aprender a adicionar, listar e remover usuários do Samba
63 / 7
Capítulo 5 Backends de Usuários
5.1. Autenticação e Permissões no Samba
Porém o Samba não pode utilizar a conta do sistema diretamente para autenticar
usuários pois existem vários atributos utilizados no SMB/CIFS que não existem no Unix, além
das senhas serem armazenadas em um formato diferente.
Uma conta de usuário do Samba irá conter diversos dados extras:
• Senhas no formato LanMan e MD4
• SID Security Identifier ou identificador de segurança do usuário e grupo
Devido à essas duas características sempre que um usuário ou máquina for ser
utilizado pelo samba ele deverá existir como dois objetos: um usuário e sistema e também um
usuário do Samba. Na configuração padrão isso é feito criandose, literalmente, dois usuários
em bases distintas: os usuários de sistema são armazenados no arquivo /etc/passwd e os
usuários do Samba são armazenados no arquivo /etc/samba/smbpasswd ou, no caso do
Samba versão 3 ou superior também podem ser gravados em um arquivo .tdb localizado em
/var/lib/samba/passdb.tdb.
64 / 7
Capítulo 5 Backends de Usuários
O formato do smbpasswd é o seguinte:
5.2. Backends
Como mencionado o Samba pode utilizar um arquivo chamado smbpasswd para armazenar
os usuários e também pode utilizar um arquivo .tdb. Estes são dois backends possíveis: maneiras
de armazenar os dados de autenticação que o servidor Samba utilizará.
Atualmente o Samba permite a utilização dos seguintes backends:
5.2.1. Plaintext
Backend original do Samba, recuperava informações diretamente da base Unix e toda
autenticação era feita utilizando o PAM. Nenhuma informação específica do protocolo SMB é
armazenada e senhas criptografadas não são suportadas.
5.2.2. Smbpasswd:
Tradicionalmente usado quando senhas criptografadas são utilizadas, é um arquivo de texto
simples que armazena dados específicos do protocolo SMB como os hashes de senha NT/LM e
flags indicando a situação e tipo de contas.
Entretanto este método apresenta vários problemas:
65 / 7
Capítulo 5 Backends de Usuários
• Pesquisas de usuários são feitas de maneira sequencial, tornando a consulta lenta
em servidores com muitos usuários. Esse problema se torna ainda mais crítico
levandose em consideração que o Samba faz aproximadamente duas consultas a
cada solicitação de login.
• Não existe uma maneira robusta de replicação deste arquivo
• Vários atributos suportados não são armazenados, como o diretório pessoal de
usuários específicos ou mesmo os RIDs dos usuários, sendo necessário que o
servidor os calcule a cada consulta.
Por estes motivos foi adicionado suporte a outros backends.
5.2.3. Tdbsam
Este backend armazena as contas em um arquivo “trivial database”. Foi desenvolvido para
utilização em servidores que não necessitam de um LDAP e atenua os problemas que o backend
smbpasswd apresenta em relação a performance, sendo recomendado para servidores com até 250
usuários, e também pode conter atributos adicionais.
5.2.4. LDAPsam
Utilizar este backend permitirá a utilização de um servidor LDAP para armazenar as
contas do Samba, e apresenta diversas vantagens em relação aos outros métodos, ao custo
de uma complexidade maior do ambiente.
Quando utilizando o LDAP podemos unificar as contas de sistema e contas do Samba,
simplificando a administração. Além disso é possível compartilhar o backend de usuários entre
servidores diferentes, o que é particularmente útil quando estamos trabalhando com
servidores Samba como PDC e BDCs.
66 / 7
Capítulo 5 Backends de Usuários
5.3. Escolhendo o Backend
A seleção entre os diferentes backends disponíveis é feita utilizandose a diretiva “passdb
backend” em nosso arquivo /etc/samba/smb.conf. Assim, poderíamos ter as seguintes situações:
5.3.1. smbpasswd
passdb backend = smbpasswd
5.3.2. tdbsam
passdb backend = tdbsam
5.3.3. ldapsam
passdb backend = ldapsam
Esta configuração faria com que o Samba procurasse pelo arquivo passdb.tdb no
diretório “/srv/samba”.
67 / 7
Capítulo 5 Backends de Usuários
5.4. Gerenciando Usuários no Samba
Parar criar um usuário no Samba devemos primeiro adicionar um usuário local no sistema e
então criar a conta do Samba utilizando o comando smbpasswd. Portanto, para adicionarmos um
usuário chamado “fulano1” no sistema, devemos fazer o seguinte:
# useradd fulano1
# smbpasswd -a fulano1
New SMB password:
Retype new SMB password:
Added user fulano1
# cat /etc/samba/smbpasswd
fulano1:1005:XXXXXXXXXXXXXX:31E0C089C0:[U ]:LCT-4D08DB3C
O conteúdo do arquivo passdb.tdb é semelhante (podendo conter mais dados) e, quando
utilizamos este backend, pode ser visualizado através do seguinte comando:
# tdbdump /var/lib/samba/passdb.tdb
Para remover usuários do Samba devemos primeiro removêlos do backend Samba
para somente então removêlos do sistema:
# smbpasswd -x fulano1
# userdel fulano1
68 / 7
5.5. Exercícios Teóricos
1) O que é um backend?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Porquê o Samba não utiliza os usuários do Unix?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) Quais são os backends suportados?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) Qual a diretiva no smb.conf que determina o backend utilizado?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
69 / 7
Capítulo 6 Servidores Samba Standalone
Capítulo 6
Servidores Samba Standalone
OBJETIVOS
• Entender o funcionamento de um servidor Standalone
• Entender as vantagens e desvantagens dessa configuração
• Configurar o Samba com modos de segurança share e user
• Criar compartilhamentos para acesso anônimo e autenticado
70 / 7
Capítulo 6 Servidores Samba Standalone
6.1. Introdução
Além disso um servidor Standalone não fornece o serviço de netlogon, não podendo
ser utilizado para autenticar usuários no momento que efetuam login em outro computador,
nem compartilha sua base de usuários com outros servidores através dos mecanismos
fornecidos pelo Samba. Note que ainda é possível que os usuários sejam compartilhados
caso o NSS e PAM do servidor estejam integrados com um servidor LDAP, por exemplo;
porém do ponto de vista do Samba a autenticação ainda ocorre de maneira “local”.
Esta configuração é a mais simples de se configurar e, por possuir uma complexidade
menor, é menos suscetível a ser afetada por problemas de rede em outros computadores. É
extremamente eficiente para empresas que possuem uma quantidade pequena de usuários
e/ou servidores, pois configurar um domínio onde existem 2 servidores e são utilizados 5
usuários muitas vezes é contraprodutivo.
Por outro lado manter uma base de usuários local se torna cada vez mais difícil à
medida que o número de usuários e a complexidade do ambiente aumenta. Poucos
administradores gostariam de manter sincronizadas, manualmente, senhas de 5000 usuários
em 20 servidores diferentes.
71 / 7
Capítulo 6 Servidores Samba Standalone
O número de usuários e o tamanho do ambiente, portanto, são fatores determinantes
na escolha do modo de funcionamento do servidor: se você possui poucos usuários, opte pela
configuração mais simples.
Uma vez que decida por utilizar o servidor em modo Standalone outra escolha deverá
ser feita: o modo de segurança, que poderá ser seguindo o modelo “security = share” ou
“security = user”.
Novamente procure manter a complexidade em um nível mínimo: se seu servidor será
acessado sem autenticação e possuirá compartilhamentos com permissões somente para
leitura, opte pelo modelo “security = share”. Caso necessite de usuários com permissões
específicas, utilize “security = user”.
72 / 7
Capítulo 6 Servidores Samba Standalone
6.2. Prática dirigida
6.2.1. Configuração Standalone Utilizando “security = share”
A primeira configuração em modo Standalone envolve utilizar o mecanismo “security =
share”, onde para o acesso aos compartilhamentos não existe um usuário que será utilizado,
do ponto de vista do Windows.
Na implementação Microsoft, como explicado anteriormente, um compartilhamento é
associado diretamente com uma senha e o Samba possui maneiras de “emular” este
comportamento. Um compartilhamento também pode não possuir nenhuma senha e ser
acessado por todos.
• Compartilhamentos NãoAutenticados
A configuração do Samba, neste caso, seria a seguinte:
1 [global]
2 workgroup = 4LINUX
3 netbios name = DEBIANXX
4 security = share
5
6 [compartilhamento]
7 path = /samba/shares/compartilhamento
8 public = yes
A linha 4, no exemplo acima, define que iremos usar o modo “security = share” ao
invés do padrão (“security = user”) do Samba. Juntamente com o parâmetro “public = yes”, na
linha 8, isso permite que estações Windows acessem o compartilhamento sem que sejam
solicitados um usuário e senha.
73 / 7
Capítulo 6 Servidores Samba Standalone
• Compartilhamentos Autenticados
Apesar de não ser recomendado é possível exigir uma senha para acessar os
diretórios compartilhados em modo Share. As estações Windows irão solicitar uma senha,
porém nenhum usuário. A senha informada será comparada com uma lista de usuários
possíveis e caso coincida, a conexão será autenticada com aquele usuário.
Este método não funciona bem com clientes Samba nãoMicrosoft, como o próprio
smbclient. Assim pode ser impossível acessar compartilhamentos protegidos por senha de um
Samba a partir de outra estação Unix.
Nesse caso, o primeiro passo seria adicionar um usuário válido para o Samba:
# useradd fulano1
# smbpasswd -a fulano1
Não é necessário especificar uma senha para o usuário de sistema, porém a senha
informada quando utilizamos o comando smbpasswd será a válida para o Samba. Depois,
vamos alterar nossa configuração que permitia acesso não autenticado:
[global]
workgroup = 4LINUX
netbios name = DEBIANXX
security = share
[compartilhamento]
path = /samba/shares/compartilhamento
user = fulano1
74 / 7
Capítulo 6 Servidores Samba Standalone
O problema nesse tipo de configuração é que caso dois usuários possuam a mesma
senha o acesso será feito com as credenciais do primeiro.
6.2.2. Configuração Standalone Utilizando “security = user”
É possível um controle muito mais preciso sobre quem acessa o servidor quando
utilizamos um par de usuário/senha e não somente uma senha.
# useradd fulano2
# useradd fulano3
# smbpasswd -a fulano2
# smbpasswd -a fulano3
Defina uma senha diferente da senha utilizada com o usuário fulano1 para facilitar a
visualização do funcionamento do servidor.
75 / 7
Capítulo 6 Servidores Samba Standalone
1 [global]
2 workgroup = 4LINUX
3 netbios name = DEBIANXX
4
5 [compartilhamento]
6 path = /samba/shares/compartilhamento
7 valid users = fulano1, fulano2
8 writeable = yes
9
10 [publico]
11 path = /samba/shares/publico
12 public = yes
Todos os usuários poderão ler o compartilhamento “publico”, devido à diretiva “public”
presente na linha 12.
76 / 7
Capítulo 6 Servidores Samba Standalone
6.3. Exercícios Teóricos
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Como será feita a verificação da senha para acesso a um compartilhamento em
"security = share" e tenhamos vários usuários na diretiva "user"?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) É suficiente adicionar somente um usuário no Samba para acessar
compartilhamentos de forma autenticada?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
77 / 7
Capítulo 6 Servidores Samba Standalone
6.4. Laboratório
1) Configurar um servidor Samba em modo de compartilhamento Share com dois
compartilhamentos: um acessível sem necessidade de autenticação que permita
gravação de arquivos e outro que exija uma senha dos usuários acessando o
compartilhamento.
2) Converta o servidor do laboratório acima para utilizar um acesso feito a nível de
usuário, mantendo um compartilhamento público e outro permitindo acesso a um
usuário chamado “fulano1” e um usuário “fulano2”. O usuário “fulano1” deverá
conseguir gravar arquivos neste compartilhamento, e o “fulano2” somente deve
conseguir ler os arquivos (veja o capítulo sobre “Diretivas de Compartilhamentos”
para fazer isso).
78 / 7
Capítulo 7 Samba em Domínios
Capítulo 7
Samba em Domínios
OBJETIVOS
• Entender os benefícios trazidos por um domínio
• Entender o modo de funcionamento de um domínio
• Compreender as limitações do Samba quando trabalhando em domínios
• Entender os diferentes papéis (roles) que o Samba pode assumir
• Configurar o Samba como controlador primário de um domínio (PDC)
• Configurar o Samba como controlador backup de um domínio (BDC)
• Configurar o Samba como membro de um domínio NT4 e Active Directory
79 / 7
Capítulo 7 Samba em Domínios
7.1. Introdução
Um domínio Windows é um grupo de computadores que compartilham um banco de
dados central, que contém informações de segurança e de recursos daquele domínio. Cada
usuário e cada máquina participante do domínio possui sua própria conta, utilizada para
acessar as informações do repositório de dados.
Nesse tipo de configuração existem servidores chamados controladores, que recebem
solicitações de estações e servidores da rede e são responsáveis por permitir ou negar o
acesso dos usuários. Eles também gerenciam permissões de acesso a compartilhamentos de
toda a rede, e servidores diferentes conseguem “visualizar” todos os usuários do domínio.
Isso é possível pois cada integrante do domínio, seja ele um usuário, grupo de usuários
ou estações, possui um Identificador de Segurança (Security Identifier, ou SID) único que o
identifica naquele domínio. Cada domínio também possui seu próprio SID, gerado no
momento de sua criação.
O SID de um objeto participante do contexto de segurança de um domínio é o resultado
da soma do SID do domínio com o RID (Relative Identifier) do objeto.
80 / 7
Capítulo 7 Samba em Domínios
Um SID de um domínio se parece com o seguinte:
S-1-5-21-726309263-4128913605-1168186429
Assim como no Unix temos um usuário root que sempre possui o UID 0, o Windows
também possui alguns RIDs conhecidos, como o do usuário Administrador. Este usuário
sempre possui o RID 500. Seu SID, no domínio acima, seria o seguinte:
S-1-5-21-726309263-4128913605-1168186429-500
Os compartilhamentos de toda a rede irão ter suas listas de acesso definidas com
base nos SIDs dos objetos do domínio em vez de usuários locais, e irão verificar com os
controladores as credenciais apresentadas pelos clientes tentando acessar seus recursos.
Existem duas arquiteturas de domínio diferentes: a original surgida com o Windows
NT4 e os domínios Active Directory, controlados por servidores Windows 2000 e posteriores.
Em um domínio estilo NT4 existem dois tipos de controladores: primários e secundários. No
Active Directory essa terminologia deixou de ser utilizada. O Samba, na versão 3, é capaz de
agir como controlador (primário e secundário) de domínios estilo NT4 porém somente como
membro de um domínio Active Directory.
No domínio NT4 o PDC cria uma nova base de controle de domínio, armazenada em
uma parte do registro do Windows chamada Security Account Manager (SAM). Ela é então
sincronizada com quaisquer controladores backup (BDCs), que são capazes de ler os dados
porém não os modificam.
81 / 7
Capítulo 7 Samba em Domínios
7.2. Domínios NT4
Nestes domínios o PDC é o responsável por gerenciar o SAM e nele são feitas
quaisquer alterações, como modificação de senhas e adição ou remoção de contas. Quando
uma máquina ingressa no domínio ela está se comunicando com o PDC. Além disso o PDC
pode responder solicitações de logon na rede e autenticar usuários tentando acessar
compartilhamentos de outros servidores.
Além e possuírem uma cópia do SAM e atenderem solicitações de logon (netlogon),
todos os controladores fornecem um compartilhamento especial chamado “netlogon” que é
usado durante a autenticação dos usuários.
Em um domínio somente pode haver um único PDC e qualquer número de BDC's.
Porém um BDC pode ser promovido a PDC caso haja a necessidade. No Windows isso é feito
de maneira automática: caso um PDC já esteja presente na rede no momento em que um
BDC é promovido, ele será automaticamente demovido à BDC. No Samba é necessário
primeiro demover o PDC para então promover o BDC.
Temos então as seguintes opções de configuração do Samba em um domínio NT4:
• PDC – Fornece o SAM do domínio
• BDC – Obtém uma cópia do SAM do domínio com o PDC
82 / 7
Capítulo 7 Samba em Domínios
• DMS – Servidor membro, que não possui cópia do SAM e utiliza os serviços dos
controladores para autenticar e autorizar usuários.
Por agir como controlador de um domínio estilo NT4, o Samba também é capaz de
implementar políticas da mesma maneira que isso era feito pelo Windows NT. Podese utilizar
a ferramenta “poledit” do Windows NT para gerar um arquivo NTConfig.pol, que é enviado
para as estações no momento do logon. Este método, porém, só funciona com estações
Windows 9x e ME, não sendo possível ser utilizada com o Windows XP ou posteriores. Assim
o administrador deve ter em mente que o Samba não suporta “políticas” da maneira que são
implementadas por um controlador Active Directory.
Quando utilizamos o Samba como BDC devemos também utilizar o LDAP como
backend para sincronização do SAM, pois isso não é feito pelos servidores do Samba e não é
possível manter de maneira eficiente os arquivos com as bases sincronizados entre os
servidores.
83 / 7
Capítulo 7 Samba em Domínios
7.3. Prática dirigida
7.3.1. Configuração do Samba como PDC
Para configurar o servidor Samba como um controlador primário de domínio, devemos
primeiro fazer as mudanças necessárias em nosso arquivo de configuração, o smb.conf:
1 [global]
2 workgroup = 4LINUX
3 netbios name = DEBIANXX
4 passdb backend = tdbsam
5 security = user
6
13 [netlogon]
14 path = /samba/netlogon
15 guest ok = yes
16 browseable = no
Note que estamos usando o modo “security = user” (linha 5). O PDC, por iniciar o
domínio, não irá tentar ingressar no mesmo e por isso não utiliza a diretiva “security =
domain”.
Na linha 9 “explicamos” para o Samba como contas de máquina serão adicionadas no
domínio quando tentarmos ingressar nele a partir de uma estação Windows. O Samba
utilizará o comando informado neste parâmetro sempre que receber um pedido de ingresso e
as credenciais do administrador do domínio (ou outro usuário com permissões para isso)
forem informadas corretamente na estação.
84 / 7
Capítulo 7 Samba em Domínios
Criamos também um compartilhamento “netlogon”, utilizado para armazenar o arquivo
NTConfig.POL. Esse e outros scripts de logon e outros arquivos relacionados ao
processamento do logon serão, então, executados automaticamente.
# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[netlogon]"
Processing section "[profiles]"
Loaded services file OK.
Após configurarmos nosso smb.conf vamos reiniciar o Samba:
# /etc/init.d/samba restart
Devemos então criar o diretório netlogon:
# mkdir /samba/netlogon
O próximo passo necessário é adicionar o usuário “root” ao Samba, que por padrão
será o administrador do domínio:
# smbpasswd -a root
New SMB password: 123456
Retype new SMB password: 123456
Added user root.
85 / 7
Capítulo 7 Samba em Domínios
Vamos também adicionar um usuário para utilizarmos em testes posteriormente:
# useradd usuariodominio1
# smbpasswd -a usuariodominio1
New SMB password: 123456
Retype new SMB password: 123456
Added user usuariodominio1
Uma mensagem de boasvindas do domínio deverá aparecer. Reinicie o computador e
informe o usuário “root” do domínio para efetuar logon. O usuário “usuariodominio1” também
deverá conseguir fazer logon na máquina.
# net getlocalsid
7.4. Script de Logon
86 / 7
Capítulo 7 Samba em Domínios
7.5. Perfis de Usuário
Para as estações de trabalho podemos utilizar o recurso de perfil por usuário, desta
forma cada usuário que efetuar logon na estação terá o seu perfil, baseado em nome de
usuário e assim poderá customizar sua estação e ainda garantir acesso restrito aos seus
arquivos pessoais. Num ambiente com controlador de domínio podemos optar em utilização
de perfil local e perfil remoto conforme mencionado a seguir:
• Remoto: os arquivos necessários para o perfil do usuário continuarão na estação,
porém no momento do logout os arquivos serão enviados para um servidor externo e
no momento do logon os arquivos serão baixados do servidor externo. Um cuidado a
se tomar nesta situação é que todos os arquivos do perfil do usuário serão enviados
e recebidos do servidor a cada logon/logout. Assim perfis grandes poderão aumentar
o tempo necessário para o logon e também gerar um grande tráfego de rede.
Para habilitar os perfis remotos no servidor devemos especificar a diretiva “logon path”
em nosso smb.conf e criar um compartilhamento correspondente. Isso seria feito, por
exemplo, da seguinte maneira:
[global]
workgroup = 4LINUX
netbios name = DEBIANXX
passdb backend = tdbsam
security = user
domain master = yes
domain logons = yes
os level = 65
87 / 7
Capítulo 7 Samba em Domínios
[netlogon]
path = /samba/netlogon
guest ok = yes
browseable = no
[profiles]
path = /samba/profiles
read only = no
create mask = 0600
directory mask = 0700
# mkdir /samba/profiles
# chmod 777 /samba/profiles
A permissão do diretório contendo os perfis deve ser 777 para permitir a criação dos
diretórios de cada usuário. Para aumentar a segurança deste diretório, podemos habilitar o
“sticky bit”, como é feito no diretório /tmp do sistema:
# chmod +t /samba/profiles
logon path =
logon home =
88 / 7
Capítulo 7 Samba em Domínios
7.6. Prática dirigida
7.6.1. Configuração do Samba como BDC
Quando utilizamos um servidor Samba como PDC podemos optar por ter
controladores backup de domíno, os BDCs. Como comentado, só é possível utilizar o Samba
como BDC de um servidor PDC que também seja um Samba. Isso ocorre pois apenas uma
parte do SAM é implementada pelo Samba e também pelo Samba não utilizar os mesmos
protocolos que o Windows utiliza para fazer a sincronização de bases.
Precisamos, portanto, estabelecer formas de manter o backend de senhas (passdb
backend) sincronizado entre os servidores. Fazer isso utilizando os backend baseados em
arquivos, apesar de possível, não é prático e são técnicas que tem grandes desvantagens ou
até mesmo podem trazer riscos para a integridade da base do domínio. O melhor cenário é
onde se utiliza o LDAP como backend e pelo menos dois servidores LDAP, um master e outro
slave.
Para fins de testes, porém, podemos manter a base sincronizada manualmente, seja
através de cópia dos arquivos ou adicionando manualmente os usuários nos dois servidores.
O primeiro passo é editar nosso arquivo smb.conf. A configuração será bem parecida
com a configuração do PDC, com a diferença que a diretiva “domain master”, no BDC, será
“no”:
89 / 7
Capítulo 7 Samba em Domínios
[global]
workgroup = 4LINUX
netbios name = DEBIANXX
passdb backend = tdbsam
security = user
90 / 7
Capítulo 7 Samba em Domínios
domain master = no
domain logons = yes
os level = 65
[netlogon]
path = /samba/netlogon
guest ok = yes
browseable = no
[profiles]
path = /samba/profiles
read only = no
create mask = 0600
directory mask = 0700
Se verificarmos a configuração utilizando o comando testparm veremos que role do
servidor agora é de BDC do domínio:
# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[netlogon]"
Processing section "[profiles]"
Loaded services file OK.
Server role: ROLE_DOMAIN_BDC
Ao configurarmos o servidor desta maneira temos também que sincronizar o SID do
domínio. O SID fica armazenado no arquivo secrets.tdb e pode ser obtido com o seguinte
comando, após a configuração do arquivo smb.conf:
# net getlocalsid
91 / 7
Capítulo 7 Samba em Domínios
Após fazer isso podemos reiniciar o Samba:
# /etc/init.d/samba restart
Caso o PDC saia do ar as estações devem continuar conseguindo efetuar logon no
domínio utilizando o PDC, caso as contas de usuário e de máquina estejam sincronizadas.
Quando utilizando perfis remotos e scripts de logon também é essencial manter os arquivos
dos devidos compartilhamentos sincronizados entre os servidores. Para isso a melhor solução
seria usar o DRBD em partições específicas para os compartilhamentos.
92 / 7
Capítulo 7 Samba em Domínios
7.7. Prática dirigida
7.7.1. Configuração do Samba como DMS
A última maneira de configurar o Samba, em um domínio, é para que aja como um
servidor membro, ou DMS (Domain Member Server). Essa configuração faz com que o
servidor ingresse no domínio, como as outras estações, e possa utilizar os controladores para
efetuar a autenticação e autorização dos usuários.
Isso é útil quando configurarmos um servidor Samba como um servidor de arquivos
em um domínio já existente, e desejamos utilizar os usuários do domínio para evitar a
necessidade de nova autenticação por parte dos usuários.
A configuração do Samba nesse modo é simples:
[global]
netbios name = DEBIANXX
workgroup = 4LINUX
security = domain
# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
O último passo é estabelecer uma relação de confiança com o controlador do domínio,
ingressando no mesmo. Isso é feito através do seguinte comando:
93 / 7
Capítulo 7 Samba em Domínios
Note que neste comando devemos informar o usuário administrador do domínio e sua
senha, separados pelo caractere “%”.
Uma vez feito isso, devemos reiniciar o Samba:
# /etc/init.d/samba restart
94 / 7
Capítulo 7 Samba em Domínios
7.8. Exercícios Teóricos
1) Quais os maiores benefícios trazidos pela utilização de domínios?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) O que é um SID?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) Quais as limitações do Samba trabalhando em um domínio Active Directory?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) O que é o SAM?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
5) O que é um PDC? Quais suas funções?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
6) O que é um BDC? QUais suas funções?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
95 / 7
Capítulo 7 Samba em Domínios
7)
8) Qual o compartilhamento especial utilizado para atender solicitações de logon?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
9) Quais as limitações do Samba ao agir como BDC?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
10) Quais diretivas definem que um Samba agirá como PDC?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
11) Quais diretivas definem que um Samba agirá como BDC?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
12) O que é um DMS?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
13) O que é um script de logon?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
96 / 7
Capítulo 7 Samba em Domínios
14) O que é um script de logon?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
97 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
Capítulo 8
Controle de Acesso a Compartilhamentos
OBJETIVOS
• Entender as diferentes abordagens para controlar o acesso a compartilhamentos
• Aprender a proteger compartilhamentos utilizando os recursos do Samba
• Aprender a proteger arquivos e diretórios individuais utilizando ACLs
98 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
8.1. Introdução
Agora que vimos diferentes maneiras de configurar o Samba para autenticar usuários
iremos utilizar esta autenticação para permitir ou negar acesso a arquivos compartilhados.
O administrador tem bastante flexibilidade para trabalhar com o controle de acesso,
podendo utilizar recursos do próprio Samba ou recursos fornecidos pelo sistema de arquivos
em que os arquivos compartilhados se encontram. Caso o sistema de arquivos suporte ACLs,
o Samba também permite que as permissões sejam controladas a partir das estações
Windows de maneira nativa.
8.2. Permissionamento em Definições de Compartilhamentos
Isso é feito através de algumas diretivas:
• valid users: lista de usuários que devem conseguir acessar o serviço. Pode ser uma
lista de nome de usuários, separados por vírgulas, e incluir grupos prefixandoos
com o caractere “@”. Quando essa diretiva está presente nenhum usuário fora da
lista conseguirá acessar.
99 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
Exemplo:
[compartilhamento]
valid users = fulano1, @fulanos
• invalid users: inverso da lista de usuários válidos. Caso esta diretiva esteja presente
todos usuários que não estiverem nela conseguirão acessar. Caso um usuário exista
na definição de “valid users” e nesta diretiva, o acesso será negado.
Exemplo:
[compartilhamento]
valid users = @fulanos
invalid users = fulano1, fulano2
Exemplo:
[compartilhamento]
write list = ciclano, @fulanos
• read list: lista de usuários que possuem acesso somenteleitura aos arquivos do
compartilhamento mesmo que todos os outros possuam acesso de gravação. Útil
quando utilizada juntamente à diretiva “writeable”:
Exemplo:
[compartilhamento]
writeable = yes
read list = fulano1, fulano2
100 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
• hosts allow: lista de IPs ou range de IPs que podem se conectar a este
compartilhamento. Os escopos de endereços IP podem ser especificados utilizando
se sua máscara completa ou abreviação CIDR. Caso essa diretiva seja especificada
todos os outros endereços não poderão se conectar.
Exemplo:
• hosts deny: inverso de hosts allow, contendo uma lista de endereços que não
podem se conectar. Caso o endereço apareça nas duas listas, o acesso será
negado.
Exemplo:
• create mask: não é exatamente uma diretiva de restrição de acesso, e sim uma
maneira de forçar permissões em arquivos novos criados. Assim podese garantir
que todos que acessarem o compartilhamento e tiverem permissão de gravação não
irão encontrar problemas devido às permissões no sistema de arquivos.
Exemplo:
[compartilhamento]
write list = @fulanos
create mask = 666
101 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
• directory mask: similar à diretiva “create mask” porém é aplicada a novos diretórios
criados.
Exemplo:
[compartilhamento]
write list = @fulanos
create mask = 666
directory mask = 777
É importante lembrar que as permissões do sistema de arquivo tem prioridade sobre
as diretivas do Samba. Portanto, a menos que especifiquemos as diretivas “create mask” e
“directory mask” os arquivos criados ainda somente poderão ser editados e removidos pelos
seus respectivos donos.
8.3. Permissionamento Nativo Windows Utilizando ACLs
Como foi mencionado anteriormente, o Samba sempre irá respeitar as permissões do
sistema de arquivos devido à sua arquitetura. Isso significa que cada usuário será o dono de
determinado arquivo no momento que criálo, e permissões de grupos e outros também se
aplicam.
Porém o sistema UGO (user, group, other) tradicional do Unix é muitas vezes limitado
para as necessidades de ambientes complexos, e administradores Windows estão
acostumados a trabalhar com as ACLs flexíveis. O Samba pode, desde que o sistema de
arquivos permita, utilizar ACLs de maneira muito semelhante ao Windows, com permissões
individuais para cada usuário e grupos.
102 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
• Adicionando mapeamentos
• Listando mapeamentos existentes:
• Removendo mapeamentos existentes:
A partição / agora foi remontada com suporte a ACLs, porém somente estará desta
maneira até que o sistema seja reiniciado. Para tornar a mudança permanente devemos editar
o arquivo “/etc/fstab” e fazer as devidas alterações:
Assim o dispositivo SDA1 será sempre montado com suporte a ACLs. É importante
saber que caso um arquivo que tenha permissões estendidas (ACLs) seja copiado para uma
partição sem esse suporte todo o permissionamento será perdido.
103 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
Para adicionar ou editar uma ACL usamos o seguinte comando:
Para adicionar permissão 7, (leitura, gravação e execução) ao diretório “/home/diego”
para o usuário “diego” faríamos o seguinte:
Podemos em seguida adicionar as permissões para outro usuário da mesma maneira,
mesmo que ele não seja relacionado ao grupo do usuário original:
Podemos perceber que um diretório possui ACLs através da presença do sinal “+”
após as permissões UGO mostradas pelo comando “ls l”:
# ls -l /home
total 4
drwxrwxr-x+ 44 diego diego 4096 2010-12-17 11:05 diego
Para listar as ACLs, usamos o comando getfacl:
# getfacl /home/diego/
# file: home/diego/
# owner: diego
# group: diego
user::rwx
user:diego:rwx
user:fulano1:rwx
group::r-x
mask::rwx
other::r-x
Podemos remover uma ACL usando o parâmetro “x” no comando setfacl:
104 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
8.4. Exercícios Teóricos
1) Como é feito o controle de acesso utilizando os recursos fornecidos pelo Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Qual permissão possui precedência? As permissões do Samba ou do sistema de
arquivos? Por quê?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) Qual a desvantagem do sistema de permissão tradicional (UGO) do Unix?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) Para que serve mapear grupos do Unix para grupos do Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
5) O que é necessário para ativar o suporte a ACLs?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
105 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
8.5. Prática Dirigida 1
Vamos testar algumas permissões em compartilhamentos utilizando os recursos do
Samba. Para isso, vamos configurar nosso Samba em modo de autenticação em nível de
usuário e criar três compartilhamentos:
[global]
netbios name = DEBIANXX
workgroup = 4LINUX
security = user
[usuarios]
path = /samba/shares/cap8/usuarios
[hosts]
path = /samba/shares/cap8/hosts
Reinicie o samba e crie os diretórios dos compartilhamentos:
# /etc/init.d/samba restart
# mkdir -p /samba/shares/cap8/usuarios
# mkdir -p /samba/shares/cap8/hosts
Vamos também definir as permissões para que qualquer usuário consiga gravar
nestes diretórios, para visualizarmos como seria o controle exclusivamente pelo Samba:
Agora adicione três usuários:
# useradd cap8user1
# useradd cap8user2
# useradd cap8user3
# smbpasswd -a cap8user1
# smbpasswd -a cap8user2
# smbpasswd -a cap8user3
Adicione um novo grupo no sistema:
# groupadd cap8
106 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
cap8:x:1010:cap8user1,cap8user2
Agora vamos restringir o acesso a estes compartilhamentos. Primeiro, vamos fazer
com que somente o usuário “cap8user2” e o usuário “cap8user3” escrevam no
compartilhamento “usuarios”. Também vamos fazer com que somente o grupo “cap8” consiga
acessálo para leitura.
[usuarios]
path = /samba/shares/cap8/usuario
read list = @cap8
write list = cap8user2, cap8user3
create mask = 777
directory mask = 666
Reinicie o Samba:
# /etc/init.d/samba restart
107 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
Tente, a partir da estação Windows, acessar o compartilhamento “usuarios” utilizando
o usuário “cap8user3” e crie um novo arquivo de texto nele. Em seguida feche a janela do
compartilhamento e abra um prompt de comando, digitando nele o seguinte:
Repita o passo acima, utilizando o usuário “cap8user2” para conectarse. Você deverá
conseguir editar o arquivo de texto.
[hosts]
path = /samba/shares/cap8/hosts
hosts allow = 127.0.0.1
Reinicie o Samba:
# /etc/init.d/samba restart
Agora, a partir do servidor Gnu/Linux, faça o seguinte:
108 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
8.6. Prática Dirigida 2
Vamos configurar nosso servidor como PDC de um domínio para efetuar os testes.
Deixe seu arquivo smb.conf da seguinte maneira:
[global]
workgroup = 4LINUX
netbios name = DEBIANXX
domain master = yes
domain logons = yes
logon path =
logon home =
[acl]
path = /samba/shares/cap8/acl
writeable = yes
Crie também o diretório do compartilhamento:
# mkdir -p /samba/shares/cap8/acl
Agora pare o Samba:
# /etc/init.d/samba stop
Faça um backup e apague todos os arquivos .tdb para iniciarmos com uma base nova:
# tdbbackup /var/lib/samba/*.tdb
# rm /var/lib/samba/*.tdb
Inicie novamente o Samba:
# /etc/init.d/samba start
109 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
# smbpasswd -a root
# smbpasswd -a cap8user1
# smbpasswd -a cap8user2
# smbpasswd -a cap8user3
No Windows, saia do domínio (trocando para um workgroup qualquer). Reinicie a
máquina. Entre novamente no domínio, e reinicie a máquina de novo. Efetue o login com o
usuário “cap8user1”.
O próximo passo é criar um grupo (somente necessário se você não o criou na prática
dirigida anterior) e mapeálo:
# groupadd cap8
# net groupmap add ntgroup="Capitulo 8" unixgroup=cap8
Confira se o usuários cap8user1 e cap8user2 estão dentro do grupo “cap8”. A linha
em “/etc/group” deverá estar da seguinte forma:
cap8:x:1010:cap8user1,cap8user2
Vamos criar um diretório chamado “usuarios” dentro do compartilhamento:
# mkdir -p /samba/shares/cap8/acl/usuarios
Vamos fazer com que o usuário “cap8user1” seja o dono deste diretório e o grupo
Windows “Capitulo 8” tenha acesso somenteleitura a ele:
Até aí não fizemos nada demais. Neste momento devemos conseguir gravar arquivos
se efetuarmos o logon com o usuário cap8user1 e ler arquivos com o cap8user2 pois está no
grupo cap8.
110 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
Porém vamos adicionar agora permissões para que o usuário “cap8user3” também
possa gravar arquivos neste diretório, sem alterar o restante do grupo cap8:
Agora tente fazer login com o usuário cap8user3 no Windows e gravar um arquivo no
compartilhamento. Também deve ser possível verificar as permissões do diretório clicandose
nele com o botão direito do mouse, selecionando “propriedades” e depois “segurança”.
111 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
8.7. Laboratório 1
Configure alguns compartilhamentos com controle de acesso utilizando os recursos do
Samba:
1) Crie 2 grupos: “empire” e “rebels”;
2) Crie os usuários nos grupos:
• usuários “luke” e “solo”, no grupo “rebels”
• usuários “vader” e “palpatine”, no grupo “empire”
3) Crie os seguintes compartilhamentos:
• Hoth: leitura para grupo rebels, escrita para luke
• Coruscant: leitura para grupo empire, escrita para vader e palpatine
• Mandalore: leitura para rebels e empire, sem escrita
• Kamino: acessível apenas do próprio servidor
4) Crie os diretórios em disco em /samba/shares/cap8/lab1/
112 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos
8.8. Laboratório 2
Crie alguns compartilhamentos com controle de acesso utilizando ACLs no sistema de
arquivos:
1) Crie um diretório /tmp/lotr
2) Crie um compartilhamento “lotr” apontando um diretório /tmp/lotr
3) Crie três grupos: “orcs”, “elves” e “hobbits”
4) Crie e adicione os seguintes usuários nos grupos:
• Shagrat, Grishnakh: grupo orcs
• Legolas, Galadriel: grupo elves
• Frodo, Samwise: grupo hobbits
5) Crie os seguintes subdiretórios com as permissões:
• Shire: Completo para “hobbits”, Leitura para “elves”
• Rivendell: Completo para “elves”, completo para “hobbits”
• Mordor: Completo para “orcs”, nenhum acesso para os outros
6) Teste os acessos
113 / 7
Capítulo 9 Gerenciamento de Usuários no Domínio
Capítulo 9
Gerenciamento de Usuários no Domínio
OBJETIVOS
• Explorar a ferramenta pdbedit
• Trabalhar com políticas de contas no domínio
114 / 7
Capítulo 9 Gerenciamento de Usuários no Domínio
9.1. Introdução
Quando trabalhamos com domínios podemos também, além de adicionar e remover
usuários como fazíamos até agora, estabelecer políticas para essas senhas. As políticas
determinam que contas do domínio podem ter uma idade máxima, determinar comprimentos,
que podem ter que ser diferentes de senhas usadas anteriormente, entre outros.
O administrador do Samba tem as seguintes políticas à sua disposição:
• maximum password age: idade máxima da senha; o servidor exigirá a troca de
senha pós esse período de tempo. É definido em segundos.
• minimum password age: idade mínima da senha; o servidor não permitirá a troca
de senhas antes que esse tempo se passe desde a última alteração. É definido em
segundos.
• min password length: comprimento mínimo da senha, em número de caracteres.
• lockout duration: tempo entre um bloqueio de conta (lockout) até o momento em
que será desbloqueada automaticamente.
• user must logon to change password: a alteração de senha será necessária no
momento em que o usuário efetuar o logon. Não se encontra funcional no Samba
3.5, sendo necessário fazer isso através de outros meios (discutidos a seguir).
115 / 7
Capítulo 9 Gerenciamento de Usuários no Domínio
• refuse machine password change: não permite a alteração da senha da conta de
máquina
Podemos também usar o pdbedit para adicionar, editar e remover contas de usuários,
independente do backend utilizado. Para alterar a senha ainda usaremos o smbpasswd.
Alguns exemplo de utilização do pdbedit:
• Adicionar contas
# useradd conta
# pdbedit -a conta
• Deletar contas
# pdbedit -x conta
# userdel conta
• Alterar contas
• Forçar troca de senha
ou
Nota: Nas versões novas do Samba a funcionalidade de forçar a troca de senha
utilizando o “pdbedit” não se encontra disponível, sendo necessário para isso usar o comando
“net” para isso.
• Desabilitar conta
• Resetar flags da conta para os valores padrão
116 / 7
Capítulo 9 Gerenciamento de Usuários no Domínio
9.2. Exercícios Teóricos
1) O que são políticas de domínio?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
117 / 7
Capítulo 9 Gerenciamento de Usuários no Domínio
9.3. Prática Dirigida
Vamos definir que em nosso domínio as senhas devem possuir pelo menos 6
caracteres e que as contas serão bloqueadas após 5 tentativas.
Primeiro, vamos criar um usuário chamado “cap9user1”:
# useradd cap9user1
# pdbedit -a cap9user1
Para isso iremos utilizar duas políticas de domínio: a “min password length” e a “bad
lockout attempt”:
Vamos testar efetuando o logon com o usuário cap9user1. Após efetuar o logon na
estação Windows, pressione ctrl+alt+del e escolha “Alterar Senha”. Tente colocar a senha
“123”. A alteração não será bemsucedida.
Em seguida efetue o logoff e tente entrar com a senha “123” até que a conta seja
bloqueada. Visualize agora a conta usando o seguinte comando:
Você deverá perceber que está com o flag “L”, significando que está bloqueada.
118 / 7
Capítulo 9 Gerenciamento de Usuários no Domínio
Laboratório
• Crie um usuário “chapman”
1) Faça com que tenha que trocar a senha no logon
2) Defina que a conta será travada após 3 tentativas de logon erradas
3) Efetue o logon e verifique a troca de senhas
4) Faça logoff e tente uma senha errada até que a conta seja bloqueada
5) Desbloqueie a conta
119 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
Capítulo 10
Utilizando o LDAP como Backend de
Usuários
OBJETIVOS
• Entender como funciona a autenticação baseada em LDAP
• Instalar e configurar o OpenLDAP para armazenar contas do Samba
• Conhecer ferramentas de gerenciamento
• Unificar contas do Samba e de sistema
120 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
10.1. Introdução
O LDAP é um protocolo para interação com serviços de diretórios. Um serviço de
diretório é um software que armazena e organiza informações sobre os recursos e os usuários
de uma rede de computadores, e que permite os administradores de rede gerenciar o acesso
de usuários e sistemas a esses recursos.
Utilizar o LDAP permite que se centralize diversos tipos de informações e as tornem
disponíveis para diversos programas. Devido ao seu modo de funcionamento permite,
também, consolidar informações provindas de fontes diferentes dentro de um único objeto, o
que é particularmente útil quando é utilizado para gerenciar a autenticação de serviços.
Em particular ele permite que um mesmo objeto seja utilizado pelo sistema Gnu/Linux
e pelo Samba, eliminando a necessidade de adicionar contas em dois locais diferentes.
Também é possível acessar essa base a partir de servidores diferentes, eliminando os
problemas que teríamos com a utilização de um backend baseado em arquivos residentes no
servidor local quando temos BDC's na rede.
Por suportar replicação nativamente, o LDAP também assegura a disponibilidade das
informações mesmo em caso de problemas com o servidor Samba. Em um ambiente com
PDC e BDC's utilizando servidores LDAP distintos, a probabilidade de indisponibilidade dos
serviços do Samba é extremamente baixa.
Quando utilizando um PDC e servidores BDC's o ideal é que os BDC's apontem para
servidores LDAP slave, visto que não efetuam gravação na base. Ainda é possível configurar o
LDAP slave para gravar no master caso o BDC venha a ser promovido a PDC.
Quando usamos o LDAP o Samba irá buscar as contas de usuário no LDAP sempre
que receber uma solicitação de autenticação. Caso o servidor LDAP fique indisponível, o
Samba também deixará de funcionar corretamente.
121 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
Não é necessário que o LDAP fique na mesma máquina que o Samba, podendo ficar
até em sites físicos distintos, desde que haja a comunicação entre ambos.
122 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
10.2. Prática Dirigida
10.2.1. Instalação e Configuração do OpenLDAP
O primeiro passo é instalar o servidor do OpenLDAP e ferramentas necessárias para o
gerenciamento do mesmo e interação com o Samba:
Uma vez instalado devemos criar a base de dados do servidor. Vamos primeiro
configurar o sufixo da base, editando o arquivo de configuração “/etc/ldap/slapd.conf” e
deixandoo da seguinte maneira:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel none
sizelimit 500
tool-threads 1
backend hdb
database hdb
suffix "dc=4linux,dc=com,dc=br"
rootdn "cn=admin,dc=4linux,dc=com,dc=br"
rootpw "123456"
directory "/var/lib/ldap"
123 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
index objectClass eq
lastmod on
checkpoint 512 30
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=4linux,dc=com,dc=br" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=admin,dc=4linux,dc=com,dc=br" write
by * read
Com essa configuração teremos uma base “dc=4linux,dc=com,dc=br” configurada no
servidor LDAP.
Vamos também apagar a base que foi criada automaticamente pelo Debian na
instalação:
# /etc/init.d/slapd stop
# rm /var/lib/ldap/*
124 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
include /etc/ldap/schema/samba.schema
Devemos também editar a linha:
access to attrs=userPassword,shadowLastChange
Para que fique da seguinte maneira:
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
Isso irá garantir a segurança dos campos de senha do Samba, evitando acessos
indevidos.
Por último vamos adicionar índices ao LDAP para agilizar as consultas mais realizadas
pelo Samba. Procure a linha:
index objectClass eq
E altere para que fique da seguinte forma:
index objectClass,memberUID,givenname eq
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
Agora já podemos criar nossa base. Para fazer isso, crie um arquivo
“base_restore.ldif” com o seguinte conteúdo:
dn: dc=4linux,dc=com,dc=br
dc: 4linux
o: 4linux.com.br
objectclass: top
objectclass: dcObject
objectclass: organization
125 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
dn: cn=admin,dc=4linux,dc=com,dc=br
cn: admin
description: LDAP administrator
objectclass: simpleSecurityObject
objectclass: organizationalRole
userpassword: 123456
Adicione o arquivo ao OpenLDAP:
# slapadd -l base_restore.ldif
Efetue a reindexação da base:
# slapindex -v
Uma vez feito isso, ajuste as permissões da base LDAP e inicie o servidor:
126 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
10.3. Prática Dirigida
10.3.1. Configuração do Backend Ldapsam
Agora que o servidor OpenLDAP está rodando, devemos configurar nosso Samba
para utilizálo como Backend. Além do endereço do servidor e credenciais para acessálo o
Samba precisa de algumas informações adicionais neste caso, pois por padrão não possui
meios de alterar dados no servidor e isso será feito através de scripts fornecidos pelo pacote
“smbldaptools”.
Devemos então Deixar nosso arquivo /etc/samba/smb.conf semelhante a este:
[global]
workgroup = 4LINUX
netbios name = DEBIANXX
logon path =
logon home =
127 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
Agora devemos armazenar a senha do usuário admin do ldap no Samba. Utilizamos o
seguinte comando para isso:
# smbpasswd -w [senha]
Substitua “[senha]” pela senha real que, no nosso caso, é 123456. Agora o servidor
Samba já está configurado e podemos reiniciálo:
# /etc/init.d/samba restart
10.3.2. Configurando o smbldaptools
Para que as ferramentas do “smbldaptools” funcionem como esperado, se faz
necessário configurálas. Veja a seguir:
1) Copie os arquivos smbldap_bind.conf e smbldap.conf:
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf>
/etc/smbldap-tools/smbldap_bind.conf
2) Edite o arquivo “/etc/smbldaptools/smbldap_bind.conf” e altereo para que fique
com as opções abaixo:
slaveDN="cn=admin,dc=4linux,dc=com,dc=br"
slavePw="123456"
masterDN="cn=admin,dc=4linux,dc=com,dc=br"
masterPw="123456"
3) Uma das informações mais importantes que deve ser configuradas é o SID do
Samba. Colete esse número executando o comando abaixo:
# net getlocalsid
128 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
4) Edite o arquivo /etc/smbldaptools/smbldap.conf, modificando apenas as linhas
citadas abaixo:
#Onde armazenar
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Usuarios,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"
5) O smbldaptools se encarrega de criar a base LDAP necessária para execução da
solução. Para tanto, execute o comando:
Nota: Os parâmetros u e g servem para indicar o uid e gid mínimos usados pelas
ferramentas smbldaptools.
6) Para que não haja necessidade de adicionar os usuários no sistema operacional
vamos configurálo para autenticar no mesmo OpenLDAP que o Samba, para isso
vamos instalar e configurar as bibliotecas necessárias como segue:
129 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
8) Agora devemos configurar o PAM para trabalhar com o LDAP editando o
“/etc/pam.d/commonaccount” e deixando somente com as linhas abaixo:
9) Edite o arquivo “/etc/pam.d/commonauth” para que seja suficiente a autenticação
via base OpenLDAP. Deixeo assim:
130 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
12) Verifique as configurações do arquivo “/etc/pam_ldap.conf” para ter certeza
de que o “debconf” as fez corretamente:
base dc=4linux,dc=com,dc=br
uri ldap://debianXX.4linux.com.br/
ldap_version 3
rootbinddn cn=admin,dc=4linux,dc=com,dc=br
pam_password crypt
10.4. Gerenciamento de Usuários
Quando trabalhamos com o smbldaptools devemos usar as ferramentas fornecidas
para adicionar e remover usuários ao invés das nativas do Samba. Isso pois os objetos
criados são, além de usuários do Samba, usuários de sistema. Caso utilizemos apenas o
pdbedit, por exemplo, as contas no LDAP serão apenas contas do Samba.
Portanto temos as seguintes ferramentas disponíveis:
• smbldapuseradd: adiciona novos usuários
• smbldapusermod: modifica usuários existentes
• smbldapuserlist: lista os usuários existentes
• smbldapuserdel: exclui usuários
• smbldapgroupadd: adiciona novos grupos
• smbldapgroupmod: modifica grupos existentes
• smbldapgroupdel: remove grupos existentes
• SambaLMPassword: LanMan password (16byte hash)
• SambaNTPassword: The NT password (16byte hash)
• SambaPwdLastSet: Hora Unix da última modificação de senha
• sambaAcctFlagsString: Flags da conta
131 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
• SambaLogonTime: Não utilizado atualmente
• SambaLogoffTime: Não utilizado atualmente
• SambaKickoffTime: Define quando a conta expirará.
• SambaPwdCanChange: Quando o usuário poderá alterar a senha (hora unix)
• sambaPwdMustChange: Quando o usuário será forçado a alterar a senha (hora
unix)
• SambaHomeDrive: Letra do sambaHomePath do usuário
• SambaLogonScript: Logon script
• SambaProfilePath: Caminho para o perfil remoto
• SambaHomePath: Caminho de rede para o home do usuário
• SambaUserWorkstations: Estações no qual o usuário pode efetuar log in.
• SambaSID: SID (identificação) do usuário.
• SambaPrimaryGroupSID: SID do grupo primário do usuário.
• SambaDomainName: Nome do domínio que o usuário faz parte
132 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários
10.5. Exercícios Teóricos
1) O que é o OpenLDAP e qual seu uso em conjunto com o Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Qual a vantagem de usar o LDAP como backend de contas com o Samba?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) Qual a melhor maneira de gerenciar usuários do Samba no backend LDAP?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
133 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
Capítulo 11
Winbind e Samba como Membro de
Domínios Active Directory
OBJETIVOS
• Ingressar em um domínio Windows 2003
• Utilizar os usuários de um domínio como usuários na máquina Samba
134 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
11.1. Introdução
O Winbind funciona de maneira similar ao “libnssldap”: ele mapeia contas de usuários
SMB para contas com os dados necessários para serem utilizadas pelo sistema, além de agir
como intermediário na autenticação pelo PAM. Isso é feito mapeando o SID do usuário para
os atributos UID e GID utilizados pelo Unix.
Através dele conseguimos fazer com que um computador Unix se comporte de
maneira semelhante a um Windows no domínio, utilizando os usuários presentes no
controlador do domínio.
O Winbind é fornecido em um pacote à parte, apesar de utilizar o mesmo arquivo de
configuração do Samba (/etc/samba/smb.conf) para sua configuração. Ele possui as seguintes
opções de configuração:
• idmap uid: range de UIDs que os usuários obtidos do domínio irão utilizar no
sistema
• idmap gid: range de GIDs que os grupos obtidos do domínio irão utilizar no sistema
• winbind enum users: especifica que os usuários do domínio serão listados no
comando “getent passwd” e “getent shadow”
• winbind enum groups: especifica que os grupos do domínio serão listados no
comando “getent group”
O Winbind é um dos componentes necessários para ingressar uma máquina em um
domínio Windows 2003 e posteriores. Nesse caso específico, também necessitamos usar o
modo “security = ADS” (em vez de “security = domain” que usamos em um membro de um
domínio NT4) e da diretiva “client use spnego = yes” para que o Samba utilize pacotes SMB
assinados pelo servidor.
135 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
Ele trabalha de forma independente dos outros daemons do Samba, sendo capaz de
buscar usuários mesmo que o smbd e o nmbd não estejam em funcionamento. Ele também
pode fornecer uma lista destes usuários caso o arquivo de configuração das bibliotecas de
“name services” (/etc/nsswitch.conf) da máquina esteja configurado de forma correta, e efetuar
a autenticação no controlador do domínio caso o PAM esteja configurado para utilizar o
Winbind.
Também será necessário configurar o Kerberos para obter os “tickets” do controlador
de domínio, utilizados para evitar o envio de senhas para os serviços.
136 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
Exercícios Teóricos
1) O que é o Winbind?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
2) Que atributos são mapeados pelo Winbind?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
3) Quando se utiliza o Winbind?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
4) Qual o arquivo de configuração configuramos para mapear os usuários do Winbind
no comando getent?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
5) Por que não é necessário iniciar o daemon do Samba para que o Winbind
funcione?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
137 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
11.2. Prática Dirigida
O primeiro passo é instalar o pacote do Winbind:
Vamos configurar o sistema para que ele “enxergue” os usuários do Winbind. Para
isso vamos editar o arquivo “/etc/nsswitch.conf”, alterando as seguintes linhas:
Também será necessário alterar o PAM para trabalhar com o Winbind na
autenticação de usuários. Edite os arquivos para que fiquem da seguinte maneira:
• /etc/pam.d/commonaccount
• /etc/pam.d/commonauth
• /etc/pam.d/commonpassword
• /etc/pam.d/commonsession
138 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
Para ingressar no domínio AD também precisamos instalar o Kerberos:
[global]
security = ADS
realm = 4LINUX.LOCAL
workgroup = 4LINUX
password server = winstrutor.4LINUX.local
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
Nota: Caso o domínio não seja Active Directory a diretiva “realm” não é necessária.
Essa diretiva é o nome completo do domínio Active Directory.
Devemos configurar o Kerberos para utilizar o realm do Active Directory:
[libdefaults]
default_realm = MYCOMPANY.LOCAL
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
[realms]
4LINUX.LOCAL = {
kdc = winstrutor.4linux.local
admin_server = winstrutor.4linux.local
}
[domain_realm]
.4linux.local = 4LINUX.LOCAL
4linux.local = 4LINUX.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = true
139 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
Após fazer as configurações, vamos reiniciar o Samba e o Winbind:
# /etc/init.d/samba restart
# /etc/init.d/winbind restart
Agora podemos, finalmente, ingressar no domínio:
Para testar se tudo está funcionando, devese fazer o seguinte:
# kinit luke@4LINUX.LOCAL
# wbinfo -u
# wbinfo -g
# getent passwd
# getent group
O comando “kinit” irá buscar o ticket to kerberos utilizando o usuário “Luke” do domínio
Active Directory (esse usuário deve existir no controlador Windows 2003). Isso irá confirmar
que o Kerberos está funcionando corretamente.
140 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
REFERÊNCIAS
BIBLIOGRÁFICAS
141 / 7
Capítulo 11 Winbind e Samba como Membro de Domínios Active Directory
Eckstein, Robert et al.. Using Samba. 1a Edição. Estados Unidos: O'Reilly, 1999.
Microsoft Corporation. NetBIOS Suffixes. 07/12/2010.
<http://support.microsoft.com/kb/163409>
Samba Team. The Official Samba 3.5.x HOWTO and Reference Guide. 08/12/2010.
<http://samba.org/samba/docs/man/Samba-HOWTO-Collection>
Sharpe, Richard. Browsing Elections and the 'os level' parameter. 09/12/2010.
<http://lists.samba.org/archive/sambatechnical/2002February/019556.html>
142 / 7
ANEXOS
Tabela de OS Levels
Tabela de OS Levels
144 / 155
Flags de Controle de Contas SAM
Flags de Controle de Contas SAM
Flag Descrição
D A conta está desabilitada
H Um diretório pessoal é exigido
I Conta de relação de confiança entre domínios
L Conta foi bloqueada automaticamente
M Conta de logon de serviço
N A conta não exige uma senha
S Conta de um servidor (Server Trust Account)
T Entrada temporária duplicada de conta
U Conta de usuário
W Conta de uma estação (Workstation Trust Account)
X A senha não expira
145 / 155
Respostas dos Exercícios Teóricos
Respostas dos Exercícios Teóricos
Capítulo 1
1) É uma interface (API) que permite que programas em computadores diferentes se
comuniquem através da rede.
2) É um protocolo que fornece acesso a recursos compartilhados entre
computadores em uma rede.
3) 15
4) É um indicador do tipo de serviço prestado por aquele nome.
5) Compartilhamento e impressão
Autenticação e autorização
Resolução de nomes
Anúncio de Serviços (ou Browsing)
6) smbd: compartilhamentos e autenticação
nmbd: resolução de nomes e Browsing
7) smbd: 139 e 445 TCP
nmbd: 137 e 138 UDP
8) Broadcast ou pontoaponto
146 / 155
Respostas dos Exercícios Teóricos
9) É um servidor que irá armazenar listas de mapeamentos entre nome e endereço
de máquinas na rede
10) É um computador que irá manter uma lista de todos os recursos disponíveis
na rede, e é definido através de uma eleição.
Capítulo 2
1) smbd e nmbd
2) É o arquivo que contém todas as configurações dos daemons do Samba
3) É um arquivo do tipo Trivial Database, que servem como banco de dados para
armazenar dados do Samba
4) /var/lib/samba
5) Persistenes e temporários
6) O arquivo smb.conf e todos os arquivos .tdb persistentes
7) Utilizando o comando tdbdump, para evitar inconsistencias nos dados dos
arquivos
8) Utilizase o comando "tdbdump v nome_do_arquivo.tdb", e é necessário que um
arquivo .bak exista
Capítulo 3
1) Standalone ou fazendo parte de um domínio
2) # e ;
3) É uma definição de compartilhamento ou metaserviço
4) [global], [homes], [printers], [IPC$] e [ADMIN$]
5) É o grupo de trabalho ou domínio que o servidor faz parte
6) É o diretório em disco que está sendo compartilhado
7) Ela determina a forma que o servidor irá realizar a autenticação e autorização de
usuários
147 / 155
Respostas dos Exercícios Teóricos
Capítulo 4
1) Testparm
2) Para gerenciar contas e senhas
3) findsmb
4) smbclient
Capítulo 5
1) É onde são armazenados dados de contas do Samba
2) Pois ele necessita de diversos dados extras não presentes nas contas posix
3) plaintext, smbpasswd, tdbsam e ldapsam
4) passdb backend
Capítulo 6
1) User
2) A senha será testada para cada um dos usuários informados, e caso tenha
sucesso utilizará os privilégios do primeiro usuário que a senha coincidir
3) Não, é necessário adicionar um usuário no Samba e no sistema local
4) Com os privilégios do usuário "nobody"
148 / 155
Respostas dos Exercícios Teóricos
Capítulo 7
1) SSO Single Sign On, onde um usuário somente utiliza uma mesma senha para
se autenticar em todos os serviços, e políticas
2) É um identificador de um objeto no domínio
3) O Samba não pode agir como controlador de um domínio AD
4) SAM é uma parte do registro do Windows que armazena os objetos e dados do
domínio
5) É o servidor responsável por criar e gerenciar o SAM, e nele são feitas quaisquer
modificações. Também pode responder solicitações de Logon na rede e autenticar
usuários.
6) São os servidores que possuem cópias somenteleitura do SAM e atendem
solicitações de logon na rede e autenticam usuários
7) Netlogon
8) O Samba somente pode ser BDC de um PDC Samba, e não suporta promoção de
maneira automática
9) "domain master = yes" e "domain logons = yes"
10) "domain master = no" e "domain logons = yes"
11) É um servidor que participa no contexto de segurança do domínio e não possui
uma cópia do SAM, utilizando um controlador para autenticar os usuários
acessando seus recursos
12) É um script, normalmente no formato .bat ou .cmd e armazenado no
servidor, que será executado pela estação no momento que o usuário efetuar o
logon
13) Os usuários terão acesso ao seu desktop e documentos a partir de
qualquer máquina no domínio
149 / 155
Respostas dos Exercícios Teóricos
Capítulo 8
1) São colocadas diretivas nas Stanzas que irão fazer com que o Samba permita ou
negue solicitações de usuários.
2) Do sistema de arquivos, pois os daemons smbd são executados com o usuário de
sistema que está acessando o recurso.
3) Não é flexível, sendo baseada apenas em "usuário dono", "grupo" e "outros"
4) Para que os grupos apareçam como válidos nas permissões de segurança das
estações Windows
5) Primeiramente, que sejam suportadas pelo sistema de arquivos. Também é
necessário montar a partição com suporte a ACLs e instalar pacotes para
gerenciálas.
Capítulo 9
1) São políticas que determinam requisitos de contas do domínio
Capítulo 10
150 / 155
Respostas dos Exercícios Teóricos
Capítulo 11
1) É um daemon que mapeia contas de usuários SMB para contas locais do sistema
2) O SID dos usuários e grupos são mapeados para UIDs e GIDs, respectivamente
3) Quando se deseja usar os usuários de um domínio como usuários locais na
máquina Linux/Unix
4) As configurações do Winbind são feitas no smb.conf
5) Pois o Winbind é um daemon separado do smbd e nmbd
151 / 155
Repostas dos Laboratórios
Repostas dos Laboratórios
Capítulo 2
#!/bin/bash
# Diretorio de backup
BACKUP_DIR="/backup/smb_backup"
if [ -f /etc/samba/smbpasswd ]; then
cp /etc/samba/smbpasswd ${BACKUP_DIR} || \
( echo "Erro ao fazer backup do smbpasswd" && exit 1 )
else
echo "Aviso! smbpasswd nao existe!"
echo "Isso não é um problema se nao esta usando smbpasswd como
backend"
fi
152 / 155
Repostas dos Laboratórios
Capítulo 8
Laboratório 1
[hoth]
path = /samba/shares/cap8/lab1/hoth
write list = luke
valid users = @rebels
[coruscant]
path = /samba/shares/cap8/lab1/coruscant
write list = vader, palpatine
valid users = @empire
[mandalore]
path = /samba/shares/cap8/lab1/mandalore
read only = yes
valid users = @empire, @rebels
[kamino]
path = /samba/shares/cap8/lab1/kamino
hosts allow = 127.0.0.1
153 / 155
Repostas dos Laboratórios
Laboratório 2
# groupadd hobbits
# groupadd elves
# groupadd orcs
# mkdir /tmp/lotr
# mkdir /tmp/lotr/shire
# mkdir /tmp/lotr/rivendell
# mkdir /tmp/lotr/mordor
154 / 155
Repostas dos Laboratórios
Capítulo 9
# useradd chapman
# pdbedit -a chapman
# smbpasswd chapman
# net sam set pwmustchangenow chapman yes
# pdbedit -P “bad lockout attempt” -C 3
155 / 155