Guia do Linux/Avançado/SAMBA/Conceitos gerais para a configuração do SAMBA

Origem: Wikilivros, livros abertos por um mundo aberto.

Conceitos gerais para a configuração do SAMBA[editar | editar código-fonte]

Este capítulo documenta como configurar o seu servidor SAMBA permitindo o acesso a compartilhamento de arquivos e impressão no sistema.


Nome de máquina (nome NetBios)[editar | editar código-fonte]

Toda a máquina em uma rede NetBEUI é identificada por um nome, este nome deve ser único na rede e permite que outras máquinas acessem os recursos disponibilizados ou que sejam enviadas mensagens para a máquina. Este nome é composto de 16 caracteres, sendo 15 que identificam a máquina e o último o tipo de serviço que ela disponibiliza. O tipo de serviço é associado com o nome da máquina e registrado em servidores de nomes conforme a configuração da máquina (você verá isto mais adiante). O nome de máquina é especificado nas diretivas netbios name e netbios aliases (veja [#s-s-samba-s-global-nome Nomes e grupos de trabalho, Seção 18.2.8.1]) para detalhes.


Grupo de trabalho[editar | editar código-fonte]

O grupo de trabalho organiza a estrutura de máquinas da rede em forma de árvore, facilitando sua pesquisa e localização. Tomemos como exemplo uma empresa grande com os departamentos comunicação, redes, web, rh, as máquinas que pertencem ao grupo de redes serão agrupadas no programa de navegação:

     redes
       gleydson
       tecnico
       marcelo
       henrique
       michelle

     rh
       mrpaoduro

     web
       web1
       web2
       web3

     comunicacao
       comunic1
       comunic2
       comunic3

A segurança no acesso a arquivos e diretórios na configuração de grupo de trabalho é controlada pela própria máquina, normalmente usando segurança a nível de compartilhamento. Esta segurança funciona definindo um usuário/senha para acessar cada compartilhamento que a máquina possui. O Lan Manager, Windows for Workgroups, Windows 95, Windows 98, XP Home Edition usam este nível de acesso por padrão. Se deseja configurar uma rede usando o nível de grupo de trabalho, veja [#s-s-samba-wrkgrp Configuração em Grupo de Trabalho, Seção 18.4] para detalhes passo a passo e exemplos práticos. Os programas para navegação na rede NetBIOS são mostrados em [#s-s-samba-c-workgroup-linux-smbclient smbclient, Seção 18.14.2.9.2], [#s-s-samba-c-workgroup-linux-nmblookup nmblookup, Seção 18.14.2.9.3] e [#s-s-samba-c-graficos Programas de navegação gráficos, Seção 18.14.5].


Domínio[editar | editar código-fonte]

O funcionamento é semelhante ao grupo de trabalho, com a diferença que a segurança é controlada pela máquina central (PDC) usando diretivas de acesso e grupos. O PDC (Primary Domain Controller) deverá ter todas as contas de acesso que serão utilizadas pelo usuário para acessar os recursos existentes em outras máquinas, script de logon que poderá ser executado em cada máquina para fazer ajustes, sincronismo, manutenção ou qualquer outra tarefa programada pelo administrador do sistema. Estas características para configuração de máquinas em domínio são documentadas passo a passo em [#s-s-samba-dom-intro Uma breve introdução a um Domínio de rede, Seção 18.7.1].


Compartilhamento[editar | editar código-fonte]

Um compartilhamento é um recurso da máquina local que é disponibilizado para acesso via rede, que poderá ser mapeada (veja [#s-s-samba-mapeamento Mapeamento, Seção 18.2.5]) por outra máquina. O compartilhamento pode ser um diretório, arquivo, impressora. Além de permitir o acesso do usuário, o compartilhamento pode ser protegido por senha, e ter controle de acesso de leitura/gravação, monitoração de acessos, diretórios ocultos, autenticação via PDC (domínio) e outras formas para restringir e garantir segurança na disponibilização dos dados (veja [#s-s-samba-a Controle de acesso ao servidor SAMBA, Seção 18.12] para aprender os métodos de como fazer isto). Um compartilhamento no SAMBA pode ser acessível publicamente (sem senha) ou estar rigidamente protegido tendo que passar por diversas barreiras para chegar ao seu conteúdo, como senhas, endereço de origem, interfaces, usuário autorizados, permissões de visualização, etc. O guia Foca Linux abordará estes assuntos com detalhes e explicará didaticamente como tornar seguro seu servidor samba e garantir um minucioso controle de acesso a seus compartilhamentos.


Mapeamento[editar | editar código-fonte]

Mapear significa pegar um diretório/arquivo/impressora compartilhado por alguma máquina da rede para ser acessada pela máquina local. Para mapear algum recurso de rede, é necessário que ele seja compartilhado na outra máquina (veja [#s-s-samba-compart Compartilhamento, Seção 18.2.4]). Por exemplo, o diretório /usr compartilhado com o nome usr, pode ser mapeado por uma máquina Windows como a unidade F:, ou mapeado por uma máquina Linux no diretório /mnt/samba. O programa responsável por mapear unidades compartilhadas no Linux é o smbmount e smbclient (veja [#s-s-samba-c-workgroup-linux Linux, Seção 18.14.2.9]).


Navegação na Rede e controle de domínio[editar | editar código-fonte]

Esta função é controlada pelo nmbd que fica ativo o tempo todo disponibilizando os recursos da máquina na rede, participando de eleições NetBIOS ([#s-s-samba-s-oslevel Níveis de sistema para eleição de rede, Seção 18.2.12]), fazer logon de máquinas no domínio ([#s-s-samba-dom-intro Uma breve introdução a um Domínio de rede, Seção 18.7.1]), etc. A função de navegação na rede é feita utilizando o compartilhamento IPC$. Este compartilhamento possui acesso público somente leitura e utiliza o usuário "guest" para disponibilização de seus. Como deve ter percebido, é necessário especificar esta ID de usuário através do parâmetro guest account ([#s-s-samba-s-a-param Descrição de parâmetros usados em compartilhamento, Seção 18.3.1]), ou a navegação de recursos no sistema (ou na rede, dependendo da configuração do SAMBA) não funcionará. OBS: A função de navegação (browsing) poderá não funcionar corretamente caso a máquina não consiga resolver nomes NetBIOS para endereços IP.


Arquivo de configuração do samba[editar | editar código-fonte]

Toda a configuração relacionada com nomes, grupo de trabalho, tipo de servidor, log, compartilhamento de arquivos e impressão do samba é colocada no arquivo de configuração /etc/samba/smb.conf. Este arquivo é dividido em seções e parâmetros. Uma seção no arquivo de configuração do samba (smb.conf) é definido por um nome entre "[ ]". As seções tem o objetivo de organizar os parâmetros pra que tenham efeito somente em algumas configurações de compartilhamento do servidor (exceto os da seção [global] que não especificam compartilhamentos, mas suas diretivas podem ser válidas para todas os compartilhamentos do arquivo de configuração). Alguns nomes de seções foram reservados para configurações específicas do samba, eles são os seguintes:

  • [global]
    Define configurações que afetam o servidor samba como um todo, fazendo efeito em todos os compartilhamentos existentes na máquina. Por exemplo, o grupo de trabalho, nome do servidor, página de código, restrições de acesso por nome, etc. Veja [#s-s-samba-s-global Seção [global], Seção 18.2.8].
    [homes]
    Especifica opções de acesso a diretórios homes de usuários. O diretório home é disponibilizado somente para seu dono, após se autenticar no sistema. Veja [#s-s-samba-s-homes Seção [homes], Seção 18.2.9].
    [printers]
    Define opções gerais para controle das impressoras do sistema. Este compartilhamento mapeia os nomes de todas as impressoras encontradas no /etc/printcap. Configurações especiais podem ser feitas separadamente. Veja [#s-s-samba-s-printers Seção [printers], Seção 18.2.10].
    [profile]
    Define um perfil quando o servidor samba é usado como PDC de domínio. Veja [#s-s-samba-dom-profiles Configurando perfis de usuários, Seção 18.7.8].

Qualquer outro nome de [seção] no arquivo smb.conf que não sejam as acima, são tratadas como um compartilhamento ou impressora. Um parâmetro é definido no formato nome = valor. Para um exemplo prático, veja um exemplo de arquivo smb.conf em [#s-s-samba-exemplos Exemplos de configuração do servidor SAMBA, Seção 18.15]. Na configuração de booleanos, a seguinte sintaxe pode ser usada:

    • 1 ou 0
    • yes ou no
    • true ou false

Assim, as seguintes configurações são equivalentes

     master browse = 0
     master browse = no
     master browse = false

Todos significam "NÃO ser o navegador principal de domínio". A escolha fica a gosto do administrador. Durante a configuração, você notará o poder da flexibilidade oferecida pelo samba na configuração de um servidor SMB :-) Linhas iniciadas por # ou ; são tratadas como comentário. Quebras de linha pode ser especificadas com uma \ no final da linha.


Seção [global][editar | editar código-fonte]

Os parâmetros especificados nesta seção tem efeito em todo o servidor samba incluindo os compartilhamentos. Caso o parâmetro seja novamente especificado para o compartilhamento, o valor que valerá é o do compartilhamento. Por exemplo, se guest user = nobody for usado na seção [global] e o guest user = foca for usado no compartilhamento [focalinux], o usuário que fará acesso público a todos os compartilhamentos do servidor será o nobody, exceto para o compartilhamento [focalinux], que será feito pelo usuário foca. Veja [#s-s-samba-s-a Compartilhamento de arquivos e diretórios, Seção 18.3] para obter uma lista e descrição dos principais parâmetros de compartilhamentos existentes. Uma lista completa pode ser obtida na página de manual do smb.conf. Irei descrever alguns parâmetros utilizados nesta seção, organizado de forma didática e simplificada.


Nomes e grupos de trabalho[editar | editar código-fonte]

  • netbios name = [nome do servidor]
    Especifica o nome NetBIOS primário do servidor samba. Caso não seja ajustado, ele usará o hostname de sua máquina como valor padrão.

Ex.: netbios name = focasamba.

  • workgroup = [grupo de trabalho/domínio]
    Diz qual o nome do grupo de trabalho/domínio que a máquina samba pertencerá.

Ex.: workgroup = focalinux.

  • netbios aliases = [nomes alternativos ao sistema]
    Permite o uso de nomes alternativos ao servidor, separados por espaços.

Ex.: teste1 teste2.

  • server string = [identificação]
    Identificação enviada do servidor samba para o ambiente de rede. A string padrão é Samba %v (%v é substituída pela versão do samba, para maiores detalhes, veja [#s-s-samba-s-varsubst Variáveis de substituição, Seção 18.2.13]).

Ex: server string = Servidor Samba versão %v.

  • name resolve order = [ordem]
    Define a ordem de pesquisa para a resolução de nomes no samba. A ordem padrão é: lmhosts host wins bcast, que é a melhor para resolução rápida e que tente gerar menos tráfego broadcast possível. Veja [#s-s-samba-s-nameresolv Resolução de nomes de máquinas no samba, Seção 18.5] para uma explicação mais detalhada.

Caracteres e página de código[editar | editar código-fonte]

Uma das partes essenciais após colocar o SAMBA em funcionamento, é configurar a página de código para que os caracteres sejam gravados e exibidos corretamente no cliente. A primeira coisa que precisa verificar é se seu kernel possui o suporte a página de código local. Caso não tenha, baixe o fonte do kernel e siga os seguintes passos na configuração:

    • Dentro da opção "File Systems", "Network File Systems" defina como "Default Remote NLS Option" a iso8859-1. Esta opção permite ao smbmount montar os volumes locais usando os caracteres corretos.
    • Entre na opção "File Systems", "Native Language Support". Na opção "Default NLS Option" coloque "iso8859-1". Ative também o suporte as páginas de código 437, 850 e 860 e também ao conjunto de caracteres iso8859-1 e UTF8.

Note que esta ordem pode variar dependendo da versão do seu kernel, basta que as entenda para fazer as modificações apropriadas.

  • character set = [conjunto_caracteres]
    Seleciona o conjunto de caracteres dos arquivos exibidos pelo servidor samba. Para os idiomas de língua latina, sempre utilize iso8859-1.

Ex.: character set = iso8859-1.

  • client code page = [pagina_de_codigo]
    Seleciona a página de código do servidor samba para tratar os caracteres. Para os idiomas de língua latina, sempre utilize 850.

Ex.: client code page = 850.

  • preserve case =
    Seleciona se arquivos com nomes extensos criados serão criados com os caracteres em maiúsculas/minúsculas definidos pelo cliente (no) ou se será usado o valor de default case (caso seja especificado yes).
    short preserve case =
    Seleciona se os arquivos com nomes curtos (formato 8.3) serão criados com os caracteres mixtos enviados pelo cliente (no) ou se será usando o valor de default case (caso seja especificado yes).
    default case = [lower/upper]
    Define se os arquivos criados terão seus nomes todos em minúsculas (lower) ou maiúsculas (upper).
    valid chars = [caracteres]
    Define caracteres válidos nos nomes de arquivos: valid chars =á:Á é:É í:Í ó:Ó ú:Ú â:Â ê:Ê ô:Ô ã:à õ:Õ Ã :À ò:Ã’. Este parâmetro DEVERÁ ser sempre especificado depois do client code page, pois caso contrário, eles serão substituídos por estes.

Restrições de acesso/mapeamento de usuários[editar | editar código-fonte]

  • guest account = [conta]
    Define a conta local de usuário que será mapeada quando um usuário se conectar sem senha (usuário guest). Veja mais detalhes em [#s-s-samba-s-a-param Descrição de parâmetros usados em compartilhamento, Seção 18.3.1].
    invalid users
    Define uma lista de usuários que não terão acesso aos recursos do servidor ou compartilhamento. É seguro restringir o acesso samba a usuários com grande poder no sistema (como o root). Veja mais detalhes em [#s-s-samba-a-restrusu Restringindo o acesso por usuários, Seção 18.12.4].
    valid users
    Semelhante a opção invalid users mas permite que somente os usuários especificados tenham acesso ao sistema. Veja mais detalhes em [#s-s-samba-a-restrusu Restringindo o acesso por usuários, Seção 18.12.4].
    default service = nome
    Caso o serviço que o usuário deseja se conectar não for encontrado no servidor, o SAMBA mapeará o serviço especificado nesta diretiva como alternativa. A variável "%S" e o caracter "_" podem ser interessantes em algumas alternativas de configuração. A opção default é um sinônimo para esta opção. Caso utilize esta opção, crie o compartilhamento em modo somente leitura e com acesso público, caso contrário (dependendo do planejamento de partições e segurança do sistema de arquivos) a máquina poderá ser derrubada sem dificuldades.
    username map = [arquivo]
    Especifica um arquivo que faz o mapeamento entre nomes fornecidos por clientes e nomes de contas Unix locais. Veja [#s-s-samba-a-usernamemap Mapeamento de nomes de usuários, Seção 18.12.16] para mais detalhes de como configurar este recurso.
    obey pam restrictions = yes
    Indica se as restrições do usuário nos módulos PAM terão efeito também no SAMBA.

Níveis de autenticação[editar | editar código-fonte]

(esta seção contém algumas explicações que dependem do resto do conteúdo do guia, caso não entenda de imediato a fundo as explicações, recomendo que a leia novamente mais tarde).

  • Define o nível de segurança do servidor. Os seguintes valores são válidos:
    • share - Usada principalmente quando apenas a senha é enviada por compartilhamento acessado para o servidor, caso muito típico em sistemas Lan Manager e Windows for Workgroups.

Mesmo assim o samba tenta mapear para um UID de usuário local do sistema usando os seguintes métodos (retirado da página de manual do samba):

    • Se o parâmetro guest only é usado no compartilhamento junto com o guest ok, o acesso é imediatamente permitido, sem verificar inclusive a senha.
    • Caso um nome de usuário seja enviado junto com a senha, ele é utilizado para mapear o UID e aplicar as permissões deste usuário (como acontece no nível de segurança user).
    • Se ele usou um nome para fazer o logon no Windows este nome será usado como usuário local do SAMBA. Caso ele seja diferente, você deverá usar o mapeamento de nomes para associar o nome remoto do nome local (veja [#s-s-samba-a-usernamemap Mapeamento de nomes de usuários, Seção 18.12.16])
    • O nome do serviço é tentado como nome de usuário.
    • O nome da máquina NetBios é tentada como nome de usuário
    • Os usuários especificados na opção user do compartilhamentos são utilizados (veja [#s-s-samba-s-a-param Descrição de parâmetros usados em compartilhamento, Seção 18.3.1]).
    • Caso nenhum destes métodos acima for satisfeito, o acesso é NEGADO.

Hoje em dia, o uso do nível de acesso share é raramente usado, porque todos os sistemas a partir do Windows 95 e acima enviam o nome de usuário ao acessar um compartilhamento (caindo na segunda checagem do nível share), sendo equivalente a usar o nível user. Entretanto, o nível de segurança share é recomendado para servidores onde TODO o conteúdo deve ter acesso público (seja leitura ou gravação) e o parâmetro guest shares também funciona nativamente. As senhas criptografadas (encrypt passwords = 1) NÃO funcionarão no nível share, lembre-se deste detalhe.

    • user - Este é o padrão. O usuário precisa ter uma conta de usuário no Linux para acessar seus compartilhamentos. A mesma conta de usuário/senha deverá ser usada no Windows para acessar seus recursos ou realizado um mapeamento de nomes de usuários (veja [#s-s-samba-a-usernamemap Mapeamento de nomes de usuários, Seção 18.12.16]). Este é o padrão do SAMBA. No nível de acesso user o usuário precisa ser autenticado de qualquer forma, inclusive se for usado o parâmetro guest only ou user. Os seguintes passos são usados para autorizar uma conexão usando o nível user (retirado da documentação do SAMBA):
      • É tentada a validação usando o nome/senha passados pelo cliente. Se tudo estiver OK, a conexão é permitida.
      • Caso já tenha se autenticado anteriormente para acessar o recurso e forneceu a senha correta, o acesso é permitido.
      • O nome NetBIOS da máquina do cliente e qualquer nome de usuário que foi usado é novamente tentado junto com a senha para tentar permitir o acesso ao recurso compartilhado.
      • Caso o cliente tenha validado o nome/senha com o servidor e o cliente enviou novamente o token de validação, este nome de usuário é usado.
      • É tentada a checagem com o parâmetro user no compartilhamento (veja [#s-s-samba-s-a-param Descrição de parâmetros usados em compartilhamento, Seção 18.3.1].
      • É verificado se o serviço é público, então a conexão é feita usando o usuário guest account e ignorando a senha (veja [#s-s-samba-a-publico Criando um compartilhamento para acesso sem senha, Seção 18.12.7]).
    • domain - Neste nível, o acesso só será permitido quando a máquina for adicionada ao domínio com o smbpasswd ([#s-s-samba-c-dominio-linux Linux, Seção 18.14.3.9]). Neste nível de acesso, a conta de usuário será validada em um servidor PDC (controlador de domínio) e o acesso aos recursos das máquinas que fazem parte do domínio será feito a partir do PDC. Veja [#s-s-samba-c-dominio-linux Linux, Seção 18.14.3.9] para detalhes.
    • server - A máquina samba tentara autenticar o usuário em outro servidor NT (ou samba). No caso da autenticação falhar, será usado o nível de acesso user na base de usuários local (será necessário o arquivo de senhas criptografado do samba para que a autenticação local funcione, veja [#s-s-samba-senhas-crypto Ativando o suporte a senhas criptografadas, Seção 18.8]). Este nível é bastante usado quando configuramos um servidor de perfis de usuários ou logon separado do PDC.

Log de acessos/serviços[editar | editar código-fonte]

  • log file= [arquivo]
    Define a localização e nome do arquivo de log gerado pelo samba. As variáveis de expansão podem ser usadas caso o administrador queira ter um melhor controle dos logs gerados (veja [#s-s-samba-s-varsubst Variáveis de substituição, Seção 18.2.13]).

Ex.: /var/log/samba/samba-log-%m. OBS: Se possível coloque uma extensão no arquivo de log gerado pelo SAMBA (como .log). O motivo disto é porque se estes logs forem rotacionados pelo logrotate você terá problemas de recompactação múltiplas caso utilize um coringa samba-log-*, gerando arquivos como .gz.gz.gz.., lotando a tabela de arquivos do diretório e deixando sua máquina em um loop de compactação.

  • max log size = [tamanho]
    Especifica o tamanho máximo em Kb do arquivo de log gerado pelo samba. O valor padrão é 5000Kb (5MB).
    debug pid = [valor]
    Este processo adiciona a pid aos logs gerados pelo processo smbd Isto é útil para depuração caso existam múltiplos processos rodando. O valor padrão é no e a opção debug timestamp deve ser yes para esta opção ter efeito.
    debug timestamp = [valor]
    Ativa ou desativa a gravação de data/hora nos arquivos de log gerados pelo samba. O valor padrão é yes.
    debug level = [valor]
    Aumenta o nível de depuração dos daemons do SAMBA de 0 a 9. Um nível de depuração interessante e que produz uma quantidade razoável de dados para configuração de um logrotate só para o SAMBA é o 2, produzindo a lista de todos os compartilhamentos acessados, quem acessou, data/hora (dependendo das outras opções de depuração). Isto permite ao administrador saber exatamente o que está sendo acessado e por quem, quais as tentativas de acesso. Assim terá certeza que o conteúdo não está sendo acessado indevidamente. O nível de depuração 0 é o padrão.
    debug uid = [valor]
    Este parâmetro inclui o euid, egid, uid, gid nos arquivos de log. O valor padrão é no.
    lock directory = [diretório]
    Define onde serão gravados os arquivos de lock gerados pelo samba.

Navegação no servidor/tipo de servidor[editar | editar código-fonte]

  • os level=[num]
    Especifica o nível do sistema operacional. Este número é usado para as eleições netbios para definir o navegador de grupo local e controlador de domínio (veja [#s-s-samba-s-oslevel Níveis de sistema para eleição de rede, Seção 18.2.12] para detalhes). O valor pode ser de 0 a 255, o padrão é 32.
    announce as = [sistema]
    Selecione o nome que o samba (nmbd) se anunciará na lista de pesquisa de rede. Os seguintes nomes podem ser usados:
    • NT Server (ou NT) - Anuncia como Windows NT Server. Este é o padrão.
    • NT Workstation - Anuncia-se como um NT Workstation.
    • Win95 ou WfW - Anuncia-se na rede como uma estação Windows 9x, Windows for Workgroups, Windows NT Server e Windows NT Workstation de uma só vez.
    domain master = [valor]
    Diz se o servidor tentará se tornar o navegador principal de domínio. Os valores que podem ser especificados são: yes, no e auto. O valor padrão é auto. Veja [#s-s-samba-dom-dmbrowser Domain Master Browser, Seção 18.7.3].
    local master = [valor]
    Diz se o servidor participará ou não das eleições para navegador local do grupo de trabalho (workgroup). Os valores que podem ser especificados são: yes, no. O valor padrão é yes. Para vencer a eleição, o samba precisa ter o valor de os level maior que os demais.

Note também que o Windows NT não aceita perder as eleições e convoca uma nova eleição caso ele perca. Como esta eleição é feita via broadcasting, isso gera um tráfego grande na rede. Desta forma, se tiver um computador NT na rede configure este valor para "no". Veja [#s-s-samba-dom-lmbrowser Local Master Browser, Seção 18.7.2].

  • preferred master = [valor]
    Diz se o servidor samba terá ou não vantagens de ganhar uma eleição local. Se estiver configurado para "yes", o servidor samba pedirá uma eleição e terá vantagens para ganha-la. O servidor poderá se tornar garantidamente o navegador principal do domínio se esta opção for usada em conjunto com domain master = 1. Os valores especificados podem ser yes, no e auto, o padrão é auto.

Antes de ajustar este valor para yes, verifique se existem outros servidores NetBIOS em sua rede que tem preferência para se tornar o master principal, pois poderá ocorrer um tráfego alto de broadcasting causado pelas eleições solicitadas pelas outras máquinas.


Outros parâmetros de configuração[editar | editar código-fonte]

  • include
    Inclui um outro arquivo de configuração na porção atual do arquivo de configuração. Você pode utilizar variáveis de substituição, exceto %u, %P e %S (veja [#s-s-samba-s-varsubst Variáveis de substituição, Seção 18.2.13]).

Seção [homes][editar | editar código-fonte]

Esta seção tem a função especial de disponibilizar o diretório home do usuário. Quando o usuário envia seu nome de login como compartilhamento é feita uma busca no arquivo smb.conf procurando por um nome de compartilhamento que confira. Caso nenhum seja encontrado, é feita uma busca por um nome de usuário correspondente no arquivo /etc/passwd, se um nome conferir e a senha enviada também, o diretório de usuário é disponibilizado como um compartilhamento com o mesmo nome do usuário local. O diretório home do usuário poderá ser modificado com o uso de mapeamento de nomes, veja [#s-s-samba-a-usernamemap Mapeamento de nomes de usuários, Seção 18.12.16]. Quando o caminho do compartilhamento não for especificado, o SAMBA utilizará o diretório home do usuário (no /etc/passwd). Para maior segurança da instalação, principalmente porque o diretório home do usuário não é um requerimento para a autenticação de usuário, recomendo usar a variável de substituição %S apontando para um diretório com as permissões apropriadas configuradas em seu sistema, por exemplo:

      [homes]
       comment = Diretórios de Usuários
       path=/pub/usuarios/%S

Você apenas terá o trabalho extra de criar os diretórios de usuários que farão acesso ao sistema. Isto não será nenhum problema após você programar um shell script simples que verifique os nomes de contas em /etc/passwd e crie os diretórios com as permissões/grupos adequados (isso não será abordado por este capítulo do guia, embora não seja complicado). Se deseja, existem exemplos em [#s-s-samba-exemplos Exemplos de configuração do servidor SAMBA, Seção 18.15] sobre a seção [homes] no arquivo de configuração. Os parâmetros aceitos em [homes] aqui são os mesmos usados para compartilhamentos normais (veja [#s-s-samba-s-a-param Descrição de parâmetros usados em compartilhamento, Seção 18.3.1]). Abaixo segue mais um exemplo de seção [homes]:

     [homes]
     comment = Diretório home de usuários
     writable = yes
     public = no
     invalid users = root nobody @adm
     follow symlinks = no
     create mode = 0640
     directory mode = 0750

A explicação de cada um dos parâmetros podem ser encontradas em [#s-s-samba-s-a-param Descrição de parâmetros usados em compartilhamento, Seção 18.3.1]. O guia está com os parâmetros bem organizados em seções específicas, apenas de uma olhada para entender com o capítulo do SAMBA foi organizado e não terá dificuldades de se localizar. OBS1:Caso nenhum caminho de compartilhamento seja utilizado, o diretório home do usuário será compartilhado. OBS2:Não utilize o parâmetro public yes na seção guest, caso contrário todos os diretórios de usuários serão lidos por todos. Veja [#s-s-samba-a-public-access Considerações de segurança com o uso do parâmetro "public = yes", Seção 18.12.14] para maiores detalhes.


Seção [printers][editar | editar código-fonte]

Esta seção tem a função de disponibilizar as impressoras existentes no sistema (lp, lp1, lp2, etc) existentes no /etc/printcap como compartilhamento de sistemas Windows. O método que os nomes de impressoras são pesquisados é idêntico a forma feita para a seção [homes]: Primeiro o nome do compartilhamento é pesquisado como um nome de serviço, depois se ele é um nome de usuário (tentando mapear o serviço disponibilizado em [homes]), depois será verificado a seção [printers]. Ao invés de usar este recurso, se preferir você poderá compartilhar as impressoras individualmente. Para detalhes, veja [#s-s-samba-i-win-linux Configurando o Linux como um servidor de impressão Windows, Seção 18.11.1]. OBS:É importante lembrar que a seção [printers] DEVE ser definida como printable usando o parâmetro printable = yes para funcionar. O utilitário testparm poderá ser usado para verificar problemas no arquivo cd configuração do SAMBA (veja [#s-s-samba-s-testparm Buscando problemas na configuração, Seção 18.2.11]).


Buscando problemas na configuração[editar | editar código-fonte]

Durante o processo de configuração do SAMBA, é comum cometer erros de digitação, usar parâmetros em lugares indevidos, etc. É recomendável o uso do testparm para checar a configuração do SAMBA sempre que houver modificações para ter certeza nada comprometa o funcionamento que planejou para sua máquina. Para usar o testparm é só digitar testparm. Logo após executa-lo, analise se existem erros nas seções de configuração e te pedirá para pressionar <ENTER> para ver um dump do arquivo:

     Load smb config files from /etc/samba/smb.conf
     Processing section "[homes]"
     Processing section "[printers]"
     Processing section "[tmp]"
     Processing section "[cdrom]"
     Loaded services file OK.
     Press enter to see a dump of your service definitions

A saída acima indica que está tudo OK com todas as configurações que foram realizadas no servidor. É possível especificar um outro arquivo de configuração do SAMBA usando testparm /etc/samba/smb2.conf. Também é permitido simular o nome NetBIOS que fará acesso a máquina usando o parâmetro -L nome (que será substituído na variável %L).


Níveis de sistema para eleição de rede[editar | editar código-fonte]

Para selecionar qual sistema NetBIOS será o local master browse ou domain master browse, é usado um método bastante interessante: o de eleições. Quando uma nova máquina entra na rede NetBIOS, ela solicita quem é o Local Master Browser, caso nenhuma responda, ela força uma eleição na rede através de uma requisição Broadcasting especial. Vence a eleição quem tiver o ***maior número***, chamado de OS Level (nível de sistema operacional). Caso duas máquinas empatem, o desempate é feito usando outros critérios. Se você for a única máquina de um workgroup, automaticamente você será o Local Master Browser. De meia em meia hora uma nova eleição é feita, forçando mais tráfego broadcasting na rede. Durante este novo processo de eleição, a lista de computadores é atualizada; as novas máquinas são adicionadas e as desligadas saem da lista após 36 minutos. Este é o motivo porque as máquinas Windows continuam aparecendo no ambiente de rede por algum tempo mesmo depois que desligadas ou porque elas não aparecem de imediato. O OS Level é um número que é característico de cada sistema operacional ficando entre 0 (mais baixo) e 255. Os níveis de acessos dos sistemas operacionais são os seguintes:

     Windows for Workgroups                         1
     Windows 95                                     1
     Windows 98                                     2
     Windows 98 Second Edition                      2


     Windows 2000 Server (standalone)               16
     Windows 2000 Professional                      16
     Windows NT 4.0 Wks                             17
     Windows NT 3.51 Wks                            16


     Windows NT 3.51 Server                         32
     Windows NT 4.0 Server                          33
     Windows 2000 Server (Domain Controller)        32

     SAMBA                                          32

O valor padrão do OS Level do SAMBA é 32, entretanto ele é bastante flexível para permitir sua mudança através do parâmetro "os level" (veja [#s-s-samba-s-global-browsing Navegação no servidor/tipo de servidor, Seção 18.2.8.6]), isto garante que o SAMBA sempre vença as eleições da rede sobre qualquer outro sistema operacional. No caso de um servidor que estiver configurado para ser o navegador de rede, assim que for iniciado ele solicitará uma eleição de rede. As regras são as mesmas, vence o que tiver o *maior* número. Este número pode ser configurado facilmente no SAMBA para que ele sempre vença as eleições de rede, tomando conta da lista de máquinas. Isto é especialmente interessante por causa da estabilidade do servidor Linux, quando migramos de servidor NT ou para fornecer mais serviços de navegação, como servidor WINS. OBS: Nunca deixe um servidor NT configurado para ser o Local Browser ou Domain Master Browser competir com o SAMBA. Mesmo que o SAMBA ganhe, o NT é um péssimo perdedor e convoca uma nova eleição para tentar novamente se eleger, gerando um *extremo* tráfego broadcasting em redes grandes.


Variáveis de substituição[editar | editar código-fonte]

Esta seção foi baseada nos dados da página de manual do samba, com adições que não estavam presentes na versão original e exemplos. Existem variáveis especiais que podem ser usadas no arquivo de configuração do samba e são substituídas por parâmetros especiais no momento da conexão do usuário. Um exemplo de utilização de variáveis de substituição seria mudar a localização do diretório home do usuário:

     [homes]
      comment = Diretório home do usuário
      path = /home/usuarios/%u

Cada uma das variáveis são descritas em detalhes abaixo:

  • %S
    O nome do serviço atual, se existir. Seu uso é interessante, principalmente no uso de diretórios homes.
    %P
    O diretório raíz do serviço atual, se existir.
    %u
    O nome de usuário do serviço atual, se aplicável. Esta variável é bastante útil para programação de scripts e também para criar arquivos de log personalizados, etc.
    %g
    O grupo primário do usuário %u.
    %U
    O nome de usuário da seção (o nome de usuário solicitado pelo cliente, não é uma regra que ele será sempre o mesmo que ele recebeu).
    %G
    O nome do grupo primário de %U.
    %H
    O diretório home do usuário, de acordo com %u.
    %v
    A versão do Samba.
    %h
    O nome DNS da máquina que está executando o Samba.
    %m
    O nome NetBIOS da máquina do cliente. Isto é muito útil para log de conexões personalizados e outras coisas úteis.
    %L
    O nome NetBIOS do servidor. Como o servidor pode usar mais de um nome no samba (aliases), você poderá saber com qual nome o seu servidor está sendo acessado e possivelmente torna-lo o nome primário de sua máquina.
    %M
    O nome DNS da máquina cliente.
    %N
    O nome do seu servidor de diretórios home NIS. Este parâmetro é obtido de uma entrada no seu arquivo auto.map. Se não tiver compilado o SAMBA com a opção --with-automount então este valor será o mesmo de %L.
    %p
    O caminho do diretório home do serviço, obtido de uma entrada mapeada no arquivo auto.map do NIS. A entrada NIS do arquivo auto.map é dividida na forma "%N:%p".
    %R
    O nível de protocolo selecionado após a negociação. O valor retornado pode ser CORE, COREPLUS, LANMAN1, LANMAN2 ou NT1.
    %d
    A identificação de processo do processo atual do servidor.
    %a
    A arquitetura da máquina remota. Somente algumas são reconhecidas e a resposta pode não ser totalmente confiável. O samba atualmente reconhece Samba, Windows for Workgroups, Windows 95, Windows NT e Windows 2000. Qualquer outra coisa será mostrado como "UNKNOWN" (desconhecido).
    %I
    O endereço IP da máquina do cliente.
    %T
    A data e hora atual.
    %$(var_ambiente)
    Retorna o valor da variável de ambiente especificada.