Aprenda Linux, 302 (Ambientes Mistos): Configure o Samba

Configure o Samba para diversos propósitos

O Samba usa um arquivo legível para gerenciar e armazenar parâmetros de configuração, então a ferramenta mais sofisticada necessária para configurar o Samba é um editor de texto. Aprenda como o arquivo de configuração é estruturado, como o Samba interage com a rede, como configurar a criação de logs e como depurar problemas com o Samba.

Sean A. Walberg, Senior Network Engineer

Author photoSean Walberg trabalha com Linux e UNIX desde 1994 em ambientes acadêmicos, corporativos e de provedores de serviço de Internet. Escreveu muito sobre administração de sistemas nos últimos anos. É possível entrar em contato com ele pelo e-mail sean@ertw.com.



26/Mai/2011

Sobre esta série

Esta série de artigos ajuda você a aprender as tarefas de administração de sistema Linux. Também é possível usar o material desses artigos para se preparar para os exames de certificação do Linux Professional Institute nível 3 (LPIC-3).

Consulte o developerWorks roadmap for LPIC-3 para ver uma descrição de cada artigo da série e um link para cada um desses artigos. O roteiro está em andamento e reflete os objetivos atuais (novembro de 2010) em relação aos exames LPIC-3. À medida que cada artigo é concluído, eles são adicionados ao roteiro.

Neste artigo, aprenda a:

  • Navegar na estrutura de arquivos de configuração do servidor do Samba
  • Usar as variáveis e parâmetros de configuração do Samba
  • Identificar portas importantes de TCP/User Datagram Protocol (UDP) usadas com o Server Message Block (SMB)/Common Internet File System (CIFS)
  • Configurar a criação de logs no Samba
  • Resolver e depurar problemas com o Samba

Este artigo ajuda você a se preparar para o Objetivo 312.1 no Tópico 312 do exame Mixed Environment Specialty do Linux Professional Institute (302). Esse objetivo tem peso 6.

Pré-requisitos

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. Além disso, é preciso ter acesso a um ambiente Windows que será usado para testar o acesso a arquivos e impressão.


O arquivo de configuração do Samba

Sobre o exame elegível LPI-302

O Linux Professional Institute Certification (LPIC) é como muitas outras certificações, pois também oferece certificações em níveis diferentes, e cada nível requer mais conhecimento e experiência que o anterior. O exame LPI-302 é um exame elegível especial no terceiro nível da hierarquia do LPIC, e requer um nível avançado de conhecimento de administração de sistema Linux.

Para obter a certificação LPIC nível 3 (LPIC-3), é necessário passar nos dois primeiros exames do primeiro nível (101 e 102), nos dois exames do segundo nível (201 e 202) e no exame principal do LPIC-3 (301). Depois de alcançar esse nível, é possível fazer os exames elegíveis especializados, como o LPI-302.

O Samba, como a maioria dos daemons de UNIX, é configurado por meio de arquivos de texto que são legíveis para pessoas, e não por meio de uma ferramenta gráfica para edição de arquivos binários. O arquivo de configuração mais importante é o smb.conf, que contém todos os parâmetros de que o Samba precisa para executar no seu ambiente.

Observação: embora o smb.conf tenha sido projetado para ser editado com um editor de texto, a equipe do Samba criou uma ferramenta baseada na Web chamada Samba Web Administration Tool. Também existem alternativas, como o webmin. É importante lembrar que, mesmo assim, é possível editar o smb.conf antes ou depois da execução dessas ferramentas, porque você está trabalhando em um arquivo de texto.

O arquivo de configuração do Samba tem um formato razoavelmente simples que usa três construções diferentes:

  • Seções. As seções agrupam a configuração em áreas independentes. Por exemplo, um compartilhamento de arquivo tem a sua própria seção.
  • Parâmetros. Os parâmetros são pares de chave/valor. As chaves são atributos bem conhecidos, como "somente leitura".
  • Comentários. Os comentários permitem fazer anotações no arquivo de configuração que não afetam a configuração — por exemplo, para indicar o ticket de help desk que os documentos compartilham.

Seções

Desenvolva sua própria alimentação

É possível desenvolver uma alimentação RSS, Atom ou HTML customizado para receber uma notificação sobre a inclusão de novos artigos ou a atualização do conteúdo. Acesse as Alimentações RSS do developerWorks. Selecione Linux como zona e Articles como tipo, e digite Linux Professional Institute como palavra-chave. Em seguida, escolha o tipo preferencial de alimentação.

