Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Samba )

Tem Pinguim no Samba

Como integrar o Linux em redes Windows e vice-versa, sem perder o ritmo

por Augusto Campos (brain@matrix.com.br)

Nota: Originalmente publicado na edição 21 da Revista do Linux. Veja nossos outros textos sobre o Samba no índice de artigos.


O Samba é um ótimo exemplo de software livre bem sucedido. Ao permitir que máquinas Unix (inclusive o Linux) e Windows convivam harmoniosamente em uma mesma rede, compartilhando arquivos, impressoras e outros recursos, este software veio ao encontro dos desejos e necessidades de grande parte dos administradores de redes do mundo, que sabem muito bem que raramente alguém pode se dar ao luxo de manter uma rede completamente homogênea, e portanto há sempre necessidade de integrar diferentes tecnologias.

Administradores experientes do Samba podem relatar o quanto este pacote é poderoso, robusto e fácil de configurar. Posso afirmar por experiência própria: administro um servidor Samba que atende às necessidades de compartilhamento de arquivos de cerca de 500 usuários. Ele roda em um Pentium Pro com 128MB de RAM, nunca sofreu uma interrupção de serviço causada pelo software, e a última alteração no arquivo de configuração foi em 1998, excetuando os (poucos e pequenos) ajustes necessários durante upgrades.

Ao longo deste artigo, veremos como o Samba surgiu, do que ele é capaz, e alguns exemplos práticos de utilização. Estaremos muito longe de esgotar o assunto, portanto sugiro atenção especial ao quadro "Para saber mais", que indica muitas fontes adicionais de informação.

Um pouco de história

Os sistemas operacionais da série Windows seguem a tradição iniciada ainda nos tempos do DOS de compartilhar seus recursos (arquivos, impressoras e outros) em rede através de um conjunto de protocolos atualmente conhecido pela sigla CIFS (Common Internet File System), mas que originalmente recebia o nome de Server Message Block (SMB) - de fato, o SMB continua vivo, incluído dentro das especificações do CIFS.

O conjunto SMB/CIFS pode ter uma série de desvantagens técnicas, mas ele tem a seu favor uma circunstância especial: a quantidade de usuários, já que todos os computadores com Windows (desde a versão 3.11) podem ser facilmente convertidos em clientes (ou servidores) CIFS, e o número destes computadores é imenso.

Entretanto, o SMB não era suportado nativamente pelo Unix, o que dava margem a todo tipo de problemas para os administradores de redes mistas: ou instalavam clientes Unix (de protocolos "tradicionais", como NFS, LPD e outros) nas máquinas Windows, ou moviam os serviços tradicionalmente instalados em servidores Unix para os servidores NT (que na época ainda eram uma novidade), abrindo mão da robustez e das demais vantagens dos servidores Unix da época.

É neste ponto que surge em nosso cenário o estudante australiano Andrew Tridgell, que no processo de encontrar razões para adiar o início de sua tese, resolveu entender como funcionava o Pathworks, um servidor de arquivos da Digital. A consequência direta foi o surgimento de um sistema capaz de exportar sistemas de arquivos de máquinas Unix de forma a poderem ser acessados a partir de máquinas DOS rodando o cliente do Pathworks - Embora Tridgell não soubesse, o Pathworks utilizava justamente o mesmo protocolo do Windows - o SMB - e logo outros usuários descobriram que podiam usar o mesmo software para comunicar com máquinas Windows de suas redes. Eles avisaram Tridgell, mas por estranho que pareça, ele não acreditou!

Meses mais tarde, Tridgell instalou uma rede em sua própria casa, com computadores rodando Linux e Windows, e resolveu experimentar o que ele próprio julgava impossível. Como podemos imaginar, ele ficou bastante surpreso ao ver que estava errado - e a documentação do Samba diz que até hoje sua esposa imprime documentos a partir do Windows, na impressora conectada à máquina Linux de Andrew.

A partir daí, o projeto se desenvolveu rapidamente. Surgiu o nome Samba (que inclui as 3 letras do protocolo SMB), outros integrantes (com destaque para Jeremy Allison) se juntaram à equipe de desenvolvimento, e novas funcionalidades foram adicionadas. O software se desenvolveu a ponto de realizar todas as tarefas que veremos a seguir, com qualidade e estabilidade superiores a algumas das alternativas. De fato, já em 1998 a SGI chegou a afirmar publicamente que seus servidores Origin rodando Samba apresentam performance superior à de um servidor Windows - o que equivale a dizer que o servidor de arquivos Windows mais rápido do mundo... não rodava Windows!

