Você está na página 1de 155

Samba

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, implementando­o 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,   chamando­o   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.

Os   processos   dos   usuários   é   finalizado   quando   o   cliente   finaliza   a   sessão,   e   um 


servidor que não esteja sendo acessado possuirá apenas um processo SMBD.

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:

• 137:   Browsing,   replicação   de   informações   de   diretório,   netlogon,   relações   de 


confiança, canal de comunicação seguro (WinNT Secure Channel)

• 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 ponto­a­ponto, 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 sub­redes 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:

• b­node (tipo 0x01): Apenas broadcast NetBIOS através de UDP

• p­node   (tipo   0x02):   Apenas   Unicast   NetBIOS   (Ponto­a­Ponto)   direcionado   a   um 


WINS

• m­node (tipo 0x04): Broadcast + Wins

• h­node (tipo 0x05): Wins + Broadcast

Por padrão o Windows é configurado como  b­node, 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.

Os   nomes   NetBIOS   possuem   16   bytes   e   podem   ter,   teoricamente,   16   caracteres. 


Porém   a   implementação   Microsoft   permite   que   apenas   15   caracteres   sejam   utilizados, 
reservando o último para determinar o tipo de recurso fornecido. A seguir temos uma tabela 
com os sufixos mais comuns nos nomes NetBIOS de recursos:

Recurso Valor (HEX)


Serviço padrão de estação de trabalho 00
Serviço messenger 03
Serviço de servidor de RAS 06
Domain Master Browser Service 1b
Nome do Master Browser 1d
Serviço de NetDDE 1f
Servidor de arquivos 20
Serviço de cliente de RAS 21

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

Recurso Valor (HEX)


Grupo padrão de estação de trabalho 00
Servidor de logon 1c
Nome de Master Browser 1d
Nome de grupo normal 1e
Nome de grupo internet 20

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. 

O vencedor se torna o  LMB  (Local Master Browser) e, além de seu nome NetBIOS 


comum, recebe um novo nome especial que o identifica na rede. O nome NetBIOS reservado 
para o LMB é o “\\­­__MSBROWSE__” e possuirá o sufixo NetBIOS “01”.

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 sub­redes 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

O   Samba   suporta   diferentes   formas   de   configuração,   sendo   as   principais 


configurações   as   que   afetam   a   maneira   como   o   Servidor   lida   com   a   autenticação   e 
autorização de usuários. Essa configuração que irá determinar se o Samba irá agir como um 
servidor  Standalone  (que fará autenticação utilizando uma base de usuários local) ou se irá 
estar   inserido   em   um   Domínio,   trabalhando   com   uma   base   centralizada   para   efetuar   a 
autenticação.

De forma resumida, é possível que o Samba trabalhe de duas maneiras:

• Standalone:  Servidores   configurados   desta   maneira   agem   como   computadores 


configurados   em   um   grupo   de   trabalho.   Cada   computador   é   responsável   por 
autenticar seus próprios usuários e gerenciar seus compartilhamentos. É uma forma 
simples   e   prática   para   se   utilizar   em   redes   menores,   porém   é   de   difícil 
gerenciamento em redes com grande número de estações e usuários.

• 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ódigo­fonte

• Identificar os arquivos de configuração do Samba

• Identificar outros arquivos­chave 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ódigo­fonte.

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ódigo­fonte 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   apt­get   ou   aptitude,   instalando­se   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:

# aptitude install samba smbclient

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

# ps -Af | grep -E '(smbd|nmbd)'

root 958 1 0 14:03 ? 00:00:00 smbd -F


root 979 958 0 14:04 ? 00:00:00 smbd -F
root 2090 1 0 14:05 ? 00:00:00 nmbd -D

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ódigo­fonte
Caso haja a necessidade de instalar Samba a partir do código­fonte, 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  samba­latest.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, 
pode­se utilizar o seguinte comando para instalá­las de maneira automática:

# aptitude build-dep samba

Após baixar o pacote do Samba e instalar as dependências para compilação, deve­se 
seguir os seguintes passos:

20 / 7
Capítulo 2 Instalação e Arquivos

Descompactar o pacote obtido:

# tar -xvzf samba-latest.tar.gz

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 deve­se 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, pode­se visitar a página do How­To 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:

# aptitude install tcpdump

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 byte­range 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ão­funcionais 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  tdb­tools, que 
nos fornece ferramentas para visualizar, editar e fazer backup das bases:

# aptitude install tdb-tools

É 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

Após   a   execução,   será   criado   um   arquivo   nome_do_arquivo.tdb.bak.   Este   arquivo 


pode ser então copiado  com segurança para o local  de backup, uma vez que não  estará 
sendo utilizado.  É recomendado também manter o arquivo .bak no mesmo diretório que o 
arquivo .tdb, para tornar o processo de restauração de backup mais simples e rápido, como 
faremos a seguir.

O   tdbbackup   também   pode   ser   utilizado   para   verificar   se   os   arquivos   estão 


corrompidos  e,   caso   estejam,   restaurar  o   último   backup   efetuado   com   sucesso.   Para   isso 
basta utilizar o parâmetro “­v” ao executar o comando:

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, deve­se digitar o seguinte:

# tdbtool
tdb>

Uma   vez   no   prompt   tdb,   pode­se   abrir   um   arquivo   com   o   comando   “open”   e,   por  
exemplo, mostrar a primeira entrada com o comando “1”:

tdb> open /var/lib/samba/passdb.tdb


tdb> 1
key 13 bytes
RID_000001f5
data 7 bytes
[000] 6E 6F 62 6F 64 79 00 nobody