As seções agrupam o arquivo de configuração em áreas diferentes. Você começa a seção colocando o nome da mesma entre colchetes ([]). A seção continua até que a próxima seção seja definida ou que se chegue ao final do arquivo.

Três nomes de seção têm significado especial:

  • global. Qualquer coisa que esteja nessa seção se aplica a todo o servidor. Os itens de configuração na seção global podem ser cancelados no nível de compartilhamento, se necessário.
  • homes. A seção homes atua como um modelo para todos os compartilhamentos do usuário, e o Samba se encarrega de correlacionar um nome de usuário à configuração nessa seção, praticamente eliminando a necessidade de configurar um compartilhamento separado sempre que você quer permitir a entrada de um usuário no seu diretório ou no diretório inicial.
  • printers. Essa seção é semelhante a homes, mas é usada para impressoras.

Se o nome de seção que é usado não é um dos nomes acima, é considerado um compartilhamento de arquivo ou impressora.

Quando uma solicitação de conexão referente a um nome de compartilhamento específico entra no Samba, o daemon procura uma seção com esse nome que defina as propriedades desse compartilhamento. Se a seção não é encontrada, o Samba faz uma busca na lista de usuários no sistema para ver se a conexão se refere a um usuário. Do contrário, o Samba consulta a lista de impressoras do sistema para ver se existe uma impressora com esse nome. Se a conexão corresponde a um usuário, a configuração das seções homes é usada. Se houve uma correspondência de impressora, a seção printers é usada. Em todos os casos, a configuração de nível de seção cancela a seção de configuração global .

Se não há correspondência em nenhum dos casos acima, ocorre uma verificação final. Se um serviço padrão é configurado, esse serviço é usado. Do contrário, é passado um erro ao cliente. Por padrão, o serviço padrão não é configurado, portanto, os nomes de compartilhamento incorretos causarão um erro.

Parâmetros

Os parâmetros tomam a forma chave = valor , que designa o valor para a chave. Todas as chaves são documentadas na man page smb.conf. A configuração do Samba é, em grande medida, um exercício de entender quais chaves são necessárias para obter o comportamento que você quer e determinar o valor adequado a ser usado.

Os parâmetros geralmente tomam cadeias de caracteres como valores. O Samba não suporta macros, o que permite que você varie o valor do parâmetro de acordo com itens como o nome de compartilhamento ou a entrada do usuário. Por exemplo, a seção homes adota como padrão o diretório inicial do UNIX do usuário, mas é possível usar macros para fazer esse parâmetro usar qualquer local e substituir o nome do usuário no caminho do arquivo no momento da conexão. As macros começam com o caractere % e serão explicadas conforme a necessidade.

Se o valor de um parâmetro precisa ocupar duas linhas ou mais, todas as linhas (com exceção da última) devem terminar com uma barra invertida (\), como acontece em um shell do UNIX.

Comentários

