Neste artigo, saiba mais sobre estes conceitos:
- Modos de segurança do Samba
- Funções dos principais daemons do Samba
- Gerenciamento de daemons do Samba
Este artigo ajuda você a se preparar para o Objetivo 310.2 no Tópico 310 do exame de especialidade de Ambiente Misto da LPI (302). O objetivo tem peso 1.
Para aproveitar ao máximo os artigos desta série, é necessário ter um conhecimento avançado de Linux e um sistema Linux funcional, no qual seja possível praticar os comandos mencionados neste artigo. Especificamente, este artigo pressupõe que você tenha um conhecimento de trabalho das funções de linha de comando do Linux e, pelo menos, um entendimento geral do propósito do Samba, conforme o explicado em "Learn Linux, 302 (Mixed environments): Concepts". Para executar as ações descritas neste artigo, é necessário ter o software Samba instalado. Algumas ações requerem uma rede Server Message Block (SMB)/Common Internet File System (CIFS) funcional à disposição.
Identificando daemons do Samba
Os servidores Linux são frequentemente implementados como daemons, uma palavra derivada da mitologia grega, na qual os daemons eram seres sobrenaturais prestativos. Um daemon do Linux é executado em segundo plano para realizar alguma tarefa útil. O conjunto de servidor Samba consiste de vários daemons, incluindo smbd, nmbdewinbindd. O programa swat
é outro servidor Samba, mas ele é tipicamente executado em um super servidor e, portanto, não é tecnicamente um daemon.
O programa smbd fornece a maior parte das principais funcionalidades do Samba. Suas funções incluem:
- Fornecer compartilhamento de arquivo e impressora. Este recurso é possivelmente a mais importante função do Samba, e o
smbdo realiza. - Autenticar usuários.
O smbdautentica usuários com base em um banco de dados local ou passa as solicitações de autenticação para outro computador. Se seu servidor Samba estiver configurado como controlador de domínio, osmbdtambém responde a solicitações de autenticação de outros computadores. (Configurações de grupo de trabalho e domínio serão descritas em breve, em Configurando seu modo de segurança). - Fornecer serviços de horário. O Samba pode informar a outros computadores qual é a hora atual; o
smbdé responsável por esse detalhe.
Por padrão, o daemon smbd vincula-se às portas TCP 139 e 445. O protocolo SMB usa a porta 139 através de NetBIOS sobre TCP, que é a maneira como muitos clientes mais antigos usam SMB/CIFS. A porta 445 oferece serviços de SMB sobre TCP simples, que é a maneira como muitos novos clientes acessam o servidor Samba.
Devido à natureza crítica dessas funções (especificamente, fornecer compartilhamento e autenticação de arquivo e impressora), o smbd pode ser considerado o núcleo do Samba. Na verdade, é possível fazer a conexão com um computador que executa apenas o smbd usando um programa como o smbclient do próprio Samba para realizar transferências de arquivos. Porém, alguns clientes dependem de serviços fornecidos por outros daemons do Samba.
O segundo entre os principais daemons do Samba é o nmbd. A principal função deste servidor é manipular tarefas relacionadas a nomes. Podemos concebê-lo como uma versão do Samba para o Domain Name System (DNS), apesar de ser mais simples de configurar e menos sofisticado que o DNS. Entre as tarefas específicas que o nmbd executa estão:
- Responder a transmissões de nomes. Em um modo comum de operação, os clientes transmitem consultas de nome para um segmento de rede inteiro. O servidor
nmbdouve essas transmissões e, quando o Samba está configurado para usar o nome consultado, responde. Também responde quando está configurado para funcionar como um proxy para outro computador ou rede. - Registrar um nome de NetBIOS. Para que a resolução de nome de NetBIOS funcione, os computadores devem registrar seus nomes, ou com um servidor de nome NetBIOS centralizado (NBNS; ou servidor Windows Internet Name Service [WINS]) ou através da transmissão do nome e da negociação dos direitos do nome com a rede como um todo.
nmbdé responsável por fazer isso e também pela negociação com outros computadores que registram seus nomes. - Funcionar como um servidor NBNS. O Samba pode ser configurado como um sistema NBNS; em tal caso, o
nmbdlida com essas funções. - Funcionar como navegador mestre. Parte da experiência do usuário de uma rede SMB/CIFS é a navegação—a capacidade de navegar pelos servidores em uma rede da mesma maneira que buscaria os diretórios em seu disco rígido. Esse recurso depende da presença de um navegador mestre, que coleta e dissemina listas de navegação. Quando o Samba age como navegador mestre, é o
nmbdque realiza todo o trabalho.
Como esta lista demonstra, o nmbd trabalha muito. Apesar de não estarem relacionadas com a entrega de arquivos ou impressoras, muitas dessas tarefas são partes essenciais de qualquer servidor SMB/CIFS; portanto, o nmbd deve ser considerado uma parte crítica do Samba. Tipicamente, ele é executado junto com o smbd pelos scripts de inicialização de uma distribuição.
A maior parte das funções do nmbd exige que ele se vincule à porta TCP 137, mas as funções de navegador mestre envolvem a porta 138 de User Datagram Protocol.
Um terceiro daemon do Samba é o daemon Winbind, winbindd. Ao contrário do smbd e do nmbd,
winbindd não fornece serviços a computadores remotos; ao invés disso, ele serve de interface entre um controlador de domínio do Windows ® (ou do Samba) e as ferramentas de Pluggable Authentication Modules do próprio computador local, permitindo que um controlador de domínio hospede informações de contas Linux.
Em muitas distribuições, o winbindd é instalado em um pacote separado do resto do Samba—tipicamente em um pacote chamado winbind ou winbindd. Também é geralmente iniciado separadamente. Em princípio, é possível executar owinbindd
em um computador que não é executado em um servidor Samba, ou que nem mesmo funciona como cliente SMB/CIFS, exceto na medida em que o winbindd é um cliente SMB/CIFS. Na prática, porém, é provável que você execute um servidor Samba ou use um computador Linux como cliente SMB/CIFS se estiver executando o winbindd.
Controlar o Samba envolve pelo menos duas tarefas: ajustar suas opções de configurações usando seu arquivo de configuração e mudando suas opções temporariamente, conforme necessário. A primeira tarefa é realizada através do arquivo de configuração do Samba, ao passo que a segunda pode ser feita através da ferramenta de configuração smbcontrol .
Ajustando as opções do arquivo de configuração
O principal arquivo de configuração do Samba é chamado de smb.conf e reside tipicamente em /etc/samba, apesar de poder ser encontrado em outros locais. (Se o Samba for desenvolvido a partir da origem, /usr/local/samba/lib é um local comum).
O arquivo smb.conf é composto de seções, cada uma das quais começa com um nome entre colchetes ([]), como [global] ou [documents]. A maioria das seções definem compartilhamentos de arquivo ou impressora; porém, a seção [global] é especial: ela guarda opções que afetam o servidor como um todo ou que definem valores padrão usados em definições de compartilhamento subsequentes. (A seção[global] tipicamente aparece primeiro no arquivo).
As linhas em smb.conf podem ser linhas de comentário que começam com um sinal numérico (#) ou um ponto e vírgula (;); elas podem ser nomes de seção; ou podem ser linhas que definem parâmetros do Samba. Esse último tipo de linha toma a seguinte forma:
parâmetro = Valor |
O parâmetro é uma palavra-chave, como
security ou create mask. Nomes de parâmetros não fazem distinção de maiúsculas e minúsculas. Alguns parâmetros comuns têm sinônimos, e outros poucos possuem antônimos. Por exemplo, writable e writeable são sinônimos, e read only é antônimo dos dois— ou seja, read only = Yes é equivalente a writable = No.
O Valor que você especifica com um parâmetro pode ser uma cadeia de caractere livre, um número (incluindo valores numéricos especializados, como endereços IP), um valor booleano, uma variável ou uma lista. Valores booleanos podem receber um dos dois valores de verdade: Sim, Verdadeiroe1 são sinônimos, assim como Não, Falsoe0.
As variáveis começam com um símbolo de porcentagem %) e aparecem no lugar de informações que não podem ser conhecidas quando o arquivo de configuração foi escrito. Por exemplo, %D se refere ao grupo de trabalho ou nome de domínio do servidor; %h se refere ao nome DNS do servidor; %H se refere ao diretório inicial do usuário; %L se refere ao nome de NetBIOS do servidor; e %u se refere ao nome do usuário.
Alguns parâmetros recebem listas de vários valores, como listas de nomes do usuário. Em tais casos, os elementos da lista são separados por vírgulas, como em george, mary para se referir tanto a george quanto a mary. De maneira geral, o arquivo smb.conf é cego a espaços em branco. Se for necessário incluir espaços em branco em um valor, coloque-os entre aspas.
O arquivo smb.conf contém opções para smbd,
nmbd, winbindd e outros servidores e programas do Samba. As opções para os diferentes programas não são separadas ou claramente diferenciadas, apesar de às vezes o nome tornar óbvio a qual daemon o parâmetro se aplica.
Controlando o Samba com smbcontrol
É possível usar o programa smbcontrol para controlar o Samba enquanto ele é executado. Por exemplo, é possível pedir ao Samba que feche um compartilhamento específico, force uma eleição de navegador mestre, recarregue um arquivo de configuração e assim por diante. A sintaxe básica para esse comando é:
smbcontrol [-i] [-s configfile] smbcontrol [destino] [tipo-de-mensagem] [parâmetro] |
Quando usado com a opção -i , o smbcontrol entra em modo interativo, no qual é possível passar uma série de comandos em sequência, fazendo com que se evite digitar smbcontrol na frente de cada comando. O destino é o nome do servidor (smbd, nmbdouwinbindd), all para enviar a mensagem a todos os daemons ou um número de ID de processo. O tipo-de-mensagem é um comando, como resumido na Tabela 1. O parâmetro
é um parâmetro opcional que alguns comandos podem exigir.
Tabela 1. Limites de tamanho e volume do sistema de arquivos
| Comando (tipo-de-mensagem) | Significado |
|---|---|
close-share | Fecha o compartilhamento que o parâmetro especifica. |
depure | Define o nível de depuração para o valor especificado pelo parâmetro. |
force-election | Força uma nova eleição de navegador mestre. |
debuglevel | Exibe o nível de depuração atual de um daemon. |
printnotify | Envia uma mensagem aos clientes conectados ao compartilhamento de impressora, forçando uma mudança no status de fila dos clientes. |
samsync | Sincroniza o bando de dados do usuário com um controlador de domínio.(A documentação oficial indica que esta função não está funcionando atualmente; teste-a antes de confiar nela). |
shutdown | Fecha um daemon especificado. |
pool-usage | Exibe informações de uso de memória para o daemon especificado. |
drvupgrade | Notifica clientes de que um novo driver de impressora está disponível. O comando recebe um nome de compartilhamento de impressora como parâmetro. |
reload-config | Força o servidor a carregar o arquivo smb.conf novamente. |
Configurando seu modo de segurança
O Samba oferece diversas opções relacionadas à maneira como os usuários são autenticados.
A mais importante delas é a opção security
, que recebe cinco valores possíveis:
Share. Este modo de segurança tenta emular o método de autenticação que os sistemas operacionais Microsoft® Windows 9x/Windows Me usam, no qual os nomes dos usuários eram ignorados e as senhas eram associadas aos compartilhamentos. Para fazer isso, o Samba tenta a senha fornecida pelo cliente com vários nomes do usuário.User. Este modo de segurança, que é o padrão, usa um nome do usuário e senha para autenticações, parecido com a maneira que o Linux normalmente funciona. Porém, na maior parte dos sistemas modernos, a senha é armazenada em um banco de dados de senhas criptografadas apenas do Samba.Server. Se desejar que o Samba se submeta a outro servidor para autenticação, use este método de autenticação. Para um cliente, este método é igual à autenticação no nível do usuário, mas o Samba entre em contato com o servidor especificado com o parâmetropassword serverpara fazer a autenticação real.Domain. É possível se juntar totalmente a um domínio do Windows usando este método, que para o cliente é igual à autenticação no nível do usuário. Ao contrário da autenticação no nível do servidor, a autenticação de domínio envolve uma troca de senhas mais segura no nível do domínio. Juntar-se totalmente ao domínio requer a execução de comandos adicionais no sistema Samba e possivelmente também no controlador de domínio.ADS. Este método de autenticação funciona de forma muito parecida com a autenticação de domínio; porém, ele requer um controlador de domínio Active Directory® Domain Services.
Como regra geral, a autenticação no nível do usuário é a melhor escolha se o seu servidor Samba for membro de um grupo de trabalho do Windows, que é a forma básica de uma rede SMB/CIFS. Um grupo de trabalho difere de um domínio principalmente no sentido de que um domínio fornece um controlador de domínio, que é um servidor que fornece serviços de autenticação ao domínio. Para usar um controlador de domínio, é necessário usar segurança no nível do servidor, domínio ou ADS. security. A segurança no nível do servidor é a mais fácil de configurar, mas é a menos segura, ao passo que a segurança no nível ADS é a mais difícil de configurar, mas é a mais segura.
Para se juntar totalmente a um domínio para obter segurança no nível do domínio ou no nível ADS, é necessário configurar diversas opções na seção [global] do arquivo smb.conf:
password server = DOMCONT domain logons = No encrypt passwords = Yes |
O sistema DOMCONT é um controlador de domínio. Também é necessário digitar o seguinte comando no servidor Samba que deve se juntar ao domínio:
# net join member -U adminuser |
Também pode ser necessário configurar o controlador do domínio para aceitar o servidor Samba no domínio. (O Objetivo 312.4 aborda este tópico para servidores Samba).
A segurança no nível do compartilhamento está predominantemente ultrapassada; ela existe principalmente para oferecer compatibilidade com clientes muito antigos que não entendam nomes do usuário. Também pode ser útil para alguns tipos de compartilhamento que você possa desejar tornar disponíveis com segurança mínima, como compartilhamentos de impressora. Como o Linux requer que uma conta seja usada para todos os acessos, o Samba tenta a senha fornecida com uma série de contas até que uma funcione ou que nenhuma delas funcione. Essas contas incluem:
- A conta de convidado (definida através do parâmetro
guest account) seguest only = Yes - O nome do usuário fornecido pelo cliente (nem todos os clientes fornecem um, mas alguns fornecem)
- O nome do usuário usado no último acesso a partir do computador cliente
- O nome do compartilhamento sendo acessado
- O nome de NetBIOS do cliente
- Quaisquer nomes do usuário especificados através do parâmetro
username.
Como a maioria dos clientes em uso hoje entendem nomes do usuário, é raro haver necessidade de oferecer suporte à segurança no nível do compartilhamento. Usá-la apenas cria confusão e aumenta o risco de segurança—com as senhas sendo verificadas em tantas contas, uma única senha que caia nas mãos erradas pode se tornar um risco significativo para seu servidor.
O objetivo LPIC-3 310.3—e o próximo artigo nesta série—descreve o formato de arquivo do Samba Trivial Database (TDB), que o Samba usa para armazenar informações de conta.
Aprender
- No site do programa LPIC você encontra objetivos detalhados, listas de tarefas e amostras de perguntas referentes aos três níveis da certificação em administração de sistemas Linux do LPI. Especificamente, veja os objetivos detalhados do LPI-302 e as tarefas e amostras de perguntas.
- Use o roteiro do developerWorks para LPIC-302
para encontrar mais artigos do developerWorks para ajudar você a estudar para o exame de especialidade eletivo LPI-302 da Linux Professional Institute Certification.
- Revise toda a série de preparação para os exames LPI no developerWorks para aprender os fundamentos do Linux e se preparar para a certificação de administrador de sistemas.
-
Exam Preparation Resources for Revised LPIC Exams fornece uma lista de outros recursos de treinamento para certificação mantidos pelo LPI.
-
Na zona Linux do developerWorks,
você encontrará muitos artigos de instruções e tutoriais, bem como downloads, fóruns de discussão e muitos outros recursos para desenvolvedores e administradores Linux.
-
Fique por dentro dos eventos técnicos e webcasts do developerWorks com foco em uma variedade de produtos da IBM e tópicos do segmento de mercado de TI.
-
Participe de um briefing ao vivo e gratuito do developerWorks para se atualizar rapidamente sobre produtos e ferramentas IBM, bem como tendências do segmento de mercado de TI.
-
Assista Demos On Demand do developerWorks
, que abrangem desde demos de instalação e configuração de produtos para iniciantes até funcionalidades avançadas para desenvolvedores experientes.
-
Siga o developerWorks no
Twitter ou inscreva-se para receber Linux tweets no developerWorks.
Obter produtos e tecnologias
- O Samba Web site possui downloads e informações do Samba.
-
Avalie os produtos IBM
da maneira que for melhor para você: faça download da versão de testes de um produto, avalie um produto on-line, use-o em um ambiente de nuvem ou passe algumas horas na SOA Sandbox
aprendendo a implementar Arquitetura Orientada a Serviços de modo eficiente.
Discutir
-
Participe da comunidade do My developerWorks
. Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.

Roderick W. Smith é consultor e autor de dezenas de livros sobre UNIX e Linux, incluindo The Definitive Guide to Samba 3, Linux in a Windows World e Linux Professional Institute Certification Study Guide. Ele é autor do software de particionamento GPT fdisk. Atualmente, Roderick reside em Woonsocket, Rhode Island.