Uma lista completa de comandos disponíveis pode ser vista digitando­se 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):

Name=GILEAD NameType=0x00 (Workstation)


Name=GILEAD NameType=0x20 (Server)
Name=4LINUX NameType=0x1E (Browser Server)
Name=4LINUX NameType=0x1D (Master Browser)
Name=\\__MSBROWSE__\ NameType=0x01 (Unknown)

 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:

# sed -i '1i teste' passdb.tdb

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. Deve­se, 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 pode­se 
utilizar esses caracteres para comentar linhas. Além disso pode­se 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 meta­serviç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]

Este  compartilhamento  será  acessado  através   do   endereço 


“\\servidor\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).

No Windows este  compartilhamento  sempre aponta para o diretório onde o SO se 


encontra instalado, e existe no Samba para fins de compatibilidade.

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

Já   dentro   de   compartilhamento   especificamos   a   diretiva   “path”,   que   mostra   qual 


diretório   está   sendo   compartilhado.   Para   acessar   este   compartilhamento   iríamos   digitar   o 
seguinte endereço na estação cliente: “\\MAQUINA\compartilhamento”

3.4. Modos de Funcionamento

Talvez   a   parte   mais   importante   na   configuração   do   servidor   Samba   seja   a   opção 


“security”, que determina como será feita a autenticação e autorização de usuários. É ela 
quem definirá se temos um servidor Standalone ou estamos participando de um domínio.

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ós­Windows 2000).

Dessa   forma   é   possível   escolher   um   entre   os   seguintes   valores   para   controlar   a 


maneira de funcionamento do Samba:

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.

Na   implementação   SMB/CIFS   da   Microsoft   o   servidor   associa   diretamente   um 


compartilhamento com uma senha, porém o Samba sempre utiliza o esquema de autenticação 
Unix, baseado em um par usuário/senha e não compartilhamento/senha.

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).

Não   é  recomendado  utilizar   esse  método   de   autenticação   quando   se  deseja  fazer 


controle   a   nível   de   usuário,   porém   é   o   método   mais   prático   quando   se   deseja   criar 
compartilhamentos públicos, sem autenticação.

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, tornando­a 
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.

Este   é   um   modo   antigo   suportado   apenas   para   compatibilidade   com   servidores 


antigos, e era utilizado quando o Samba ainda não era capaz de fazer parte de um domínio. É 
recomendado não utilizar este método, pois implica em vários problemas:

• 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

• Irá   abrir   uma   grande   quantidade   de   conexões   para   o   servidor   de   autenticação, 


consumindo recursos

• Todas   as   conexões   são   quebradas   em   caso   de   perda   de   comunicação   com   o 


servidor de autenticaçã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:

• workgroup:   Nome   NetBIOS   do   grupo   de   trabalho   ou   domínio   que   o   servidor 


participa.

• 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.

• domain   logons:   Configura   o   Samba   para   fornecer   serviços   de   netlogon,   agindo 


como um controlador de domínio. É um dos parâmetros necessários para configurar 
o servidor como controlador.

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

• browseable:   Especifica   se   um   compartilhamento   será   visível   na   lista   de 


compartilhamentos fornecida pelo servidor. 

• O padrão é “yes”, tornando todos o compartilhamento visível. Um compartilhamento 
invisível ainda poderá ser acessado diretamente (digitando­se 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 
permitam­lhe 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. 

Os   mesmos   privilégios   do   usuário   de   sistema   “nobody”   serão   aplicados   à 


arquivos   acessados,   a   menos   que   um   parâmetro   “guest   account”   na   stanza 
[global] determine outro usuário.

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:

user = fulano, fulano2

• 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, adicionado­se 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:

valid users = fulano, fulano2, @usuarios

• 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

hosts allow = 127.0.0.1 192.168.0.0/24

Pode­se   fazer   exceções   utilizando­se   a   palavra­chave   “EXCEPT”.   Para   permitir   o 


acesso  a  partir   da  rede   192.168.0.0/24   porém  sem  permitir   o   host   192.168.0.5,  a 
seguinte linha seria usada:

hosts allow = 192.168.0.0/24 EXCEPT 192.168.0.5

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:

hosts allow = 192.168.0.0/24


hosts deny = 192.168.0.5

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:

# echo “Arquivo Teste” > /samba/debianxx/teste.txt

• 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

• Agora   deve   ser   possível   acessar   o   compartilhamento   a   partir   de   uma   máquina 


windows utilizando o endereço “\\DEBIANXX\compartilhamento”

• 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 samba­tools 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 samba­common, 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:

Press enter to see a dump of your service definitions


[global]
workgroup = 4LINUX
[compartilhamento]
path = /samba/%L
guest ok = Yes

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.

Pode­se  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, pode­se 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

# testparm /etc/samba/smb.conf debianxx 127.0.0.1


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
Allow connection from debianxx (127.0.0.1) to compartilhamento

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

O   smbclient   é   um   cliente   para   o   protocolo   SMB/CIFS   de   linha   de   comando, 


permitindo­nos listar e acessar compartilhamentos de forma rápida, sendo extremamente útil 
quando estamos trabalhando em servidores sem interface gráfica e também para testar as 
configurações feitas.

A primeira funcionalidade é listar os compartilhamentos presentes em uma máquina:

1 # smbclient -L debianXX
2 Enter root's password: [enter]

3 Anonymous login successful

4 Domain=[4LINUX]ix] Server=[Samba 3.5.4]

6 Sharename Type Comment