Os comentários começam com um ponto e vírgula ;) ou sustenido ("jogo da velha" ou #). Os comentários podem ser usados para explicar o motivo dos itens, acompanhar alterações ou indicar limites de seção.

Um exemplo de configuração

A Listagem 1 mostra um exemplo de arquivo smb.conf, mostrando as diversas partes do mesmo.

Listagem 1. Um exemplo de arquivo de configuração
# This is a comment
; So is this
# Remember that all shares need to be entered in the Wiki! -Opsteam
[global]
  workgroup = BIGCO
  # %v gets expanded to the version of Samba
  server string = Samba Server Version %v
  # By default any file starting with . will have the hidden attribute set
  hide dot files = yes

# Home directories come from the UNIX password file
# anyone matching a user will use this section
[homes]
  comment = Home directories
  # dot files will be hidden because it's a global

[printers]
  comment = System printers
  printable = yes

# A share that everyone can see
[projecta]
  path = /var/spool/projects/projecta
  # Override the global version of hiding dot files
  hide dot files = no

Estas são algumas coisas especiais a serem ressaltadas nesse exemplo de configuração:

  • São usados dois estilos de comentários diferentes. Um começa com sustenido, o outro começa com ponto e vírgula.
  • Esse arquivo define um compartilhamento chamado projecta. Todos os outros compartilhamentos serão criados automaticamente a partir dos usuários e das impressoras que foram definidos no sistema.
  • O parâmetro server string usa a macro %v para parte desse valor. No tempo de execução, %v será substituído pela versão do Samba.
  • hide dot files é configurado como "yes" no nível global, mas é definido como "no" dentro do compartilhamento projecta. Os diretórios iniciais usam a configuração da seção homes , sendo assim, os arquivos DOT (como .profile) serão ocultados. Os arquivos em projecta terão os arquivos DOT visíveis.

Interação com a rede no Samba

O Samba é um serviço de rede que executa em IP, permitindo que ele se comunique com outros hosts da rede que também estão usando IP. Como administrador do Samba, você precisa entender como os serviços do Samba se comportam na rede para resolver problemas de conectividade.

De modo geral, pode-se considerar que o Samba oferece três tipos diferentes de serviços de rede:

  • Compartilhamento de arquivos e impressão. Oferecer arquivos e impressoras a outros dispositivos de rede e usar esses serviços em outras máquinas
  • Serviços de nome. Serviços de resolução de nomes necessários para participar de uma rede Microsoft
  • Serviços de domínio. O Samba pode substituir várias funções de servidor da Microsoft, como controlador de domínio legado, e se integra a servidores de Active Directory Domain Services (AD DS) mais novos

Compartilhamento de arquivos e de impressão

O compartilhamento de arquivos e impressão é implementado dentro do smbd, um dos daemons do Samba. O compartilhamento de arquivos da Microsoft usava o network basic input/output system (NetBIOS) em TCP quando passou ao mundo do IP. Esse método encapsulava o conteúdo do NetBIOS em uma sessão de TCP usando a porta de TCP 139.

O protocolo NetBIOS engloba vários recursos. A porta de 139 é usada somente para os serviços de sessão, ou seja, transferência de arquivos e passagem de mensagens. Os serviços de procura de nomes não são tratados nessa porta.

O NetBIOS em TCP funciona, mas há uma sobreposição entre os recursos de sessão e confiabilidade fornecidos pelo NetBIOS e os fornecidos pelo TCP. Com algumas alterações sutis, tornou-se possível executar o SMB/CIFS com base no TCP. Esse método é conhecido como hosting direto e é usado para simplificar o protocolo. O hosting direto ocorre na porta TCP 445.

Quando o NetBIOS foi eliminado do conjunto do protocolo, a Microsoft precisou de outra forma de tratar as buscas de nome. O Domain Name System (DNS) foi uma opção natural — por isso o DNS forma a base do AD DS.

Por padrão, o Samba escuta as portas 139 e 445. É possível alterar esse comportamento com o parâmetro global smb ports . Por exemplo, smb ports = 445 instrui o Samba a escutar somente a porta 445. Você pode fazer o Samba escutar qualquer porta, mas todos os clientes que quisessem se conectar teriam que ser instruídos a usar a porta não padrão.

Se você não sabe qual porta o Samba está escutando, pode usar o comando netstat para descobrir. A Listagem 2 mostra esse comando em ação.

Listagem 2. Usando netstat para ver quais portas o SMB está escutando
# netstat -antp | grep smbd
# netstat -antp | grep smb
tcp   0  0 :::445                    :::*                       LISTEN      2830/smbd
tcp   0  0 ::ffff:192.168.1.143:445  ::ffff:192.168.1.147:4724  ESTABLISHED 2877/smbd

A Listagem 2 mostra o comando netstat sendo executado e a saída sendo filtrada por meio de grep em relação à cadeia de caracteres smb. As opções de netstat foram usadas para mostrar todas (-a) as conexões de TCP (-t) em um formato numérico (-n) juntamente com o nome do processo (-p) responsável. Essa saída mostra duas linhas: a primeira contém a cadeia de caracteres LISTEN, que significa que o daemon está escutando para detectar conexões recebidas. Aqui, o daemon está escutando a porta 445. A segunda linha mostra uma conexão ESTABLISHED , na qual 192.168.1.147 é conectado à porta 445 no host local (192.168.1.143). Assim sendo, pela saída da Listagem 2, é possível concluir que smbd só está escutando a porta 445 e que um cliente está conectado.

Serviços de nome

O NetBIOS fornece uma camada de serviços de nome responsável pela navegação na rede e por buscas de nomes. Por exemplo, o host SERVER1 é resolvido para um endereço IP usando as solicitações de serviço de nome do NetBIOS na porta de UDP 137. O suporte para a navegação e escolha de funções de suporte, como o navegador mestre, ocorre na porta UDP 138, também conhecida como a porta de serviços de datagrama. Os serviços de nome são implementados dentro do daemon nmbd .

É importante ressaltar que os serviços de nome usam UDP em vez de TCP. Os pacotes de UDP não têm conexão e podem ser transmitidos para todos os hosts, em vez de um único stream de unicast. Com a funcionalidade de transmissão do UDP, o processamento dos serviços de nome do NetBIOS na rede pode ser facilitado.

A versão 3 do Samba não tem nenhum parâmetro para controlar quais portas o nmbd escuta, mas a versão 4 do Samba implementa os parâmetros globais nbt port e dgram port , que controlam as portas de serviço de nomes e de serviço de datagrama, respectivamente.

É possível usar algo semelhante ao que você viu na Listagem 2 para mostrar quais portas nmbd abre. A Listagem 3 mostra isso.

Listagem 3. Mostrando as portas que nmbd está escutando
# netstat -anup | grep nmbd
udp        0      0 192.168.1.255:137       0.0.0.0:*        2975/nmbd
udp        0      0 192.168.1.143:137       0.0.0.0:*        2975/nmbd
udp        0      0 0.0.0.0:137             0.0.0.0:*        2975/nmbd
udp        0      0 192.168.1.255:138       0.0.0.0:*        2975/nmbd
udp        0      0 192.168.1.143:138       0.0.0.0:*        2975/nmbd
udp        0      0 0.0.0.0:138             0.0.0.0:*        2975/nmbd

Além de procurar nmbd em vez de smbd, o comando da Listagem 3 procura portas UDP em vez de portas TCP com a opção denetstat-u . Os resultados são uma série de linhas mostrando que nmbd está escutando as portas 137 e 138 em várias interfaces e está escutando o endereço de transmissão 192.168.1.255. As duas portas de serviço de nome se baseiam na comunicação de host a host e na comunicação de transmissão.

Serviços de domínio

A equipe do Samba atualiza o software constantemente para que ele se integre melhor às redes Microsoft e para substituir a infraestrutura da Microsoft. Para fazer isso, o Samba deve emular esses serviços de infraestrutura na rede.

A maioria desses serviços envolve o Kerberos e o Lightweight Directory Access Protocol (LDAP) de alguma forma. Estes tópicos são avançados e serão abordados com mais profundidade em artigos posteriores. Por enquanto, basta saber que o Samba pode fazer mais coisas além do compartilhamento de arquivos.

Resumo das portas que o Samba usa

A Tabela 1 fornece um resumo das portas relacionadas ao compartilhamento de arquivos que os daemons do Samba escutam.

Tabela 1. Resumo das portas usadas no Samba
PortaProtocoloServiçoDaemonDescrição
137UDPnetbios-nsnmbdServiços de nome do NetBIOS
138UDPnetbios-dgmnmbdServiços de datagrama do NetBIOS
139TCPnetbios-ssnsmbdNetBIOS em TCP (serviços de sessão)
445TCPmicrosoft-dssmbdSMB de host direto

A tag na coluna Serviço é o conhecido nome de serviço, que vem de um arquivo chamado /etc/services. O arquivo de serviço ajuda os aplicativos a resolver nomes de serviço em relação aos números de porta. O arquivo também ajuda as pessoas a relacionar números de porta a nomes de serviço. Embora a maioria dos serviços reserve as portas TCP e UDP, os aplicativos não têm que usar UDP e TCP. A reserva de ambas elimina a possível confusão quando dois serviços diferentes tentam usar o mesmo número de porta em protocolos diferentes.

Também é importante ressaltar que os números e nomes em /etc/services não são cumpridos. É possível executar daemons em portas que não são as esperadas, desde que você possa comunicar essa alteração aos clientes. Por exemplo, é possível executar o Samba nas portas de 5137 a 5139 e 5445, desde que os clientes não estejam esperando conversar nas portas padrão.


Resolvendo problemas no Samba

O Samba não é imune a problemas. Às vezes, esses problemas são causados pelo administrador do sistema; às vezes, são causados pelo usuário. O trabalho de vocês como administradores de sistemas é descobrir onde está o problema e como resolvê-lo.

Testando o arquivo de configuração

Se o Samba não inicia ou se você quer verificar se o arquivo de configuração está correto, o utilitário testparm ajuda. Esse utilitário verifica se smb.conf está correto. A Listagem 4 mostra o resultado de testparm em caso de erro.

Listagem 4. Usando o testparm em um arquivo smb.conf incorreto
# testparm
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: "hide dto files"
Ignoring unknown parameter "hide dto files"
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        passdb backend = tdbsam
        log file = /var/log/samba/log.%m
        max log size = 50
        cups options = raw

<< rest of the output omitted >>

A saída de testparm começa com o local dos arquivos. Se você quer especificar outro arquivo, passe o nome do arquivo na linha de comando, como neste exemplo:

testparm /home/me/smb.conf

Em seguida, testparm está indicando um parâmetro inválido chamado hide dto files. Esse parâmetro deveria, na verdade, ser hide dot files.

Depois de processar o arquivo de configuração, você recebe algumas informações sobre a função do servidor e uma versão condensada do arquivo de configuração. Essa versão teve os comentários removidos e está formatada de forma consistente — portanto, às vezes você detecta erros aqui que você não viu ao navegar no smb.conf em um editor de texto.

Você deve executar o testparm no arquivo de configuração depois de fazer as alterações. O Samba ignora a maioria dos erros de digitação nos arquivos de configuração e nem sempre grava mensagens no console ao iniciar. É provável que você não detecte esses tipos de erros até que algo não esteja funcionando bem. O Testparm avisa quando há erros de digitação no smb.conf.

Por padrão, testparm só mostra a configuração da forma que ela é inserida no smb.conf. Se você desconfia de que está usando um valor padrão em algum lugar, pode usar a opção -v para forçar o testparm a mostrar também os valores padrão.

Também se usa o testparm para limitar a saída a uma única seção ou parâmetro. A Listagem 5 mostra como usar testparm para ver o valor da opção security mask .

Listagem 5. Limitando o testparm a um único parâmetro
# testparm -s --parameter-name "security mask"
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
0777

Na Listagem 5, o parâmetro -s impede que testparm aguarde a entrada do usuário entre a análise de smb.conf e a sua exibição na tela. O uso de --parameter name "security mask" pede o valor de security mask. O resultado é 0777, que é o valor padrão. Nesse modo, não é necessário especificar -v para mostrar os valores padrão.

Conectando-se como um cliente

Em vez de ir ao desktop de um usuário e tentar fazer as coisas, é possível fazer vários testes a partir da linha de comando na sua própria mesa. O primeiro teste, que é o mais fácil, é se certificar de que você pode se conectar à porta do Samba. A forma mais fácil de fazer isso é usar o comando telnet , mostrado na Listagem 6.

Listagem 6. Testando a conectividade com telnet
# telnet bob 139
Trying 192.168.1.134...
telnet: connect to address 192.168.1.134: Connection refused

Na Listagem 6, o usuário raiz está se conectando ao servidor bob na porta 139. Também seria possível usar a porta 445 para testar a porta SMB de hosting direto. O resultado é Connection refused, que indica que o daemon não está escutando esse endereço ou que um firewall está bloqueando a conexão. Outros resultados, como No route to host ou Connection timed out, podem ter o mesmo significado.

Os clientes geralmente se conectam a um servidor com um nome, não com um endereço IP. Se você usar telnet para se conectar ao servidor pelo nome e não pelo endereço IP, preste muita atenção no endereço IP retornado. No exemplo acima, o servidor (bob) foi resolvido para 192.168.1.134. Às vezes, pode haver erros no registro de DNS que fazem os clientes se conectarem ao endereço errado.

Se você não está usando o DNS para a resolução de nomes do Windows, é possível usar o comando nmblookup para fazer a busca. A Listagem 7 mostra uma consulta relacionada ao servidor bob.

Listagem 7. Realizando uma consulta de nome do NetBIOS em relação a bob
# nmblookup bob
querying bob on 192.168.1.255
192.168.1.138 bob<00>

De acordo com a Listagem 7, o servidor bob está em 192.168.1.138, não em 192.168.1.134, como você viu na Listagem 6. Esse resultado indica um problema com o DNS, principalmente se as portas 139 e 445 estão respondendo em 192.168.1.138.

Outro teste se destina a ver se o arquivo de configuração nega acesso a um host específico. Testparm é usado novamente na Listagem 8.

Listagem 8. Verificando o acesso com testparm
# testparm /etc/samba/smb.conf  seanspc 192.168.1.147
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Deny connection from seanspc (192.168.1.147) to homes
Deny connection from seanspc (192.168.1.147) to printers
Deny connection from seanspc (192.168.1.147) to public

Firewalls ou aplicativo?

Há várias formas de bloquear a conexão a um host, mas todas as opções podem ser agrupadas em duas categorias: rede e aplicativo. Ao bloquear na camada de rede, em um firewall ou usando um firewall baseado em host como o iptables, você verá que a conexão telnet mostrada na Listagem 6 é recusada ou o seu tempo se esgota. Isso acontece porque o pacote não chega nunca ao aplicativo Samba.

Se o Samba for configurado para não permitir conexões a partir de um host específico, você verá que a conexão telnet será bem-sucedida, mas todos os acessos de clientes dão erro. Isso acontece porque o pacote é lido pelo aplicativo, mas não satisfaz o endereço IP ou do nome do host e envia um erro no nível do aplicativo. Sem aceitar o pacote na camada do aplicativo, o Samba não tem como saber se o endereço IP é aceitável.

Na Listagem 8, três itens são passados para testparm:

  • O caminho do arquivo de configuração do Samba
  • O nome de NetBIOS da máquina a ser testada
  • O endereço IP da máquina a ser testada

A saída da Listagem 8 mostra que o acesso da máquina em questão a todos os compartilhamentos é negado. Ao usar testparm nesse modo, o utilitário não se conecta realmente como a máquina. Em vez disso, testparm processa o arquivo de configuração para ver se o acesso seria permitido.

Se todos os testes até agora foram bem-sucedidos, é possível tentar estabelecer uma conexão de cliente usando o utilitário smbclient . O primeiro teste é tentar navegar na lista de compartilhamento, mostrada na Listagem 9.

Listagem 9. Mostrando os compartilhamentos de uma máquina
[sean@bob source3]$ smbclient -L '\\bob'
Enter sean's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.6-69.fc13]

        Sharename       Type      Comment
        ---------       ----      -------
        extdrive        Disk
        Sean Walberg's iMac Disk
        timemachine     Disk
        IPC$            IPC       IPC Service (Samba Server Version 3.5.6-69.fc13)
        test            Printer   test
        Downstairs_Laser Printer   HP 6L
        Cups-PDF        Printer   Cups-PDF
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.6-69.fc13]

        Server               Comment
        ---------            -------
        BOB                  Samba Server Version 3.5.6-69.fc13

        Workgroup            Master
        ---------            -------
        MYGROUP              BOB
        WORK                 SWALBERG-XPLT
        WORKGROUP            IMAC-1FC525

