Prévia do material em texto
Samba: Integração Unix e Windows® Alexandre Folle de Menezes Carlos E. Morimoto David Wood Elvis Pfützenreuter Victor F. F. Zucarino Tradução Oficial Alfamídia Alexandre Folle de Menezes Versão 1.3, setembro/2002. As marcas registradas utilizadas no decorrer deste livro são usadas unicamente para fins didáticos, sendo estas propriedade de suas respectivas companhias. A Alfamídia não assume qualquer responsabilidade por erros ou omissões, ou por danos resultantes do uso das informações contidas neste livro. Parte dos capítulos 1 e 3, mais os capítulos 6 e 14, e o Apêndice A são adaptações do texto: Manual de Configuração do SAMBA Copyright © 2001 – Victor F. F. Zucarino <vffzbr@yahoo.com.br> Fonte: http://geocities.yahoo.com.br/vffzbr/manual.html Parte dos capítulos 1 e 3, mais os capítulos 4, 5, 7 e 9 são adaptações do texto: SMB-HOWTO Copyright © 1996-1999 – David Wood <dwood@plugged.net.au>. Fonte: http://www.ibiblio.org/pub/Linux/docs/HOWTO/other- formats/html_single/SMB-HOWTO.html O capítulo 2 é uma adaptação do texto: Samba: Servidor NetBIOS para Unix Copyright © 1999 – Elvis Pfützenreuter <info@rootshell.com.br> Fonte: http://www.linux.trix.net/samba_intro.htm O capítulo 13 é uma adaptação do texto: Entendendo e utilizando o Linux Copyright © 1999 – Carlos E. Morimoto <morimoto@guiadohardware.net> Fonte: http://www.guiadohardware.net/tutoriais/entendendo_e_utilizando_o_linu x/26.asp Parte do capítulo 1 e os capítulos 8, 9, 11 e 12 foram escritos por: Copyright © 2002 por Alexandre Folle de Menezes <menezes@alfamidia.com.br> Tradução para português - Brasil, 2002: Alfamídia Ltda Rua Félix da Cunha, 818 Porto Alegre - RS - Brasil Fone/Fax: +55 (51) 3346-7300 E-mail: alfamidia@alfamidia.com.br URL: http://www.alfamidia.com.br Esta apostila é uma coletânea de textos com licença GNU ou livres 4 encontrados na Internet, conforme referências acima. Este material foi totalmente montado com fins didáticos, sem objetivo comercial. Foram acrescentados exemplos e exercícios desenvolvidos pela Alfamídia Ltda. CONTEÚDO CONTEÚDO ................................................................................................................... 5 1 INTRODUÇÃO ........................................................................................................ 9 1.1 CONCEITOS INICIAIS............................................................................................. 10 1.2 HISTÓRICO DO SAMBA .......................................................................................... 10 1.3 CONHECENDO O SAMBA........................................................................................ 11 1.4 INFORMAÇÕES ADICIONAIS................................................................................... 12 2 O PROTOCOLO NETBIOS ................................................................................. 13 2.1 O QUE É O NETBIOS............................................................................................. 13 2.2 NAVEGADOR-MESTRE LOCAL (LOCAL MASTER BROWSER) ................................. 15 2.3 NAVEGADOR-MESTRE DO DOMÍNIO (DOMAIN MASTER BROWSER) ..................... 16 2.4 ULTRAPASSANDO AS FRONTEIRAS DA REDE LOCAL ............................................. 16 2.5 SERVIDOR WINS................................................................................................... 17 2.6 A DANÇA DA COMUNICAÇÃO INTER-REDES.......................................................... 18 2.7 AUTENTICAÇÃO DE USUÁRIOS .............................................................................. 20 2.8 SENHAS CRIPTOGRAFADAS ................................................................................... 21 3 INSTALAÇÃO ....................................................................................................... 22 3.1 PACOTES RPM...................................................................................................... 22 3.2 PACOTES TAR ........................................................................................................ 22 4 EXECUTANDO OS DAEMONS.......................................................................... 24 5 CONFIGURAÇÃO MÍNIMA ............................................................................... 27 5.1 TESTE DO ARQUIVO DE CONFIGURAÇÃO ............................................................. 28 6 ACESSANDO SERVIDORES ATRAVÉS DE ESTAÇÕES LINUX................ 30 6.1 O SMBCLIENT ........................................................................................................ 30 6.2 O SMBPASSWD .......................................................................................................... 31 6.3 O SMBSTATUS .......................................................................................................... 32 6.4 O TESTPRNS ............................................................................................................ 32 6.5 EXEMPLO DE LOGIN SCRIPT PARA ESTAÇÕES WINDOWS ................................... 34 7 COMPARTILHAMENTO DE DISCOS.............................................................. 35 7.1 COMPARTILHAMENTO DE DISCO LINUX COM MÁQUINAS WINDOWS.................. 35 7.1.1 CONFIGURAR O SAMBA PARA USAR SENHAS CRIPTOGRAFADAS........................... 36 7.1.2 CONFIGURAR O WINDOWS PARA NÃO USAR SENHAS CRIPTOGRAFADAS .............. 37 7.2 COMPARTILHAMENTO DE DISCO WINDOWS COM MÁQUINAS LINUX.................. 38 7.2.1 O PACOTE SMBFS.................................................................................................. 40 6 8 DIFERENÇAS ENTRE SISTEMAS DE ARQUIVOS ....................................... 42 8.1 OCULTANDO E VETANDO ARQUIVOS.................................................................... 42 8.1.1 OPÇÃO HIDE DOT FILES ..................................................................................... 42 8.1.2 OPÇÃO HIDE FILES ............................................................................................. 42 8.1.3 OPÇÃO VETO FILES ............................................................................................. 42 8.1.4 OPÇÃO DELETE VETO FILES = YES|NO ............................................................. 43 8.1.5 OPÇÃO DONT DESCEND ......................................................................................... 43 8.1.6 OPÇÃO UNIX REALNAME = YES|NO..................................................................... 43 8.2 LINKS..................................................................................................................... 43 8.3 PERMISSÕES E ATRIBUTOS ................................................................................... 44 9 COMPARTILHAMENTO DE IMPRESSORAS................................................ 45 9.1 COMPARTILHAMENTO DE IMPRESSORA LINUX COM MÁQUINAS WINDOWS....... 45 9.2 COMPARTILHAMENTO DE IMPRESSORA WINDOWS COM MÁQUINAS LINUX....... 48 10 O WINS NO SAMBA............................................................................................. 59 10.1 O DAEMON NMBD................................................................................................... 59 10.2 O SAMBA COMO CLIENTE WINS ....................................................................... 59 10.3 O SAMBA COMO SERVIDOR WINS ..................................................................... 60 11 O SAMBA ATUANDO COMO PDC ................................................................... 61 11.1 DOMÍNIOS DO WINDOWS .................................................................................... 61 11.2 CONFIGURANDO O SERVIDOR SAMBA ................................................................ 61 11.2.1 CLIENTES WINDOWS 9X .................................................................................... 61 11.2.2 CLIENTES WINDOWS NT ................................................................................... 62 11.2.2.1 Criando contas confiáveis (trusted accounts) ................................................63 11.3 LIMITAÇÕES DO SAMBA NA INTEGRAÇÃO COM WINDOWS NT......................... 64 12 ARQUIVOS DE LOG DO SAMBA...................................................................... 65 12.1 OPÇÃO LOG FILE ................................................................................................. 66 12.2 OPÇÃO MAX LOG SIZE ......................................................................................... 66 13 CONFIGURANDO O SAMBA REMOTAMENTE ........................................... 67 13.1 UTILIZANDO O SWAT ........................................................................................ 67 13.2 ACESSANDO COMPARTILHAMENTOS DE MÁQUINAS WINDOWS......................... 71 13.3 CONFIGURANDO MANUALMENTE ....................................................................... 73 14 CONSIDERAÇÕES ............................................................................................... 75 APÊNDICE A. LICENÇA DE PUBLICAÇÃO LIVRE........................................ 77 APÊNDICE B. CONFIGURAÇÃO GERAL.......................................................... 80 B.1. CONHECENDO OS PARÂMETROS.......................................................................... 82 7 B.1.1. SEÇÃO [GLOBAL]............................................................................................... 82 B.1.2. SEÇÃO [HOMES]................................................................................................. 85 B.1.3. DEMAIS SEÇÕES [SHARES]................................................................................ 86 APÊNDICE C. VARIÁVEIS PRÉ-DEFINIDAS.................................................... 88 9 1 INTRODUÇÃO O Samba é um dos softwares mais populares do mundo Linux. Ele é composto por ferramentas que usam os protocolos de rede NetBIOS e SMB (Server Message Block), e permite que uma máquina Linux atue como servidor ou estação de trabalho em redes heterogêneas. Ainda que este documento seja voltado para Linux, o Samba roda na maioria dos sistemas Unix e compatíveis. Antes de começar vamos entender o que é o Samba. Em uma rede é necessário compartilhar dados, por isso temos que pensar em obter o máximo em qualidade do Sistema/Aplicação que será o responsável por esta tarefa. Com o SAMBA é possível compartilhar diretórios, impressoras, acessar arquivos na rede exatamente como em redes Microsoft. Mas neste caso, seu servidor é um Linux rodando uma aplicação específica. O Windows NT e o 2000 (assim como o NetWare 5 e outros presentes no mercado) são reconhecidos mundialmente por sua segurança e escalabilidade, mas o SAMBA possui muitas vantagens que podem se transformar em soluções e economia para sua empresa. Confira: • Permite compatibilidade com estações Windows (de WfW a 2000) e servidores WinNT 4.0 e 2000. Entre servidores e estações Linux (com Interface Gráfica por exemplo) a compatibilidade é total. • O SAMBA é 100% configurável, com a grande vantagem de centralizar esta configuração em um único arquivo, o smb.conf. Sem dúvida é muito interessante ter a possibilidade de restaurar toda a configuração que disponibiliza seu Servidor de Arquivos (inclusive as permissões de acesso) através do backup de apenas 1 arquivo, em casos de desastre. Porém isso não quer dizer que não seja necessário o backup de outros arquivos de configuração... • Todo o SAMBA pode ser configurado remotamente através de acesso seguro, além do recebimento por email de informações do estado do servidor (bastando utilizar um script específico que busca informações nos arquivos de log e cria um arquivo que pode ser enviado por email). • Em se falando de economia não há o que discutir: o Linux e o SAMBA estão disponíveis para download na Internet sem ônus algum para qualquer usuário comum ou empresa que se interesse em utilizá-lo, sem custos com licenças ou atualizações. • As mais recentes distribuições já trazem o SAMBA como padrão, mas seu download e atualizações estão disponíveis em http://www.samba.org/ • O suporte está disponível 24h por dia, o ano todo: além do próprio site do SAMBA existem milhares de sites e listas de discussão dedicadas ao assunto, entre outras documentações e artigos em sites de renome por Administradores e Engenheiros de Redes 10 Linux. Muita coisa já está em nosso idioma facilitando os iniciantes e interessados em leitura. Muitos sites nacionais são especializados em Linux e Segurança para Linux. O Samba vem substituindo vários servidores Windows, OS/2, Netware e Unix. Se for necessária uma solução estável e segura para Servidor de Arquivos da rede, o SAMBA é uma grande opção. Há também a vantagem de ser licensiado pela GPL, com livre distribuição, sem limite de usuários ou custos por licença. 1.1 Conceitos Iniciais O protocolo SMB é usado pelo Microsoft Windows 3.11, Windows NT e Windows 95/98 para compartilhar discos e impressoras. Usando o conjunto de ferramentas do Samba de Andrew Tridgell (Andrew.Tridgell@anu.edu.au), máquinas UNIX (incluindo Linux) podem compartilhar discos e impressoras com máquinas Windows. As ferramentas smbfs de Paal-Kr. Engstad (engstad@intermetrics.com) e Volker Lendecke (lendecke@namu01.gwdg.de) habilitam máquinas Unix a montar compartilhamentos SMB de hospedeiros Windows ou SAMBA. 1.2 Histórico do Samba Os sistemas operacionais da série Windows seguem a tradição iniciada ainda nos tempos do DOS de compartilhar seus recursos, como 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 nas especificações do CIFS. O conjunto SMB/CIFS pode ter uma série de desvantagens técnicas, mas 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 cujo número é imenso. Entretanto, o SMB não tinha suporte nativo no Unix, o que dava margem a todo tipo de problemas para os administradores de redes mistas, pois tinham que instalar clientes Unix de protocolos "tradicionais" como NFS, LPD, nas máquinas Windows ou moviam os serviços para os servidores NT, que, na época, ainda eram uma novidade, abrindo mão da robustez e das demais vantagens. É neste ponto que surge em nosso cenário o estudante australiano Andrew Tridgell, que na busca por razões para adiar o início de sua tese, resolveu entender como funcionava o Pathworks, um servidor de arquivos da Digital. A conseqüência direta foi o surgimento de um sistema capaz de exportar sistemas de arquivos de máquinas Unix, de forma que pudessem 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 11 Windows, o SMB, e logo outros usuários descobriram que podiam usar o mesmo software para se comunicarem 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. Aliás, a documentação do Samba diz que até hoje a esposa dele imprime documentos, a partir do Windows, na impressora conec-tada à 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, e 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 performancesuperior à 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. De fato, empresas como a SGI, Veritas, HP, Cobalt e Whistle comercializam produtos que incluem suporte a compartilha-mentos 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 GPL de sua distribuição 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 pingüim - fato que teve papel vital, anos mais tarde, na escolha desta ave como símbolo do Linux. 1.3 Conhecendo o Samba O Samba oferece a maior parte das funcionalidades dos servidores Windows, sem a necessidade de adquirir suas dispendiosas licenças e, melhor do que isso, sem expor sua rede às famosas telas azuis da morte, nem à necessidade de reinicializações a cada mudança de configuração. O Samba é um produto maduro, flexível e muito 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 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 até atuar como o controlador primário do domínio (PDC), tarefa normalmente exclusiva do Windows NT 4 Server. Encontramos na literatura relatos de domínios com PDCs baseados em Samba, nos quais conviviam simultânea e pacificamente máquinas rodando 12 NT Workstation 4.0, com o service pack 6a; Windows 2000 Professional, com o service pack 1; Win-dows 2000 Server, com o service pack 1; e até 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 con- figurado 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 a jato de tinta conectada a um micro rodando Win-dows 98, ou montar, "mapear", um diretório 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 nisso. Alguns, porém, podem ser antecipados aqui: É importante notar que, ao menos até a versão 2.2, quando atua co-mo PDC, o Samba não suporta a presença de um BDC 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. 1.4 Informações adicionais Mais documentação sobre o Samba está disponível no Samba Web site, localizado em http://www.samba.org/. Você também pode tentar o newsgroup comp.protocols.smb. Para mais informações, favor veja os seguintes documentos: • The Samba documentation, disponível como parte da distribuição Samba. A distribuição está disponível em: ftp://ftp.samba.org/ • The Linux Printing HOWTO. • The Print2Win Mini-HOWTO. • Protocol Standard For A NetBIOS Service On A TCP/UDP Transport. • As RFCs que definem os protocolos: o RFC 1001 Concepts and Methods. o RFC 1002 Detailed Specifications. 13 2 O PROTOCOLO NETBIOS O protocolo NetBIOS foi concebido para ser simples de configurar e usar em redes pequenas. Porém, essa aparente simplicidade desaparece em qualquer instalação que contém duas ou mais redes Ethernet. É o que eu chamo de "curva de aprendizado exponencial", característica que o NetBIOS compartilha com o Windows, Visual Basic e assim por diante. Outros procolos (TCP/IP) e softwares (Linux) obrigam seus usuários a ter um conhecimento relativamente profundo por mais simples que seja a tarefa; porém não reservam "surpresas" para instalações de complexidade crescente. Portanto, desenham uma curva de aprendizado logarítmica, de que tanto gostam os Linuxers. Erro! Argumento de opção desconhecido.Não obstante, o NetBios - assim como o DHCP, para quem o conhece - tem o seu valor, e, uma vez dominados seus conceitos, pode ser útil e muito adequado até mesmo em redes sem máquinas Windows. 2.1 O que é o NetBIOS Erro! Argumento de opção desconhecido.NetBIOS é um protocolo de transporte e de sessão, de uso geral, mas primariamente destinado a serviços de arquivo e impressão. Nesse último aspecto, é semelhante ao protocolo NCP da Novell. Porém o NCP é um protocolo de sessão; o transporte é feito pelo protocolo subjacente IPX (embora será muito difícil encontrar uma instalação onde IPX e NCP não estejam "empilhados"). Erro! Argumento de opção desconhecido.Para quem não sabe, protocolo de transporte é aquele que leva UM pacote de rede da origem até o destino. Protocolo de sessão encarrega-se de dividir seqüências arbitrariamente longas de dados em pacotes (então transportados pelo protocolo de transporte) e remontá-las no destino, possivelmente ordenando a retransmissão de pacotes perdidos etc. No protocolo TCP/IP, o IP é encarregado do transporte e o TCP, da sessão. Erro! Argumento de opção desconhecido.Como o protocolo NetBios é capaz de cuidar do transporte, não precisa ser "carregado" por nenhum outro protocolo; pode ser constituído como pacote de rede e transmitido. É isso que o protocolo NetBEUI da Microsoft faz - pega os pacotes NetBIOS in natura e transmite-os rede afora. Porém, o NetBIOS não é nativamente capaz de ser roteado; portanto, fica "preso" à rede local. Erro! Argumento de opção desconhecido.Uma possível solução é programar os roteadores para que retransmitam pacotes NetBIOS às outras redes; assim, o pacote NetBIOS/NetBEUI acabará atingindo o seu destino, pois é recebido e analisado por absolutamente todos os computadores da organização. Essa solução tem o inconveniente de gerar um tráfego de rede infernal, e ainda mais infernal de a comunicação inter-redes for feita através de links de baixa velocidade. 14 Erro! Argumento de opção desconhecido.Outra solução é encapsular o NetBIOS em um protocolo de transporte que seja roteável, como o IPX ou o TCP/IP. De fato, a forma mais comum de se usar serviços NetBIOS hoje é através de TCP/IP - e é a única forma suportada pelo Samba. Como o NetBIOS não é nativamente roteável e não aceita o conceito de endereço IP ou IPX, várias extensões foram criadas para torná-lo mais adequado a uma instalação com diversas redes locais. Veremo-nas todas ao longo deste texto. Erro! Argumento de opção desconhecido.Como o Samba suporta apenas NetBIOS encapsulado em TCP/IP, daqui por diante não falaremos mais sobre outras encapsulaçòes. Apenas vale lembrar que, ao configurar suas máquinas Windows, procure não misturar encapsulamentos diferentes. i.e. usar NetBIOS encapsulado em IPX, TCP/IP e NetBEUI todos ao mesmo tempo. Isso pode ser fonte de inúmeros problemas intermitentes e dores de cabeça. Tire o NetBEUI da lista de protocolos suportados e, se precisar usar IPX, certifique-se de que não está habilitado o transporte de NetBIOS sobre IPX. Erro! Argumento de opção desconhecido.Como o NetBIOS se obriga a cuidar do transporte, e ao mesmo tempo não suporta números IP, ele trabalha com técnicas de broadcasting. Uma vez lançado um pacote na rede local, todas as máquinas receberão e analisarão esse pacote; apenas aquela que for a máquina-destino deverá assimilaro pacote. Obviamente existe uma identificação da máquina de destino, que é um NOME de até 15 caracteres (doravante chamado de "nome NetBIOS da máquina") e não um endereço númérico. Isso é muito diferente de uma comunicação TCP/IP "normal", onde as próprias placas de rede determinam se o pacote lhes pertence ou não, sem envolver processamento de software. Erro! Argumento de opção desconhecido.O TCP/IP permite fazer broadcasting de uma forma muito simples: supondo uma rede local 10.30.0.0/16, o endereço de broadcasting é 10.30.255.255. Um pacote IP emitido com esse endereço será analisado a nível de software por todas as máquinas daquela rede local. É exatamente esse expediente que o NetBIOS utiliza para forçar broadcasting mesmo quando encapsulado em TCP/IP. Erro! Argumento de opção desconhecido.O uso massivo de broadcasting torna o NetBIOS muito simples de usar em redes isoladas, pois não é necessário saber muito sobre endereços IP para que as máquinas enxerguem umas às outras. É claro que existe o custo (relativamente pequeno) de processamento, pois todas as máquinas tem de analisar todos os pacotes NetBIOS a nível de software. Erro! Argumento de opção desconhecido.Como já foi dito, o broadcasting não combina muito bem com instalações onde há várias redes locais interligadas por roteadores. Os pacotes de broadcast não conseguem ultrapassar a fronteira do roteador. O contorno dessa limitação está descrito no tópico 4. 15 2.2 Navegador-mestre local (local master browser) Erro! Argumento de opção desconhecido.Um dos aspectos mais interessantes e desconhecidos do NetBIOS está na "eleição" do navegador- mestre local, descrito na documentação do Samba como local master browser, e doravante aqui chamado de "mestre". Periodicamente, os computadores de uma rede local trocam pacotes para determinar quem tem o maior OS level. O OS level (doravante chamado de "nível") é nada mais que um número de 0 a 255. Se não me falha a memória, o nível do Windows 95 é 001 (decimal!), o do Windows NT é 032, e o nível padrão (porém alterável) do Samba é 033. Erro! Argumento de opção desconhecido.O computador com maior nível vencerá a eleição. Se houver mais de um computador com o mesmo nível, haverá um desempate por critérios aleatórios. Mesmo que a rede tenha apenas computadores Windows 95, todos com um número de nível muito baixo, um deles acabará sendo o escolhido. Erro! Argumento de opção desconhecido.O computador vencedor ficará responsável em compilar uma lista das máquinas presentes na rede local. Não surpreendentemente, ele usará técnicas de broadcasting para esse fim. Os demais computadores obterão essa lista junto ao mestre. É justamente essa lista que aparece na janela "Ambiente de Rede" do Windows. Erro! Argumento de opção desconhecido.É importante entender que, numa rede local, há apenas um computador tomando conta da lista. Pode até parecer, pela demora no surgimento da janela, que cada computador desbrava a rede por conta própria, mas NÃO é isso que acontece. Erro! Argumento de opção desconhecido.Agora a primeira "pedra" onde alguém pode tropeçar. O Windows NT não gosta de perder a eleição para o Samba se ambos tiverem o mesmo OS level. Portanto, nunca configure o Samba com o mesmo OS level que o Windows NT. Configurar o Samba para que ele nunca vença a eleição para mestre, ou então use o maior nível possível (255). Erro! Argumento de opção desconhecido.Note que todo esse processo ocorre dentro de uma rede local. O fato de um computador ser o mestre de uma rede (ainda) não lhe dá o poder de enxergar as demais redes da instalação. Isso é assunto para o tópico 4. Erro! Argumento de opção desconhecido.Um detalhe importantíssimo: mesmo dentro de uma única rede local, haverá um mestre para cada grupo de trabalho (workgroup). Portanto, se você quer que todas as máquinas se enxerguem, tome o cuidado de configurá-las todas com o mesmo grupo de trabalho. Ou, se deseja isolar grupos de máquinas dentro de uma rede isolada, configure deliberadamente com grupos diferentes. Erro! Argumento de opção desconhecido.O sintoma mais aparente de um computador com grupo de trabalho configurado incorretamente é o fato de ele não enxergar nenhum computador na janela Ambiente de Rede; quando muito, enxerga apenas o grupo de trabalho. Exemplo: o grupo de trabalho é VITARA e um computador está configurado para o grupo VITARE. Esse último computador está num grupo isolado e tornar-se-á o mestre daquele grupo. Obviamente, a lista que ele mesmo compilou só contém um computador, pois 16 as demais máquinas da rede estão em outro grupo de trabalho e elegeram outro mestre. Erro! Argumento de opção desconhecido.Se o computador-mestre for desligado, alguma outra máquina procurará pelo mestre, e não o achará. Nesse caso, uma nova eleição é efetuada. Esse é um ponto interessante do NetBIOS: redundância automática. 2.3 Navegador-mestre do domínio (domain master browser) Erro! Argumento de opção desconhecido.Forçando um pouco os conceitos, pode-se dizer que um domínio é um grupo de trabalho onde haja pelo menos um computador "responsável" por ele - é o mestre do domínio. (Temos aqui um conceito recursivo, eu acho.) Erro! Argumento de opção desconhecido.No mundo Windows NT, o mestre do domínio é o próprio PDC - primary domain controller. Já o Samba, que ainda não suporta completamente todas as funções de um controlador de domínio NT1, pode ser explicitamente configurado para ser apenas o navegador-mestre do domínio. Erro! Argumento de opção desconhecido.O mestre do domínio compilará a lista de TODAS as máquinas do grupo de trabalho, mesmo que estejam em outras redes locais. Além disso, por ser uma máquina privilegiada, vencerá sempre as eleições para mestre da rede local, pois não faria sentido haver um mestre local e um mestre de domínio separados. Erro! Argumento de opção desconhecido.Deve haver APENAS UM mestre de domínio por domínio. Tenha em mente que o NT costuma ser configurado em tempo de instalação para ser o mestre do domínio. Tome cuidado com isso ao instalar outras máquinas NT, e principalmente, não configure o Samba para ser mestre de domínio sem antes verificar as configurações dos servidores NT. Como não existe eleição para mestre de domínio, a presença de mais de um mestre é fonte certa de problemas, principalmente se um dos pretensos mestres de domínio for NT. Erro! Argumento de opção desconhecido.Agora, resta saber como o mestre do domínio consegue descobrir os nomes das máquinas de fora da rede local. As bases estão nos tópicos 4 e 5, e o mecanismo prático está descrito no tópico 6. 2.4 Ultrapassando as fronteiras da rede local Erro! Argumento de opção desconhecido.Como o NetBIOS utiliza-se de broadcasting, fica restrito à rede local, pelo menos nas instalações "sérias". 1 Uma versão futura do Samba deve trazer suporte completo a controle de domínio e BDCs. 17 Para que o NetBIOS possa ultrapassar as fronteiras da rede local, três mecanismos são necessários: Erro! Argumento de opção desconhecido.- capacidade de comunicar- se diretamente com outros computadores pelo número IP, pois só assim os roteadores aceitarão transportar os pacotes; Erro! Argumento de opção desconhecido.- capacidade de traduzir nomes NetBIOS para números IP, para que o usuário não perca a comodidade de usar nomes NetBIOS; Erro! Argumento de opção desconhecido.- capacidade de compilar listas que contenham todos os computadores de todas as redes da instalação. Erro! Argumento de opção desconhecido.A implementação da Microsoft para o protocolo NetBIOS foi estendida de modo a cumprir o primeiro quesito, e uma extensão "externa" ao NetBIOS, denominada WINS, cumpre os demais quesitos. Erro! Argumento de opção desconhecido.Assim, modernamente o NetBIOS não depende mais exclusivamente do broadcasting para fazer o transporte. Se houver um mecanismo qualquer que identifique o número IP da máquina de destino, o pacote NetBIOS encapsulado em TCP/IP será mandadodiretamente ao IP do computador-destino, mesmo que esse IP esteja fora da rede local, pois os roteadores serão capazes de transportá-lo. É possível inclusive trafegar NetBIOS pela Internet pública ! Erro! Argumento de opção desconhecido.O mecanismo mais primitivo de tradução de nomes NetBIOS para endereços IP é o arquivo c:\windows\lmhosts ou /etc/lmhosts. É uma lista pura e simples dos nomes NetBIOS com os endereços IP ao lado. Logo descobre-se as desvantagens desse mecanismo: cada computador tem de ter a sua lista, as atualizações também precisam ser feitas em todas as máquinas, e os computadores desse arquivo não aparecem na janela Ambiente de Rede. O ideal seria que a tradução funcionasse de modo análogo ao DNS. 2.5 Servidor WINS Erro! Argumento de opção desconhecido.Entra o serviço WINS, que opera de modo análogo ao DNS. Note que eu disse análogo, e não semelhante, nem paralelo, nem igual. O WINS é contactado diretamente pelo número IP - nada de broadcasting para localizar o servidor WINS, até porque ele não faz parte do NetBIOS em si. Erro! Argumento de opção desconhecido.O WINS não tem um cadastro estático de computadores. Ele recebe informações de todos os computadores da instalação e, dinamicamente, vai formando uma lista de todos os computadores da rede: nomes NetBIOS, grupos de trabalho e os respectivos endereços IP. O servidor WINS mantém cadastros de todas as máquinas da instalação, independentemente do grupo de trabalho. Por isso mesmo, deve haver apenas um servidor WINS na instalação inteira, mesmo que haja vários grupos de trabalho e/ou mestres de domínio. 18 Erro! Argumento de opção desconhecido.NÃO confunda o servidor WINS com o mestre do domínio. Embora é comum rodar o WINS na própria máquina que foi designada como mestre do domínio, é perfeitamente possível que os dois residam em computadores separados! Erro! Argumento de opção desconhecido.Também lembre-se que não existe nenhuma integração automática entre DNS e WINS, mesmo que ambos rodem no mesmo servidor. O fato de cadastrar o nome DNS de um computador não significa que o servidor WINS vá passar a conhecer o endereço IP do mesmo. Erro! Argumento de opção desconhecido.Existem alguns mecanismos de fallback onde o nome NetBIOS é consultado junto ao servidor DNS se o servidor WINS não responder à consulta, mas a própria documentação do Samba desaconselha seu uso. Em grandes instalações com muitas estações de trabalho, é muito comum (e aconselhável) o uso de DHCP, o que torna o DNS completamente inútil para acesso inter-estações. 2.6 A dança da comunicação inter-redes Erro! Argumento de opção desconhecido.O documento BROWSING- Config.txt contém uma excelente descrição de como o mestre de domínio consegue compilar a lista de todos os computadores de uma instalação. Considere a descrição a seguir uma cópia pálida e "mastigada". Erro! Argumento de opção desconhecido.Suponha que haja três redes locais interligadas por roteadores: A, B e C. Suponha também que em cada rede haja cinco computadores, e que todos, independentemente do sistema operacional, ofereçam serviços NetBIOS. Suponha também que: Erro! Argumento de opção desconhecido.- O nome do grupo de trabalho/domínio seja ACME; Erro! Argumento de opção desconhecido.- O computador A2 seja o mestre de domínio; Erro! Argumento de opção desconhecido.- O computador A3 seja o servidor WINS e seu IP é 10.30.14.56; Erro! Argumento de opção desconhecido.- Todos os computadores estejam configurados corretamente e "saibam" que o endereço IP do servidor WINS é 10.30.14.56; Erro! Argumento de opção desconhecido.- Os computadores A1, B1 e C1 estejam rodando o Samba e, exceto por A1, estejam programados para vencer as eleições para mestre local. Erro! Argumento de opção desconhecido.Tão logo os computadores sejam ligados, haverá eleições para mestre em cada uma das redes locais. Nas redes B e C, os computadores B1 e C1 vencerão. Na rede A, o computador A2 vencerá a eleição pois é o mestre do domínio e isso lhe dá preponderância sobre todas as outras máquinas da rede. 19 Erro! Argumento de opção desconhecido.O mestre do domínio (A2) registrará o domínio junto ao servidor WINS (A3). Da mesma forma, todas as outras máquinas registrarão seus nomes NetBIOS, grupos de trabalho e números IP junto ao servidor WINS. Erro! Argumento de opção desconhecido.Os computadores começarão a anunciar a si mesmos por pacotes de broadcast. Atentos, os mestres locais compilarão uma lista das máquinas de cada rede. Nesse instante, os mestres de cada rede local conterão as seguintes listas de computadores: Erro! Argumento de opção desconhecido.A2: -> A1, A2, A3, A4, A5 Erro! Argumento de opção desconhecido.B1: -> B1, B2, B3, B4, B5 Erro! Argumento de opção desconhecido.C1: -> C1, C2, C3, C4, C5 Erro! Argumento de opção desconhecido.Até agora, nenhuma rede tem conhecimento da existência das demais redes. Erro! Argumento de opção desconhecido.Cada um dos computadores de todas as redes vai contactar o servidor WINS (A3) e registrar- se junto a ele. Nesse ponto, o servidor WINS conhece os nomes NetBios, grupos de trabalho e endereços IP de todas as máquinas. Como o WINS funciona independente do mestre de domínio A2, este último continua com sua lista incompleta. Erro! Argumento de opção desconhecido.Cada mestre local (B1 e C1) contacta o servidor WINS e descobre o endereço IP do mestre de domínio (A2.). A seguir, o mestre local contacta o mestre do domínio e transmite a ele a lista de todas as máquinas do grupo de trabalho. Em troca, o mestre de domínio transmite ao mestre local a lista geral dos computadores do domínio. Supondo que os mestres locais B1 e C1 contactem o mestre de domínio A2 em ordem, as listas em cada servidor ficarão assim: Erro! Argumento de opção desconhecido.A2: -> A1, A2, A3, A4, A5, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5 Erro! Argumento de opção desconhecido.B1: -> B1, B2, B3, B4, B5, A1, A2, A3, A4, A5 Erro! Argumento de opção desconhecido.C1: -> C1, C2, C3, C4, C5, A1, A2, A3, A4, A5, B1, B2, B3, B4, B5 Erro! Argumento de opção desconhecido.O servidor B1 contactou A2 antes de C1. Naquele instante, A2 ainda não sabia que a rede C existia. Por isso, a lista do servidor B1 ficou prejudicada. Já o servidor C1 contactou o mestre de domínio A2 quando este último já tinha recebido a lista da rede B. (Está claro que a lista da rede "A" tinha sido compilada pelo próprio mestre do domínio A2.) Erro! Argumento de opção desconhecido.Dentro de 15 minutos, os mestres locais contactarão novamente o mestre de domínio para retransmitir e atualizar as listas. Nesse momento, o mestre de domínio A2 já conhece a rede inteira, e o mestre local B1 poderá completar sua lista: Erro! Argumento de opção desconhecido.A2: -> A1, A2, A3, A4, A5, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5 20 Erro! Argumento de opção desconhecido.B1: -> B1, B2, B3, B4, B5, A1, A2, A3, A4, A5, C1, C2, C3, C4, C5 Erro! Argumento de opção desconhecido.C1: -> C1, C2, C3, C4, C5, A1, A2, A3, A4, A5, B1, B2, B3, B4, B5 Erro! Argumento de opção desconhecido.Agora, todos os computadores da rede aparecerão na janela "Ambiente de Rede" de qualquer das estações. Erro! Argumento de opção desconhecido.Lembre-se sempre disto: a lista de máquinas NÃO vai aparecer completa imediatamente. Pode levar até 30 minutos até que todos os mestres locais tenham a lista completa da rede. Da mesma forma, se um dos computadores for desligado ou uma rede for desconectada, haverá um lapso de tempo durante o qual a máquina continuará aparecendo nas listas (36 minutos), até que o mestre local da rede desligada finalmente retire-a da lista e informe o fato ao mestre do domínio. Erro! Argumento de opção desconhecido.Supondo agora que o computador C4 quer comunicar-se com o computador A5. Pela lista, ele sabe que o computador A5 existe, mas não sabe qual é seu endereço IP. Então, C4 consulta o servidor WINS, obtém o endereço IP e contacta A5 diretamente, sem usar broadcast. Note bem aqui como o trabalho de compilaçãode listas é independente do servidor WINS. 2.7 Autenticação de usuários Erro! Argumento de opção desconhecido.O Samba suporta quatro formas de autenticação de usuários, reguladas pela linha security = ... do arquivo /etc/smb.conf. Assuma, até segunda ordem, que estamos falando de senhas não criptografadas. Erro! Argumento de opção desconhecido.SHARE: Sem segurança. Todo e qualquer usuário será aceito. As operações de arquivo e impressão serão executadas com as permissões do usuário UNIX associado ao hóspede (guest account = ...). Se você escolher essa modalidade, verifique se o usuário UNIX terá permissões suficientes para acessar arquivos e, se for o caso, imprimir. Erro! Argumento de opção desconhecido.USER: Segurança por usuário, local. A senha do usuário é reduzida a letras minúsculas e confrontada com a senha UNIX. Essa modalidade de segurança obriga que os usuários sejam cadastrados no Linux, e suas senhas sejam atribuídas corretamente. As operações sobre arquivos e de impressão serão feitas com a permissão do respectivo usuário UNIX. Todavia, pode-se abrir aos hóspedes o acesso a determinados volumes ou impressoras - para esses objetos, a segurança operará no estilo SHARE. Erro! Argumento de opção desconhecido.SERVER: Segurança por usuário, remota. O Samba pega o nome de usuário e a senha, e autentica junto a outro servidor, que poderá ser outro Linux rodando Samba, ou um Windows NT. Apesar da autenticação ser remota, ainda é necessário criar os 21 usuários UNIX localmente em determinados casos. (Consulte a linha map to guest = Bad User do arquivo de configuração comentado.) DOMAIN: Segurança por usuário, remota. Praticamente idêntica à modalidade SERVER, porém convive com instalações mais complexas onde existem computadores NT operando como PDCs (primary domain controllers) e BDCs (backup domain controllers). Nesse modo, mais de um servidor de autenticação pode ser especificado na linha password server do arquivo de configuração. É necessário criar uma conta no servidor de domínio para que o Samba identifique a si mesmo junto ao NT. 2.8 Senhas criptografadas Erro! Argumento de opção desconhecido.O Windows 98, bem como versões mais recentes do Windows NT Workstation, transmitem senhas criptografadas no processo de autenticação. Isso torna a configuração do Samba bem mais complicada, especialmente na modalidade USER, pois ele tem de armazenar as senhas num arquivo separado (/etc/smbpasswd), mantida por um utilitário não padrão do Unix (smbpasswd). O esquema de encriptação do NetBIOS é completamente diferente do Unix, portanto não há possibilidade de usar as senhas armazenadas em /etc/passwd. Erro! Argumento de opção desconhecido.A verdade é que as senhas criptografadas não adicionam quase nenhuma segurança ao NetBIOS, por razões diversas. (Portanto, NÃO pense que trafegar NetBIOS na Internet pública é seguro, mesmo usando senhas criptografadas !!!) Sendo assim, por amor à comodidade, o melhor a fazer é configurar o Windows 98/NT para usar senhas não criptografadas. Erro! Argumento de opção desconhecido.Para fazer isso, você deve adicionar um item no Registro do Windows. Consulte o diretório /usr/samba*/docs. Lá você encontrará uns arquivos *.reg que, em conjunção ao REGEDIT do Windows, criam esses itens automaticamente nos diversos "sabores" de Windows. 22 3 INSTALAÇÃO Para usar o Samba, suas máquinas devem estar num único segmento de rede ethernet usando o protocolo TCP/IP. O Samba não funcionará usando outros protocolos de rede. Isto é geralmente fácil já que o Linux e o Windows 95/98/NT vem com suporte TCP/IP de fábrica. No entanto, se você estiver usando máquinas Windows 3.x, elas devem ter um pilha TCP/IP e as DLLs do Win32s. Ambos estão disponíveis no site Web da Microsoft (http://www.microsoft.com). Note também que serviços SMB não podem ser utilizados através de roteadores. Se você quer alguma coisa desse tipo, você terá que configurar um túnel IP, o que está além do escopo deste documento. Se a distribuição utilizada já traz o SAMBA (como o Conectiva, RedHat, Mandrake, Debian, TechLinux, Suse, praticamente todas hoje em dia!), a instalação não é necessária. Se deseja atualizá-lo ou iniciar a instalação, siga os passos a seguir. Para pegar a última versão do Samba, vá nesta URL e escolha o site espelho mais próximo de você: ftp://ftp.samba.org/. Para instalar o SAMBA é necessário antes saber se o pacote obtido está no formato RPM ou .tar (.tgz ou .tar.gz). 3.1 Pacotes RPM Se o pacote for um RPM, execute o comando abaixo: #rpm -ivh samba-2.2.x-i386.rpm Atualmente grande parte das distribuições instalam o conjunto de pacotes samba-common, samba-client e samba-doc juntamente com o pacote samba, criando uma dependência entre estes pacotes. Substitua o "x" pelo número relativo a versão do pacote ou o nome correto do pacote dependendo da sua distribuição. Para atualizar o SAMBA atual, substitua a sintaxe -ivh por -Uvh. 3.2 Pacotes tar Se o pacote veio no formato tar.gz, execute o comando abaixo: #tar -zxvf samba-2.2.x-i386.tar.gz Um diretório será criado com o nome samba-2.0.x. Entre neste diretório e em seguida no subdiretório source. Para iniciar a instalação digite: 23 #./configure Em seguida digite: #make Os binários do SAMBA serão criados. Quando terminar digite: #make install Agora os binários e páginas do man serão instalados. Aguarde o processo e quando terminar confira o diretório /usr/doc/samba-2.2.x/docs para informações sobre o SAMBA. 24 4 EXECUTANDO OS DAEMONS Os seguintes daemons são exigidos pelo pacote Samba. Eles são instalados tipicamente em /usr/sbin e podem ser executados tanto no boot através de scripts de partida do sistema quanto pelo inetd. smbd daemon SMB nmbd serviço de nomes NetBIOS aos clientes Note que o serviço de nomes provido pelo nmbd é diferente daquele provido pelo serviço de nomes de domínio (DNS). O serviço de nomes do NetBIOS é um serviço de nomes "estilo Windows" usado para SMB. Em outras palavras, ter serviço de nomes de domínio DNS não diz nada sobre a habilidade do Samba de resolver nomes de hosts. Você pode rodar os daemons do Samba do inetd ou como processos independentes (stand-alone). O Samba irá responder ligeiramente mais rápido como um daemon stand-alone do que rodando pelo inetd. Em ambos os casos, você deve verificar se existem linhas no arquivo /etc/services como estas: netbios-ns 137/tcp nbns netbios-ns 137/udp nbns netbios-dgm 138/tcp nbdgm netbios-dgm 138/udp nbdgm netbios-ssn 139/tcp nbssn Certifique-se de que todas estão sem as marcas de comentários. Dependendo da sua distribuição, você pode até mesmo ter que adicioná-las. O Samba não será capaz de fazer a ligação (bind) às portas apropriadas enquanto o arquivo /etc/service não contenha estas entradas. Para rodar os daemons do inetd, coloque as seguintes linhas no arquivo de configuração do inetd, /etc/inetd.conf: # SAMBA NetBIOS services (for PC file and print sharing) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd Então, reinicie o daemon do inetd com o segunite comando: kill -HUP `cat /var/run/inetd.pid` Para executar os daemons com os scripts de inicialização do sistema, coloque o seguinte script num arquivo chamado /etc/rc.d/init.d/smb 25 (para uma distribuição RedHat) e faça um link simbólico para os arquivos especificados nos comentários abaixo: #!/bin/sh # # /etc/rc.d/init.d/smb - starts and stops SMB services. # # Os arquivos abaixo devem ser links simbólicos para este arquivo: # symlinks: /etc/rc.d/rc1.d/K35smb (Mata os serviços SMB no shutdown) # /etc/rc.d/rc3.d/S91smb (Inicia os serviços SMB no modo multiusuário) # /etc/rc.d/rc6.d/K35smb (Mata os serviços SMB no reboot) # # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING}= "no" ] && exit 0 # See how we were called. case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D daemon nmbd -D echo touch /var/lock/subsys/smb ;; stop) echo -n "Shutting down SMB services: " killproc smbd killproc nmbd rm -f /var/lock/subsys/smb echo "" ;; *) echo "Usage: smb {start|stop}" exit 1 26 esac Se você obtiver um erro durante a inicialização, que diz alguma coisa sobre o daemon não conseguir fazer ligação (bind) com a porta 139, então você provavelmente possui outro processo Samba rodando e que ainda não foi derrubado. Verifique a lista de processos (com 'ps auxww | grep mbd') para determinar se há outro serviço Samba rodando. 27 5 CONFIGURAÇÃO MÍNIMA A configuração do Samba no Linux (ou numa outra máquina UNIX) é controlada por um único arquivo, /etc/smb.conf. Este arquivo determina que recursos do sistema você quer compartilhar com o mundo exterior e que restrições você deseja que sejam aplicadas a eles. Já que as seções seguintes irão tratar do compartilhamento de discos e impressoras Linux com máquinas Windows, o arquivo smb.conf mostrado nesta seção é o mais simples possível, somente para fins de introdução. Não se preocupe ainda com os detalhes. As seções seguintes introduzirão os conceitos principais. Cada seção do arquivo começa com um cabeçalho de seção como [global], [homes], [printers], etc. A seção [global] define algumas variáveis que o Samba utilizará para definir o compartilhamento de todos os recursos. A seção [homes] permite a usuários remotos acessar seus próprios (e somente os seus) diretórios home na máquina local. Isto é, usuários tentando se conectar a este compartilhamento de máquinas Windows, serão conectados ao seus diretórios home pessoais. Note que para fazer isso, eles devem ter uma conta na máquina Linux. O arquivo smb.conf de exemplo abaixo, permite que usuários remotos acessessem seus diretórios home na máquina local e que escreva em um diretório temporário. Para que um usuário Windows veja estes compartilhamentos, a máquina Linux deve estar na rede local. Então o usuário simplesmente conecta um drive de rede no Gerenciador de Arquivos ou no Windows Explorer. Note que nas seções seguintes, entradas adicionais a este arquivo serão dadas para permitir o compartilhamento de mais recursos. ; /etc/smb.conf ; Reiniciar o servidor sempre que de alterar este arquivo, ex: ; /etc/rc.d/init.d/smb stop ; /etc/rc.d/init.d/smb start [global] ; Se você deseja uma conta guest, descomente a linha abaixo: ; guest account = nobody security = share workgroup = WORKGROUP log file = /var/log/samba-log.%m lock directory = /var/lock/samba share modes = yes [homes] 28 comment = Diretorios Home browseable = no read only = no create mode = 0750 [tmp] comment = Espaco de armazenamento temporario path = /tmp read only = no public = yes Tendo escrito um novo smb.conf, é muito útil testá-lo para verificar se há erros. Você pode testar um arquivo smb.conf, usando o utilitário 'testparm' (para mais detalhes, man testparm); se testparm não reportar nenhum problema, o smbd poderá carregar o arquivo de configuração corretamente. Aqui temos um bom truque: se seu servidor Samba tem mais de uma interface ethernet, o smbd pode se ligar (bind) a interface errada. Se for o caso, você pode determinar a qual porta ele devera se ligar pela adição de uma linha parecidada como esta na sação [global] do /etc/smb.conf: interfaces = 192.168.1.1/24 Onde você deverá trocar o endereço IP acima pelo que você atribuiu a interface ethernet correta. O "24" é correto para um rede classe C, mas deve ser calculado se você tiver feito sub-redes. O número se refere a máscara de rede. Números para outras classes de redes são fornecidos no IP-Masquerade mini-HOWTO. 5.1 Teste do Arquivo de Configuração Agora que o smb.conf está configurado faça um teste para saber se está tudo certo, com o comando testparm: # testparm > teste_config_samba Será criado o arquivo teste_config_samba. Confira este arquivo e caso exista alguma mensagem de erro (ERROR...) volte a corrija o problema. Acertadas as configurações, deve-se ativar o SAMBA: # /etc/rc.d/init.d/smb start 29 Se quiser conferir se o SAMBA está realmente no ar, execute o comando acima mas substitua o "start" por "status". Para que o SAMBA seja iniciado sempre após a inicialização do servidor, execute o ntsysv e marque o SMB. Se preferir, você também pode escrever a linha de "start" do smb no arquivo /etc/rc.d/rc.local, da seguinte forma: 1) Edite o arquivo rc.local (#vi /etc/rc.d/rc.local). 2) Tecle "i" para editar e vá até o final do arquivo (Page Down). 3) Escreva a seguinte linha: /etc/rc.d/init.d/./smb start 4) Tecle "Esc" e em seguida ":" e depois "wq" para sair. A partir de agora, sempre que o computador for reiniciado o SAMBA será ativado automaticamente. Em uma estação Linux, é necessário dar um "start" exatamente como no servidor, onde o smbclient deve ser utilizado para acessar os compartilhamentos disponíveis no servidor. Ainda na estação Linux, é necessário que cada uma contenha um smb.conf se diretórios locais precisarem ser compartilhados. Estações Windows devem estar com o TCP/IP configurado corretamente (IP, Máscara de SubRede, Wins se existir, etc). 30 6 ACESSANDO SERVIDORES ATRAVÉS DE ESTAÇÕES LINUX 6.1 O smbclient Da mesma forma que o SAMBA permite que o Linux atue como servidor para estações Linux e redes Microsoft, ele também permite atuar como estação de trabalho para acessar servidores de ambos sistemas, sem que nenhuma configuração seja necessária no servidor. Com o smbclient é possível acessar dados em um servidor Windows (lembra o comando net, mas a sintaxe utilizada é similar aos de FTP). Ele pode ser usado para receber e enviar arquivos, listar diretórios, navegar pelos diretórios, renomear e apagar arquivos, entre outros. Diretórios compartilhados por um servidor SAMBA são acessados da mesma forma. Para verificar quais compartilhamentos estão disponíveis em um determinado Host, execute: $smbclient -L host_desejado A resposta será uma lista de serviços, ou seja, nomes de dispositivos ou impressoras que podem ser compartilhados com os usuários na rede. A menos que o servidor SMB não tenha itens de segurança configurados, será solicitada uma senha antes de mostrar as informações. Exemplo: $smbclient -L servidor1 A resposta será semelhante a: Server time is Fri Dec 22 15:58:02 2000 Timezone is UTC+10.0 Password: Domain=[EMPRESA] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0] Server=[servidor1] User=[] Workgroup=[EMPRESA] Domain=[] Sharename Type Comment ADMIN$ Disk Remote Administration Public Disk Public C$ Disk Default Share Print$ Disk Printer Control 31 Para acessar uma pasta compartilhada, basta especificar o caminho na rede, conforme abaixo: $smbclient //maquina/pasta1 senha O smbtar Também é possível fazer backup (cópias de segurança) para o formato .tar de arquivos que estão em compartilhamentos na rede. Esta operação é muito útil para garantir backup de arquivos em estações com pastas compartilhadas mas que não pertencem ao Domínio da rede (por exemplo) ou em estações isoladas da rede. O comando utilizado é o smbtar: $smbtar -s HOST -p SENHA -x COMPARTILHAMENTO -d PASTA -t FITA (.tar) Como exemplo vamos criar um arquivo chamado vacina.tar que será o backup de //servidor1/vacinas/vacina.exe sem senha para acesso: $smbtar -s servidor1 -x vacinas -d vacina.exe -t vacina.tar Para conferir se o arquivo foi criado corretamente, digite: $tar -tvf vacina.tar Se o empacotamento teve sucesso, você verá o nome original do arquivo e seu tamanho. Para que o backup seja guardado em fita deve-se mudar a sintaxe do comando, substituindo o nome do arquivo pela unidade de fita instalada (geralmente /dev/st0). 6.2 O smbpasswd O SAMBA permite também que as estações troquem suas senhas delogon, utilizando o smbpasswd. Ele age de forma similar ao comando passwd, mas as senhas são armazenadas no arquivo smbpasswd. É possível ainda alterar a senha dos usuários em um servidor Primário de um Domínio NT (PDC). Utilizado pelo superusuário, ele permite que contas sejam adicionados ou removidos e atributos sejam alterados. Mantenha o "localhost" especificado no parâmetro "allow hosts" para seu perfeito funcionamento. O smbpasswd é um arquivo em formato ASCII e contém o nome do usuário, identificação junto ao Linux, a senha encriptada, o indicador de como está a conta e a data de última alteração da senha do usuário. 32 Vale destacar que o smbpasswd somente é útil quando o SAMBA está configurado para utilizar senhas criptografadas (veja detalhes em Considerações). 6.3 O smbstatus Para saber a situação atual das conexões SAMBA, utilizamos o smbstatus. • $smbstatus –p Lista os processos smbd e finaliza em seguida. Útil quando utilizado em programas. • $smbstatus –S Lista todos os compartilhamentos definidos. • $smbstatus –s Permite utilizar outro arquivo de conffiguração (smb.conf2 por exemplo), que deve ser especificado após a opção. • $smbstatus –u Lista as informações rellevantes sobre o usuário, que deve ser especificado após a opção. 6.4 O testprns O testprns verifica o nome da impressora junto ao smbd, a fim de determinar se há um nome válido (entrada encontrada em printcap para a impressora) sendo informado para uso pelo serviço de impressão. Pode ser ativado da seguinte forma: #testprns ftp://ftp.samba.org/pub/samba/pwdump/pwdump.exe Efetue logon como usuário Administrator no servidor NT (que disponibiliza a autenticação). Em seguida, abra um Command Prompt e vá até o diretório que você colocou o pwdump. Rode o comando pwdump da seguinte maneira: #pwdump smbpasswd Será gerado um arquivo smbpasswd com as informações de autenticação (logon e senha) do Windows NT no formato criptografado utilizado pelo SAMBA. Agora copie o arquivo smbpasswd gerado para o servidor Linux (através de diskete ou diretório compartilhado, por exemplo). No Linux, jogue o arquivo smbpasswd criado para o diretório /etc e defina as permissões para 600: #chmod 600 /etc/smbpasswd Para que funcione corretamente, é importante destacar que o ID dos usuários seja o mesmo tanto no smbpasswd quanto no passwd do Linux. Abra 33 o smbpasswd e exporte os dados de autenticação (nome do usuário, ID, etc) mas não é possível fazer o mesmo com as senhas. Se você quiser exportar as senhas vai ter que quebrá-las com algum password cracker :) Na verdade não é necessário ter a senha no passwd, apenas o login, ID e home. Para rodar o SAMBA e ele autenticar os usuários, não é preciso ter a senha no passwd do Unix, apenas o login, ID e home se você quiser exportá- los. Vão ser utilizadas as senhas do smbpasswd. Luciano Linhares Martins lmartins@matrix.com.br criou um script baseado no mksmbpasswd para converter as senhas em formato smbpasswd para o passwd. Funciona bem e pode ser modificado conforme a necessidade de cada um. É um script bem simples e pode ser alterado de acordo com a sua necessidade. Crie o arquivo mkpasswd.sh com o conteúdo abaixo: #!/bin/sh awk 'BEGIN {FS=":" printf("#\n# Unix password file.\n#\n") } { printf( "%s:*:%s:103:%s:/home/%s:/bin/bash\n", $1, $2, $5, $1) } ' Dê um chmod 700 no arquivo e execute da seguinte maneira: #cat /etc/smbpasswd | ./mkpasswd.sh passwd-smb Se o seu arquivo smbpasswd e o script mkpasswd.sh estiverem em outro local, configure de acordo com a sua necessidade. Após isso, é gerado um arquivo chamado passwd-smb com os logins, id's, home, etc no formato do passwd do seu sistema. Normalmente, os ID's do smbpasswd vão começar a partir de 1000 e você não vai ter problemas para junta-lo com o seu passwd do Unix sem nenhum conflito. Eu recomendo que você confira antes de juntar as bases. Procure por logins com o mesmo ID, mesmo username e username com espaços. Se você utiliza shadow é importante desabilitá-lo antes de juntar os arquivos. Desabilite o shadow através do comando pwunconv. Em seguida para passar o arquivo passwd-smb para o passwd do sistema entre no diretório onde esta o arquivo passwd-smb que você gerou e digite: #cat passwd-smb /etc/passwd Se você utiliza o shadow, pode reativá-lo agora através do comando pwconv. Reinicie o Linux para que as alterações entrem em vigor. 34 6.5 Exemplo de Login Script para estações Windows O login script (ou logon script) é uma ferramenta muito útil para disponibilizar recursos na rede. O script abaixo é um exemplo que pode usado em redes com estações Windows. Lembre-se de que deve ser criado com o notepad (por exemplo) em uma estação Windows para que funcione corretamente! (Confira a seção [global] para saber mais sobre o logon script). Note que a sintaxe do comando net é diferente para sistemas 95/98/Me e NT/2000. rem Logon script padrão para a rede. net time \\servidor1 /set /yes @echo off if %OS%.==Windows_NT. goto WinNT :Win95 net use X: \\servidor1\pasta_01 net use Z: /HOME goto end :WinNT net use X: \\servidor1\pasta_01 /persistent:no net use Z: /HOME /persistent:no :end 35 7 COMPARTILHAMENTO DE DISCOS 7.1 Compartilhamento de disco Linux com máquinas Windows Como mostrado no exemplo de smb.conf acima, compartilhar drives Linux com usuários Windows é fácil. Contudo, como tudo no Samba, você pode controlar coisas em um alto grau. Aqui são alguns exemplos: Para compartilhar um diretório com o público, crie uma cópia da seção [tmp] anterior e adicione algo como neste smb.conf: [public] comment = Area Publica path = /home/public public = yes writable = yes printable = no Para fazer com que o diretório acima possa ser lido pelo público (todos), mas somente gravável pelos membros do grupo staff, modifique as entradas como abaixo: [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @staff Normalmente é fácil assim; você agora deve estar habilitado a iniciar o Samba e visualizar os compartilhamentos de um PC com Windows. Contudo, a Microsoft recentemente tornou a vida um pouco mais difícil para quem usa Samba. O Windows 98, Windows NT (service pack 3 ou posterior) e as últimas versões do Windows 95 agora usam senhas criptografadas como padrão. O Samba usa senhas não criptografadas por padrão. Você não pode visualizar servidores quando o cliente ou o servidor estão usando senhas criptografadas, porque a conexão não pode ser feita anonimamente. Você pode dizer se tem uma diferença de tipo de senhas entre o cliente e o servidor, se quando você tentar se conectar a um compartilhamento você vir uma caixa de diálogo que mostra algo como "Você não tem permissão para acessar esta conta nesta máquina. 36 Por padrão o SAMBA não utiliza autenticação encriptada na rede, mas sim "clear text". Versões mais atuais do Windows95/98/Me não utilizam o modo "clear text". Para resolver este problema temos duas soluções: 7.1.1 Configurar o Samba para usar senhas criptografadas Na seção [global] do /etc/smb.conf, adicione as seguintes linhas: encrypt passwords = yes smb passwd file = /etc/smbpasswd Certificar-se de que todas as estações na rede utilizam autenticação encriptada no logon. Para fazer o Windows trabalhar com senhas criptografadas, use o regedit e crie a seguinte chave: • Windows 95/98 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Service s\VxD\VNETSUP Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e Data: 0x00 • Windows NT 4.0 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Service s\Rdr\Parameters Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e Data: 0x00 • Windows 2000 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service s\LanmanWorkStation\Parameters Adicione um novo valor DWORD: Value Name: EnablePlainTextPassword e Data: 0x00 Uma vez que as alterações no registro tenham sido feitas, reinicie a máquina Windows. Para maiores detalhes, leia os arquivosENCRYPTION.txt, Win95.txt e WinNT.txt na documentação do Samba. Se seus clientes e seu servidor estão usando senhas criptografadas, você não será capaz de visualizar compartilhamentos no servidor até que uma conexão inicial tenha sido feita com a autenticação apropriada. Para conseguir a conexão inicial, entre o nome do compartilhamento manualmente no Gerenciador de Arquivos ou na caixa de diálogo do Explorer, na forma '\\'. Registre-se no servidor com um nome de usuário e senha que lhe são válidos. Se seus clientes e seu servidor estão usando senhas criptografadas, você não será capaz de visualizar compartilhamentos no servidor até que uma conexão inicial tenha sido feita com a autenticação apropriada. Para conseguir a conexão inicial, entre o nome do compartilhamento manualmente no Gerenciador de Arquivos ou na caixa de diálogo do Explorer, na forma '\\<hostname>\<nomedocompartilhamento>'. Registre-se no servidor com um nome de usuário e senha que lhe são válidos. 37 Se você suspeita que seu serviço de nomes NetBIOS não está corretamente configurado (talvés porque você tenha obtido erros 'host not found' ao tentar se conectar), tente usar somente o endereço IP do servidor: '\\<endereçoIPdoservidor>\<nomedocompatilhamento>'. Para que o nome dos arquivos apareçam corretamente, você pode precisar configurar algumas opções na seção de compartilhamento apropriada. Estas funcionam para clientes Windows 85/98/NT, mas podem precisar ser modificadas se você tem clientes Windows 3.x: ; Mangle case = yes aparentemente fornece os nomes de arquivo corretos para Win95/98/NT mangle case = yes ; Se o samba deve diferenciar maiúsculas e minúsculas quando procurando por arquivos case sensitive = no ; Padrão de letras maiúsculas ou minúsculas para quando os arquivos são criados default case = lower ; Preservar maiúsculas e minúsculas para todos os nomes de arquivo preserve case = yes ; Preservar maiúsculas e minúsculas para nomes DOS (8.3) short preserve case = no 7.1.2 Configurar o Windows para não usar senhas criptografadas Não utilizar encriptação no logon, alterando uma chave no registro do Windows. O SAMBA trás o arquivo .reg para cada versão do Windows com a chave modificada. Execute o arquivo correspondente para validar a mudança (eles estão em /usr/doc/samba-2.0.x/docs). Se você não possui estes arquivos, abaixo estão as chaves que devem ser modificadas nas estações Windows para não utilizar o "clear text": • Windows 95/98 [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\VxD\VNETSUP] "EnablePlainTextPassword"=dword:00000001 • WindowsNT 4.0 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Rdr\Parameters] "EnablePlainTextPassword"=dword:00000001 • Windows 2000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic 38 es\LanmanWorkStation\Parameters] "EnablePlainTextPassword"=dword:00000001 É claro que se sua rede for "sniffada", os passwords que não estiverem encriptados serão descobertos. Em alguns casos vale a pena tirar a criptografia de login e monitorar a rede com um anti-sniffer. Mas lembre-se que o Windows NT e o 2000 só conseguem se autenticar no servidor SAMBA através de senha encriptada. Mais ainda: o Windows 2000 vem com algumas dificuldades para entrar no Domínio de um PDC Samba versão 2.1.x. Utilize a versão 2.2.2 ou superior do Samba para evitar problemas. 7.2 Compartilhamento de disco Windows com máquinas Linux Um programa cliente SMB para máquinas UNIX é incluido na distribuição. Ele provê uma interface tipo ftp com linha de comando. Você pode usar este utilitário para transferir arquivos entre um 'servidor' Windows e um cliente Linux. Para ver quais compartilhamentos estão disponíveis num determinado host, execute: /usr/sbin/smbclient -L host Onde 'host' é o nome da máquina que você deseja ver. Isto irá retornar uma lista de nomes de serviço, isto é, nomes de drives ou impressoras que o servidor pode compartilhar com você. A menos que o servidor SMB não possua nenhuma medida de segunça configurada, ele irá lhe perguntar uma senha. Dê-lhe a senha para a conta 'guest' ou para a sua senha pessoal naquela máquina. Por exemplo: smbclient -L zimmerman A saída do comando deve parecer com esta: Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0 Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[] Sharename Type Comment --------- ---- ------- 39 ADMIN$ Disk Remote Admin public Disk Public C$ Disk Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$ Disk Printer Drivers This machine has a browse list: Server Comment --------- ------- HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN A lista de visualização mostra outros servidores SMB com recursos a compartilhar na rede. Para usar o cliente, execute: /usr/sbin/smbclient service <password> onde 'serviço' é a máquina e o nome do compartilhamento. Por exemplo, se você está tentando alcançar um diretório que foi compartilhado como 'public' numa máquina chamada zimmerman, o serviço deveria se chamar \\zimmerman\public. No entanto, devido a limitações do shell, você terá que dobrar as barras, logo, você terá por fim algo assim: /usr/sbin/smbclient \\\\zimmerman\\public mypasswd Onde 'mypasswd' é sua senha. Você obterá o seguinte prompt do smbclient: Server time is Sat Aug 10 15:58:44 1996 Timezone is UTC+10.0 Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] smb: \> Digite 'h' para obter ajuda usando o smbclient: smb: \> h 40 ls dir lcd cd pwd get mget put mput rename more mask del rm mkdir md rmdir rd prompt recurse translate lowercase print printmode queue cancel stat quit q exit newer archive tar blocksize tarmode setmode help ? ! smb: \> Se você sabe utilizar o ftp, você não precisará das páginas de ajuda para o smbclient. 7.2.1 O pacote smbfs Mesmo pondedo usar o smbclient para testes, você logo estará saturado dele para trabalhos de verdade. Para estes você provavelmente usará o pacote smbfs. O pacote smbfs já é incluido na maioria das distribuições Linux. Uma coisa importante a observar: Você deve possuir suporte a smbfs compilado no kernel para utilizar estes utilitários. O smbfs vem com dois utilitários simples: smbmount e smbumount. Eles funcionam de forma muito similar a mount e umount, só que para compartilhamentos SMB. O processo deve ser feito através da linha de comando. Imaginando que você queira montar o disco C: da máquina estacao1, que foi compartilhado com o nome C, em seu diretório Conectiva Linux /mnt/estacao1: # smbmount //estacao1/c /mnt/estacao1 Observe que em alguns casos (você está montando um volume de um servidor Windows® NT, por exemplo) será necessário que você informe um usuário e uma senha para poder utilizar o comando smbmount. # smbmount //estacao1/c /mnt/estacao1 -o \ username=usuario,password=minhasenha Isso funcionará se o usuário usuario estiver cadastrado na máquina estacao1 com a senha minhasenha. Em versões mais recentes, é possível usar o próprio comando mount do GNU/Linix: 41 # mount –t smbfs //estacao1/c /mnt/estacao1 42 8 DIFERENÇAS ENTRE SISTEMAS DE ARQUIVOS Neste capítulo serão estudadas as diferenças entre os sistemas de arquivos Unix e não-Unix. Uma das maiores dificuldades que o Samba tem que enfrentar é a diferença entre os sistemas dearquivos Unix e não-Unix. Isso inclui singularidadescomo links simbólicos e arquivos ocultos. 8.1 Ocultando e Vetando arquivos Em sistemas Unix, arquivos ocultos começam com “.”, em sistemas DOS/Windows, os arquivos têm um atributo específico para esta função. O servidor Samba precisa de meios para esconder os arquivos quando este atributo estiver habilitado em um cliente Windows. Existem casos em que é necessário assegurar que um usuário não possa ver ou acessar um arquivo. Em outros casos não se que apenas esconde-lo quando se está visualizando um diretório. 8.1.1 Opção hide dot files Esta opção faz exatamente o que diz: quando está configurada como yes, esconde arquivos que começam com “.”. E se estiver configurada como no, estes arquivos são sempre exibidos. Não se deve esquecer que os arquivos serão apenas ocultos: se o cliente Windows estiver configurado para mostrar arquivos ocultos, ele poderá vê-los de qualquer maneira. 8.1.2 Opção hide files Ao invés de esconder apenas os arquivos que começam com “.”, é possível especificar uma string ao Samba, informando quais arquivos ocultar, através da opção hide files. Por exemplo, para esconder todos os arquivos .conf e todos os começados por lib-: hide files = /*.conf/lib-*/ Cada entrada deve iniciar e acabar com “/”, mesmo que haja apenas uma entrada. Podem ser colocados espaços nas regras. 8.1.3 Opção veto files Caso seja necessário prevenir que os usuários vejam arquivos, usa-se a opção veto files, que usa a mesma sintaxe da opção hide files: veto files = /*.conf/lib-*/ 43 Com esta opção, todos os arquivos .conf e todos os começados por lib- desaparecerão do diretório, e será impossível para um cliente SMB enxergá-los. 8.1.4 Opção delete veto files = yes|no O que acontecerá se um usuário tentar apagar um diretório que contém arquivos vetados? Depende da opção booleana delete veto files: se estiver setada para yes, o diretório será removido mesmo assim. Se estiver em no, será impossível para um cliente SMB apagar um diretório com arquivos vetados. 8.1.5 Opção dont descend Esta opção especifica uma lista de diretórios que não devem ter seu conteúdo mostrado pelo Samba. Apenas o conteúdo será escondido, e não o próprio diretório. dont descend = bin lib Os clientes SMB que tentarem acessar os diretórios bin e lib verão apenas listas vazias. Além disso, nenhum usuário remoto poderá gravar arquivos nestes diretórios. Note que essa é uma opção administrativa e não de segurança, e não substitui as permissões de acesso aos arquivos. 8.1.6 Opção unix realname = yes|no Alguns programas precisam de um nome de usuário completo para funcionar. Se o arquivo /etc/passwd tiver os nomes reais dos usuários no campo GCOS, a opção unix realname fará com que o Samba forneça esta informação para os clientes. Sem isto, o nome do usuário será o seu ID de login. 8.2 Links Não existem links simbólicos em sistemas de arquivos FAT e NTFS. Os sistemas Windows possuem uma característica parecida, que é chamada de atalho. Quando um cliente tenta abrir um link simbólico em um compartilhamento em um servidor Samba, o Samba tentará seguir o link simbólico para encontrar o arquivo real, como se o usuário estivesse na máquina Linux. Para desabilitar isto será necessário inserir a seguinte linha dentro do compartilhamento: 44 follow symlinks = no Existe também a opção wide links, que se for configurada como yes, permite que o usuário cliente siga os links simbólicos que apontam para fora da árvore de diretório compartilhada, incluindo arquivos e diretório na outra ponta do link. 8.3 Permissões e Atributos O DOS nunca teve a intenção de ser um sistema operacional de rede multiusuário, ao contrário do Unix, que foi desenvolvido desta maneira desde o início. Devido a isso, existem inconsistências e lacunas de cobertura entre os dois sistemas de arquivo, que o Samba deve resolver. Uma das principais lacunas é o manuseamento de permissões entre os dois sistemas. Todos os arquivos do Linux possuem bits de leitura, escrita e execução para dono, grupo e outros. Já o Windows tem 4 bits de permissão: apenas leitura, sistema, oculto e arquivo. Não há um bit específico para defenir um arquivo executável, pois o DOS identifica arquivos executáveis pela extensão .EXE, .COM, .CMD ou .BAT. Devido a isto, não há utilidade para os bits executáveis do Linux que estão presentes em um disco compartilhado pelo Samba. Já os arquivos DOS possuem seus próprios atributos, que precisam ser preservados quando são armazenados no ambiente Linux: arquivo, sistema e oculto. O Samba pode preservar estes bits “reutilizando” os bits de permissão de execução do arquivo no lado do Linux, desde que devidamente configurado. Existe um efeito colateral: se no lado Unix for executado um ls –l, alguns bits de permissão vão ter um significado diferente do esperado. Existem três opções do Samba que decidem se os bits são mapeados: map archive (arquivo), map system (sistema) e map hidden (oculto). Estas opções mapeiam os atributos para o dono, grupo e outros, respectivamente. Veja um exemplo abaixo, com os valores padrão das opções: map archive = yes map system = no map hidden = no O atributo apenas leitura é mapedo no atributo de permissão de escrita do dono do arquivo, obviamente invertido. 45 9 COMPARTILHAMENTO DE IMPRESSORAS 9.1 Compartilhamento de impressora Linux com máquinas Windows Para compartilhar uma impressora Linux com máquinas Windows, você precisa ter certeza que sua impressora está configurada no Linux. Se você pode imprimir do Linux, configurar um compartilhamento SMB da impressora é bem simples. Veja o Printing HOWTO para configurar uma impressora local. Já que o autor usou uma impressora conectada a uma máquina Windows NT (há muito tempo atrás - antes de converter nossa rede ao Linux, quase em sua totalidade), esta seção não deve ser vista como definitiva, mas meramente uma sugestão. Adicionando configurações de impressão a seu sbm.conf: [global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [printers] comment = All Printers security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s 46 Tenha certeza que a o caminho da impressora (neste caso abaixo de [ljet]) casa com o diretório de spool em /etc/printcap! As linhas: printcap name = /etc/printcap load printers = yes controlam quando todas as impressoras em /etc/printcap devem ser cerregadas por padrão ou não. Se você fizer isso, não há razão para configurar impressoras individualmente. A seção [printers] escifica opções para as impressoras que você quer definir explicitamente. Se o subsistema de impressão que você está usando não funciona deste modo (BSD), você terá que configurar um arquivo printcap falso (ou usar a técnica do 'comando de impressão', veja abaixo). Para mais informações sobre o sistema printcap veja o Printing HOWTO. Uma técnica útil de testar a conexão de rede é trocar o camando de impressão para: print command = cp %S /tmp/print.%P.%S O arquivo resultante pode então ser analisado. Observação: Há alguns problemas ao se compartilhar impressoras em máquinas UNIX com máquinas NT usando Samba. Um dos problemas é o NT ver a impressora compartilhada corretamente. Para solucionar, use as observações contidas na documentação do Samba no arquivo docs/WinNT.txt. Outro problema ocorre com as senhas. Veja os comentários no mesmo arquivo sobre uma forma irritante de compreensão e falha para solucionar o problema. Oleg L. Machulskiy (machulsk@shade.msu.ru) sugere que um comando de impressão melhor para o exemplo acima seria: print command = smb2ps %s | lpr -r -h -P %p onde 'smb2ps' é um script que transforma os arquivos de spoolrecebidos do Windows em usáveis e comuns arquivos Postscript. Ele deve cortar as primeiras três e as últimas duas linhas, porque estas linhas contém código PJL ou PCL. Este método só é necessário se sua máquina Windows está imprimindo PCL e não Postscript realmente. Eu tenho visto que no Windows 95/98/NT não tem um driver genérico para Postscript, mas o driver da "Digital turbo Printserver 20" funciona como um bom driver genérico de Postscript para a maioria das configurações. Eu também tenho ouvido que o driver da "Apple LaserWriter II NTX" também funciona para este fim. Jeff Stern (jstern@eclectic.ss.uci.edu) reporta o seguinte, o que pode ajudar alguns de vocês: 47 --------------------------%<---------------------------------- O problema que eu estava tendo, era que eu podia imprimir via lpd/lpr na minha impressora do Linux. Mas, eu não conseguia imprimir de uma máquina Win95 remota. Então eu tentei: smbclient \\eclectic\belen -P e então: print myfile Eu obtive erros como acesso negado. Então, eu configurei as permissões em meu diretório /var/spool/lpd/lp1 para 777. Me desculpe, mas foi isso que eu tive que fazer. Eu acho que alternativamente, eu poderia ter posto todos os usuários no grupo 'lp', ou feito dado a posse do diretório ao grupo 'users', etc... Mas por enquanto, este método está funcionando (com propriedade root:lp). Finalmente, uma outra coisa que os administradores devem saber é que o nome da conta na máquina Windows (na qual eu estava tentando usar a impressora Linux via Samba) deve ter equivalente no Linux. Assim, se há um usuário chamado 'joe' na máquina Windows 'mywinbox' tentando imprimir na impressora 'belen' da máquina Linux 'eclectic' (\\eclecticz\belen, deverá haver um usuário chamado 'joe' na máquina Linux. Então o login e a senha do usuário 'joe' serão a senha para acesar a impressora belen da máquina eclectic. Esta senha será solicitada na máquina Windows quando você estiver configurando a impressora com Impressoras | Adicionar Nova. Eu pensei que este tipo de problema não seria bem o caso, mas eu configurei minha impressora com acesso público no smb.conf. Mas aparentemente, ela continua a pedir senha. (A máquina Windows, infelizmente, não lhe dá a oportunidade de informar um nome de usuário diferente para a impressora remota (Linux). Ela simplesmente usa o nome do usuário atual que você informou quando iniciou o Win95. -------------------------- %<---------------------------------- O Dr. Michael Langner langner@fiz-chemie.de mostra que problemas de permissão de escrita na árvore de /var/spool/lpd/ podem ser evitados por alguma coisa como "path = /tmp" e "print command = lpr -r -P%p %s". Algumas vezes, um error de interpretação do Postscript irá ocorrer quando você estiver imprimindo de máquinas Windows, o que causa a impressão de uma página extra no fim de cada trabalho de impressão. A útima página sempre conterá "%%[ Lastpage ]%%" em seu topo. Aparentemente isto acontece apenas com o Windows 95 e 98 e é devido a um defeito no Postscript gerado. Uma maneira de lidar com isso é usar um script que remove a pequena parte ruim desde Postscript dos trabalhos da fila de impressão. Outra maneira é tentar encontrar um driver Postscript melhor para Windows. Provavelmente a melhor maneira é usarmos LPRng invés de Postscript para imprimir num servidor Samba. Erik Ratcliffe (erik@caldera.com) da Caldera contou-me que usando LPRng significa que qualquer driver de impressão pode ser usado na máquina 48 Windows. No servidor Samba, ele usou uma entrada no /etc/printcap que se parece com esta: raw:\ :rw:sh: :lp=/dev/lp1 :sd=/var/spool/lpd/raw :fx=flp LPRng não requer :\ no final de cada linha. Uma linha de impressora ainda precisa ser adicionada ao /etc/smb.conf para a impressora física. O comando de impressão precisa usar a entrada "raw" do /etc/printcap e os dados precisam ser enviados para a impressora em formato binário. Tente um comando de impressão como este: print command = lpr -b -Praw %s Você também pode precisar configurar o spooling no Windows 95 para imprimir diretamente para a impressora, ao invés de fazer spool. 9.2 Compartilhamento de impressora Windows com máquinas Linux Para compartilhar uma impressora de uma máquina Windows, você deve fazer o seguinte: 1. Você deve possuir as entradas apropriadas no /etc/printcap e elas devem corresponder a estrutura local de diretórios (para o diretório de spool, etc). 2. Você deve ter o script /usr/bin/smbprint. Ele vem junto dos fontes do Samba, mas não em todas as distribuições binárias. Uma cópia levemente modificada será discutida abaixo. 3. Se você quer converter arquivos ASCII para Postscript, você deve ter o nenscript, ou um equivalente. nescript é um conversor para Postscript e é geralmente instalado em /usr/bin. 4. Você pode querer fazer a impressão do Samba ficar mais fácil tendo um programa interface que torne-a simples de usar. Um script em Perl simples para manipular ASCII, Postscript ou Postscript criado é dado abaixo. 5. Você pode também usar o MagicFilter para fazer o item acima. Detalhes sobre como configurar o MagicFilter são fornecidos depois do script perl. O MagicFilter tem vantegens porque ele sabe como converter automaticamente muitos formatos de arquivo. 49 6. 1. A entrada no arquivo /etc/printcap abaixo é para um impressora HP 5MP numa máquina Windows NT. As entradas são como as que seguem abaixo: cm - comentário lp - dispositivo a abrir para saída sd - o diretório de spool da impressora (na máquina local). af - o arquivo de registro (contabilidade) mx - o tamanho máximo de arquivo (zero é ilimitado) if - o nome do filtro de entrada. Para mais informações, veja o Printing HOWTO ou a página man do printcap. # /etc/printcap # # //zimmerman/oreilly via smbprint # lp:\ :cm=HP 5MP Postscript OReilly on zimmerman:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :af=/var/spool/lpd/lp/acct:\ :mx#0:\ :if=/usr/bin/smbprint: Tenha certeza que os diretórios de spool e registro (contabilidade) existem e são graváveis. Assegure-se que a linha que tem o 'if' contenha o caminho correto para o script smbprint (dado abaixo) e tenha certeza que o dispositivo apropriado tenha sido indicado (o arquivo especial /dev). Depois vem o próprio script smbprint. Ele normalmente é colocado em /usr/bin e é atribuído a Andrew Tridgell, a pessoa que criou o Samba, até onde eu sei. Ele vem junto da distribuição dos fontes do Samba, mas não vem em algumas distribuições binárias, assim sendo eu o reproduzi aqui. Você pode quer dar uma olhada cuidadosa nele. Há algumas pequenas alterações que se mostraram muito úteis. #!/bin/sh -x # This script is an input filter for printcap printing on a unix machine. It 50 # uses the smbclient program to print the file to the specified smb-based # server and service. # For example you could have a printcap entry like this # # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbpri nt # # which would create a unix printer called "smb" that will print via this # script. You will need to create the spool directory /usr/spool/smb with # appropriate permissions and ownerships for your system. # Set these to the server and service you wish to print to # In this example I have a WfWg PC called "lapland" that has a printer # exported called "printer" with no password. # # Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton) # so that the server, service, and password can be read from # a /usr/var/spool/lpd/PRINTNAME/.config file. # # In order for this to work the /etc/printcap entry must include an # accounting file (af=...): # # cdcolour:\ # :cm=CD IBM Colorjet on 6th:\ # :sd=/var/spool/lpd/cdcolour:\ # :af=/var/spool/lpd/cdcolour/acct:\ # :if=/usr/local/etc/smbprint:\ # :mx=0:\ # :lp=/dev/null: # # The /usr/var/spool/lpd/PRINTNAME/.config file should contain: # server=PC_SERVER# service=PR_SHARENAME # password="password" # # E.g. # server=PAULS_PC # service=CJET_371 # password="" 51 # # Debugging log file, change to /dev/null if you like. # logfile=/tmp/smb-print.log # logfile=/dev/null # # The last parameter to the filter is the accounting file name. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Should read the following variables set in the config file: # server # service # password # user eval `cat $config_file` # # Some debugging help, change the >> to > if you want to same space. # echo "server $server, service $service" >> $logfile ( # NOTE You may wish to add the line `echo translate' if you want automatic # CR/LF translation when printing. echo translate echo "print -" cat ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile A maioria das distribuições Linux vem com o nenscript para converter documentos ASCII em Postscript. O script perl abaixo facilita a nossa vida fornecendo uma interface simples ao Linux para impressão via smbprint. Uso: print [-a|c|p] <nomedoarquivo> -a imprime <nomedoarquivo> como ASCII -c imprime <nomedoarquivo> como arquivo fonte formatado -p imprime <nomedoarquivo> como Postscript 52 Se nenhuma opção for dada, print tenta descobrir o tipo de arquivo e imprimi-lo apropriadamente. Usando o smbprint para imprimir arquivos ASCII tende a cortar linhas grandes. Este script quebra linhas grandes com espaços em branco (ao invés de no meio das palavras), se possível. A formatação do código fonte é feita com o nescript. Ele pega um arquivo ASCII e o formata em duas colunas com um cabeçalho legal (data, nome do arquivo, etc). Ele também numera as linhas. Usando isto como exemplo, outros tipos de formatação podem ser obtidos. Documentos Postscript já estão formatados adequadamente, então repasse-os automaticamente. #!/usr/bin/perl # Script: print # Autores: Brad Marshall, David Wood # Plugged In Communications # Data: 960808 # # Script para imprimir numa impressora Postscript printer via Samba. # Finalidade: Pega arquivos de vários tipos e arqumentos e os processa # apropriadamente para um canal(pipe) do script de impressão do Samba. # # Currently supported file types: # # ASCII - assegura-se que as linhas maiores que $line_length caracteres # sejam quebradas nos espaçoes em branco. # Postscript - Não faz nada. # Code - Formata em Postscript (usando nenscript) para aparecer # adequadamente(landscape, font, etc). # # Determina o maior comprimento de linha permitido em textos ASCII $line_length = 76; # Determina o nome e o caminho do script de impressão do samba $print_prog = "/usr/bin/smbprint"; # Determina o nome e o caminho para o nescript (o conversor ASCII-->Postscript) 53 $nenscript = "/usr/bin/nenscript"; unless (-f $print_prog ) { die "Não pude encontrar $print_prog!"; } unless (-f $nenscript ) { die "Não pude encontrar $nenscript!"; } &ParseCmdLine(@ARGV); # DBG print "Arquivo do tipo $filetype\n"; if ($filetype eq "ASCII") { &wrap($line_length); } elsif ($filetype eq "code") { &codeformat; } elsif ($filetype eq "ps") { &createarray; } else { print "Desculpe... tipo de arquivo desconhecido.\n"; exit 0; } # Canalisa a matriz para o smbprint open(PRINTER, "|$print_prog") || die "Não pude abrir $print_prog: $!\n"; foreach $line (@newlines) { print PRINTER $line; } # Envia um linefeed extra no caso do arquivo ter uma última linha incompleta. print PRINTER "\n"; close(PRINTER); print "Completed\n"; exit 0; # --------------------------------------------------- # # Tudo daqui para baixo são sub-rotinas # # --------------------------------------------------- # sub ParseCmdLine { # Parses the command line, finding out what file type the file is 54 # Gets $arg and $file to be the arguments (if the exists) # and the filename if ($#_ < 0) { &usage; } # DBG # foreach $element (@_) { # print "*$element* \n"; # } $arg = shift(@_); if ($arg =~ /\-./) { $cmd = $arg; # DBG # print "\$cmd found.\n"; $file = shift(@_); } else { $file = $arg; } # Defining the file type unless ($cmd) { # We have no arguments if ($file =~ /\.ps$/) { $filetype = "ps"; } elsif ($file =~ /\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm $/) { $filetype = "code"; } else { $filetype = "ASCII"; } # Process $file for what type is it and return $filetype } else { # We have what type it is in $arg if ($cmd =~ /^-p$/) { $filetype = "ps"; } elsif ($cmd =~ /^-c$/) { $filetype = "code"; } elsif ($cmd =~ /^-a$/) { $filetype = "ASCII" 55 } } } sub usage { print " Usage: print [-a|c|p] <filename> -a prints <filename> as ASCII -c prints <filename> formatted as source code -p prints <filename> as Postscript If no switch is given, print attempts to guess the file type and print appropriately.\n "; exit(0); } sub wrap { # Create an array of file lines, where each line is < the # number of characters specified, and wrapped only on whitespace # Get the number of characters to limit the line to. $limit = pop(@_); # DBG #print "Entering subroutine wrap\n"; #print "The line length limit is $limit\n"; # Read in the file, parse and put into an array. open(FILE, "<$file") || die "Can't open $file: $!\n"; while(<FILE>) { $line = $_; # DBG #print "The line is:\n$line\n"; # Wrap the line if it is over the limit. while (length($line) > $limit ) { # DBG #print "Wrapping..."; # Get the first $limit +1 characters. $part = substr($line,0,$limit +1); 56 # DBG #print "The partial line is:\n$part\n"; # Check to see if the last character is a space. $last_char = substr($part,-1, 1); if (" " eq $last_char ) { # If it is, print the rest. # DBG #print "The last character was a space\n"; substr($line,0,$limit + 1) = ""; substr($part,-1,1) = ""; push(@newlines,"$part\n"); } else { # If it is not, find the last space in the # sub-line and print up to there. # DBG #print "The last character was not a space\n"; # Remove the character past $limit substr($part,-1,1) = ""; # Reverse the line to make it easy to find # the last space. $revpart = reverse($part); $index = index($revpart," "); if ($index > 0 ) { substr($line,0,$limit-$index) = ""; push(@newlines,substr($part,0,$limit-$index) . "\n"); } else { # There was no spacein the line, so # print it up to $limit. substr($line,0,$limit) = ""; push(@newlines,substr($part,0,$limit) . "\n"); 57 } } } push(@newlines,$line); } close(FILE); } sub codeformat { # Call subroutine wrap then filter through nenscript &wrap($line_length); # Pipe the results through nenscript to create a Postscript # file that adheres to some decent format for printing # source code (landscape, Courier font, line numbers). # Print this to a temporary file first. $tmpfile = "/tmp/nenscript$$"; open(FILE, "|$nenscript -2G -i$file -N -p$tmpfile -r") || die "Can't open nenscript: $!\n"; foreach $line (@newlines) { print FILE $line; } close(FILE); # Read the temporary file back into an array so it can be # passed to the Samba print script. @newlines = (""); open(FILE, "<$tmpfile") || die "Can't open $file: $!\n"; while(<FILE>) { push(@newlines,$_); } close(FILE); system("rm $tmpfile"); } sub createarray { # Create the array for postscript open(FILE, "<$file") || die "Can't open $file: $!\n"; while(<FILE>) { push(@newlines,$_); } close(FILE); } 58 Agora, via MagicFilter. Obrigado a Alberto Menegazzi (flash.egon@iol.it) por esta informação. Alberto disse: --------------- -----------%<---------------------------------- 1) Instale o MagicFilter com o filtro de impressoras que você precisa em /usr/bin/local mas não preencha o /etc/printcap com a sugestão dada na documentação do MagicFilter. 2) Escreva o /etc/printcap desta forma (está feito para minha LaserJet 4L): lp|ljet4l:\ :cm=HP LaserJet 4L:\ :lp=/dev/null:\ # or /dev/lp1 :sd=/var/spool/lpd/ljet4l:\ :af=/var/spool/lpd/ljet4l/acct:\ :sh:mx#0:\ :if=/usr/local/bin/main- filter: Você pode perceber que o lp=/dev/... está aberto para fazer o locking de tais dispositivos "virtuais", deve ser usado um para cada impressora remota. Exemplo criando com: touch /dev/ljet4l Escreva o filtro /usr/local/bin/main-filter, o mesmo que você sugeriu usando o filtro ljet4l-filter ao invés do cat. Aqui está o meu: #! /bin/sh logfile=/var/log/smb-print.log spool_dir=/var/spool/lpd/ljet4l (echo "print -" /usr/local/bin/ljet4l- filter ) | /usr/bin/smbclient "\\\\SHIR\\HPLJ4" -N -P >> $logfile P.S. : aqui vai uma citação do Print2Win mini-Howto sobre locking e porque criar impressoras virtuais Starts here--> ---Começa aqui Dica de Rick Bressler : Boa dica. Eu uso algo muito parecido. Uma dica útil é que isso não é uma boa idéia: :lp=/dev/null:\ lpr abre em modo exclusivo o arquivo que você especifica em lp=. Ele o faz para evitar que vários processos tentem imprimir na mesma impressora ao mesmo tempo. O efeito colateral disto no seu caso, eng e colour não podem imprimir ao mesmo tempo, (normalmente mais ou menos transparente, já que provavelmente elas imprimem rapidamente e já que elas enfileram, você provavelmente não percebe) mas qualquer outro processo que tenta escrever em /dev/null será quebrado! Em um sistema monousuário, provavelmente não é um grande problema. Eu tenho um sistema com mais de 50 impressoras. Haveria um problema aqui. A solução é criar uma impressora burra para cada. Exemplo: touch /dev/eng. Eu modifiquei as entradas lp no arquivo printcap acima para levar em conta as sugestões do Rick. Eu fiz o seguinte: #touch /dev/eng #touch /dev/colour Ends here-- > ---Termina aqui --------------------------%<---------------------------------- 59 10 O WINS NO SAMBA O Samba pode ser configurado tanto como cliente como servidor WINS, utilizando para isso o daemon nmbd. 10.1 O daemon nmbd O daemon nmbd é um servidor que entende e pode responder solicitações NetBIOS sobre resolução de nomes IP, iguais àquelas produzidas pelos clientes SMBD/CIFS, como Windows 9x, Windows NT e clientes LanManager. Também pode ser configurado para atuar como um servidor WINS, que nada mais é do que uma extensão do protocolo de resolução de nomes do NetBIOS. A configuração do nmbd é definida no arquivo de configuração do Samba. Algumas opções que têm relação com a execução do WINS são: wins support = yes|no informa ao nmbd se ele deve funcionar como servidor WINS. dns proxy = yes|no informa ao nmbd se ele deve utilizar o DNS para resolver as solicitações feitas ao WINS que não puderam ser resolvidas. Só tem sentido se o nmbd estiver rodando como um servidor WINS. O padrão é yes. wins server = 0.0.0.0 informa ao nmbd que ele deve funcionar como um cliente WINS. Note que o nmbd não pode ser ao mesmo tempo servidor e cliente WINS. wins proxy = yes|no informa ao nmbd para responder solicitações de resolução de nomes a favor de um cliente que não possa atender ao WINS. Para isso deve haver pelo menos um servidor de WINS na rede. O padrão é no. 10.2 O Samba como Cliente WINS Para configurar o Samba como um cliente WINS, é preciso editar as seguintes linhas no arquivo /etc/smb.conf: [global] wins server = 172.20.1.3 name resolve order = wins lmhosts bcast Sendo que 172.20.1.3 é o endereço IP do servidor WINS. A opção name resolve order é usada pelos programas do pacote Samba para determinar quais serviços de nomes e em qual ordem tentar resolver os nomes de máquina para endereços IP. Neste caso, irá tentar resolver primeiro usando 60 o servidor WINS (setado na opção anterior), depois procurará o endereço IP no arquivo /etc/lmhosts do Samba, e por último executará um broadcast. 10.3 O Samba como servidor WINS A configuração do Samba para funcionar como um servidor WINS é bem simples. Será necessário apenas configurar as seguintes opções: [global] wins support = yes name resolve order = wins lmhosts bcast A opção wins support é que efetivamente configura o Samba para funcionar como servidor WINS. 61 11 O SAMBA ATUANDO COMO PDC 11.1 Domínios do Windows Com os tradicionais “grupos de trabalho”, o Windows 9x aceitam cada usuário e senha que forem fornecidos na hora do logon (não existem usuários não autorizados). O sistema operacional simplesmente solicita uma nova senha qe autentica o usuário com a senha que possui. A única vez que o Windows 9x tenta usar uma senha que foi fornecida é quando se está tentando conectar a outro compartilhamento. Entretanto, os logons de domínio são similares ao sistema Unix. Para logar em um domínio, um usuário válido e uma senha devem ser fornecidos na inicialização e serão autenticados no banco de dados de senhas do PDC. Se a senha não for válida, o usuário será automaticamente notificado e não efetuará um logon no domínio. Outra vantagem é que depois de feita a autenticação de um usuário, este pode acessar qualquer um dos recursos compartilhados do domínio sem ter que se reautenticar. 11.2 Configurando o Servidor Samba 11.2.1 Clientes Windows 9x Para configurar o servidor Samba para que atue como PDC de um cliente Windows 9x, existem alguns pré-requisitos: • O Samba seja o único controlador primário de domínio do grupo de trabalho atual; • Exista um servidor WINS disponível na rede, que pode ser uma máquina Samba ou Windows NT; • O Samba esteja configurado com nível de segurança de usuário. Para isso, é necessária a inclusão das seguintes opções no arquivo de configuração do Samba: [global] workgroup = DESIGN domain logons = yes security = user os level = 254 local master = yes preferred master = yes domain master = yes 62 A opção domain logons configura o Samba para aceitar logons como um controlador primário de domínio. Quando um cliente faz um logon no domínio, o Samba retorna um token especial para os clientes que permite que eles acessem compartilhamentos de domínio, sem consultar o PDC novamentepara autenticação. Já a opção os level determina a preferência deste servidor na “eleição” sobre qualquer outro sistema. Para garantir que o Samba ganhe a eleição configure o os level como 254. Para maiores informações, veja o arquivo BROWSING.txt no diretório de documentação do Samba. Jamais promova o Samba a mestre de domínio ou coloque um OS level muito alto se o PDC for outro computador – em particular se for o Windows NT. Do contrário haverá uma guerra pela função: nenhum dos servidores aceitará perder a eleição, convocando novas votações em seqüencia, e aumentando o tráfego na rede. A opção local master determina se o samba pode vir a se tornar o master browser local em uma sub-rede. A opção preferred master força o Samba a uma eleição de browser local na inicialização e dá a ele uma chance um pouco maior de vencer a eleição e tornar-se master browser. A opção domain master = yes determina que o Samba seja o master browser do domínio, permitindo que o Samba “confira” listas de máquinas entre redes. Após a configuração das opções será necessário criar um compartilhamento de disco chamado [netlogon], não importando para onde ele apontará, desde que cada cliente Windows consiga conectar-se a ele. [netlogon] comment = Serviço de logon de domínio path = /home/samba/netlogon public = no writeable = no browseable = no O compartilhamento não pode ser public, writeable ou browseable. Ele será usado pelos scripts de logon. 11.2.2 Clientes Windows NT A configuração para clientes Windows NT exige alguns passos a mais. Além das verificações anteriores, é preciso assegurar-se de que o Samba esteja usando senhas criptografadas. Ou seja, será necessário incluir a opção encript password = yes: [global] 63 workgroup = DESIGN encript password = yes domain logons = yes security = user os level = 254 local master = yes preferred master = yes domain master = yes 11.2.2.1 Criando contas confiáveis (trusted accounts) Após a inclusão da opção sobre senhas, é preciso criar um conta confiável. Todos os clientes Windows NT usam-nas para conectar a um controlador primário de domínio. Estas contas permitem a uma máquina efetuar um logon no PDC ( não em seus compartilhamentos), o que significa que o PDC pode confiar em quaisquer conexões posteriores de usuários naquele cliente. Para todos os objetivos e propósitos, uma conta confiável é idêntica a uma conta de usuário. Serão usadas contas de usuário padrão do Linux para emular usuários confiáveis no servidor Samba. O nome de login da conta confiável de uma máquina é o seu nome com um sinal de “$” no final, por exemplo alfa$. A senha inicial da conta é simplesmente o nome da máquina em letras maiúsculas. Para produzir esta conta será necessário criar uma nova conta no Unix com o nome apropriado da máquina, assim como uma senha criptografada no banco de dados smbpasswd. Em primeiro lugar é preciso adicionar um usuário ao sistema, para que seja suportada a conta confiável. Esta conta não precisa ter um diretório home ou um shell válido, pois sua única parte que interessa é se o login é permitido. Assim, será necessário, por exemplo, inserir a seguinte entrada no arquivo /etc/passwd: bart$:x:200:1000:Maquina Homer:/dev/null:bin/false Além disso, não é necessário designar uma senha válida para este usuário (no arquivo /etc/shadow), pois o Samba irá usar o arquivo smbpasswd para manter a senha. Não se deseja que alguém execute um telnet na máquina usando aquela conta. Na verdade o único valor usado diferente do nome da conta é o UID da conta para o banco de dados de senhas criptografadas (200). Este número deve mapear para um ID de um único recurso no servidor NT e não pode conflitar com outros IDs. Portanto, nenhum usuário ou brupo NT deve mapear para este número, ou um erro ocorrerá. Após a criação da conta, é necessário adicionar a senha criptografada; para isto será usado o comando smbpasswd. # smbpasswd –am omega 64 A opção “a” significa que uma conta está sendo adicionada e a opção “m“ que esta é uma conta de máquina. Não será necessário fornecer uma senha, pois o smbpasswd irá automaticamente configurar a senha inicial criptografada como o NetBIOS da máquina em letras minúsculas. Não é necessário adicionar $ ao final do nome da máquina, isto é automático. O Samba está agora pronto para aceitar conexões de clientes Windows NT. 11.3 Limitações do Samba na integração com Windows NT A grande limitação do Samba é não poder se filiar como servidor a um domínio, pois tal capacidade depende do protocolo SAM, cujo modus operandi não é divulgado pela Microsoft. Especificamente, o Samba não pode: • Ser BDC de um domínio NT, pois não tem acesso ao SAM do PDC; • Possuir BDCs; • Ser um servidor “agregado”, cujos recursos e permissões são gerenciados de forma centralizada no PDC; • Ser um servidor de backup WINS; • Ter servidores de de backup WINS; Por outro lado, o Samba pode, entre outras coisas: • Ser um PDC, com clientes Windows 9x, NT e 2000; • Ser um servidor WINS, desde que não tenha que interagir com outros servidores WINS; • Dar suporte a logons ao domínio (9x/NT); • Dar suporte a roaming profiles (9x/NT); • Autenticar a senha de um usuário junto a outro servidor Samba ou NT, seja ou não um PDC O Sambainterage corretamente com o Windows 2000, desde que este último esteja configurado em Modo de Compatibilidade com o NT4. Nativamente, o Windows 2000 utiliza Kerberos e LDAP, e o Samba ainda não oferece interoperabilidade com esses protocolos. 65 12 ARQUIVOS DE LOG DO SAMBA As vezes é necessário saber o que o samba pode fazer, principalmente quando ele não está se comportando conforme o esperado. Este tipo de informação pode ser encontrado nos arquivos de log do Samba, onde é possível ver o motivo de suas ações. O Samba disponibiliza várias opções que permitem aos usuários descrever como e onde as informações de logging devem ser escritas. Estas são opções globais e não podem aparecer dentro das definições dos compartilhamentos. Veja um arquivo de configuração de exemplo: [global] netbios name = ASTERIX server string = Samba %v em (%I) workgroup = DESIGN # Debug logging information log level = 2 log file = /var/log/samba.log.%m max log size = 50 debug timestamp = yes [dados] path = /samba/dados comment = drive de dados volume = Drive-de-dados-simples writeable = yes guest ok = yes No exemplo acima, foi adicionado um arquivo de log customizado que reporta informação até o nível 2, que é relativamente baixo. Os níveis de logging podem variar de 0 a 10, sendo que o 10 é o que fornece maior quantidade de informação. O nível 2 irá fornecer informação de depuração sem desprdiçar espaço no servidor. Os níveis acima de 3 são usados apenas para desenvolvimento. Os arquivos de log estão normalmente localizados no diretório /var/log. Mas é possível usar variáveis de substituição para criar arquivos de log específicos para usuários ou clientes: log file = /usr/local/logs/samba.log.%m O isolamento das mensagens de log facilita a procura por erros, pois sabe-se especificamente qual é a máquina ou usuários que estão causando problemas. 66 Aconselha-se que cada arquivo de log não exceda o tamanho de 50K, conforme especificado na opção max log size. Se o arquivo exceder este tamanho, terá acrescentado o sufixo .old, e um novo será criado. Caso já exista um arquivo .old, será destruído. Isto previne que o um disco fique lotado pelos arquivos de log durante a execução dos daemons. 12.1 Opção log file Esta opção determina onde os arquivos de log do Samba deverão ser gravados. Por exemplo, para configurar o nome e a localização do arquivo de log para /var/log/samba/samba.log, será necessário: [global] log file = /var/log/samba/samba.log Como já foi visto antes, podem ser usadas variáveis para criar logs específicos para cada usuário. 12.2 Opção max log size Esta opção configura o tamanho máximo do arquivo de log do Samba,em Kbytes. [global] log file = /var/log/samba/samba.log max log size = 1024 No caso acima, se o tamanho do arquivo de log exceder um Mbyte, o Samba irá criar um arquivo novo e salvar o antigo com a extensão .old. É recomendado configurar esta opção, pois estas informações de log podem ocupar muito espaço em disco e evita-se desta maneira que administradores descuidados descubram de repente que o disco do servidor foi totalmente ocupado por um único arquivo de log do Samba. 67 13 CONFIGURANDO O SAMBA REMOTAMENTE Além de ser um software de uso livre e compatível com redes existentes, o SAMBA ainda possui outra característica: permite ser administrado remotamente. Para isso deve utilizar um programa específico que geralmente trabalha via http. É possível monitorar através de sua rede interna ou mesmo através da Internet. Os principais programas são o SWAT, Webmin e o LinuxConf. Existem outros mas não vou entrar em detalhes de como instalar estes programas ou utilizá-los, mas abaixo está o link para downloads, inclusive de programas para administrar o SAMBA através da Interface Gráfica do Linux: http://us4.samba.org/samba/GUI 13.1 Utilizando o SWAT Além do Linuxconf, é possível configurar o SAMBA através de uma outra interface amigável: o SWAT. O SWAT é uma interface web para a configuração. Uma grande vantagem do SWAT é que ele permite a configuração remota de um servidor SAMBA, já que só é necessário acessar a máquina pela Internet. Para habilitar o SWAT a partir de seu servidor é necessário editar o arquivo /etc/inetd.conf e descomentar (retirar o "#" inicial) a linha: swat stream tcp nowait.400 root /usr/sbin/swat swat que está, normalmente, no final do arquivo. Caso você não encontre uma linha semelhante, pode-se adicionar a linha acima. Se você possui o xinetd instalado ao invés do inetd, procure a documentação do xinetd para habilitar o SWAT. Basicamente, você deve criar um arquivo em /etc/xinetd.d com a configuração do SWAT e reiniciar o xinetd. Após feita a edição, o serviço inetd deve ser reiniciado, e você poderá fazer isso através do Linuxconf ou digitando o seguinte comando em um terminal: # service inetd restart A partir do momento em que o inetd for reiniciado, o SWAT será acessível através da porta 901 de seu servidor , através de qualquer navegador. O Samba pode ser configurado através do Swat, um utilitário de configuração via Web, semelhante ao encontrado em alguns roteadores. Para acessa-lo basta abrir o Konqueror ou outro Browser disponível e acessar o endereço http://localhost:901 basta fornecer a senha de root para acessar. 68 Antes de mais nada você deverá criar logins para todos os usuários que forem acessar o servidor. Você pode fazer isso através do Iniciar > Configuration > Other > UserDrake. Os logins e senhas devem ser os mesmos que os usuários irão utilizar para se logar no Windows. Um detalhe importante é que na configuração de rede das máquinas Windows (Painel de controle > Redes) você deve marcar a opção de login como “Login do Windows” e não como “Cliente para redes Microsoft” que é o default. Falta agora apenas configurar o Samba para se integrar à rede e compartilhar as pastas desejadas. Ao abrir o Swat você verá um menu como o do screenshot abaixo, com vários links para a documentação disponível sobre o Samba, que você pode consultar para se aprofundar no sistema. Na parte de cima estão os links para as sessões da configuração, que é o que nos interessa: Erro! Argumento de opção desconhecido. Acesse primeiro a seção Password, onde você deverá cadastrar todos os usuários que terão acesso às pastas compartilhadas através do Samba, os mesmos que anteriormente cadastrou no UserDrake. Não apenas o Samba, mas vários outros programas servidores exigem que os usuários também estejam cadastrados no sistema, uma questão de segurança. Basta escrever o nome e senha do usuário e clicar no botão add new user. Erro! Argumento de opção desconhecido. Em seguida, acesse a seção “Globals”, que engloba todas as configurações de rede e de acesso: Erro! Argumento de opção desconhecido. Nas opções Workgroup e NetBios name você deve colocar o nome do computador e o grupo de trabalho a que ele pertence, como faria numa máquina Windows. Na seção security coloque a opção Security como “User”, o que permitirá definir quais usuários terão acesso ao sistema. A opção Encrypt Password também é importantíssima e deve ser configurada de acordo com a versão do Windows que rodar nas máquinas clientes. O Windows 95 original não suporta encriptação de senhas, por isso só poderá se conectar ao servidor caso a opção seja configurada com o valor “No”. Porém, o Windows 95 OSR/2, Windows 98/SE/ME, Windows NT, Windows 2000 e Windows XP utilizam senhas encriptadas, por isso ao utilizar máquinas com qualquer um destes sistemas, que é o mais provável, a opção deve ser configurada como “Yes”. A opção Hosts Allow deve incluir os endereços IP todos os computadores que terão permissão para acessar o servidor. Se quiser que todos os PCs da rede tenham acesso, basta escrever apenas a primeira parte do endereço IP, como em 192.168.0., onde todos os endereços dentro do escopo serão permitidos. 69 A opção Hosts Deny por sua vez permite especificar máquinas dentro do escopo configurados na opção Hosts Allow que não terão permissão para acessar o servidor, as exceções à regra. Por exemplo, se você configurou a opção acima como 192.168.0., mas deseja bloquear o acesso do PC 192.168.0.7, basta incluí-lo aqui. Se quiser incluir várias máquinas basta separar os endereços por espaços. Na seção Browse Options, a opção OS Level permite especificar qual chance o servidor Linux terá de ser o master browser do domínio. No nosso caso é desejável que ele seja o master browser pois ele está concentrando todos os recursos acessados pelas estações. Sendo assim configure esta opção com um valor alto, 100 por exemplo, para que ele sempre ganhe as eleições. O default dessa opção é 20, que faz com que ele perca para qualquer máquina Windows NT, Windows 2000 ou Windows XP. Para completar, deixe a opção Local Master como “Yes” e as opções Preferred Master e Domain Master como “Auto”. Abaixo, deixe a opção Wins Support ativada (Yes). A opção Wins Server deve ser deixada em branco, a menos que exista na rede algum servidor Wins. Como no seu caso o único servidor é a máquina Linux, você pode configurar as máquinas Windows para utilizá-la como servidor Wins, para isto basta colocar o seu endereço IP no campo “Servidor Wins” na configuração de rede das estações. Terminando, pressione o botão Commit Changes no topo da tela para que as alterações entrem em vigor. Finalmente, você deve configurar as pastas a serem compartilhadas com as estações, através da seção Shares: Erro! Argumento de opção desconhecido. Cada usuário que cadastrou no sistema já possui um diretório home criado. Estas pastas ficam dentro do diretório /home e podem ser usadas para guardar arquivos pessoais, já que a menos que seja estabelecido o contrário, um usuário não terá acesso à pasta pessoal do outro. Além dos diretórios home você pode compartilhar mais pastas de uso geral. Para criar um compartilhamento basta escrever seu nome no campo no topo da tela e clicar no botão Create Share: Erro! Argumento de opção desconhecido. Depois de criado um compartilhamento, escolha-o na lista e clique no botão Choose Share para configura-la. Você verá uma lista de opções como a abaixo: Erro! Argumento de opção desconhecido. O campo Path é o mais importante, pois diz justamente qual pasta será compartilhada. O nome do compartilhamento diz apenas com que novo ele 70 aparecerá no ambiente de redes. No caso do compartilhamento do screenshot a pasta compartilhada é /arquivos/programas. A opção Read Only determina se a pasta ficará disponível apenas para leitura (opção Yes) ou se os usuários poderão também gravar arquivos (opção No). Você também pode determinar quais máquinas terão acesso ao compartilhamentoatravés das opções Hosts Allow e Hosts Deny. As configurações feitas aqui subscrevem as feitas na seção global. Se por exemplo a máquina 192.168.0.5 possui permissão para acessar o sistema, mas foi incluída na campo Hosts Deny do compartilhamento programas, ela poderá acessar outros compartilhamentos do sistema, mas não o compartilhamento programas. A opção Browseable permite configurar se o compartilhamento aparecerá entre os outros compartilhamentos do servidor no ambiente de redes, ou se será um compartilhamento oculto, que poderá ser acessado apenas por quem souber que ele existe. Isso tem uma função semelhante a colocar um “$” numa pasta compartilhada no Windows 98. Ela fica compartilhada, mas não aparece no ambiente de redes. Finalmente, a opção Available especifica se o compartilhamento está ativado ou não. Você desativar temporariamente um compartilhamento configurando esta opção como “No”. Fazendo isso ele continuará no sistema e você poderá torna-lo disponível quando quiser, alterando a opção para “Yes”. Um detalhe importante é que os usuários só terão permissão para acessar pastas que o login permite acessar. Por exemplo, no Linux o único usuário que pode acessar a pasta /root é o próprio root, ou outro autorizado por ele. Mesmo que você compartilhe a pasta root através do Samba, os demais usuários não poderão acessá-la. Para editar as permissões de uma pasta, basta abrir o gerenciador de arquivos e nas propriedades da pasta acessar a guia Permissions. As permissões podem ser dadas apenas ao usuário, para todos os usuários pertencentes ao grupo do usuário dono da pasta, ou para todos os usuários. A opção Apply changes to all subdirectories e their contents deve ficar marcada para que as permissões sejam aplicadas também às subpastas: Erro! Argumento de opção desconhecido. Terminadas as configurações, o servidor já irá aparecer no ambiente de redes, como se fosse um servidor Windows. Os compartilhamentos podem ser acessados de acordo com as permissões que tiverem sido configuradas e podem ser mapeados como unidades de rede entre outros recursos. Você pode compartilhar inclusive o CD-ROM do servidor se desejar, basta para isso compartilhar a pasta /mnt/cdrom, mas isso não é muito prático, pois além de trocar o CD-ROM, é necessário montar e desmontar a unidade apartir do servidor. Para compartilhar uma impressora já instalada na máquina Linux o procedimento é o mesmo. Acesse a seção printers, escolha a impressora a ser compartilhada (a lista mostrará todas as instaladas no sistema), configure a opção available como yes e configure as permissões de acesso como 71 vimos anteriormente. No Mandrake você pode instalar impressoras através do Mandrake Control Center. Caso você esteja usando outra distribuição e o utilitário não esteja disponível, tente o linuxconf. 13.2 Acessando compartilhamentos de máquinas Windows O Samba também inclui um módulo cliente, o smbclient que pode ser usado para fazer inverso, ou seja, acessar compartilhamentos de máquinas Windows apartir do Linux. O uso deste comando é bastante simples. Abra um terminal e digite: smbclient -L nome_da_maquina Como por exemplo smbclient -L ascot. Ele pedirá a sua senha de usuário e em seguida mostrará uma lista dos compartilhamentos disponíveis na máquina que solicitou: Erro! Argumento de opção desconhecido. Lembre-se as máquinas Windows 95/98/ME aceitam conexões de rede por parte de qualquer usuário. A única opção de segurança é colocar senhas nos compartilhamentos. Mas, as máquinas rodando Windows NT ou Windows 2000 precisam ser configuradas para dar acesso ao login que você está utilizando na máquina Linux. Para isso basta acessar o painel de controle > usuários e senhas (no Windows 2000) e adicionar o login e senha. Voltando à configuração do smbclient, depois de decidir qual compartilhamento quer acessar, você deverá montá-lo para ganhar acesso. Você pode montar o compartilhamento em qualquer pasta vazia do sistema. Como exemplo eu montei o compartilhamento “C” disponível na máquina ascot no diretório /mnt/windows da máquina Linux. Para isso o comando é o seguinte: mount -t smbfs //ascot/c /mnt/windows -o password=xxxxx (substituindo o xxxxx pela senha, naturalmente) O comando mount é um dos comandos mais tradicionais do Linux, que permite “mapear” um diretório qualquer dentro de outro diretório do sistema para que este possa ser acessado. A opção -t serve para especificar o sistema de arquivos, já que não estamos utilizando um sistema de arquivos nativo do Linux. O smbfs indica o sistema de arquivos que será utilizado, este sistema que permite mapear unidades de rede compartilhadas pelo Windows. Em seguida, especificamos o compartilhamento e o diretório onde ele será montado seguido pelo “-o”. Este é só um exemplo. Se você for montar o compartilhamento arquivos dentro da máquina ricardo no diretório /home/maria/ricardo da máquina Linux, o comando seria: mount -t smbfs //ricardo/arquivos /home/maria/ricardo -o password=xxxxx E assim por diante. 72 No password=xxxxx você deve informar a senha do compartilhamento que está sendo acessado. Se ele não tiver senha, basta deixar este último campo em branco. Depois do comando você pode dar um ls no diretório onde o compartilhamento foi montado só para checar se os arquivos realmente estão lá: Erro! Argumento de opção desconhecido. Depois de montado, o compartilhamento pode ser acessado pelo gerenciador de arquivos da sua interface (Konqueror no KDE, Nautilus no Gnome, etc.): Erro! Argumento de opção desconhecido. No Mandrake 8.1 e outras distribuições que trazem a ferramenta DiskDrake, como por exemplo o TechLinux, você pode montar as partições Windows de um jeito mais prático. O DiskDrake pode ser encontrado dentro do Mandrake Control Center na seção Hardware > Pontos de Montagem. A parte que nos interessa está na aba “Samba”: Erro! Argumento de opção desconhecido. O funcionamento é muito simples. Clique em “novo” e aponte o compartilhamento a ser montado na janela que será aberta. Serão mostrados todos os compartilhamentos disponíveis na rede, inclusive os de outras máquinas Linux rodando o Samba. Erro! Argumento de opção desconhecido. Em seguida, basta fornecer o ponto de montagem desejado. Note que dentro do diskdrake você tem privilégios de root e pode montar os compartilhamentos onde quiser. Mas, tenha o cuidado de não montar numa pasta onde seu login de usuário (ou de quem for usar a máquina) não tenha permissão de acesso. Erro! Argumento de opção desconhecido. Para finalizar, basta montar o sistema de arquivos para ter acesso. Por default, ele passará a ser montado a cada inicialização do sistema, até que você volte aqui e desmonte-o. Mas, você pode alterar isso na seção “opções”. Erro! Argumento de opção desconhecido. 73 13.3 Configurando manualmente Se por qualquer motivo o Swat não estiver instalado no seu sistema, ou você preferir configurar tudo manualmente, basta abrir o arquivo smb.conf, que concentra as configurações do Samba, num formato semelhante ao das opções do Swat, mantendo as mesmas seções: global, homes, printers, etc. Ao instalar o Samba é criado um smb.conf com configurações default, você precisará apenas alterar as mesmas opções que alteraria no Swat. O smb.conf pode ser encontrado em /etc/samba (no caso do Mandrake e RedHat 7) ou em /etc (no caso de algumas distros). Para abri-lo, com privilégios de root, você pode digitar simplesmente kdesu kedit /etc/samba/smb.conf num terminal. # Global parameters [global] workgroup = HOME netbios name = BETA-2 server string = Samba Server %v interfaces = eth0 encrypt passwords = Yes log file = /var/log/samba/log.%m max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 printcap name = lpstat os level = 100 dns proxy = No hosts allow = 192.168.0. printing = cups [homes] comment = Home Directories read only = No browseable = No [printers] comment = All Printers path = /var/spool/samba create mask = 0700 guest ok = Yesprintable = Yes print command = lpr-cups -P %p -o raw %s -r # using client side printer drivers. lpq command = lpstat -o %p lprm command = cancel %p-%j browseable = No [morimoto] 74 path = /home/morimoto read only = No [cd] path = /mnt/cdrom [HP] path = /var/spool/samba read only = No create mask = 0700 guest ok = Yes printable = Yes print command = lpr-cups -P %p -o raw %s -r # using client side printer drivers. lpq command = lpstat -o %p lprm command = cancel %p-%j printer name = HP oplocks = No share modes = No O Swat serve apenas como uma interface para a edição deste arquivo. Seja qual for o modo de configuração escolhido, basta fazer backups regulares deste arquivo para restaurar as configurações do servidor em caso de problemas. Sempre que alterar manualmente smb.conf, ou mesmo alterar algumas opções pelo Swat e quiser verificar se as configurações estão corretas, rode o testparm (basta chama-lo num terminal). Ele funciona como uma espécie de debug, indicando erros grosseiros no arquivo. Se por acaso você estiver utilizando uma distro que não venha com o Samba, basta baixar o RPM adequando à sua distribuição aqui: http://us1.samba.org/samba/ftp/Binary_Packages Para instalar, basta clicar sobre o arquivo ou usar o comando rpm -ivh nome_do_arquivo no terminal. Depois de instalar o arquivo e configurar o smb.conf, use os comandos abaixo para inicializar, parar e verificar o status do serviço sempre que precisar: /etc/rc.d/init.d/smb start /etc/rc.d/init.d/smb stop /etc/rc.d/init.d/smb status O comando smbstatus também é muito útil, pois permite verificar quais estações estão conectadas ao servidor e quais recursos estão sendo acessados no momento. 75 14 CONSIDERAÇÕES O SAMBA permite ainda muitas outras configurações que podem ser consultadas através do man do smb.conf. Uma documentação importante está em /usr/doc/samba-2.2.x/ com dicas e referencias a segurança, navegação, compatibilidades, etc. Uma característica das versões mais recentes do SAMBA é a possibilidade de um cliente NT/2000 usar sua interface nativa de configuração para ver e modificar permissões no Linux. O parâmetro "nt acl support = yes" deve ser adicionado na seção [global] do smb.conf. A aplicação smbmount vem inclusa no pacote do SAMBA (samba-client) com a função de possibilitar a montagem de um compartilhamento de outra máquina localmente. É uma ótima ferramenta mas pode apresentar problemas, onde os mais conhecidos são quando compartilhamos unidades de CD via rede. O comando mount é mais seguro e pode fazer exatamente a mesma tarefa, com a seguinte sintaxe: mount -t smbfs -o username=usuario,password=senha //estacao/pasta /local O diretório /local deve ser criado antecipadamente. Vale a pena escrever uma linha no /etc/fstab para facilitar o processo. Não é aconselhável reiniciar o SAMBA a cada modificação no smb.conf. Com exceção a parâmetros como "path", "logon master", e outros que definem acesso ou segurança, a criação de compartilhamentos e permissões de acesso são automaticamente validadas pelo Samba. Muitos programas ficam "salvando" arquivos constantemente enquanto estão abertos, e se neste momento você reiniciar o SAMBA será um risco de se perder o arquivo. Se o SAMBA deve diferenciar maiúsculas e minúsculas quando procurando por arquivos, adicione "case sensitive = yes". Para utilizar como padrão letras maiúsculas ou minúsculas quando os arquivos são criados, adicione "default case = lower (ou upper)". Para preservar maiúsculas e minúsculas para todos os nomes de arquivo, adicione "preserve case = yes". Para preservar maiúsculas e minúsculas para nomes DOS (8.3), adicione "short preserve case = yes". Se o servidor possui mais de uma placa de rede, o smb.conf deve conter uma especificação para qual placa será utilizada pelo Samba. Adicione o seguinte parâmetro: "interfaces = 192.168.1.1/24", onde o número depois da / é uma referencia à máscara de sub-rede. "24" é o valor a usar para uma rede Classe C não segmentada. Para mais informações sobre cálculo de sub-redes visite: http://www.ziplink.net/~ralphb/IPSubnet/index.html O SAMBA atualmente não pode ser utilizado como BDC (Backup Server) em conjunto com um PDC Windows NT ou 2000. Tanto as versões 2.0.x quanto as 2.2.x ainda não estão prontas para tal tarefa (pelo menos por 76 enquanto). O Samba de modo geral não permite "trust relationship" entre servidores Windows (NT e 2000). Quem sabe após ler estas linhas este recurso já tenha sido disponível? :) Todos os parâmetros de configuração apresentados neste manual são válidos para as versões 2.0.x e 2.2.x do Samba. Caso alguém encontre alguma incompatibilidade, peço que entre em contato ok! Lembre-se que a documentação do SAMBA (do protocolo SMB em geral) é extensa. Consulte os docs criados após a sua instalação. Você pode também obter referencias em documentações do LDP (Linux Documentation Project), que no Brasil está em http://br.tldp.org/. 77 APÊNDICE A. LICENÇA DE PUBLICAÇÃO LIVRE Esta é uma tradução não-oficial da Open Publication License versão 1.0, de 8 de junho de 1999, e não é substituto legal para a Licença original, disponível em http://www.opencontent.org/openpub. Entretanto, esta tradução poderá auxiliar pessoas que falem Português a entender melhor a licença. É permitido a qualquer pessoa copiar e distribuir cópias desse documento de licença, desde que sem a implementação de qualquer mudança. OPEN PUBLIC LICENSE Draft v1.0, 8 june 1999 I. Requisitos comuns às versões modificadas e não modificadas Os trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) podem ser reproduzidos e distribuídos no todo ou em parte, em qualquer meio físico ou eletrônico, desde que os termos desta licença estejam incluídos, e que esta licença ou uma incorporação dela por referência (com quaisquer das opções escolhidas pelo autor ou editor) estejam presentes na reprodução. A forma apropriada para uma incorporação por referência deste livro é: Copyright© 2002 Alfamídia Ltda. Este material somente poderá ser distribuído se sujeito aos termos e condições firmados na Licença de Livre Publicação (Open Publication License), versão 1.0 ou superior (a versão mais atual encontra-se disponível em http://www.opencontent.org/openpub/). Esta referência, devidamente preenchida com os dados da publicação, deve ser seguida imediatamente com quaisquer opções escolhidas pelos autores ou editor do documento (consultar a seção Termos opcionais). É permitida a redistribuição comercial de material licenciado pela Licença de Livre Publicação (Open Publication License). Qualquer publicação no formato livro padrão (papel) requer obrigatoriamente a citação dos autores e editor originais. Os nomes dos autores e do editor devem aparecer em todas as superfícies externas do livro. Em todas as faces externas do livro, o nome do editor original deve estar impresso em tamanho tão grande quanto o título do trabalho, e citado como proprietário em relação àquele título. II. Copyright O copyright de todo trabalho protegido pela Licença de Livre Publicação (Open Publication License) pertence aos autores ou proprietários. 78 III. Escopo da licença Os termos de licença a seguir aplicam-se a todos os trabalhos protegidos pela Licença de Livre Publicação (Open Publication License), a não ser que explicitamente indicado no trabalho. A mera adição de trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) ou partes de trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) em uma mesma mídia que contenha outros trabalhos ou programas não protegidos por essa licença não decorre em aplicação da Licença de Livre Publicação (Open Publication License) para esses outros trabalhos. O trabalho resultante deve explicitamente conter uma nota especificando a inclusão do material protegido pela Licença de Livre Publicação (Open Publication License) e o aviso de copyright apropriado. APLICABILIDADE. Se alguma parte desta licença nãopuder ser aplicada em alguma jurisdição, as partes restantes deste documento continuam sendo aplicadas. AUSÊNCIA DE GARANTIA. Os trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) são fornecidos "como estão", sem garantias de qualquer tipo, explícita ou implícita, incluindo, mas não limitado a, as garantias implícitas de comercialização e conveniência para um propósito particular, ou garantia de não-infração. IV. Requisitos para trabalhos modificados Todas as versões modificadas de documentos cobertos por esta licença, incluindo traduções, antologias, compilações e documentação parcial, deve seguir os requisitos abaixo: A versão modificada deve ser indicada como tal. As pessoas que fizerem as modificações e as datas de modificação devem ser identificadas. O reconhecimento dos autores e editor originais (se aplicável) deve ser mantido de acordo com as práticas acadêmicas usuais de citação. O local da versão não-modificada do documento deve ser indicado. Os nomes originais dos autores não devem ser utilizados para indicar ou garantir seu endosso ao documento resultante sem a autorização expressa dos autores. V. Práticas recomendadas Em adição aos requisitos desta licença, é solicitado e extremamente recomendado aos redistribuidores que: Se os trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) estiverem sendo distribuídos em impressos ou CD-ROM, os autores sejam informados por email, ao menos trinta dias antes, para que os autores tenham tempo de providenciar documentação atualizada. Esta notificação deve descrever as modificaçoes introduzidas no documento, se existirem. 79 Todas as modificações substanciais (incluindo exclusões) devem ser marcadas claramente no documento, ou então descritas em um anexo ao documento. Finalmente, mesmo não sendo obrigatório sob esta licença, é considerado de bom tom oferecer uma cópia sem ônus de todo o material modificado (impresso e CD-ROM) para os autores originais. VI. Termos opcionais Os autores e editores de documentos protegidos pela Licença de Livre Publicação (Open Publication License) podem escolher certas opções de licença simplesmente incluindo alguns parágrafos após a cópia da licença ou sua referência. Estas opções são consideradas parte da licença e devem ser incluídas com ela (ou com a referência a ela) nos trabalhos derivados. As opções que se aplicam a este trabalho são: A:É vedada a distribuição de versões com modificações substanciais deste documento sem a expressa permissão dos proprietários do direito autoral. B:É vedada a distribuição deste trabalho ou qualquer derivado seu em qualquer formato de livro padrão (papel) sem a prévia autorização dos proprietários do direito autoral. Políticas de Publicação Livre (O texto a seguir não é considerado parte da licença.) Os trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) estão disponíveis e podem ser acessados na home page da Open Publication http://works.opencontent.org/ . Os autores de trabalhos protegidos pela Licença de Livre Publicação (Open Publication License) podem incluir suas próprias licenças nesses trabalhos, desde que os termos dessa licença não sejam mais restritrivos que os da Licença de Livre Publicação (Open Publication License). Em caso de dúvidas sobre a Licença de Livre Publicação (Open Publication License), contactar David Wiley <dw2@opencontent.org> ou a lista de autores de publicações <opal@opencontent.org> via email. Para se inscrever na lista de autores de publicações livres (Open Publication Author's List), mande um email para <opal-request@opencontent.org> com a palavra subscribe no corpo da mensagem. Para enviar mensagens para a lista de autores de publicações livres (Open Publication Author's List), mande um email para opal@opencontent.org ou simplesmente responda a uma mensagem postada. Para se desinscrever na lista de autores de publicações livres (Open Publication Author's List), mande um email para opal- request@opencontent.org com a palavra unsubscribe no corpo da mensagem. 80 APÊNDICE B. CONFIGURAÇÃO GERAL Toda a configuração do SAMBA é centralizada no arquivo smb.conf, que deve ser guardado no diretório /etc ou /etc/samba, dependendo da distribuição. Nele é que são descritos os compartilhamentos, permissões de acesso, impressoras, dentre outras configurações disponíveis. Quando instalado, o SAMBA disponibiliza os seguintes componentes: • smbd O servidor SAMBA. • nmbd O Servidor de nomes NetBios • smbclient Cliente SMB para sistemas Unix. • smbmount Ver final do documento, em Configurações. • smbpasswd Alterar senhas (encriptadas) de usuários smb. • smbprint Cliente para envio de impressão a sistemas Linux. • smbstatus Apresenta o estado atual das conexões SMB no Host. • testparm Verifica a validade do arquivo smb.conf. • testprns Verifica a comunicação via rede com as impressoras. O smb.conf é dividido basicamente em três partes: a configuração do servidor SAMBA (parâmetros na seção [global], [printers] e [netlogon]), a configuração dos diretórios/pastas pessoais dos usuários (parâmetros na seção [homes]) e as demais seções que correspondem aos diretórios compartilhados. Cada seção é representada entre colchetes [seção], e os parâmetros são seguidos do sinal de igual (=) e o valor ou termo correspondente. Confira abaixo um exemplo do smb.conf para um servidor Samba como PDC da rede: [global] comment = Servidor SAMBA workgroup = EMPRESA security = user os level = 100 announce as = NT Server domain logons = yes logon script = %U.bat logon path = //%L/Profiles/%U domain master = yes local master = yes 81 preferred master = yes guest account = nobody encrypt passwords = yes # wins server = 192.168.0.2 wins support = yes keep alive = 20 debug level = 3 winpopup command = /bin/csh -c 'xedit %s; rm %s' & log file = /var/log/samba_log.%u null passwords = no unix password sync = yes socket options = IPTOS_LOWDELAY TCP_NODELAY printing = bsd printcap name = /etc/printcap load printers = yes hosts allow = 192.168.0. 127. hosts deny = 192.168.0.3 192.168.0.4 [homes] comment = Pastas dos Usuarios public = no browseable = yes writeable = yes hosts deny = 192.168.0.250 [printers] comment = Impressoras Linux public = no browseable = yes printable = yes read only = yes create mode = 0700 path = /var/spool/samba admin users = admin, usuario1 [netlogon] comment = Compartilhamento de Scripts path = /etc/scripts public = no browseable = yes writeable = no [diretoria] comment = Grupo Diretoria path = /home/diretoria 82 public = no browseable = yes valid users = @diretoria writeable = yes write list = @diretoria force create mode = 0777 force directory mode = 0777 [comercial] comment = Grupo Comercial path = /home/comercial public = yes browseable = yes writeable = yes write list = @comercial read list = @marketing force create mode = 0777 force directory mode = 0777 [transf] comment = Area de Transferencia path = /home/transf public = yes browseable = yes writeable = yes write list = @todos force create mode = 0777 force directory mode = 0775 max disk size = 200 [oculto$] comment = Especifico do Admin path = /home/admin/oculto copy = homes max connections = 1 B.1. Conhecendo os parâmetros B.1.1. Seção [global] Define as configurações globais do SAMBA. A relação abaixo apresenta a explicação dos parâmetros do exemplo: 83 • commentComentário para este Host na Rede. • workgroup Especifica o Domínio ou Workgroup a que o Host pertence na Rede. • security Por padrão o SAMBA utiliza a segurança a nível de usuário (security = user), com opções: o security = share senhas de acesso serão solicitadas por cada recurso compartilhado e não por usuário, ou seja, cada diretório ou impressora poderá ter uma senha única conhecida pelos usuários autorizados. Esta opção é geralmente usada p/ estações de trabalho Linux, onde em diversos casos simplifica o acesso a dados locais quando necessário. o security = user as permissões são dadas de acordocom o login do usuário, ou através dos grupos (@grupo). o security = server o SAMBA tentará validara senha do usuário enviando os dados para outro servidor SMB, como outro servidor SAMBA ou um servidor Windows. Deve-se incluir o parâmetro .password server = x.x.x.x. na seção [global] do smb.conf. o security = domain usado se o Host for adicionado a um Domínio Windows através do comando smbpasswd. Neste caso as informações de usuário e senha serão enviadas para o PDC da rede, exatamente como o servidor NT faria. Note que é necessário que a conta do usuário exista tanto no Linux quanto no servidor primário (mais adiante isso será explicado de forma detalhada). • os level este parâmetro não é obrigatório se você não possui um servidor Linux ou Windows na rede, mas deve ser usado caso tenha um ou mais. A variável é um número de 1 a 255, onde 65 é a mesma variável utilizada pelo servidor Windows. Especifique um número maior que este (como 100 por exemplo) para garantir que o servidor SAMBA seja eleito na escolha de validação do login das estações. • announce as permite especificar o tipo de servidor NetBios (nmbd) que será divulgado na rede. As opções aceitas pelo SAMBA: "NT Server", "NT Workstation", "Win95" ou "WfW". • domain logons usado para validar o login na rede, apenas para estações Windows. • logon script indica qual arquivo de logon script será executado para os usuários. A variável %u corresponde ao usuário na rede. Deve também ser criado um compartilhamento de nome [netlogon] apontando para o diretório dos scripts. • logon path indica o caminho do perfil remoto do usuário. A variável %L corresponde ao nome do servidor NetBios (que pode ser o próprio SAMBA). O logon path é útil quando usuários costumam 84 efetuar logon em mais de um Host na rede, pois seu perfil é trazido com o logon. No caso do exemplo, o diretório "Profiles" deve conter os scripts (em formato Microsoft usando NET USE e etc) e os scripts devem ser criados com o notepad do Windows por exemplo, a fim de conservar o formato do arquivo. • domain master indica se o Host será o Domain Master Browser da rede inteira (WAN). • local master indica se o Host será o Master Browser da rede local. preferred master. Este parâmetro força a eleição do SAMBA como Master Browser para o workgroup. É recomendável utilizar este parâmetro em conjunto com o "domain master = yes" para garantir a eleição. Mas tome cuidado: se você possui uma rede com servidores Windows e SAMBA e já possui um servidor como Domain Master, não use esta opção e deixe o parâmetro "os level = 65" para haver equilíbrio. • guest account o SAMBA trabalha melhor em redes Microsoft com a existência de uma conta guest (visitante em inglês). Por padrão a conta usada é nobody (a mesma utilizada pelo Apache). • wins server indica qual o servidor de Wins da rede. Se o próprio Host for o servidor de Wins então não utilize este parâmetro, pois haverá um loop e o sistema travará! • wins supportpermite ao SAMBA ser o servidor de Wins na rede. Isto significa que o SAMBA terá uma tabela com o ambiente completo da rede, garantindo que as estações tenham acesso a estas informações e ganho em velocidade para encontrar e acessar os compartilhamentos e impressoras. O Wins Server deve ser especificado na configuração de rede (TCP/IP) das estações, indicando o endereço IP do servidor. • keep alive Como máquinas rodando Windows tendem a travar com o passar do tempo, este parâmetro é usado para verificar o estado da conexão, evitando tráfego desnecessário na rede. Também pode ser usado para estações Linux. • debug level Parâmetro usado para dar flexibilidade a configuração do sistema. Permite ao SAMBA trabalhar corretamente com algumas situações de erro, por exemplo. • winpopup command Especifica qual comando será executado quando o servidor receber mensagens Winpopup. Aqui, muitas opções podem ser usadas de acordo com a preferência do Administrador. Se sua rede utiliza mensagens deste tipo, é interessante definir um comando para o parâmetro, evitando assim possíveis mensagens de erro para quem enviou a mensagem ao servidor. • log file Indica o arquivo de log do SAMBA. A variável %u corresponde ao nome de logon do usuário. O samba por padrão gera arquivos de log em /var/log/samba que indicam por exemplo os 85 horários de logon dos usuários, quem acessou determinado arquivo, etc. Esteja atento para estas informações para consultas quando necessário. • null passwords Indica se será ou não possível que usuários tenham senha nula de logon (logon sem senha). • unix password sync Se este parâmetro for ativado (= yes) então clientes SMB (como estações Windows) poderão trocar sua senha de login. • socket options Este parâmetro permite configurações extras para o protocolo, possibilitando uma melhor performance do servidor em lidar com os pacotes na rede. • printing Indica qual o sistema de impressão padrão utilizado pelo Linux. • printcap name Indica o arquivo para busca das definições das impressoras. • load printers Disponibiliza as impressoras para a rede. • hosts allow Indica quais máquinas tem acesso ao servidor SAMBA. Pode-se utilizar o endereço IP ou o nome da máquina. Para garantir acesso a toda uma rede por exemplo, escreva: "hosts allow = 192.168.1.". Este parâmetro deve ser usado preferencialmente nas demais seções, mas também pode ser usado na seção Global. • hosts deny Como em "hosts allow", mas para restringir o acesso ao servidor SAMBA. B.1.2. Seção [homes] Define os parâmetros para as pastas pessoais dos usuários na rede (home dir): • comment comentário para este compartilhamento. • public também conhecido como "guest ok", permite ou não acesso de outros usuários. • browseable Define se o compartilhamento será ou não visível para o Ambiente de Rede. Estações Windows95 versão 4.00.950-C não aceitam esta opção, onde uma possível solução é utilizar o nome do compartilhamento seguido de $ (teste$ por exemplo), como faz-se no Windows. • writeable Indica se o usuário poderá ou não escrever em sua pasta pessoal (home dir). 86 B.1.3. Demais Seções [shares] Correspondem aos compartilhamentos presentes na rede. Os parâmetros abaixo são apenas alguns dos possíveis que podem ser utilizados: • commentComentário para o compartilhamento. • path Caminho do diretório compartilhado. • valid users Este parâmetro é usado para destacar quem terá acesso ao compartilhamento na rede. É importante destacar que estações Win95/98/Me têm diferenças entre si que em muitas situações representam um problema para acesso e segurança. Acontece algumas vezes de você definir o "write list" e o "read list" corretamente mas mesmo assim usuários do "read list" conseguem escrever no compartilhamento (!). Para resolver este problema, inclua o "valid users" indicando os usuários que têm acesso e em seguida inclua o "write list" e o "read list" conforme sua necessidade. • writeable Indica se será ou não possível criar ou excluir arquivos ou diretórios do compartilhamento. • public / guest ok Indica se será ou não permitido o acesso de outros usuários. • browseable Define se o compartilhamento será ou não visível para o Ambiente de Rede do Windows (apresentado na rede). • write list Define os usuários e/ou grupos com acesso de escrita no compartilhamento. Para mais de um usuário, separe os nomes por vírgula(user1, user2, etc) e para grupos utilize @ antes do nome do grupo. • read list Como em write list, mas define quem terá permissão de apenas leitura. • force create mode Diz ao SAMBA para forçar o tipo de permissão dos arquivos criados (o mesmo que usar o chmod). Esta permissão tem menor prioridade que os parâmetros write list e read list. • force directory mode O mesmo que force create mode, mas para os diretórios criados no compartilhamento. • admin users Indica quais são os usuários com permissão completa para o compartilhamento (permissão de root). • copy Permite copiar os parâmetros de outra seção, como um template por exemplo, útil se utilizacompartilhamentos semelhantes. Para alterar parâmetros basta informá-los na seção atual. • hosts allow Indica quais máquinas podem acessar o compartilhamento. Pode-se utilizar o endereço IP ou o nome da máquina. Para garantir acesso a toda uma rede classe C por exemplo, escreva: "hosts allow = 192.168.1.". 87 • hosts deny Como em "hosts allow", mas para restringir o acesso ao compartilhamento. • max connections Permite especificar o número máximo de conexões simultâneas ao compartilhamento. • max disk size Permite especificar qual o limite de espaço em disco que o compartilhamento pode utilizar. Este valor é definido em Mb (megabytes). 88 APÊNDICE C. VARIÁVEIS PRÉ-DEFINIDAS Abaixo temos variáveis que podem ser usadas em parâmetros: • %S nome do Serviço (compartilhamento) atual. • %u nome do usuário. • %g nome do grupo. • %H nome do diretório pessoal do usuário (home dir). • %m nome da máquina cliente fornecido pelo NetBios. • %L nome do servidor NetBios, permitindo que a configuração desejada seja alterada de acordo com o cliente que vai acessar o sistema. • %M nome Internet da máquina cliente. • %a sistema Operacional da máquina remota, onde os reconhecidos são WfW, Win95, Win2000. • %I o endereço IP da máquina cliente. • %T data e horário. • %v versão do Samba