O Samba não é usado apenas nos servidores Linux nossos da cada dia. De fato, empresas como a SGI, Veritas, HP, Cobalt e Whistle comercializam produtos que incluem suporte a compartilhamentos baseados no Samba. Mas ele sempre esteve intimamente ligado ao Linux, desde a rede doméstica do seu criador, passando pela escolha da licença de sua distribuição (a popular GPL, utilizada também pelo kernel do Linux) e pela existência de suporte exclusivo para o Linux (e não para outros tipos de Unix) em alguns componentes do sistema, como o smbfs. O que poucos sabem é que Andrew Tridgell teve participação muito importante em um momento histórico do sistema: foi ele quem levou Linus Torvalds a um zoológico em Canberra, dando a ele a oportunidade de ser bicado por um pinguim - o que teve papel vital, anos mais tarde, na escolha desta ave como símbolo do Linux.

Conhecendo o Samba

O Samba oferece a maior parte das funcionalidades dos servidores Windows, sem a necessidade de adquirir suas custosas licenças e, melhor do que isso, sem expor sua rede às famosas telas azuis da morte, nem à necessidade de realizar reboots a cada mudança de configuração. O Samba é um produto maduro, flexível e bastante bem documentado.

Pode parecer difícil de acreditar a princípio, mas as máquinas Windows de sua rede irão "ver" o seu servidor Linux com Samba como se fosse outra máquina com Windows - incluindo ícones na janela Ambiente de Rede, a possibilidade de mapear drives remotos, imprimir nas impressoras do servidor, e muito mais.

O seu servidor Linux com Samba pode inclusive atuar como o controlador primário do domínio (PDC), tarefa normalmente exclusiva do Windows NT 4 Server. Encontramos na literatura (ver quadro "Para saber mais") relatos de domínios com PDCs baseados em Samba no qual conviviam simultânea e pacificamente máquinas rodando NT Workstation 4.0 (com o service pack 6a), Windows 2000 Professional (com o service pack 1), Windows 2000 Server (com o service pack 1) e até mesmo o Windows 95. A inclusão de cada uma destas máquinas no domínio pode ser feita com as próprias ferramentas de rede do Windows, desde que o Samba esteja configurado para aceitar este recurso.

O Samba também inclui ferramentas que permitem que o Linux atue como cliente em uma rede com servidores Windows. Assim, você pode imprimir a partir do Linux naquela impressora de jato de tinta conectada a um micro rodando Windows 98, ou montar ("mapear") um diretório ("pasta") disponibilizado pelas máquinas Windows.

Técnicos experientes no projeto de redes com servidores Windows NT irão querer saber mais detalhes técnicos, e a documentação é pródiga neles. Entretanto, alguns deles podem ser adiantados aqui:

É importante notar que, ao menos até a versão 2.2, quando o Samba atua como PDC ele não suporta a presença de um BDC, e nem relações de confiança entre domínios ("trust relationships"), o que impede o recurso de Single Signon para usuários de múltiplos domínios.