Na Listagem 9, o usuário está solicitando uma lista de compartilhamentos com o parâmetro -L no servidor chamado bob. O nome do servidor é prefixado com duas barras invertidas (\\) porque é um caminho de Universal Naming Convention (UNC). Também tome cuidado ao optar entre aspas simples e aspas duplas. As aspas simples interpolam e consideram as barras invertidas como caracteres de escape.

Se o seu servidor tem mais segurança configurada, talvez seja necessário passar o nome de usuário ou o domínio com os parâmetros -W e -U , respectivamente.

Finalmente, é possível tentar se conectar a um compartilhamento omitindo o parâmetro -L e especificando um caminho de UNC completo para o compartilhamento. A Listagem 10 mostra o cliente se conectando a um servidor usando um grupo de trabalho e nome de usuário diferentes.

Listagem 10. Conectando-se a um compartilhamento com nome de usuário e domínio diferentes
[sean@bob source3]$ smbclient '\\swalberg-xplt\photos' -U swalberg -W WORK
Enter swalberg's password:
Domain=[WORK] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> dir
  .                                   D        0  Thu Jan  6 11:39:50 2011
  ..                                  D        0  Thu Jan  6 11:39:50 2011
<< files omitted >>
                38156 blocks of size 4194304. 2938 blocks available