7 --------- ---- -------
8 compartilhamento Disk
9 IPC$ IPC IPC Service (Samba 3.5.4)
10 músicas Disk
11 Anonymous login successful
12 Domain=[4LINUX] OS=[Unix] Server=[Samba 3.5.4]
13

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:

smb: \> get teste.txt

Opcionalmente poderíamos salvar o arquivo com outro nome em nossa máquina:

smb: \> get teste.txt /tmp/novoteste.txt

Para enviar arquivos, o comando utilizado seria o seguinte:

smb: \> put /tmp/novoarquivo.txt novoarquivo.txt

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:

smb: \> put /tmp/novoarquivo.txt novoarquivo.txt


NT_STATUS_ACCESS_DENIED opening remote file \novoarquivo.txt

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

• smbcquotas:   Lê   e   define   quotas   em   compartilhamentos   de   diretórios   sobre 


sistemas de arquivos que suportam esse recurso. É possível utilizá­lo em servidores 
Windows   que   utilizam   o   sistema   de   arquivos   NTFS   e   em   servidores   Samba   em 
partições EXT3 ou EXT4 com quotas habilitadas.

• smbget: Faz download de arquivos de um compartilhamento, como a ferramenta 
“wget”. Particularmente útil para utilização em scripts.

• smbtree:   Mostra   uma   árvore   contendo   todos   os   grupos   de   trabalhos   da   rede   e 


estações que estão dentro deles, sendo uma espécie de “Ambiente de Rede” em 
modo texto, e seu propósito é semelhante ao “smbfind”.

• smbspool: Imprime um arquivo utilizando uma impressora compartilhada.

• smbtar:   Faz   backup   de   um   compartilhamento   SMB/CIFS   diretamente   para   uma 


unidade de fita.

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?

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

 3)  Como   se   pode   descobrir   quais   computadores   existem   na   rede   e   utilizam   o 


protocolo SMB/CIFS?

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

 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

Devido   ao   seu   modo   de   funcionamento,   em   que   cada  daemon   smbd   é  executado 


como se fosse o usuário que se autenticou, o Samba exige que uma conta local exista no 
servidor em que  é executado. Além disso ele será limitado por permissões do sistema de 
arquivo,  mesmo   que   sua   própria   configuração   permita   alguma   operação.  Um  usuário   com 
permissão de escrita em um compartilhamento do Samba não irá conseguir gravar um arquivo 
caso seu usuário não possua permissão de escrita no diretório a nível de sistema de arquivos.

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

• Flags   de   controle,   utilizadas   para   determinar   se   a   conta   é   um   usuário   ou   uma 


máquina, se foi bloqueada, se é uma relação de confiança, etc. Veja nos anexos, 
uma lista completa das flags de contas do Samba.

• SID ­ Security Identifier ou identificador de segurança do usuário e grupo

Estes   são   atributos   essenciais   no   funcionamento   do   Samba.   As   senhas   utilizadas 


atualmente no protocolo SMB/CIFS são derivadas da criptografia MD4 e no caso de versões 
mais antigas do cliente são utilizadas senhas LanMan.

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 criando­se, 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

Por   padrão,   no   Debian,   o   arquivo  /etc/samba/smbpasswd  será   utilizado.   Outras 


distribuições, como o Ubuntu, já adotam o arquivo passdb.tdb como padrão e esse será o 
comportamento caso o Samba seja compilado a partir do código­fonte sem alterações.

O formato do smbpasswd é o seguinte:

[nome   do   usuario]:[UID   Unix]:[hash   LANMAN]:[hash   NT]:[flags]:[horario   de 


modificação]:

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 
levando­se 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 utilizando­se 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

Nenhuma   configuração   extra   é   necessária   no   caso   dos   backends   smbpasswd   e 


tdbsam, que irão utilizar os arquivos na localização padrão. No caso da utilização do ldapsam 
outras   configurações   ainda   são   necessárias,   que   serão   abordadas   posteriormente   em   um 
capítulo específico sobre a utilização do LDAP com o Samba.

Caso   se   deseje   utilizar   um   arquivo   em   uma   localização   não   padrão,   pode­se 


especificar onde esse se encontra da seguinte forma:

passdb backend = tdbsam:/srv/samba/passdb.tdb

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

Uma   vez   adicionado   o   usuário,   devemos   conseguir   visualizá­lo   no   arquivo 


/etc/samba/smbpasswd:

# 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

Como mencionado anteriormente, um servidor  Standalone  é aquele que utiliza seus 


próprios   recursos   para  autenticar  e   autorizar   usuários,   não   dependendo   de   servidores 
externos. Isso implica que existe uma base local contendo uma lista de usuários e senhas e o 
Samba utilizará esta para efetuar o controle de acesso.

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 é contra­produtivo.

Também   é   extremamente   fácil   alterar   a   maneira   de   funcionamento,   adicionar   e 


remover  usuários  de   um  servidor standalone,  por não  ser  dependente  de  outros serviços, 
oferecendo   maior   flexibilidade   para   os   administradores.   Além   disso   é   possível   alterar   a 
configuração de um servidor Standalone para que faça parte de um domínio posteriormente.

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ão­Autenticados

A   maneira   mais  simples  de   configuração   é   aquela   em   que   todos   usuários   podem 


acessar o compartilhamento sem a necessidade de informarem qualquer usuário e/ou senha. 

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

Para   permitir   a   gravação   neste   compartilhamento   ainda   temos   que   especificar   o 