O Samba também inclui um servidor de nomes NetBIOS (WINS), que além de facilitar as conexões em redes roteadas, dá suporte ao recurso de "browsing"

  • a ação de localizar e exibir todos os computadores e recursos compartilhados de sua rede ou domínio. Você pode até mesmo configurar o Samba como o Master Browser de sua rede, se desejar.

    Configurando um servidor simples

    Como vimos acima, o Samba é capaz de realizar tarefas complexas, incluindo autenticação e controle de domínio. Entretanto, não seria didático neste artigo abordar estes assuntos, a não ser que contássemos com espaço suficiente para esplanar os conceitos relacionados a redes baseadas no Windows.

    Ao invés disto, vamos analisar a configuração de um servidor Samba simples, disponibilizando arquivos e impressoras para clientes Windows 98, em uma rede sem PDC e sem necessidades especiais de roteamento. Preparamos um laboratório contando com dois micros Pentium III, um deles atuando como servidor com SuSE Linux 7.1 e Samba 2.0.7 (default da distribuição), e o outro com o Windows 98 instalado especialmente para a ocasião. As duas máquinas são ligadas por um hub 3Com, e toda a configuração de rede foi adequada de forma que fosse possível a conectividade (testada através do comando ping) nos dois sentidos.

    O Samba dispõe de diversas ferramentas de configuração gráficas, como o SWAT (via web) e módulos do LinuxConf. Entretanto, para os efeitos deste artigo, editaremos diretamente o arquivo /etc/smb.conf, que contém todas as configurações necessárias. Nosso arquivo /etc/smb.conf está na "Listagem 1"

  • lembre-se de fazer uma cópia de segurança de algum arquivo com este nome que você já possua, antes de abri-lo com seu editor favorito.
    listagem 1--------
    # Exemplo de /etc/smb.conf comum
    # testado com o Samba 2.0.x (SuSE 7.1)
    
    

    [global] # as 5 linhas abaixo não devem # ser usadas se já houver um PDC # ou master browser na rede wins support=yes os level=65 local master=yes preferred master=yes domain master=yes

    # impressoras load printers = yes printing = bsd printcap name = /etc/printcap load printers = yes

    # não funciona para # clientes Windows 95 e 3.11 encrypt passwords = yes

    # identificação da máquina netbios name = photek workgroup = OEMWorkgroup

    # permite "mapear" o diretório home # de cada usuário [homes] comment = Home_Dir browseable = no read only = no create mode = 0750

    # permite "mapear" o diretório de # dados compartilhados [dados] path=/tmp read only=yes write list=augusto, ana, +admin

    # compartilha as impressoras do Linux [printers] browseable = no printable = yes public = yes guest ok = yes ------------------

    Nota 1: Cada distribuição de Linux tem seu próprio método de iniciar o serviço Samba. Usuários do Conectiva Linux podem usar o comando "ntsysv" para definir se o Samba deverá iniciar automaticamente a cada boot ou não. Usuários de outras distribuições devem recorrer aos manuais das mesmas para verificar como fazer, ou editar diretamente os scripts de inicialização, como preferirem. Além disso, cada distribuição tem seu método para forçar uma reconfiguração do Samba - e após cada alteração no arquivo /etc/smb.conf, você deverá realizar esta operação. Verifique na documentação de sua distribuição qual o método adequado - no SuSE Linux, basta digitar (como usuário root) "/etc/rc.d/smb restart"; já no Conectiva Linux, o comando é "/etc/rc.d/init.d/smb restart".

    Caso você disponha de computadores para fazer um teste sem riscos de trazer o caos a uma eventual rede NT existente em sua organização (e o arquivo de configuração da "Listagem 1" certamente poderia trazer muitos problemas a ela, portanto certifique-se de isolar bem a sua rede de testes), você pode começar por criar os seus usuários de teste. Estaremos utilizando senhas criptografadas, que são completamente independentes das senhas do Linux, ficando armazenadas no arquivo /etc/smbpasswd. É possível trabalhar com as próprias senhas do Linux, com senhas sincronizadas ou mesmo com a autenticação externa (por exemplo, em um PDC Windows NT). Entretanto, não veremos estas operações neste artigo - conte com a documentação oficial do Samba, ela é bastante abrangente quanto a estes aspectos.

    Para criar o usuário "augusto" no Samba, primeiro é necessário que ele exista no Linux. Crie-o da maneira usual utilizada em sua rede - o comando "useradd augusto" pode ser suficiente para um teste. Após a criação do usuário no Linux, podemos emitir o comando "smbpasswd -a augusto" para criá-lo no Samba. O sistema se encarregará de pedir a senha, e atualizará o arquivo /etc/smbpasswd a contento. O comando "smbpasswd" possui muitas outras opções necessárias para a administração de usuários - veja o manual online ("man smbpasswd") para detalhes.

    Agora você já pode copiar o conteúdo da "Listagem 1" para o seu /etc/smb.conf - mas antes salve o conteúdo original (se houver) com outro nome, para não correr riscos. Lembre-se de trocar as linhas "netbios name" e "workgroup" para o nome da sua máquina e de seu grupo de trabalho, respectivamente. A configuração de impressoras do arquivo exemplo leva em consideração que você utiliza impressão estilo BSD (lpd). Esta situação é default em muitas distribuições de Linux, mas deverá ser modificada se você utilizar outro sistema de impressão.

    Após digitar o arquivo, use o comando "testparm" para verificar se não há erros, e faça o Samba reler sua configuração (veja a "Nota 1"). Agora vá ao seu micro Windows 98, e configure-o (nas Propriedades do Ambiente de Rede) para fazer logon com o Cliente para Redes Microsoft. Aproveite para configurar o servidor WINS, nas propriedades do TCP/IP de sua placa de rede, como sendo o endereço IP de seu servidor Linux. Em caso de dúvida sobre estes passos, consulte a documentação que acompanha o Windows 98. Ao final, o Windows solicitará que você dê um reboot - atenda-o.

    Após a inicialização, faça logon no Windows com o usuário "augusto" (criado

  • no Linux - no passo anterior), com a senha que você definiu. Agora clique no ícone "Ambiente de Rede" do seu ambiente de trabalho Windows, e você deverá ver um ícone representando seu servidor Samba recém-configurado. Clicando nele, você verá um ícone para o seu diretório home, outro para o seu compartilhamento "dados", e mais um para cada impressora definida no seu arquivo /etc/printcap. Você poderá utilizá-los como utiliza os compartilhamentos de um servidor Windows: "mapear" os diretórios como se fossem unidades locais, imprimir via rede, manipular pastas e arquivos, e outras operações similares - mas sempre respeitando as permissões de acesso, tanto as definidas no smb.conf, quanto as do próprio Linux.

    Não dispomos de espaço suficiente para analisar cada uma das linhas do nosso arquivo /etc/smb.conf de exemplo. Felizmente, a documentação online ("man smb.conf") é de excelente qualidade, e juntamente com os sites indicados no quadro "Para saber mais" pode resolver as principais dúvidas.

    Linux como cliente de redes Windows

    Frequentemente há necessidade de integrar uma estação Linux a uma rede onde os servidores são baseados em Windows. Você pode querer imprimir em impressoras conectadas na porta paralela de algum micro com Windows, ou acessar os arquivos de um servidor NT, ou mesmo de uma estação de trabalho com Windows 98.

    Estas tarefas são bastante simples, e eventualmente podem até ser executadas através de sua ferramenta de configuração preferida. Mais frequentemente, você irá executá-las diretamente, via linha de comando. Por exemplo, no laboratório montado para este artigo, o micro com Windows 98 (cujo nome na rede é OEMComputer, e o endereço IP é 10.9.20.71) tem a pasta C:\DOWNLOAD compartilhada como somente-leitura, com o nome de DOWNLOAD e a senha LINCOLN. Montar este compartilhamento a partir do Linux é fácil, e não precisa de alterações no arquivo smb.conf.

    Em primeiro lugar, o ideal é verificar se os compartilhamentos estão corretos. Digitando o comando "smbclient -NL OEMcomputer -I 10.9.20.71", o Samba fornece diversas informações sobre os compartilhamentos no computador OEMcomputer, incluindo as linhas que nos interessam especialmente:

            Sharename      Type      Comment
            ---------      ----      -------
            DOWNLOAD       Disk      
    

    Agora que vimos que o compartilhamento realmente está visível através da rede, é o momento de montá-lo (ou "mapeá-lo", na terminologia do Windows).

    Em primeiro lugar, certifique-se de que existe um diretório local adequado para a montagem. No nosso caso, através do comando "mkdir /mnt/win98", criamos o diretório /mnt/win98. A seguir, basta executar a montagem propriamente dita:

      mount -t smbfs //oemcomputer/download /mnt/win98/ -o password=lincoln
    

    O nome "oemcomputer" deve constar corretamente no seu servidor DNS, ou no arquivo /etc/hosts da máquina Linux. Caso o servidor rode Windows NT, ou esteja usando compartilhamento por usuário, ao invés de utilizar o parâmetro "password=lincoln", use "username=usuario%senha".

    Se o comando mount for bem-sucedido, você poderá ver os arquivos do seu micro Windows no diretório /mnt/win98/ - experimente digitar "ls /mnt/win98" para verificar. Nosso compartilhamento no Windows é para somente-leitura, mas se habilitássemos a escrita, você poderia tranquilamente gravar arquivos no diretório, e a gravação ocorreria na máquina Windows. Ao final da operação, basta digitar "umount /mnt/win98/" para encerrar a montagem.

    Acessar impressoras remotas baseadas em Windows é um pouco mais complicado. Você pode utilizar ferramentas de configuração como o printtool (incluído em algumas distribuições, como a Red Hat e a Conectiva), ou o YaST (do SuSE) e definir os parâmetros interativamente, ou editar diretamente seus arquivos de configuração. A edição manual do /etc/printcap pode ser uma tarefa complexa, mesmo quando a impressora não está em rede. Assim, se você não quiser, ou não puder optar por usar ferramentas automatizadas, siga as instruções do SMB-HOWTO (no quadro "Para Saber Mais") sobre como configurar manualmente.

    Concluindo

    A integração entre tecnologias de rede diferentes é uma necessidade comum. O Windows certamente é o sistema mais usado na atualidade, tornando assim muito comum a necessidade de fazer com que seus equipamentos com Linux "conversem" com os produtos desenvolvidos pela Microsoft. O Samba desempenha esta tarefa com maestria, e embora mal tenhamos arranhado a superfície de seus recursos neste artigo, os links da seção "Para Saber Mais" podem ajudar nos seus próximos passos.

    Para saber mais

    A história do Samba: http://www.linux-mag.com/1999-09/samba_01.html 
    Linus explica a origem do pinguim: http://www.linux.org.au/org/penguin.phtml
    eWeek analisa o Samba 2.2: 
      http://www.zdnet.com/eweek/stories/general/0,11011,2712294,00.html
    Site oficial, com muita documentação: http://www.samba.org/
    Printtool: http://linuxberg.surfnet.nl/x11html/preview/9891.html
    SMB-HOWTO: http://linuxdoc.org/HOWTO/SMB-HOWTO.html
    Samba - Servidor NetBIOS para Linux: http://linux.trix.net/samba_intro.htm
    Como configurar o Samba 2.0.x: http://linux.trix.net/manusmb_intro.htm
    LinNeighborhood: http://www.bnro.de/~schmidjo/
    


    O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.