smb: \>>

Se houver aprovação nesses testes, você pode ter uma convicção razoável de que o problema não está na configuração do Samba, mas em algum ponto entre o cliente e o servidor ou no cliente propriamente dito. Você olha os logs da seção a seguir, que dão algumas pistas sobre onde o problema está.


Criação de logs e depuração

A criação de logs e a resolução de problemas andam juntas. Os logs permitem ver o que aconteceu no passado, para ver se houve erros e obter mais detalhes sobre os problemas à medida que ocorrem. Se você está tentando entender por que algo não está funcionando, pode aumentar a quantidade da criação de logs até obter o nível necessário de detalhes. O Samba oferece vários parâmetros em smb.conf para tratar a criação de logs, é possível usar esses parâmetros juntos para ajustar os tipos de log gerados.

O Samba atua como um daemon tradicional do UNIX porque pode registrar no recurso syslog e também gerar os seus próprios arquivos de log. Além disso, a ferramenta Microsoft Event Viewer pode se conectar a um servidor do Samba para obter logs. O problema desse recurso é que o Samba não consegue criar o log diretamente no formato de log de eventos — é necessário pós-processar os seus arquivos de log usando ferramentas do Samba.

Níveis de log

Cada mensagem de log que o Samba gera tem um nível, que é um número inteiro de 0 a 10. As mensagens de alto nível, como novas conexões e eventos importantes, têm níveis mais baixos. As mensagens de depuração têm números mais altos. Você controla a quantidade de criação de logs especificando o nível máximo que você quer que seja registrado no log. O nível 1 de log somente registra mensagens com prioridade 0 ou 1. Se você quer uma criação extensa de logs, use um número mais alto.