parâmetro “writeable = yes”. Também será necessário que o diretório compartilhado em disco 
(/samba/shares/compartilhamento) possua permissão de escrita para qualquer usuário, visto 
que o acesso será realizado utilizando a conta de usuário “nobody”.

• 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ão­Microsoft, 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

Ao   especificarmos   a   diretiva   “user”   o   Samba   irá   verificar   se   a   senha   informada   é 


daquele usuário. Qualquer acesso ao diretório compartilhado será feito com as credenciais do 
usuário autenticado. Também é possível especificar uma lista de usuários, e nesse caso mais 
de uma senha será aceita:

user = fulano1, fulano2

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. 

Ainda   é   possível   permitir  acesso   a   qualquer  usuário   especificando­se   o   parâmetro 


“public”, porém as estações Windows irão solicitar um usuário e senha de qualquer maneira 
porque o envio das credenciais é feito no estabelecimento da conexão e não quando acessam 
compartilhamentos específicos. 

Para   utilizarmos   esse   compartilhamento,   portanto,   precisamos   sempre   criar   os 


usuários no   sistema   e   no   Samba.   Vamos  adicionar  mais  dois  fulanos  antes  de   iniciarmos 
nossa configuração:

# 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

Em   seguida   devemos   editar   o   arquivo   /etc/samba/smb.conf   e   deixá­lo   da   seguinte 


maneira:

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

Com   esta   configuração   temos   3   stanzas,   sendo   2   compartilhantos.   Podemos 


identificar o início destas stanzas nas linhas 1, 5 e 10.

Somente   os   usuários   “fulano1”   e   “fulano2”   terão   acesso   ao   compartilhamento 


“compartilhamento” devido à diretiva “valid users” presente na linha 7. Eles também poderão 
gravar arquivos desde que as permissões do sistema de arquivo não restrinjam a operação, 
devido a diretiva “writeable” na linha 8.

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

 1)  Quanto   utilizamos   um   compartilhamento   em   "security   =   share"   e   desejamos 


autenticar o acesso a ele, qual diretiva devemos colocar na stanza?

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

 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?

__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

 4)  Com   que   privilégios   são   acessados   compartilhamentos   públicos?


__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

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.

As   grandes   vantagens   na   utilização   de   um   domínio   Windows   são   o   gerenciamento 


centralizado de usuários, a unificação da autenticação de diversos serviços (Single Sign On, 
ou SSO) e a possibilidade de utilizar políticas, definindo direitos de usuários e configurando as 
estações Windows a partir de um único ponto da rede.

O   SSO,   quando   corretamente   configurado,   permite   que   usuários   utilizem   estações 


diferentes da rede com suas mesmas credenciais e ter acesso aos mesmos recursos que teria  
em sua própria estação. Isso é possível graças aos protocolos de segurança utilizados pelo 
domínio.

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.

Já   em   um   domínio   estilo   Active   Directory   um   controlador   de   domínio   cria   uma 


hierarquia de controladores, e delega o controle de  áreas do domínio a cada um deles. O 
servidor   master   pode   impor   diretivas   a   qualquer   outro   servidor   do   domínio,   porém   outros 
servidores possuem apenas controle em servidores abaixo de sua própria hierarquia.

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.

Os   BDC's   possuem   cópias   do   SAM   e   são   os   principais   responsáveis   por   atender 


solicitações  de   logon   e  autenticação.   Em uma   rede   em  que   um  PDC  e   um  BDC   estejam 
presentes, o BDC provavelmente irá responder as solicitações e o PDC o fará caso os BDC's 
estejam sobrecarregados (respondendo lentamente). 

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.

O Samba também só é capaz de  agir  como BDC caso o PDC do domínio também 


seja um servidor Samba.

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. Pode­se 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

7 domain master = yes


8 domain logons = yes
9 os level = 65
10

11 add machine script = /usr/sbin/useradd -g nogroup -c "Estacao \


%u" -d /dev/null -s /bin/false "%u"
12

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”. 

Outro  ponto importante  são  as diretivas “domain  master” e “domain logons”. Estas 


duas diretivas ativas definem que o servidor irá agir como master browser da rede e também 
aceitar solicitações netlogon, efetivamente se tornando um controlador de domínio. Quando 
temos essa configuração o Samba irá gerar o SAM quando for iniciado.

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.

Se testarmos nossa configuração com o comando testparm, veremos que o  role  do 


servidor é de PDC:

# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[netlogon]"
Processing section "[profiles]"
Loaded services file OK.

Server role: ROLE_DOMAIN_PDC

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

Nesse   momento   já   devemos   conseguir   ingressar   no   domínio   com   uma   estação 


Windows. Para fazer isso clique, no Windows, com o botão direito em “Meu Computador” e 
então   clique   com   o   botão   esquerdo   em   “Propriedades”.   Selecione   a   aba   “Nome   do 
Computador” e clique em “Alterar”.   Coloque o nome do seu domínio, definido pela diretiva 
“workgroup” do Samba. Quando solicitado, coloque o usuário “root” e a senha “123456”.

Uma mensagem de boas­vindas 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.

Após   a   configuração   de   um  PDC  é   útil   armazenar   o   SID   do   domínio   para   caso 


ocorram problemas no futuro, como a corrupção da base do domínio. Isso é feito através do 
seguinte comando:

# net getlocalsid

7.4. Script de Logon

Com   o   controlador   de   domínio  em  funcionamento   temos   a   opção   de   utilização  do 