Qualquer coisa que tenha um nível de log acima de 3 se destina a desenvolvedores e não é muito útil para você como administrador de sistema. O uso de um nível de log 0 desativa todas as mensagens, com exceção de algumas mensagens de inicializar e erros críticos.

Para configurar o nível de log, use o parâmetro log level da seção global , por exemplo, use log level = 2 para definir o nível de log como 2. Essa configuração registra todas as mensagens com prioridade igual ou inferior a dois.

Nota sobre o exame

A estrutura do exame LPIC menciona especificamente o parâmetro debuglevel como algo importante de saber. debuglevel é sinônimo de nível de log e os dois podem ser usados indistintamente.

É possível alterar o nível de log no tempo de execução enviando um sinal de SIGUSR1 ao processo do Samba para aumentar o nível de log ou SIGUSR2 para diminuí-lo.

Também é possível ser mais granular em relação aos níveis de log, aumentando o detalhamento somente em certos recursos ao especificar qual classe você quer registrar. Essas classes são:

  • all . Esse parâmetro é opcional: se você não especifica outras palavras-chave, pressupõe-se all .
  • tdb. Mensagens de log relacionadas a bancos de dados triviais, que são armazenamentos de valores de chave que o Samba usa.
  • printdrivers. Rotinas de gerenciamento de driver de impressora.
  • lanman. Depuração do NT LAN Manager.
  • smb. Depuração do protocolo SMB.
  • rpc_parse. Análise de remote procedure calls (RPCs).
  • rpc_srv. Os RPCs do lado do servidor.
  • rpc_cli. Os RPCs do lado do cliente.
  • passdb. A forma antiga armazenar senhas em um host do Samba.
  • sam. O banco de dados de conta local do Samba.
  • auth. Vários módulos dentro do Samba relacionados à autenticação de usuários.
  • winbind. O componente usado para permitir que os usuários da Microsoft registrem de forma transparente em sistemas UNIX.
  • vfs. Mensagens de depuração referentes aos módulos do Virtual File System, que permitem incluir funcionalidade do Samba por meio de módulos que podem ser plugados.
  • idmap. Mapeamento das identidades entre os IDs de usuário de UNIX e os identificadores de segurança da Microsoft.
  • quota. Mensagens relacionadas ao processamento de cota, tanto pela política do Microsoft Windows NT quanto pelo sistema de arquivos do UNIX.
  • acls. Processamento da lista de controle de acesso.
  • locking. Status e erros do bloqueio de arquivos.
  • msdfs. Mensagens de log relacionadas ao suporte para o sistema de arquivos distribuído do Samba.
  • dmapi. Funcionalidade da application programming interface (API) de gerenciamento de dados. O Samba deve ser compilado com uma implementação de DMAPI de terceiros para usar esse recurso.
  • registry. Emulação do registro do Windows.

Para usar essa criação de logs adicional, acrescente a palavra-chave e o valor ao parâmetro de nível de log, separado por dois pontos (:). Por exemplo, log level = 1 winbind:3 configura o nível de log padrão do sistema como 1 e aumenta a criação de logs winbind para 3. Essa alteração ajuda a depurar problemas com o login único sem se "afogar" em arquivos de log que não estão relacionados.

Local do arquivo de log

Para alterar o nome do arquivo de log, use o parâmetro log file . Também é possível usar macros no valor. Uma configuração frequentemente usada é ter um arquivo de log por cliente. Para fazer isso, especifique:

log file = /var/log/samba/log.%m

Esse comando separa os arquivos de log individuais em um por cliente, sendo que o restante das mensagens continua indo para log.smbd.

Se você quer registrar em syslog, pode especificar syslog = 1 para enviar todos os logs no nível 1 ou 0 para o servidor local de syslog. O Samba usa o recurso LOG_DAEMON e estabelece a correspondência entre os níveis de log do Samba e as prioridades de syslog da seguinte forma:

  • LOG_ERR. Nível de log 0
  • LOG_WARNING. Nível de log 1
  • LOG_NOTICE. Nível de log 2
  • LOG_INFO. Nível de log 3
  • LOG_DEBUG. Nível de log 4 ou mais