“logon   script”  no   domínio,   que   consiste   em  executar   um  script   na   estação   de   trabalho   no 
momento de logon do usuário. Com a utilização das macros do Samba ainda podemos criar 
scripts por usuários, grupos, etc. A criação deste script está limitada a utilização de comandos 
válidos no Windows, pois o script será executado na estação.

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:

• Local:   consiste   em   manter   os   arquivos   necessários   para   o   perfil   do   usuário 


localmente na própria estação, limitando assim o usuário a utilizar sempre a mesma 
estação de trabalho, visto que seus arquivos pessoais, como documentos e e­mails 
estarão disponíveis apenas nesta estação.

• 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

add machine script = /usr/sbin/useradd -g nogroup -c "Estacao \


%u" -d /dev/null -s /bin/false "%u"

logon path = \\%N\profiles\%U

[netlogon]
path = /samba/netlogon
guest ok = yes
browseable = no

[profiles]
path = /samba/profiles
read only = no
create mask = 0600
directory mask = 0700

Após   configurar   o   Samba   devemos   criar   os   diretórios   relacionados   e   ajustar   suas 


permissões de acordo:

# 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

Caso   se   deseje   desabilitar   o   uso   de   perfis   remotos,   deve­se   declarar   as   diretivas 


“logon path” e “logon home” sem nenhum valor:

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. 

Outra   possibilidade   é   utilizar   o   backend   tdbsam   e   replicar   a   partição   onde   os 


arquivos .tdb são armazenados utilizando­se o DRBD. Assim alterações seriam replicadas em 
tempo real entre os servidores.

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

add machine script = /usr/sbin/useradd -g nogroup -c "Estacao %u"


-d /dev/null -s /bin/false "%u"

logon path = \\%N\profiles\%U

[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

Após   configurar   nosso   /etc/samba/smb.conf   dessa   maneira,   podemos   rodar   o 


comando   testparm   para   verificar   nossa   configuração.   O  role  do   servidor   deverá   ser   de 
membro de domínio:

# 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:

# net rpc join -U root%123456

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

Agora   poderemos   usar   usuários   do   domínio   para   autenticar   acesso   a 


compartilhamentos. É importante notar que ainda teremos que criar os usuários localmente no 
sistema devido a permissões de disco. Isso pode ser evitado usando­se o LDAP ou o Winbind, 
conforme veremos adiante.

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.

Em   adição   ao   controle   a   nível   de   usuários   é   possível   também   controlar   o   acesso 


utilizando os grupos de sistema, e é possível tornar esses grupos visíveis para as estações do 
domínio fazendo um mapeamento que irá atribuir um SID a um grupo Unix do servidor Samba.

8.2. Permissionamento em Definições de Compartilhamentos

A   maneira   mais   simples   de   se   trabalhar   com   controle   de   acesso   é   utilizando   os 


recursos fornecidos exclusivamente pelo próprio Samba e não permissões de disco. 

Para   fazer   isso   definimos   os   privilégios   diretamente   no   arquivo   de   configuração 


smb.conf,   em   cada   stanza   compartilhada.   Assim   podemos   restringir   que   usuários   podem 
acessar os compartilhamentos, que usuários podem gravar no compartilhamento e até mesmo 
quais hosts podem se conectar a eles.

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 prefixando­os 
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

• write   list:  lista   de   usuários   que   podem   gravar   arquivos   no   compartilhamento. 


Qualquer usuário que possua acesso e não esteja na “write list” somente conseguirá 
ler os arquivos.

Exemplo:

[compartilhamento]
write list = ciclano, @fulanos

• read list: lista de usuários que possuem acesso somente­leitura 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 allow = 127.0.0.1, 192.168.0.0/24

• 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:

hosts allow = 127.0.0.1, 192.168.0.0/24


hosts deny = 192.168.0.10

• 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 pode­se 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

Configurar   permissões   através   do   arquivo   smb.conf   é   muitas   vezes   a   forma   mais 


simples porém raramente é a melhor maneira de se obter o resultado esperado. Há, também, 
a grande desvantagem de fazer com que o administrador do sistema assuma completamente 
a responsabilidade por manter essas permissões atualizadas.

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

Quando   estamos   em   um   domínio   também   podemos   usar   os   grupos   locais   como 


grupos nativos do Windows se mapearmos eles. Assim as ACLs poderão ser feitas inclusive 
permitindo acesso a grupos do domínio e não somente a usuários. Estes mapeamentos são 
feitos utilizando­se o comando “net”, da seguinte maneira:

• Adicionando mapeamentos

# net groupmap add ntgroup="GrupoWindows" unixgroup=grupolinux

• Listando mapeamentos existentes:

# net groupmap list

• Removendo mapeamentos existentes:

# net groupmap delete ntgroup=”GrupoWindows”

É   necessário,   no   Debian,   instalar   o   pacote   “acl”   e   habilitar   o   suporte   a   ACLs   na 


partição que usamos. Portanto devemos fazer o seguinte:

# aptitude install acl


# mount -o remount,acl /

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:

/dev/sda1 / ext3 acl,errors=remount-ro 0 0

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.

O   gerenciamento   de   ACLs   no   Gnu/Linux   é   feito   através   do   comandos   “setfacl”   e 


“getfacl”.

103 / 7
Capítulo 8 Controle de Acesso a Compartilhamentos

Para adicionar ou editar uma ACL usamos o seguinte comando:

# setfacl -m [user|group]:nome:perms alvo

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:

# setfacl -m user:diego:rwx /home/diego

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:

# setfacl -m user:fulano1:rwx /home/diego

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:

# setfacl -x user:fulano1 /home/diego

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:

# chmod 777 /samba/shares/cap8/*

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

Após   fazer   isso   edite   o   arquivo   /etc/group   e   adicione   os   usuários   “cap8user1” e


“cap8user2”  no grupo. A linha deve ficar da seguinte maneira (o GID do grupo poderá ser 
diferente):

cap8:x:1010:cap8user1,cap8user2

Tente   acessar   seu   servidor   a   partir   da   máquina   Windows.   Os   compartilhamentos 


devem   aparecer.   A   partir   do   servidor   você   também   deverá   conseguir   listar   os 
compartilhamentos usando o smbclient:

# smbclient -L localhost -U cap8user1


Enter cap8user1's password:
Domain=[4LINUX] OS=[Unix] Server=[Samba 3.5.4]

Sharename Type Comment


--------- ---- -------
usuarios Disk
hosts Disk

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.

  Para   isso,   vamos   editar   o   arquivo   “/etc/samba/smb.conf”   novamente   e   incluir   as 


diretivas relevantes:

[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:

# net use * /delete

Agora   tente   acessar   o   compartilhamento   novamente,   utilizando   o   usuário 


“cap8user1”.   Você   deverá   conseguir   abrir   o   compartilhamento   e   o   arquivo,   porém   não   irá 
conseguir modificá­lo nem removê­lo.

Repita o passo acima, utilizando o usuário  “cap8user2” para conectar­se. Você deverá 
conseguir editar o arquivo de texto.

Agora   vamos   restringir   o   acesso   ao   compartilhamento   “hosts”   a   somente   alguns 


endereços. Para isso, edite sua stanza, deixando­a da seguinte forma:

[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:

# smbclient -U cap8user1 '//127.0.0.1/hosts/'


Enter cap8user1's password:
Domain=[4LINUX] OS=[Unix] Server=[Samba 3.5.4]
smb: \> ls
. D 0 Fri Dec 17 10:36:19 2010
.. D 0 Fri Dec 17 10:36:19 2010

46103 blocks of size 262144. 22028 blocks available

Você   acabou   de   acessar   o   compartilhamento   hosts.   Agora   tente   abrir   este 


compartilhamento a partir da estação Windows. O Samba não irá permitir o acesso devido a 
não estar na lista de hosts autorizados para se conectar nesse compartilhamento.

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 =

add machine script = /usr/sbin/useradd -g nogroup -c "Estacao %u"


-d /dev/null -s /bin/false "%u"

passdb backend = tdbsam

[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

Vamos   adicionar   o   administrador   no   domínio   e   criar   os   usuários   “cap8user1”, 


“cap8user2” e “cap8user3”:

# 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 somente­leitura a ele:

# chown cap8user1:cap8 /samba/shares/cap8/acl/usuarios


# chmod 750 /samba/shares/cap8/acl/usuarios

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:

# setfacl -m user:cap8user3:rwx /samba/shares/cap8/acl/usuarios

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 clicando­se 
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  gerenciamento   é   feito  utilizando­se   a   ferramenta  pdbedit,   e   a   sintaxe  assume   a 


seguinte forma:

pdbedit -P [política] -C [valor]

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.

• password   history:   histórico   de   senhas   que   será   armazenado.   O   Samba   não 


permitirá   a   utilização   de   senhas   iguais   as   últimas   N   senhas,   definidas   por   este 
parâmetro.

• reset   count   minutes:   período   de   tempo   que   o   contador   de   tentativas   de   logon 


incorreto   levará   para   ser   zerado.  Após   esse   tempo   (em  segundos)  o   número   de 
tentativas incorreta voltará a ser considerado 0.

• bad lockout attempt: número  de  tentativas  de  logon  com senha  errada que  um 


usuário poderá fazer até que a conta seja automaticamente bloqueada.

• 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

# pdbedit -r --fullname="Luke Skywalker” luke

• Forçar troca de senha

# pdbedit --pwd-must-change-time=0 luke

ou

# net sam set pwmustchangenow chapman yes

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

# pdbedit -r -c “[D]” luke

• Resetar flags da conta para os valores padrão

# pdbedit -r -c “[]” luke

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”:

# pdbedit -P “min password length” -C 6


# pdbedit -P “bad lockout attempt” -C 5

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á bem­sucedida.

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:

# pdbedit -Lv cap9user1

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:

# aptitude install slapd ldap-utils smbldap-tools

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 
deixando­o 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 dn.base="" by * read

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/*

Precisamos adicionar o  “schema” do  Samba ao  LDAP. Schemas são  conjuntos de 


regras que dizem especificam que valores objetos no LDAP podem armazenar, e como fazê­
lo. Para isso, vamos instalar o pacote samba­doc, que contém o schema fornecido pela equipe 
do Samba, e copiá­lo para o diretório do OpenLDAP:

# aptitude install samba-doc


# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz >
/etc/ldap/schema/samba.schema

124 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários

Uma   vez  copiado  o   arquivo,   vamos   editar   nosso   arquivo   de   configuração 


“/etc/ldap/slapd.conf” e, abaixo da última linha iniciada com “include”, adicionar a seguinte:

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:

# chown openldap: /var/lib/ldap/*


# /etc/init.d/slapd start

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 
“smbldap­tools”.

Devemos então Deixar nosso arquivo /etc/samba/smb.conf semelhante a este:

[global]
workgroup = 4LINUX
netbios name = DEBIANXX

domain master = yes


domain logons = yes

logon path =
logon home =

passdb backend = ldapsam:ldap://localhost


ldap suffix = dc=4linux,dc=com,dc=br
ldap machine suffix = ou=Usuarios
ldap user suffix = ou=Usuarios
ldap group suffix = ou=Grupos
ldap admin dn = cn=admin,dc=4linux,dc=com,dc=br

add user script = /usr/sbin/smbldap-useradd -m “%u”


delete user script = /usr/sbin/smbldap-userdel “%u”
add group script = /usr/sbin/smbldap-groupadd -p “%g”
delete group script = /usr/sbin/smbldap-groupdel “%g”
add user to group script = /usr/sbin/smbldap-groupmod -m “%u” “%g”
delete user from group script = /usr/sbin/smbldap-groupmod -x “%u”
“%g”
set primary group script = /usr/sbin/smbldap-usermod -g “%g” “%u”
add machine script = /usr/sbin/smbldap-useradd -w “%u”

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 smbldap­tools
Para   que   as   ferramentas   do   “smbldap­tools”   funcionem   como   esperado,   se   faz 
necessário configurá­las. Veja a seguir:

 1)  Copie os arquivos  smbldap_bind.conf e  smbldap.conf:

# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz >


/etc/smbldap-tools/smbldap.conf

# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf>
/etc/smbldap-tools/smbldap_bind.conf

 2)  Edite o arquivo “/etc/smbldap­tools/smbldap_bind.conf” e altere­o 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/smbldap­tools/smbldap.conf, modificando apenas as linhas 
citadas abaixo:

# SID do domínio coletado no tópico acima


SID=”coloque aqui o número do SID”

# Nome do domínio do SAMBA


sambaDomain=”4LINUX”

#A raiz do servdor OpenLDAP


suffix="dc=4linux,dc=com,dc=br"

#Onde armazenar
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Usuarios,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"

#Configuração padrão para pastas, mapeamento e script de logon


userSmbHome="\\%L\homes\%U"
userProfile="\\%L\profiles\%U"
userHomeDrive="P:"
userScript="%U.bat"
mailDomain="4linux.com.br"

 5)  O smbldap­tools se encarrega de criar a base LDAP necessária para execução da 
solução. Para tanto, execute o comando:

# smbldap-populate -u 3000 -g 3000

Nota:  Os parâmetros ­u e ­g servem para indicar o uid e gid mínimos usados pelas 
ferramentas smbldap­tools.

 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:

# aptitude install libnss-ldap libpam-ldap


# aptitude purge nscd

129 / 7
Capítulo 10 Utilizando o LDAP como Backend de Usuários

 7)  Devemos   configurar   o   arquivo   “/etc/nsswitch.conf”   e   modificar   as   configurações 


mencionadas, como segue:

passwd: compat ldap


group: compat ldap
shadow: compat ldap

 8)  Agora   devemos   configurar   o   PAM   para   trabalhar   com   o   LDAP   editando   o 
“/etc/pam.d/common­account” e deixando somente com as linhas abaixo:

account sufficient pam_ldap.so


account required pam_unix.so

 9)  Edite o arquivo “/etc/pam.d/common­auth” para que seja suficiente a autenticação 
via base OpenLDAP. Deixe­o assim:

auth sufficient pam_ldap.so


auth required pam_unix.so nullok_secure try_first_pass

 10)  Edite o arquivo “/etc/pam.d/common-password” e adicione o suporte ao


OpenLDAP. Deixe ele assim:

password required pam_unix.so nullok obscure min=4 max=8 md5


password required pam_ldap.so try_first_pass

 11)  Edite   o   arquivo   “/etc/pam.d/common­session”   e   adicione   o   suporte   ao 


OpenLDAP. Deixe ele assim:

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022


session sufficient pam_ldap.so
session required pam_unix.so

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 smbldap­tools 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:

• smbldap­useradd:  adiciona novos usuários 

• smbldap­usermod:  modifica usuários existentes

• smbldap­userlist:  lista os usuários existentes

• smbldap­userdel:  exclui usuários

• smbldap­groupadd:  adiciona novos grupos

• smbldap­groupmod:  modifica grupos existentes

• smbldap­groupdel:  remove grupos existentes

Os   usuários   vão   existir   como   contas   da   classe   “sambaSamAccount”   no   LDAP,   e 


podem possuir os seguintes atributos:

• SambaLMPassword:  LanMan password (16­byte hash)

• SambaNTPassword:  The NT password (16­byte 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

Além   das   ferramentas   do   smbldap­tools   é   possível   usar   qualquer   ferramenta   de 


gerenciamento do LDAP para editar os atributos diretamente. Algumas dessas ferramentas 
são o “phpldapadmin”, “GOsa” e o “jxplorer”.

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 “libnss­ldap”: 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:

# apttitude install 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:

passwd: compat winbind


group: compat winbind
shadow: compat winbind

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/common­account

account sufficient pam_winbind.so


account required pam_unix.so

• /etc/pam.d/common­auth

auth sufficient pam_winbind.so


auth required pam_unix.so use_first_pass

• /etc/pam.d/common­password

password sufficient pam_winbind.so


password required pam_unix.so nullok obscure min=4 max=8 md5

• /etc/pam.d/common­session

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022


session sufficient pam_winbind.so
session requiredpam_unix.so

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:

# aptitude install krb5-config krb5-user

Em  seguida   devemos  editar  o  arquivo   de  configuração   do   Samba,   adicionando   as 


diretivas necessárias:

[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:

# net ads join -U administrator

Para testar se tudo está funcionando, deve­se 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.

Os comandos  “wbinfo  ­u”  e “wbinfo  ­g”  irão, respectivamente,  trazer os  usuários e 


grupos do Windows e o comando “getent” deverá mostrá­los, confirmando que o sistema pode 
utilizá­los.

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

Gruenbacher, Andreas. setfacl (1) man page. 05/2000.

Carter, Gerald. ADMIN$ share? What's this. 08/12/2010.


<http://lists.samba.org/archive/samba/2002-February/038053.html>

Eckstein, Robert et al.. Using Samba. 1a Edição. Estados Unidos: O'Reilly, 1999.

Hewlett-Packard Company. Advanced Server for UNIX. 08/12/2010.


<http://h30097.www3.hp.com/products/adv_server>

Lechnyr, David. The Unofficial Samba HOWTO. 08/12/2010.


<http://oregontechsupport.com/samba>

Microsoft Corporation. NetBIOS Suffixes. 07/12/2010. 
<http://support.microsoft.com/kb/163409>

Samba Team. smb.conf (5) man page. Versão 3.5. 18/06/2010.

Samba Team. The Official Samba 3.5.x HOWTO and Reference Guide. 08/12/2010.
<http://samba.org/samba/docs/man/Samba-HOWTO-Collection>

Samba Team. Trivial Database. 08/12/2010. <http://tdb.samba.org/>

Sharpe,   Richard.  Browsing   Elections   and   the   'os   level'   parameter.   09/12/2010.
<http://lists.samba.org/archive/samba­technical/2002­February/019556.html>

WIKIMEDIA FOUNDATION, INC. WIKIPEDIA. 07/12/2010.


<HTTP://EN.WIKIPEDIA.ORG/WIKI/SAMBA_(SOFTWARE)>

142 / 7
ANEXOS
Tabela de OS Levels 

Tabela de OS Levels

Windows for Workgroups 1


Windows 95 1
Windows 98 1
Windows ME 1
Windows NT 3.x Workstation 16
Windows NT 3.x Server (como DMS) 16
Windows NT 3.x Server (como PDC) 32
Windows NT 4 Workstation 16
Windows NT 4 Server (como DMS) 16
Windows NT 4 Server (como PDC) 32
Windows 2000 Professional 16
Windows 2000 Advanced Server (como DMS) 16
Windows 2000 Advanced Server (como controlador) 32
Windows XP Home 16
Windows XP Professional 16
Windows 2003 (como DMS) 16
Windows 2003 (como controlador) 32
Windows Vista Professional 16
Windows 7 Ultimate 16
Samba 32

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 ponto­a­ponto

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)  Utiliza­se 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 meta­serviç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 

 8)  A   "security   =   share"   espera   receber   uma   senha   por   compartilhamento,   e   a 


"security = user" espera receber um par de usuário e senha para se autenticar a 
todos os compartilhamentos
 9)  A   "security   =   domain"   utiliza   uma   base   central   para   autenticação   de   usuários, 
enquanto a "security = user" utiliza uma base do próprio servidor
 10)  Como controlador primário (PDC), como controlador backup (BDC) ou como 
servidor membro (DMS)
 11) São strings utilizadas na configuração que serão substituídas por outros valores 
em tempo de execução

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   somente­leitura   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

 2)  O OpenLDAP  é  um  servidor  que  permite  armazenar informações, e  é utilizado 


para armazenar informações de contas de usuários do Samba
 3)  É   possível   utilizar   um   mesmo   objeto   como   usuário   de   sistema   e   usuário   do 
Samba, além de ser possível replicar a base para ser acessada pelos BDCs.
 4)  Utilizando as ferramentas smbldap­tools

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"

# Verificar a existencia do diretorio de Backup


# e cria-lo caso nao exista
if [ ! -d ${BACKUP_DIR} ]; then
mkdir ${BACKUP_DIR}
fi

# Copiar arquivos do samba e smppasswd se existir


cp /etc/samba/smb.conf ${BACKUP_DIR} || \
( echo "Erro ao fazer backup do smb.conf" && exit 1 )

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

# Fazer backup das bases .tdb

152 / 155
Repostas dos Laboratórios 

for i in `find /var/lib/samba -type f -iname *.tdb`; do


tdbbackup $i || \
( tdbbackup -v $i || ( echo "Impossivel restaurar
backup de $i" && exit 1 ) )
cp $i.bak ${BACKUP_DIR} && \
echo "Fazendo backup de $i" || \
( echo "Erro ao fazer backup de $i" && exit 1 )
done

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

# net groupmap add ntgroup="Hobbits" unixgroup=hobbits


# net groupmap add ntgroup="Elves" unixgroup=elves
# net groupmap add ntgroup="Orcs" unixgroup=orcs

# mkdir /tmp/lotr
# mkdir /tmp/lotr/shire
# mkdir /tmp/lotr/rivendell
# mkdir /tmp/lotr/mordor

# chgrp hobbits /tmp/lotr/shire


# chgrp elves /tmp/lotr/rivendell
# chgrp orcs /tmp/lotr/mordor

# setfacl -m group:hobbits:rwx -m group:elves:rx /tmp/lotr/shire


# setfacl -m group:hobbits:rwx -m group:elves:rwx
/tmp/lotr/rivendell
# chmod 770 /tmp/lotr/mordor
# chmod o-rwx /tmp/lotr/shire /tmp/lotr/rivendell

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

( efetuar logon como chapman no Windows e alterar a senha. Em


seguida, efetuar o logoff e tentar com uma senha errada até a conta
ser bloqueada)

# pdbedit -r -c “[]” chapman

155 / 155

Você também pode gostar