Se você está registrando no syslog em um daemon de syslog mais avançado que consegue filtrar as mensagens recebidas e avisar o administrador do sistema, essa é uma forma excelente de ficar de olho no servidor do Samba.

Metadados de log

É possível incluir ou remover algumas informações que aparecem em todas as entradas de log com parâmetros mais globais:

  • debug timestamp. Inclui uma indicação de data e hora na mensagem de log e é habilitado por padrão
  • debug uid. Registra os IDs de usuário e grupo do processo do Samba que gera os logs
  • debug prefix timestamp. Mantém as indicações de data e hora, mas remove as informações sobre o local do código de origem do Samba que gerou o log
  • debug pid. Registra o identificador do processo do Samba que gerou o log
  • debug hires timestamp. Altera a resolução da indicação de data e hora para microssegundos em vez de segundos
  • debug class. Registra a classe da mensagem de log, o que é útil se você quer alterar o detalhamento de uma determinada classe (Essa opção ajuda a determinar qual classe você quer.)

A criação de logs pode ajudar a localizar os problemas ou fazer você se afogar em ruídos. O Samba oferece diversas opções de criação de log, use-as com moderação.


Rastreamento de chamadas do sistema

Se todas as outras opções falharem, é possível usar as ferramentas do sistema UNIX para ver o que está acontecendo dentro do processo. O programa strace do Linux permite rastrear todas as chamadas de sistema que um aplicativo faz. Um aplicativo usa chamadas de sistema para abrir e ler arquivos, criar e destruir processos e interagir com o restante do sistema operacional.

A Listagem 11 mostra o usuário raiz rastreando um processo do Samba que está lançando um erro para o cliente.

Listagem 11. Usando Strace em um processo
# ps -ef | grep smb
sean     13375 28812  0 21:54 ?        00:00:00 smbd -D
root     14294 13593  0 21:55 pts/2    00:00:00 grep smb
root     16132 28812  0 Feb27 ?        00:00:36 smbd -D
root     28812     1  0 Feb14 ?        00:00:28 smbd -D
root     28814 28812  0 Feb14 ?        00:00:00 smbd -D
[root@bob /]# strace -e trace=file -p 13375
Process 13375 attached - interrupt to quit
<< Output omitted >>
chdir("/home/sean")                     = 0
stat64("somedir", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat64("somedir/*", 0xbfcb5f60)         = -1 EACCES (Permission denied)
getcwd("/home/sean", 4096)              = 11
lstat64("/home/sean/somedir", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat64("/home/sean/somedir/*", 0xbfcb5ffc) = -1 EACCES (Permission denied)

O primeiro comando procura uma lista de processos do Samba. Como o Samba assume a identidade do usuário conectado, é possível identificar facilmente que o processo 13375 pertence ao usuário. Em seguida, o comando strace é executado com dois parâmetros: -e trace=file limita a saída às chamadas de sistema relacionadas a arquivos. Para os tipos de problemas que você encontrará no Samba, essa é uma boa suposição inicial. O segundo parâmetro, -p 13375, instrui o strace a se conectar ao processo em execução com esse ID de processo.

Ao observar a saída desse comando, você verá que smb está varrendo o diretório constantemente, procurando alterações. Quando o usuário tenta a ação que tem o problema, é possível que você veja uma saída parecida com a Listagem 11. Os comandos finais tentam obter informações sobre arquivos dentro do diretório com a chamada stat64 . O resultado é permission denied, que significa que o usuário está sendo rejeitado no nível do sistema de arquivos, e não pelo Samba. Esse comando pode fornecer mais informações para resolver o problema — como alterar os atributos do diretório ou dizer ao usuário que ele não tem permissão para acessar o diretório.


Progredindo

Este é o final do tópico de configuração do Samba. O próximo objetivo de exame, 312.2, é a criação e configuração dos compartilhamentos de arquivo e a aprendizagem de como acessar esses compartilhamentos a partir de outros sistemas.

Recursos

Aprender

Obter produtos e tecnologias

  • No repositório Samba Git você acompanha os acontecimentos relacionados ao Samba.
  • Obtenha a versão mais recente do Samba para ter os recursos mais recentes.
  • Avalie produtos IBM da maneira que for melhor para você: faça download da versão de teste 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.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=661046
ArticleTitle=Aprenda Linux, 302 (Ambientes Mistos): Configure o Samba
publish-date=05262011