Anda di halaman 1dari 91

Instalao e configurao usando o Swat

A necessidade de compartilhar arquivos e impressoras motivou o aparecimento das primeiras redes de computadores (ainda na dcada de 70) e continua sendo uma necessidade comum. Mesmo para fazer um simples backup armazenado remotamente, necessrio configurar algum tipo de compartilhamento de arquivos. Existem diversas formas de disponibilizar arquivos atravs da rede, incluindo o NFS, o FTP, o SFTP e at mesmo um servidor web, que pode ser usado para compartilhar a pasta contendo os arquivos e aceitar uploads atravs de um script em PHP, por exemplo. Entretanto, quando falamos em redes locais, o protocolo mais usado o CIFS (Common Internet File System), que o protocolo usado para compartilhar arquivos e impressoras em redes Microsoft. O nome "CIFS" pode soar estranho primeira vista, mas ele nada mais do que a mais nova verso do protocolo SMB, usada a partir do Windows 2000. A histria do SMB e do CIFS comea em 1984, quando a IBM criou o protocolo NetBIOS (Network Basic Input Output), um protocolo para troca de mensagens entre micros PC ligados em rede, originalmente desenvolvido para servir como uma extenso do BIOS da placa-me, oferecendo recursos de rede. Em 1985, o protocolo foi expandido, dando origem ao protocolo NetBEUI, que foi durante muito tempo o principal protocolo usado em redes locais, antes da popularizao do TCP/IP. O SMB (Server Message Block) veio mais tarde, junto com o Windows 3.11. O protocolo SMB governa o compartilhamento de arquivos e impressoras em redes Microsoft, incluindo a navegao na rede, o estabelecimento de conexes e a transferncia de dados. Ele utiliza o NetBIOS para a troca de mensagens entre os hosts e inclui uma verso atualizada do protocolo, que roda sobre o TCP/IP. Acessando as propriedades do protocolo TCP/IP dentro das configuraes de rede de uma mquina com o Windows XP, voc pode ver que ele (NetBIOS) continua presente, com o objetivo de manter compatibilidade com as verses anteriores do Windows:

O problema com o NetBIOS que ele depende do uso intensivo de pacotes de broadcast e de pacotes UDP. O CIFS a evoluo natural do SMB, que inclui diversos novos recursos, abandona o uso do NetBIOS e passa a utilizar uma nica porta TCP (445) no lugar das trs portas (137 UDP, 138 UDP e 139 TCP) utilizadas pelo SMB. O Samba justamente uma implementao das mesmas

funes para sistemas Unix, incluindo no apenas o Linux, mas tambm o BSD, Solaris, OS X e outros primos. Ele comeou como uma implementao do protocolo SMB e foi ento sucessivamente expandido e atualizado, de forma a incorporar suporte ao CIFS e a se manter atualizado em relao aos recursos oferecidos pelas verses mais recentes do Windows.

Um Pouco de Histria
O projeto nasceu no final de 1991, de forma acidental. Andrew Tridgell, um australiano que na poca era estudante do curso de PhD em cincias da computao da Universidade Nacional da Austrlia. Ele precisava rodar um software da DEC (que na poca era uma das gigantes no ramo de tecnologia) chamado "eXcursion", que trabalhava em conjunto com o Patchworks, um software de compartilhamento de arquivos. O Patchworks era um software proprietrio, que utilizava um protocolo obscuro, sobre o qual no existiam muitas informaes disponveis. Como todo bom hacker, ele decidiu estudar o protocolo e assim desenvolver um servidor que pudesse rodar em seu PC. Ele desenvolveu ento um pequeno programa, chamado clockspy, que era capaz de examinar o trfego da rede, capturando as mensagens enviadas pelo cliente e as respostas do servidor. Com isso, ele foi rapidamente capaz de implementar o suporte s principais chamadas e a desenvolver um programa servidor, que era capaz de conversar com os clientes rodando o Patchworks. O objetivo desta primeira verso era apenas resolver um problema domstico: interligar um micro PC rodando o MS-DOS ao servidor rodando o Solaris. Depois de algum tempo, Andrew recebeu um email contando que o programa tambm funcionava em conjunto com o LanManager da Microsoft, permitindo compartilhar arquivos de um servidor Unix com mquinas rodando o MS-DOS. O protocolo obscuro usado pelo Patchworks se revelou uma implementao do protocolo SMB, que havia sido desenvolvida internamente pela DEC. Nasceu assim, acidentalmente, o um dos aplicativos open-source mais importantes da atualidade. Pouco depois, em janeiro de 1992, ele disponibilizou o "Server 0.1" no servidor da Universidade, que foi rapidamente seguido por uma verso aprimorada, o "Server 0.5". Este arquivo ainda pode ser encontrado em alguns dos FTPs do http://samba.org, com o nome "server-0.5". Esta verso inicial rodava sobre o MS-DOS. Depois de um longo perodo de hibernao, o software foi portado para o Linux, dando origem verso seguinte (1.5), que foi lanada apenas em dezembro de 1993 e passou a se chamar "smbserver". O nome continuou sendo usado at abril de 1994, quando foi finalmente adotado o nome definitivo. O nome "Samba" surgiu a partir de uma simples busca dentro do dicionrio Ispell por palavras que possussem as letras S, M e B, de "Server Message Blocks", posicionadas nessa ordem. A busca retornou apenas as palavras "salmonberry", "samba", "sawtimber" e "scramble", de forma que a escolha do nome acabou sendo bvia. Uma curiosidade que no existiu um "Samba 1.0", pois a primeira verso a utilizar o nome "Samba" foi a 1.6.05, que foi a sucessora imediata do "smbserver 1.6.4". O projeto comeou a se tornar popular a partir da verso 1.6.09 (lanada pouco depois), que foi a primeira a trazer suporte ao controle de acesso com base nos logins de usurio (assim como o Windows NT), enquanto as verses anteriores suportavam apenas o controle de acesso com base no compartilhamento (assim como no Windows 3.11 e 95), onde a nica opo de segurana era usar uma senha de acesso para os compartilhamentos. A partir da, o projeto no parou de crescer, atraindo um nmero crescente de usurios e desenvolvedores, at se transformar no monstro sagrado que hoje. Estes dois links contam um pouco mais sobre a histria do Samba, desde as primeiras verses: http://www.samba.org/samba/docs/10years.html http://www.rxn.com/services/faq/smb/samba.history.txt Em 1994 a Microsoft liberou as especificaes do SMB e do NetBIOS, o que permitiu que o desenvolvimento do Samba desse um grande salto, tanto em recursos quanto em compatibilidade, passando a acompanhar os novos recursos adicionados ao protocolo da Microsoft, que mais tarde novamente deixou de ser aberto. Hoje, alm de ser quase 100% compatvel com os recursos de rede do Windows 98, NT, 2000 e XP, o Samba reconhecido por ser mais rpido que o prprio Windows

na tarefa de servidor de arquivos. Um dos pontos fortes do Samba que o projeto foi todo desenvolvido sem precisar incorrer em qualquer violao de patentes. Todas as chamadas (com exceo das que a Microsoft tornou pblicas em 1994) foram implementadas monitorando as transmisses de dados atravs da rede, processo que os desenvolvedores chamam de "French Cafe technique". Dentro da analogia, seria como aprender francs sentando-se em um caf e passando a prestar ateno nas conversas, aprendendo a partir da novas palavras, expresses e situaes onde elas podem ou no serem usadas. um trabalho bastante detalhista e tedioso, que demanda um grande esforo e resulta em avanos graduais, mas, se executado por anos a fio, como no caso do Samba (que comeou a ser desenvolvido em 1991), resulta em conquistas surpreendentes. Isso torna o Samba virtualmente invulnervel a aes legais relacionadas a quebras de patentes ou problemas similares, j que o software inteiramente baseado em observao e no uso de especificaes pblicas. Uma curiosidade que a existncia do Samba permitiu que a Microsoft conseguisse colocar PCs rodando Windows em muitos nichos onde s entravam Workstations Unix, j que com o Samba os servidores Unix existentes passaram a ser compatveis com as mquinas Windows. Ou seja: at certo ponto, o desenvolvimento do Samba foi vantajoso at mesmo para a Microsoft. Quase tudo que voc pode fazer usando um servidor Windows, pode ser feito tambm atravs do Samba, com uma excelente segurana, confiabilidade e com um desempenho em muitas situaes bastante superior ao de um servidor Windows com a mesma configurao. O Samba uma soluo bastante completa e flexvel para uso em redes locais, pois oferece um grande volume de opes de configurao e compatvel com todas as verses do Windows; do 3.11 ao Vista. Alm de compartilhar arquivos, ele permite tambm compartilhar impressoras e centralizar a autenticao dos usurios, atendendo tanto a clientes Windows, quanto a clientes Linux. Para os clientes Windows, o servidor Samba aparece no ambiente de redes exibindo os compartilhamentos disponveis, exatamente da mesma forma que um servidor Windows:

Os compartilhamentos podem ser acessados da forma tradicional e inclusive mapeados. No caso dos compartilhamentos de impressoras, possvel inclusive utilizar o Point-and-Print, onde os clientes obtm os drivers de impresso diretamente a partir do servidor e a impressora fica disponvel com apenas dois cliques. Alm de compartilhar arquivos e impressoras, o servidor Samba pode atuar como um PDC, autenticando os usurios da rede. Existem tambm diversas opes de segurana, que permitem restringir o acesso aos compartilhamentos. Naturalmente, o servidor pode ser acessado de forma simples tambm nos clientes Linux da rede. As verses recentes do Konqueror e do Nautilus incorporam plugins que permitem acessar os compartilhamentos de forma bastante prtica (experimente digitar smb://endereo_do_servidor na barra de endereos do Konqueror) e existem tambm clientes especializados, como o Smb4k:

O Samba dividido em dois mdulos, o servidor Samba propriamente dito e o "smbclient", o cliente que permite acessar compartilhamentos em outras mquinas. Os dois so independentes, de forma que voc pode instalar apenas o servidor, apenas o cliente ou ambos, de acordo com a funo da mquina.

Instalando o Samba
Como comentei a pouco, o Samba dividido em dois mdulos. O servidor propriamente dito e o cliente, que permite acessar compartilhamentos em outras mquinas (tanto Linux quanto Windows). Os dois so independentes, permitindo que voc mantenha apenas o cliente instalado num desktop e instale o servidor apenas nas mquinas que realmente forem compartilhar arquivos. Isso permite melhorar a segurana da rede de uma forma geral. Os pacotes do Samba recebem nomes um pouco diferentes nas distribuies derivadas do Debian (incluindo o Ubuntu, Kubuntu e outras) e no Fedora (e outras distribuies derivadas do Red Hat, como o CentOS). Veja:
Pacote Servidor Cliente Debian samba Fedora samba

smbclient samba-client samba-doc samba-swat

Documentao samba-doc Swat swat

Para instal-lo no Debian ou Ubuntu, por exemplo, voc usaria: # apt-get install samba smbclient swat samba-doc O script de instalao faz duas perguntas. A primeira se o servidor deve rodar em modo daemon ou sob o inetd. Responda "daemons" para que o servidor rode diretamente. Isso garante um melhor desempenho, melhor segurana e evita problemas diversos de configurao relacionados ao uso do inetd, servio que est entrando em desuso. Em seguida ele pergunta: "Gerar a base de dados para senhas /var/lib/samba/passdb.tdb?". importante responder que "Sim", para que ele crie o arquivo onde sero armazenadas as senhas de acesso. Como explica o script, "Caso voc no o crie, voc

ter que reconfigurar o samba (e provavelmente suas mquinas clientes) para utilizao de senhas em texto puro", o que um procedimento trabalhoso, que consiste em modificar chaves de registro em todas as mquinas Windows da rede e modificar a configurao de outros servidores Linux. Muito mais fcil responder "Sim" e deixar que ele utilize senhas encriptadas, que o padro. :) Lembre-se de que voc deve instalar todos os pacotes apenas no servidor e em outras mquinas que forem compartilhar arquivos. O Swat pode ajudar bastante na etapa de configurao, mas ele opcional, pois voc pode tanto editar manualmente o arquivo smb.conf, quanto usar um arquivo pronto, gerado em outra instalao. Nos clientes que forem apenas acessar compartilhamentos de outras mquinas, instale apenas o cliente. No Fedora e no CentOS a instalao feita usando o yum: # yum install samba samba-client samba-doc samba-swat O Fedora inclui mais um pacote, o "system-config-samba", um utilitrio de configurao rpida, que permite criar e desativar compartilhamentos de forma bem prtica. Outro configurador rpido o mdulo "Internet & Rede > Samba", disponvel no Painel de Controle do KDE. Aqui abordo apenas a configurao manual e o uso do Swat, que o configurador mais completo, mas voc pode lanar mo destes dois utilitrios para realizar configuraes rpidas. Com os pacotes instalados, use os comandos: # # ... para iniciar e parar o servio. /etc/init.d/samba /etc/init.d/samba start stop

Por padro, ao instalar o pacote criado um link na pasta "/etc/rc5.d", que ativa o servidor automaticamente durante o boot. Para desativar a inicializao automtica, use o comando: # update-rc.d -f samba remove Pata reativ-lo mais tarde, use: # update-rc.d -f samba defaults No Fedora, CentOS e no Mandriva, os comandos para iniciar e parar o servio so: # # service smb stop service smb start

Para desabilitar o carregamento durante o boot, use o "chkconfig smb off" e, para reativar, use o "chkconfig smb on". Note que, em ambos, o pacote de instalao se chama "samba", mas o servio de sistema chama-se apenas "smb". sempre recomendvel utilizar os pacotes que fazem parte da distribuio, que so compilados e otimizados para o sistema e recebem atualizaes de segurana regularmente. De qualquer forma, voc pode encontrar tambm alguns pacotes compilados por colaboradores no http://samba.org/samba/ftp/Binary_Packages/, alm do cdigo fonte, disponvel no http://samba.org/samba/ftp/stable/. Ao instalar a partir do cdigo fonte, o Samba instalado por default na pasta "/usr/local/samba", com os arquivos de configurao na pasta "/usr/local/samba/lib". Este texto baseado no Samba 3 que, enquanto escrevo, a verso estvel, recomendada para ambientes de produo. O Samba 3 trouxe suporte ao Active Directory, passou a ser capaz de atuar como PDC, trouxe muitas melhorias no suporte a impresso e inmeras outras melhorias em relao srie 2.x. O Samba 3.0.0 foi lanado em setembro de 2003, ou seja, h mais de 4 anos. Comparado com os ciclos de desenvolvimento das distribuies Linux, que so em sua maioria atualizadas a cada 6 ou 12 meses, 4 anos podem parecer muita coisa, mas se compararmos com os ciclos de desenvolvimento de novas verses do Windows, por exemplo, os ciclos parecem at curtos :). Para efeito de comparao, o Samba 2 (o major release anterior) foi lanado em 1999 e o Samba 4 est (em junho de 2008) em estgio de desenvolvimento, ainda sem previso de concluso. Por ser um software utilizado em ambientes de produo, novas verses do Samba so exaustivamente testadas antes de serem consideradas estveis e serem oficialmente lanadas. Graas a isso, muito raro o aparecimento de bugs graves e, quando acontecem, eles costumam ser

corrigidos muito rapidamente. Naturalmente, as verses de produo continuam sendo atualizadas e recebendo novos recursos. Entre o Samba 3.0.0 lanado em 2003 e o Samba 3.0.24 includo no Debian Etch, por exemplo, foram lanadas nada menos do que 28 minor releases intermedirios. Se tiver curiosidade em ler sobre as alteraes em cada verso, pode ler o change-log de cada verso no: http://samba.org/samba/history/. Voc pode verificar qual a verso do Samba instalada usando o comando: # "smbd -V" como em: # smbd -V Version 3.0.24 Ao usar qualquer distribuio atual, muito provavelmente voc encontrar o Samba 3.0.23 ou superior. Se por acaso voc estiver usando alguma distribuio muito antiga, que ainda utilize uma verso do Samba anterior 3.0.0, recomendo que atualize o sistema, j que muitos dos recursos que cito ao longo do texto, sobretudo o uso do Samba como PDC, no funcionam nas verses da srie 2.x. Para usar o Samba em conjunto com estaes rodando o Windows Vista, voc deve utilizar o Samba verso 3.0.22, ou superior, que oferece suporte ao protocolo NTLMv2, que o protocolo de autenticao utilizado por padro pelo Windows Vista. Se no for possvel atualizar o Samba, a segunda opo configurar as estaes com o Vista para permitirem o uso do sistema NTLM, o que feito atravs do utilitrio "secpol.msc" em "Diretivas locais > Opes de segurana > Segurana de rede: nvel de autenticao Lan Manager", alterando o valor da opo de "Enviar somente resposta NTLMv2" para "Enviar LM e NTLM - use a segurana da sesso NTLMv2, se negociado".

Cadastrando Usurios
Depois de instalar o Samba, o prximo passo cadastrar os logins e senhas dos usurios que tero acesso ao servidor. Esta uma peculiaridade do Samba: ele roda como um programa sobre o sistema e est subordinado s permisses de acesso deste. Por isso, ele s pode dar acesso para usurios que, alm de estarem cadastrados no Samba, tambm esto cadastrados no sistema. Existem duas abordagens possveis. A primeira criar usurios "reais", usando o comando adduser ou um utilitrio como o "user-admin" (disponvel no Fedora e no Debian, atravs do pacote gnome-system-tools). Ao usar o adduser, o comando fica: # adduser maria Uma segunda opo criar usurios "castrados", que tero acesso apenas ao Samba. Essa abordagem mais segura, pois os usurios no podero acessar o servidor via SSH ou Telnet, por exemplo, o que abriria brecha para vrios tipos de ataques. Nesse caso, voc cria os usurios adicionando os parmetros que orientam o adduser a no criar o diretrio home e a manter a conta desativada at segunda ordem: # adduser --disabled-login --no-create-home maria Isso cria uma espcie de usurio fantasma que, para todos os fins, existe e pode acessar arquivos do sistema (de acordo com as permisses de acesso), mas que, por outro lado, no pode fazer login (nem localmente, nem remotamente via SSH), nem possui diretrio home. Uma dica que no Fedora e no CentOS (e outras distribuies derivadas do Red Hat), voc s consegue usar o comando caso logue-se como root usando o comando "su -" ao invs de simplesmente "su". A diferena entre os dois que o "su -" ajusta as variveis de ambiente, incluindo o PATH, ou seja, as pastas onde o sistema procura pelos executveis usados nos comandos. Sem isso, o sistema no encontra o executvel do adduser, que vai na pasta "/usr/sbin". Os parmetros suportados pelo adduser tambm so um pouco diferentes. O padro j criar um login desabilitado (voc usa o comando "passwd usurio" para ativar) e, ao invs do "--no-create-home", usa a opo "-M". O comando (no Fedora) fica, ento:

# adduser -M maria De qualquer uma das duas formas, depois de criar os usurios no sistema voc deve cadastr-los no Samba, usando o comando: "smbpasswd -a", como em: # smbpasswd -a maria Se voc mantiver os logins e senhas sincronizados com os usados pelos usurios nos clientes Windows, o acesso aos compartilhamentos automtico. Caso os logins ou senhas no servidor sejam diferentes, o usurio precisar fazer login ao acessar:

Um detalhe importante que, ao usar clientes Windows 95/98/ME, voc deve marcar a opo de login como "Login do Windows" e no como "Cliente para redes Microsoft" (que o default) na configurao de rede (Painel de controle > Redes). Para desativar temporariamente um usurio, sem remov-lo do sistema (como em situaes onde um funcionrio sai de frias, ou um aluno suspenso), voc pode usar o parmetro "-d" (disable) do smbpasswd, como em: # smbpasswd -d maria Se o servidor Samba for configurado como PDC da rede, autenticando os clientes Windows (como veremos em detalhes a seguir), os usurios com contas desativadas sequer conseguem fazer logon no sistema:

Para reativar a conta posteriormente, use o parmetro "-e" (enable), como em: # smbpasswd -e maria Se, por outro lado, voc precisar remover o usurio definitivamente, use o parmetro "-x" (exclude), seguido pelo comando "deluser", que remove o usurio do sistema, como em: # # deluser maria smbpasswd -x maria

Depois de criados os logins de acesso, falta agora apenas configurar o Samba para se integrar rede e compartilhar as pastas desejadas, trabalho facilitado pelo Swat. A segunda opo editar manualmente o arquivo de configurao do Samba, o "/etc/samba/smb.conf", como veremos mais adiante. As opes que podem ser usadas no arquivo so as mesmas que aparecem nas pginas do Swat, de forma que voc pode at mesmo combinar as duas coisas, configurando atravs do Swat e fazendo pequenos ajustes manualmente, ou vice-versa.

Usando o Swat
O Swat um utilitrio de configurao via web, similar ao encontrado nos modems ADSL. Isso permite que ele seja acessado remotamente e facilita a instalao em servidores sem o ambiente grfico instalado. Esta mesma abordagem utilizada por muitos outros utilitrios, como o Webmin. Manter o ambiente grfico instalado e ativo em um servidor dedicado considerado um desperdcio de recursos, por isso os desenvolvedores de utilitrios de configurao evitam depender de bibliotecas grficas. Desse modo, mesmo distribuies minimalistas podem inclu-los. No caso de redes de pequeno ou mdio porte, voc pode at mesmo usar uma mquina antiga como servidor de arquivos, fazendo uma instalao minimalista do Debian, Ubuntu ou outra distribuio e instalando o Samba e o Swat em modo texto. Como facilitador, o Swat acaba sendo uma faca de dois gumes, pois ao mesmo tempo em que facilita a configurao, por ser uma ferramenta visual e dispensar a edio manual do arquivo, ele complica, por oferecer um grande nmero de opes especficas ou obsoletas. Vamos ento aprender como fazer uma configurao bsica usando o Swat e depois nos aprofundar na configurao do Samba editando o smb.conf manualmente. Se preferir, voc pode ir diretamente para o tpico seguinte.

Ativando o Swat
No Debian, Slackware e tambm no Gentoo, o Swat inicializado atravs do inetd. O inetd tem a funo de monitorar determinadas portas TCP e carregam servios sob demanda. Isto evita que servios e utilitrios que so acessados esporadicamente (como o Swat) precisem ficar ativos o tempo todo, consumindo recursos do sistema. No caso do Ubuntu, o inetd no vem instalado por padro. A documentao recomenda usar o xinetd no lugar dele, o que uma boa deixa para falar um pouco sobre as diferenas de configurao entre os dois servios. O xinetd tem a mesma funo do inetd ou seja, carregar servios sob demanda, mas ele mais recente e um pouco mais seguro, de forma que acabou se tornando o mais usado. Apesar disso, a configurao dos dois diferente: no caso das distribuies que usam o inetd, voc precisa adicionar (ou descomentar) a linha abaixo no arquivo de configurao do inetd, o "/etc/inetd.conf": swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat O arquivo "/etc/inetd.conf" composto por um grande nmero de linhas similares a essa, cada uma referente a um dos servios suportados por ele (incluindo os servios que no esto instalados). Ao descomentar a linha, voc ativa o servio. Para que a alterao entre em vigor, reinicie o inetd com o comando: # /etc/init.d/inetd restart Para o xinetd, a configurao um pouco diferente. Em vez em um nico arquivo de configurao, com uma linha para cada servio, utilizado um conjunto de arquivos de configurao (um para cada servio) que so armazenados na pasta "/etc/xinetd.d". O primeiro passo para instalar o Swat no Ubuntu seria instalar os pacotes "swat" e "xinetd" usando o apt-get: # apt-get install swat xinetd Para ativar o Swat, necessrio criar o arquivo "/etc/xinetd.d/swat", com o seguinte contedo:

service port socket_type wait user server = disable = no } # /etc/init.d/xinetd restart

/usr/sbin/swat

swat = = = = log_on_failure

+=

{ 901 stream no root USERID

Depois de criado o arquivo, reinicie o servio e o Swat ficar disponvel. Nas distribuies derivadas do Red Hat, o Swat tambm inicializado atravs do xinetd, mas nelas a configurao pode ser feita de forma automtica utilizando o chkconfig. Para ativ-lo, use os comandos: # # service xinetd restart chkconfig swat on

Em caso de problemas, abra o arquivo "/etc/xinetd.d/swat" e substitua a linha "disable = yes" (caso presente) por "disable = no" e reinicie novamente o servio xinetd. No Fedora, voc pode tambm reiniciar os servios usando o utilitrio "systemconfig-services", que funciona como uma interface grfica para o comando "service". Como pode ver, devido s diferenas de configurao entre as distribuies e o uso do xinetd/inetd, ativar o Swat pode ser um pouco mais complicado do que ativar outros servios, embora o Samba propriamente dito no dependa dele para fazer seu trabalho. Para acessar o Swat localmente, basta abrir o Firefox ou outro Browser disponvel e acessar o endereo http://localhost:901. No prompt de login, fornea a senha de root (do sistema) para acessar. As credenciais do root so necessrias para que o Swat possa alterar os arquivos de configurao, reiniciar os servios e outras operaes que ficam disponveis apenas para o root. No caso do Ubuntu, voc pode definir a senha de root usando o comando "sudo passwd". Ao configurar um servidor remotamente, ou ao instalar o Samba/Swat em um servidor sem o ambiente grfico instalado, voc pode acessar o Swat remotamente, a partir de qualquer mquina da rede. Abra o navegador e acesse o endereo "http://ip-do-servidor:901", como em: http://192.168.1.1:901. Uma observao que o Swat no utiliza encriptao, o que uma temeridade do ponto de vista da segurana, j que algum poderia capturar a senha sniffando a rede. Voc pode evitar isso criando um tnel seguro usando o SSH e acessando o Swat atravs dele. Para isso, preciso apenas que o SSH esteja ativo no servidor. Para criar o tnel, use o comando: # ssh -f -N -L901:192.168.1.1:901 -l login 192.168.1.1 Onde o "192.168.1.1" o endereo IP do servidor, o "901" a porta do Swat e o "login" a sua conta de usurio no servidor. Este comando cria um tnel encriptado entre a porta 901 do seu micro e a porta 901 do servidor, que permite acessar o Swat de forma segura. Com o tnel ativo, voc acessa o Swat usando o endereo http://localhost:901, como se estivesse sentado na frente do servidor. O SSH se encarrega de transportar as informaes de forma transparente entre os dois pontos, encriptando os dados e garantindo a segurana.

Opes Gerais do Swat


Ao abrir o Swat, voc ver um menu como o do screenshot abaixo, com vrios links para a documentao disponvel sobre o Samba, que voc pode consultar para se aprofundar no sistema. Na parte de cima, esto os links para as sees da configurao, que o que nos interessa:

Na seo Password, voc pode cadastrar usurios, substituindo o uso manual do comando "smbpasswd -a". Neste caso, voc precisar primeiro cadastrar os usurios no sistema, utilizando o comando adduser. O Swat apenas cadastra os usurios no Samba:

Em seguida, acesse a seo "Globals", que engloba todas as configuraes de rede e de acesso. A opo "netbios name" indica o nome do servidor, atravs do qual ele ser identificado na rede Windows. Normalmente se utiliza o nome da mquina, mas isso no obrigatrio, j que o nome de mquina utilizado pelo Samba no est relacionado ao nome definido no arquivo "/etc/hosts" ou configurao do DNS. O nome pode ter at 15 caracteres e ser composto por letras e nmeros, alm de espaos e dos caracteres a seguir: ! @ # $ % ^ & ( ) - ' { } ~. Ao usar mais do que 15 caracteres, os caracteres excedentes sero ignorados. tambm permitido o uso de pontos, mas us-los no uma boa idia, pois torna os nomes NetBIOS difceis de diferenciar de nomes de domnio, o que pode confundir os usurios. A opo "workgroup" indica o grupo de trabalho ao qual o servidor pertence. Voc pode tanto utilizar o mesmo grupo de trabalho em todas as mquinas da rede quanto agrupar suas mquinas em grupos distintos como "diretoria", "vendas", etc.

A seguir, temos a opo "interfaces", que permite limitar os acessos ao servidor caso ele possua mais de uma placa de rede. o caso, por exemplo, de quem acessa via ADSL ou cabo e possui uma segunda placa de rede para compartilhar a conexo com os micros da rede local. Nesses casos, a placa da web ser reconhecida como eth0, enquanto a placa da rede local ser reconhecida como eth1, por exemplo. Voc pode, ento, preencher o campo com o endereo da placa de rede local (eth1). Assim, o Samba s aceitar conexes vindas dos micros da rede local, descartando automaticamente todas as tentativas de acesso vindas da Internet. Caso o campo permanea vazio, o Samba permite acessos vindos de todas as placas de rede e passa a ser necessrio bloquear os acessos provenientes da internet usando o firewall. Na seo Security Options temos a opo "security", uma opo capciosa que aceita os valores "user", "share", "server" e "domain". Com nomes to descritivos a configurao fica fcil, j que "server" para quando estamos configurando o Samba como servidor e "domain" para quando ele est sendo configurado como controlador de domnio, certo? Errado! :) As opes share e server so opes obsoletas (como veremos em detalhes mais a seguir) e a opo "domain" usada quando voc deseja que o servidor Samba seja configurado como membro (cliente) de um domnio sob responsabilidade de outro servidor. Se voc est configurando um servidor Samba, seja como um servidor de grupo de trabalho, seja como controlador de domnio, a opo correta para a opo security a "user". Utilizando o modo user, as permisses de acesso aos compartilhamentos do samba ficam condicionadas s permisses de acesso de cada usurio. Por exemplo, se voc compartilhar a pasta "/home/maria/arquivos", por default apenas a usuria "maria" ter permisso para gravar novos arquivos e alterar o contedo da pasta. Para que outros usurios tenham acesso pasta, voc deve dar permisso a eles, criando um novo grupo e dando permisso de escrita para os integrantes do mesmo. Outra opo adicionar os demais usurios no grupo "maria" (cada usurio possui um grupo com o mesmo nome do login, criado no momento em que cadastrado) e configurar as permisses de acesso de forma que o grupo possa escrever na pasta. Voc pode fazer a administrao de grupos usando o "users-admin", que facilita bastante as coisas ao trabalhar com um grande nmero de usurios. Lembre-se de que no Debian ele instalado atravs do pacote "gnome-system-tools". No Fedora e no CentOS ele se chama "system-config-users":

Para criar um novo grupo, mude para a aba "Grupos" e use a opo "Adicionar Grupo", especificando o nome do novo grupo e os usurios que faro parte dele na janela seguinte:

O prximo passo alterar as permisses de acesso da pasta, colocando o grupo cadastrado como dono da pasta e fazendo com que o grupo tenha permisso para ler e alterar os arquivos. A alterao d poderes sobre a pasta a todos os usurios que foram cadastrados no grupo:

Se voc no est to preocupado com a segurana, pode fazer do jeito "fcil", alterando a opo "outros" nas permisses de acesso da pasta, que d acesso a todo mundo. Isso faz com que qualquer usurio local do sistema (ou logado via SSH) tenha acesso aos arquivos da pasta, mas no permite necessariamente que outros usurios do Samba possam acessar, pois neste caso ainda so usadas as permisses de acesso no Samba. A alterao das permisses da pasta feita usando o Konqueror ou outro gerenciador de arquivos e no atravs do Samba:

Ou seja, necessrio fazer com que os usurios do grupo, ou todos os usurios do sistema, possam escrever na pasta, evitando que as permisses do sistema conflitem com as permisses configuradas no Samba. Se configuro o Samba para permitir que o usurio "joao" possa escrever no compartilhamento, mas a configurao das permisses da pasta compartilhada no permitem isso, o joao vai continuar sem conseguir escrever. Ao criar compartilhamentos no Samba, preciso se preocupar com as duas coisas. Mais abaixo, temos a opo Encrypt Password. Ela tambm importe, e deve ficar sempre ativa (Encrypt Password = yes). Todas as verses do Windows, incluindo o 3.11 suportam o uso de senhas encriptadas, mas at o Windows 95 original os clientes deixavam de usar a encriptao e passavam a enviar as senhas em texto puro quando percebiam que o interlocutor no suportava encriptao. Entretanto, isso abria margem para todo tipo de ataques, de forma que a partir do Windows 95 OSR/2 e do Windows NT 4 SP3, senhas em texto puro deixaram de ser suportadas, de forma que ao desativar o uso de senhas encriptadas no Samba, o servidor simplesmente no conseguir conversar com as mquinas Windows e voc vai ficar quebrando a cabea at se lembrar deste pargrafo. :) A partir do Samba 3, existe a opo de fazer com que o prprio Samba mantenha as senhas dos usurios sincronizadas em relao s senhas dos mesmos no sistema. Antigamente, sempre que voc alterava a senha de um usurio no Samba, usando o "smbpasswd", precisava alterar tambm a senha do sistema, usando o comando "passwd". As duas senhas precisam ficar em sincronismo, do contrrio camos no problema das permisses, onde o Samba permite que o usurio acesse o compartilhamento, mas o sistema no permite que o Samba acesse os arquivos no disco. Para ativar este recurso, ative a opo "unix password sync" no Swat. Originalmente, esta opo fica desativada e aparece apenas dentro das opes avanadas. Para chegar at ela voc deve clicar no boto "Change View To: Advanced" no topo da tela. Depois

de alterar, clique no Commit Changes". Para que tudo funcione, necessrio que as opes "passwd program" e "passwd chat" estejam configuradas com (respectivamente) os valores: "/usr/bin/passwd %u" e "*EntersnewsUNIXspassword:* %nn *RetypesnewsUNIXspassword:* %nn .". Estes j so os valores padro no Swat, mas no custa verificar:

A opo "Hosts Allow" deve incluir os endereos IP de todos os computadores que tero permisso para acessar o servidor. Se quiser que todos os micros da rede tenham acesso, basta escrever apenas a primeira parte do endereo IP, como em "192.168.0.", o que faz com que todos os endereos dentro do escopo sejam permitidos. Se for incluir mais de um endereo ou mais de um escopo de endereos, separe-os usando vrgula e espao, como em: "192.168.0., 10.0.0., 123.73.45.167". Caso o campo permanea vazio, a opo fica desativada e todos os micros que estiverem ligados em rede com servidor Samba podero acess-lo. A opo "Hosts Deny", por sua vez, permite especificar mquinas que no tero permisso para acessar o servidor. importante notar que as opes "Hosts Allow" e "Hosts Deny" possuem algumas peculiaridades, sobretudo quando usadas em conjunto. Veremos mais detalhes sobre o uso das duas mais adiante. Continuando, em uma rede Windows, uma das mquinas fica sempre responsvel por montar e atualizar uma lista dos compartilhamentos disponveis e envi-la aos demais, conforme solicitado. O host que executa esta funo chamado de "Master Browser". De uma forma geral, todas as verses do Windows so capazes de atuar como Master Browser da rede e o cargo pode mudar de dono conforme as mquinas vo sendo ligadas e desligadas, mas o Samba executa o trabalho de forma muito eficiente, de forma que, a menos que voc tenha outro servidor em posio hierarquicamente superior, sempre interessante delegar esta tarefa ao servidor Samba. O cargo de Master Browser disputado atravs de uma eleio, onde os micros da rede enviam pacotes de broadcast contendo informaes sobre o sistema operacional usado, o tempo de uptime e outras informaes. Ao receber o pacote de broadcast de um "oponente", cada mquina compara suas credenciais com as do pacote recebido. Se suas credenciais forem inferiores, ela desiste da eleio, caso contrrio responde enviando o pacote com suas prprias credencias. Este processo de eliminao continua at que sobre apenas uma mquina, que passa ento a ser o Master Browser da rede (at que seja desconectada da rede, ou perca o cargo para outra mquina com credenciais superiores). A principal credencial o "OS Level", que nas mquinas Windows varia de acordo com a verso do sistema. As mquinas com o Windows NT Server, 2000 Server, 2003 Server ou 2008 Server possuem um Os Level de 32, as com o Windows NT Workstation, 2000 Professional ou qualquer verso domstica do XP ou Vista possuem OS Level de 16 e as verses antigas do Windows (3.11, 95, 98 e ME) possuem OS Level de apenas 1. Nos servidores Samba o valor ajustado atravs da opo "OS Level", na seo Browse Options. Isso permite que voc "trapaceie", fazendo com que o servidor Samba sempre ganhe as eleies.

Para isso, configure esta opo com um valor alto, 100 por exemplo, para que ele sempre ganhe as eleies (voc pode usar qualquer valor entre 0 e 255). O default dessa opo 20, o que faz com que o servidor Samba ganhe de todas as mquinas Windows, com exceo das verses Server. Para completar, deixe a opo "Local Master" e "Preferred Master" como "Yes". A opo "Local Master" faz com que o servidor Samba convoque uma nova eleio sempre que necessrio (de forma a defender o cargo caso outra mquina tente assumir a posio) e a "Preferred Master" d a ele uma leve vantagem quando confrontado com outra mquina com o mesmo OS Level:

importante enfatizar que voc nunca deve colocar dois servidores Samba na rede com o mesmo OS Level e com a opo "Preferred Master" ativada, caso contrrio eles iniciaro uma disputa interminvel pelo cargo, o que far com que a navegao na rede se torne intermitente. Ao usar vrios servidores Samba na rede, crie uma hierarquia, usando valores diferentes para a opo OS Level. Se, por outro lado, voc no desejar que o servidor Samba participe das eleies (caso j tenha outro servidor desempenhando este papel), basta definir a opo "Local Master" com o valor "no". Logo abaixo, deixe a opo WINS Support ativada (Yes) para que o servidor Samba atue como um servidor WINS para os demais micros da rede. A opo WINS Server deve ser deixada em branco, a menos que exista na rede algum servidor Wins (rodando uma das verses Server do Windows) ao qual o servidor Linux esteja subordinado. Caso o nico servidor seja a mquina Linux, voc pode configurar as mquinas Windows para utiliz-la como servidor Wins. Para isto basta colocar o seu endereo IP no campo "Servidor Wins" na configurao de rede das estaes (veja mais detalhes a seguir). Terminado, pressione o boto "Commit Changes" no topo da tela para que as alteraes sejam salvas no arquivo "/etc/samba/smb.conf". Uma observao importante que o Swat l o arquivo smb.conf ao ser aberto, lendo as opes configuradas e mostrando-as na interface, mas gera um novo arquivo sempre que voc clica no "Commit Changes". Ao ler o arquivo, ele procura por trechos especficos de texto, ignorando tudo que for diferente. Isso faz com que ele remova qualquer tipo de comentrio includo manualmente no arquivo. Em geral, quem tem o hbito de editar manualmente o smb.conf, acaba nunca usando o Swat e vive-versa.

Criando Compartilhamentos
Depois de cadastrar os usurios no sistema e no Samba e configurar a seo Globals, falta apenas configurar as pastas que sero compartilhadas com as estaes, atravs da seo "Shares". Cada usurio vlido (ou seja, os usurios "reais", que podem fazer login, e no os usurios limitados, criados usando o "adduser -M") cadastrado no sistema possui automaticamente um diretrio home. Estas pastas ficam dentro do diretrio /home e podem ser usadas para guardar arquivos pessoais, j que, a menos que seja estabelecido o contrrio, um usurio no ter acesso pasta pessoal do outro. Alm dos diretrios 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 boto "Create Share".

Depois de criado um compartilhamento, escolha-o na lista e clique no boto "Choose Share" para configur-lo. Voc ver uma lista de opes, contendo campos para especificar usurios vlidos e invlidos, usurios que podem ou no escrever no compartilhamento, nomes ou endereos de mquinas, entre outras opes.

O campo "path" o mais importante, pois indica justamente qual pasta do sistema ser compartilhada. O nome do compartilhamento diz apenas com que nome ele aparecer no ambiente de rede, que no precisa necessariamente ser o mesmo nome da pasta. A opo "comment" permite que voc escreva um breve comentrio sobre a pasta que tambm poder ser visualizado pelos usurios no ambiente de rede. Este comentrio apenas para orientao, no tem efeito algum sobre o compartilhamento. A opo "read only" determina se a pasta ficar disponvel apenas para leitura (opo Yes) ou se os usurios podero tambm gravar arquivos (opo No). Voc pode tambm determinar quais mquinas tero acesso ao compartilhamento atravs das opes "Hosts Allow" e "Hosts Deny". Note que as configuraes das opes "Hosts Allow" e "Hosts Deny" includas na

seo global possuem precedncia sobre as colocadas dentro da configurao dos compartilhamentos, por isso (salvo poucas excees), elas no so usadas em conjunto. Ao bloquear um host atravs da seo Global, ele perde o acesso a todos os compartilhamentos do servidor, mesmo que a configurao de um compartilhamento especfico diga o contrrio. Continuando, a opo "browseable" permite configurar se o compartilhamento aparecer entre os outros compartilhamentos do servidor no ambiente de rede, ou se ser um compartilhamento oculto, que poder ser acessado apenas por quem souber que ele existe. Isso tem uma funo semelhante a colocar um "$" em uma pasta compartilhada no Windows. Ela fica compartilhada, mas no aparece no ambiente de rede. Apenas usurios que saibam que o compartilhamento existe conseguiro acess-lo. Esta opo tem efeito apenas sobre os clientes Windows, pois no Linux a maior parte dos programas clientes (como o Smb4k) mostram os compartilhamentos ocultos por padro. Finalmente, a opo "available" especifica se o compartilhamento est ativo ou no. Voc pode desativar temporariamente um compartilhamento configurando esta opo como "No". Fazendo isso, ele continuar no sistema e voc poder torn-lo disponvel quando quiser, alterando a opo para "Yes". Terminadas as configuraes, reinicie o servio do Samba e o servidor ir aparecer imediatamente no ambiente de rede, como se fosse um servidor Windows. Os compartilhamentos podem ser acessados de acordo com as permisses que tiverem sido configuradas, mapeados como unidades de rede, entre outros recursos. Para compartilhar uma impressora j instalada na mquina Linux, o procedimento o mesmo. Dentro do Swat, acesse a seo printers, escolha a impressora a ser compartilhada (a lista mostrar todas as instaladas no sistema), configure a opo available como "yes" e ajuste as permisses de acesso, como vimos anteriormente. No Mandriva, voc pode instalar impressoras atravs do Control Center. No Fedora est disponvel o "system-configprinter", que contm basicamente as mesmas funes. Em outras distribuies, voc pode usar o kaddprinterwizard ou a prpria interface de administrao do Cups, que voc acessa (via navegador) atravs da URL: http://127.0.01:631 Veremos mais detalhes sobre o compartilhamento de impressoras a seguir.

Configurao Avanada do Samba


Como vimos na primeira parte do tutorial, a maior parte da configurao do Samba, incluindo as configuraes gerais do servidor, impressoras e todos os compartilhamentos, feita em um nico arquivo de configurao, o "/etc/samba/smb.conf". Programas de configurao, como o Swat, simplesmente lem este arquivo, "absorvem" as configuraes atuais e depois geram o arquivo novamente com as alteraes feitas dentro da interface. Isso permite que o Swat coexista com a edio manual do arquivo. Como comentei a pouco, o Swat remove todos os seus comentrios e formatao (deixando apenas as opes), por isso muitos evitam us-lo. Apesar disso, o formato do arquivo de configurao do Samba bastante simples e por isso muitas vezes mais rpido e at mais simples editar diretamente o arquivo do que faz-lo atravs do Swat. Ao instalar o Samba, criado um arquivo de configurao de exemplo, com vrios comentrios. Assim como no caso do Squid, ele longo e difcil de entender, por isso acaba sendo mais fcil renome-lo e comear com um arquivo em branco, ou usar como base a configurao gerada atravs do Swat. Vamos ento a uma segunda rodada de explicaes sobre a configurao do Samba, agora editando diretamente o arquivo smb.conf e explorando com maior profundidade as opes disponveis. Vamos comear com um exemplo simplista, onde temos um nico compartilhamento de teste: [global] netbios name = Sparta workgroup = Grupo

[arquivos] path = /mnt/arquivos comment = Teste Como voc pode ver, o arquivo dividido em sees. A primeira sempre a seo "[global]", que contm as opes gerais do servidor. Por enquanto, definimos apenas o nome do servidor (netbios name) e o nome do grupo de trabalho (workgroup), que seria o mnimo necessrio para colocar o servidor na rede. As demais opes (no especificadas no arquivo) so configuradas usando os valores default. Se voc omitir a opo "workgroup", por exemplo, o Samba vai reverter para o grupo "WORKGROUP", que o padro. Se quiser, voc pode tambm adicionar uma descrio para o servidor, o que feito atravs da opo "server string" (adicionada dentro da seo [global]), como em: server string = Servidor Samba Duas dicas so que: 1. O default do Samba usar a string "Samba 3.0.24" (onde o "3.0.24" a verso usada) como descrio quando a opo "server string" no est presente no arquivo. 2. Nas mquinas com o Windows XP, a descrio do servidor aparece antes do nome propriamente dito, como em "Servidor Samba (Sparta)". importante levar isso em considerao, j que, no final das contas, o que importa o que os usurios iro ver ao navegar pelo ambiente de redes:

Abaixo da seo [global], inclumos sees adicionais para cada compartilhamento, que o caso da seo "[arquivos]" que cria o compartilhamento de teste. O "[arquivos]" indica o nome do compartilhamento, da forma como ele aparecer na rede. Logo a seguir temos a linha "path", que diz qual pasta do servidor ser compartilhada e a linha "comment" (opcional), que permite que voc inclua um comentrio. Sempre que alterar manualmente o smb.conf, ou mesmo alterar algumas opes pelo Swat e quiser verificar se as configuraes esto corretas, rode o comando testparm. Ele funciona como uma espcie de debug, indicando erros grosseiros no arquivo e informando o papel do servidor na rede: # testparm Load smb config files from /etc/samba/smb.conf Processing section "[arquivos]" Loaded services file OK. Server role: ROLE_STANDALONE O "ROLE_STANDALONE" significa que o servidor foi configurado como um membro normal do grupo de trabalho. possvel tambm fazer com que o servidor Samba atue como um controlador de domnio, como veremos em detalhes mais adiante. Em caso de erros no arquivo, o testparm ajuda a localizar o problema, indicando a linha ou opo invlida, de forma que voc possa corrig-

la. Veja o que acontece ao adicionar um erro simples, usando a linha "wrritable = yes" no lugar de "writable = yes": Unknown parameter encountered: "wrritable" Ignoring unknown parameter "wrritable" O Samba no diferencia o uso de maisculas e minsculas nas opes, de forma que tanto faz escrever "writable = yes", "writable = Yes" ou "writable = YES". Entretanto, muitos dos parmetros no so diretamente usados pelo Samba, mas sim repassados ao sistema que, diferentemente do Samba, diferencia os caracteres. Um exemplo so as localizaes de pastas a compartilhar. Se voc escrever "path = /mnt/Arquivos" (em vez de "path = /mnt/arquivos"), o compartilhamento no vai funcionar, pois o sistema reportar que a pasta no existe. Alm do caractere "#", possvel usar tambm o ";" para comentar linhas. A principal observao que voc no pode inserir comentrios em linhas vlidas (mesmo que no final da linha), pois, ao fazer isso, toda a linha passa a ser ignorada pelo Samba. Neste exemplo, o comentrio foi includo na linha "path", o que acaba por desativar o compartilhamento completamente: [teste] path = /mnt/arquivos # Pasta compartilhada comment = Compartilhamento que no funciona O testparm tambm no indica o erro diretamente, j que ele tambm considera a linha como um comentrio, o que pode lev-lo a perder um bom tempo tentando descobrir onde est o problema. Ao incluir comentrios no arquivo, use sempre linhas separadas: [teste] # Pasta compartilhada path = /mnt/arquivos comment = Agora sim As alteraes no arquivo so lidas periodicamente pelo Samba (o default so 3 minutos) e aplicadas automaticamente. Isso permite que as mudanas de configurao sejam aplicadas de forma suave, sem prejudicar o acesso dos usurios, o que importante em um ambiente de produo. Para fazer com que as alteraes entrem em vigor imediatamente, reinicie o servio do Samba, como em: # /etc/init.d/samba restart ou: # service smb restart A partir da, o compartilhamento estar disponvel. Ao tentar acessar o servidor atravs do "Meus locais de rede" nos clientes Windows, voc receber um prompt de senha, onde voc precisa fornecer um dos logins cadastrados no servidor usando o comando "smbpasswd -a":

importante enfatizar que todos os usurios cadastrados no Samba precisam tambm existir no sistema, por isso, antes de usar o comando "smbpasswd -a", voc deve usar o adduser para criar o usurio. Como citei anteriormente, a soluo para casos em que voc no deseja criar contas vlidas para todos os usurios criar usurios limitados usando o comando "adduser --disabled-login --nocreate-home usuario" ou "adduser -M usuario". Depois de logado, o cliente pode visualizar os compartilhamentos do servidor. Por enquanto temos apenas o compartilhamento "arquivos", que mostra o contedo da pasta "/mnt/arquivos" do servidor, mas ao longo do tutorial adicionaremos muitos outros recursos ao servidor:

Ajustando as permisses de acesso


Com esta configurao, os clientes conseguem visualizar os arquivos da pasta normalmente, mas ainda no conseguem gravar nos arquivos. Ao tentar salvar alguma coisa na pasta, voc recebe uma mensagem de acesso negado:

Isso acontece por dois motivos. O primeiro que o default do Samba compartilhar com permisso apenas para leitura. Como no dissemos nada sobre as permisses de acesso do compartilhamento no arquivo de configurao, ele foi compartilhado usando o default. Para que o compartilhamento fique disponvel com permisso de leitura e escrita, precisamos adicionar a opo "writable = yes" dentro da configurao do compartilhamento, que ficar: [arquivos] path = /mnt/arquivos writable = yes comment = Teste Muito provavelmente, mesmo depois de reiniciar o Samba voc continuar recebendo o mesmo erro ao tentar gravar os arquivos. Dessa vez, o Samba autoriza a gravao, mas ela ainda pode ser abortada se as permisses da pasta no permitirem que o usurio grave arquivos. Se voc criou a pasta "/mnt/arquivos" como root, ento o default que apenas ele possa gravar arquivos na pasta. Para permitir que outros usurios possam gravar, necessrio abrir as permisses da pasta. A esta altura, a lei do mnimo esforo diria para voc usar um: # chmod 777 /mnt/arquivos Obviamente, isso permitiria que os usurios gravassem na pasta. O problema que as permisses ficariam escancaradas, a ponto de qualquer um, que tenha acesso ao servidor (por qualquer meio) possa alterar os arquivos dentro da pasta, o que no nada bom do ponto de vista da segurana. No tpico sobre o Swat, vimos como criar um grupo usando o users-admin (system-config-users) e abrir as permisses da pasta apenas para os usurios que fazem parte dele. Vamos ver agora como fazer isso via linha de comando. O primeiro passo criar um grupo para os usurios que podero fazer alteraes na pasta, usando o comando "groupadd". Eu prefiro criar grupos com o mesmo nome do compartilhamento, para ficar mais fcil de lembrar, mas isso fica a seu critrio. # groupadd arquivos A partir da, voc pode adicionar usurios ao grupo usando o comando "adduser", nesse caso especificando o usurio j criado e o grupo ao qual ele ser adicionado, como em: # adduser joao arquivos # adduser maria arquivos Para remover usurios do grupo, voc usa o comando "deluser", como em: # deluser joao arquivos # deluser maria arquivos

Depois de criar o grupo e adicionar os usurios a ele, falta apenas ajustar as permisses de acesso da pasta, de forma que o grupo tenha acesso completo, como em: # chgrp arquivos /mnt/arquivos # chmod 775 /mnt/arquivos Com isso, trocamos o grupo dono da pasta e dizemos que tanto o dono quanto o grupo possuem acesso completo. A partir desse ponto, o Samba autoriza o acesso para todos os usurios cadastrados atravs do smbpasswd e o sistema autoriza a gravao para todos os usurios que fazem parte do grupo. Se voc precisar que a alterao seja aplicada de forma recursiva, alterando as permisses de todas as subpastas e arquivos, adicione a opo "-R" nos dois comandos, como em: # chgrp -R arquivos /mnt/arquivos # chmod -R 775 /mnt/arquivos Alm de servirem para controlar as permisses de acesso dos usurios s pastas do sistema, os grupos podem ser usados para ajustar as permisses de acesso do Samba, de forma bastante simples. Se voc quer que o compartilhamento fique disponvel apenas para os usurios que cadastrou no grupo "arquivos", adicione a opo "valid users = +arquivos" na seo referente ao compartilhamento. O "+" indica que se trata de um grupo e no de um usurio isolado. O Samba verifica ento quais usurios fazem parte do grupo e autoriza o acesso. A partir da, quando voc quiser liberar o acesso para um novo usurio, basta adicion-lo ao grupo: [arquivos] path = /mnt/arquivos writable = yes valid users = +arquivos Voc pode tambm especificar uma lista de usurios isolados, separando-os por vrgula, por espao, ou pelos dois combinados (o que preferir), como em: [arquivos] path = /mnt/arquivos writable = yes valid users = joao, maria, jose possvel tambm combinar as duas coisas, indicando um ou mais grupos e tambm alguns usurios avulsos, como em: [arquivos] path = /mnt/arquivos writable = yes valid users = +arquivos, jose, joaquim, +admin Assim como na maioria das opes do Samba, a opo "valid users" exclusiva, ou seja, ao dizer que os usurios do grupo arquivos devem ter acesso, voc automaticamente exclui todos os outros. Voc pode tambm fazer o oposto, criando uma lista de usurios que no devem ter acesso e mantendo o acesso para os demais. Nesse caso, voc usaria a opo "invalid users", como em: [arquivos] path = /mnt/arquivos writable = yes invalid users = jose, joaquim Nesse caso, todos os usurios cadastrados no Samba podem acessar, com exceo dos usurios jose e joaquim. possvel ainda usar a opo "invalid users" para especificar excees ao especificar grupos usando a opo "valid users", como em: [arquivos] path = /mnt/arquivos

writable = yes valid users = +arquivos invalid users = joao Nesse caso, todos os usurios dentro do grupo arquivos tero acesso, com exceo do joao. Esta combinao pode ser usada em casos onde o grupo especificado tambm em outros compartilhamentos e voc precisa bloquear o acesso do usurio a um compartilhamento especfico, sem remov-lo do grupo. possvel tambm criar uma lista de escrita, usando a opo "write list". Ela cria uma camada adicional de proteo, permitindo que, dentro do grupo de usurios com acesso ao compartilhamento, apenas alguns tenham permisso para alterar os arquivos, como em: [arquivos] path = /mnt/arquivos writable = no valid users = +arquivos write list = maria Nesse caso, usamos a opo "writable = no", que faz com que o compartilhamento passe a ser somente-leitura. A seguir, especificamos que os usurios do grupo "arquivos" devem ter acesso (somente-leitura) e usamos a opo "write list = maria" para criar uma exceo, dizendo que a maria pode escrever na pasta. importante notar que, neste exemplo, a maria deve fazer parte do grupo "arquivos", caso contrrio teramos uma situao interessante, onde ela no consegue alterar os arquivos no compartilhamento, pois no tem acesso a ele em primeiro lugar. :) Caso a maria no estivesse cadastrada no grupo, voc deveria incluir o login na opo "valid users", como em: [arquivos] path = /mnt/arquivos writable = no valid users = +arquivos, maria write list = maria Podemos tambm fazer o oposto, restringindo a escrita para alguns usurios, mas mantendo o acesso para todos os demais. Nesse caso, usamos a opo "read list" para criar uma lista de excees, como em: [arquivos] path = /mnt/arquivos writable = yes valid users = +arquivos, +admin read list = maria, jose Nesse exemplo, usamos a opo "writable = yes" e especificamos que os usurios dentro dos grupos "arquivos" e "admin" tem acesso ao compartilhamento. Em seguida, usamos a opo "read list" para limitar o acesso dos usurios maria e jose, de forma que eles possam apenas ler, sem alterar os arquivos dentro da pasta. Outra opo relacionada a "read only", que tambm aceita os valores "yes" e no". Na verdade, ela tem a mesma funo da opo "writable", apenas usa uma lgica invertida. Dizer "writable = yes" ou dizer "read only = no" tem exatamente o mesmo efeito, como seis e meia-dzia. Em geral, voc usa uma ou outra de acordo com o contexto, como uma forma de tornar o arquivo mais legvel, como em: [modelos] path = /mnt/modelos read only = yes Continuando, possvel restringir o acesso tambm com base no endereo IP ou no nome da mquina a partir da qual o usurio est tentando acessar o compartilhamento. Isso permite adicionar uma camada extra de segurana no acesso a arquivos importantes, j que alm do login e senha,

verificado a partir de qual mquina o acesso proveniente. Isso feito atravs das opes "hosts allow" e "hosts deny" que permitem, respectivamente, criar uma lista de mquinas que podem e que no podem acessar o compartilhamento. As listas podem incluir tanto os endereos IP quanto os nomes das mquinas. Para restringir o acesso ao compartilhamento a apenas duas mquinas especficas, voc usaria: [arquivos] path = /mnt/arquivos writable = yes hosts allow = 192.168.1.23, 192.168.1.24 ou [arquivos] path = /mnt/arquivos writable = yes hosts allow = sparta, athenas possvel tambm fazer o inverso, bloqueando o compartilhamento para acessos provenientes das duas mquinas. Nesse caso, mesmo que o usurio tente acessar usando um login vlido, vai receber a mensagem de acesso negado, como se o login tivesse sido bloqueado ou a senha tenha sido alterada. A lista no possui um tamanho mximo, voc pode incluir quantas mquinas precisar, separando os endereos ou nomes por vrgula e espao. Voc pode inclusive misturar endereos IP com nomes de mquinas, como nesse exemplo: [arquivos] path = /mnt/arquivos writable = yes hosts deny = 192.168.1.23, athenas possvel ainda combinar a restrio com base nos nomes e endereos com a restrio com base nos logins de acesso, de forma que o acesso seja autorizado apenas quando as duas condies forem satisfeitas. Para permitir que apenas a maria e o joao acessem o compartilhamento e ainda assim apenas se estiverem usando uma das duas mquinas permitidas, voc usaria: [arquivos] path = /home/arquivos writable = yes valid users = maria, joao hosts allow = 192.168.1.23, 192.168.1.24 Voc pode autorizar ou restringir o acesso para uma faixa inteira de endereos omitindo o ltimo octeto do endereo. Por exemplo, para que apenas clientes dentro da rede "192.168.1.x" tenham acesso, voc inclui apenas a parte do endereo referente rede, omitindo o octeto referente ao host, como em: [arquivos] path = /mnt/arquivos writable = yes hosts allow = 192.168.1. Se precisar criar excees, limitando o acesso a algumas mquinas dentro da faixa de endereos especificada, voc pode usar a opo "EXCEPT" para especificar as excees, como em: [arquivos] path = /mnt/arquivos writable = yes hosts allow = 192.168.1. EXCEPT 192.168.1.23, 192.168.1.24

Com isso, todos os endereos dentro da faixa teriam acesso, com exceo do .23 e do .24. O mesmo pode ser feito ao usar a opo "hosts deny", como em: [restrito] path = /mnt/sda2/restrito writable = yes valid users = isac hosts deny = 192.168.1. EXCEPT 192.168.1.23 Aqui a lgica invertida e todos os hosts dentro da faixa de endereos so bloqueados, com exceo do .23, que passa a ser o nico aceito pelo servidor. Outro parmetro que pode ser usado ao criar excees o "ALL", que inclui todos os endereos possveis. Se a idia que apenas um determinado endereo possa acessar o compartilhamento, uma opo usar "hosts deny = ALL EXCEPT 192.168.1.34". O default do Samba permitir o acesso a partir de qualquer mquina, de forma que se voc no usar nem a opo "hosts allow", nem a "hosts deny", qualquer mquina poder acessar o compartilhamento. Ao usar apenas a opo "hosts allow", apenas as mquinas listadas tero acesso ao compartilhamento, as demais sero recusadas. Ao usar apenas a opo "hosts deny", apenas as mquinas listadas no tero acesso ao compartilhamento (as demais continuam acessando). Ao combinar o uso das opes "hosts allow" e "hosts deny", a opo "hosts allow" tem precedncia (no importa a ordem em que elas sejam colocadas), de forma que as mquinas listadas tero acesso, mesmo que ele seja negado pela opo "hosts deny". Por exemplo, ao usar: [isos] path = /mnt/isos hosts allow = 192.168.1. hosts deny = 192.168.1.43 comment = Algo est errado O host "192.168.1.43" continuar tendo acesso ao compartilhamento, pois faz parte da faixa de endereos cujo acesso autorizado pela opo "hosts allow". Neste caso, o Samba no considera a opo "hosts deny = 192.168.1.43" como uma exceo, mas sim como um erro de configurao. Para bloquear a mquina, voc deveria usar: [isos] path = /mnt/isos hosts allow = 192.168.1. EXCEPT 192.168.1.43 comment = Agora sim Em situaes onde voc precisa restringir temporariamente o acesso a um determinado compartilhamento (para alguma tarefa de manuteno, por exemplo) voc pode usar a opo "available = no", como em: [arquivos] path = /home/arquivos writable = yes valid users = maria, joao available = no Ela faz com que o compartilhamento "desaparea", da mesma forma que se voc apagasse ou comentasse a configurao. A principal vantagem que ao apagar voc precisaria escrever tudo de novo para reativar o compartilhamento, enquanto ao usar o "available = no" voc precisa apenas remover a opo ou mudar para "available = yes". Outra opo interessante que pode ser includa a "browseable = no", que transforma o compartilhamento em um compartilhamento oculto: [arquivos] path = /home/arquivos

writable = yes browseable = no Com isso, ele no aparece mais no ambiente de redes, mas pode ser acessado normalmente se voc especificar o nome manualmente ao mapear o compartilhamento:

Essa no propriamente uma opo de segurana, mas pode ser usada para afastar os curiosos dos compartilhamentos com acesso restrito. Concluindo, muitas opes que ficam disponveis no Swat podem ser omitidas ao configurar manualmente, simplesmente porque so o default no Samba. O prprio Swat evita incluir opes redundantes ao gerar o arquivo, incluindo apenas as configuraes que so diferentes dos valores default. No necessrio incluir opes como "writable =no", "available = yes" ou "browseable = yes" no arquivo, pois estes j so os valores usados por padro no Samba. Apesar disso, us-los tambm no atrapalha em nada, de forma que nada impede que voc os inclua no arquivo para se lembrar mais facilmente das opes. Outra dica que voc pode verificar a qualquer momento quais usurios e quais mquinas esto acessando compartilhamentos no servidor usando o comando "smbstatus, como em:" # smbstatus Samba version 3.0.24 PID Username Group Machine ------------------------------------------------------------------17107 gdh gdh hp (192.168.1.2) 11588 gdh gdh semprao (192.168.1.10) Service pid machine Connected at ------------------------------------------------------------------IPC$ 17107 hp Sun Oct 28 15:54:04 2007 arquivos 11588 semprao Sun Oct 28 15:23:59 2007 No locked files Neste exemplo, podemos ver que o usurio "gdh" est logado no servidor a partir de duas mquinas diferentes, um indcio de que duas pessoas esto utilizando a mesma conta.

A Seo [Global]
Todas as opes colocadas dentro da seo referente ao compartilhamento valem apenas para ele, o

que permite que voc crie diversos compartilhamentos diferentes e use um conjunto prprio de permisses para cada um. Estas mesmas opes, junto com um conjunto adicional podem ser especificadas de forma geral dentro da seo [global] do smb.conf. Nos exemplos anteriores, especificamos apenas o nome do servidor e o grupo de trabalho na seo [global]. Isto suficiente para o servidor participar da rede e compartilhar arquivos, mas, naturalmente, existem muitas outras opes que podem ser usadas. Em primeiro lugar, temos o nvel de segurana do servidor, definido atravs da opo "security". O default no Samba 3 usar o controle de acesso baseado em usurio, que o mesmo modo de acesso usado pelas verses domsticas do Windows 2000, XP e Vista. Neste modo, voc cadastra os logins e senhas no servidor, define as permisses de acesso e o servidor checa as credenciais dos clientes antes de autorizar o acesso, a configurao que vimos at aqui. Este modo ativado adicionando a opo "security = user" na seo [global], mas no necessrio us-la no Samba 3, pois, como disse, ela usada por padro: security = user Em seguida, temos o modo "security = domain". Ao contrrio do que o nome pode sugerir primeira vista, este modo no destinado a fazer com que o Samba atue como um controlador de domnio. Pelo contrrio, ao configurar um servidor Samba como PDC, voc continua usando a opo "security = user", da mesma forma que faria ao usar um servidor em modo stand alone. A opo "security = domain" usada quando voc quer que um servidor Samba participe do domnio como cliente, autenticando-se em um servidor PDC j existente (que pode tanto ser outro servidor Samba, quanto ser um servidor Windows). Existem ainda os modos "security = share" e "security = server", que imitam o sistema de acesso utilizado por estaes Windows 95/98. Estes dois modos so obsoletos e devem ser removidos em futuras verses do Samba. Antigamente, o modo "security = share" era usado em casos onde voc queria disponibilizar compartilhamentos pblicos na rede, sem muita segurana, mas hoje em dia isso pode ser feito usando a conta guest (como veremos em detalhes mais adiante). O modo "security = server" descende da poca em que o Samba ainda no era capaz de atuar como PDC; este modo permitia que ele atuasse como um proxy de autenticao, repassando as requisies para o servidor de autenticao principal. Atualmente este modo no mais usado. Outra opo usada por padro no Samba 3 a "encrypt passwords = yes", de forma que tambm no necessrio especific-la manualmente no arquivo. Entretanto, saudvel inclu-la em modelos e exemplos de configurao pois pode acontecer de algum tentar usar o modelo no Samba 2, onde o default era que ela ficasse desativada. encrypt passwords = yes muito comum que seja includa tambm a opo "invalid users = root", uma medida de segurana para evitar que a conta de root seja usada ao acessar o servidor. A lgica que a conta de root a nica conta presente em qualquer sistema Linux, de forma que algum que decidisse usar um ataque de fora bruta para tentar obter acesso ao servidor, testando todas as senhas possveis, comearia justamente pela conta de root. Entretanto, a conta de root necessria para dar upload de drivers de impresso e para logar os clientes ao usar o servidor Samba como PDC, situaes onde a linha "invalid users = root" deve ser comentada ou removida. Continuando, as opes definidas dentro da seo [global] valem para todos os compartilhamentos do servidor, diferente das opes colocadas dentro da seo referente a cada um. Por exemplo, ao usar: [global] netbios name = Servidor workgroup = Grupo hosts allow = 192.168.1. Apenas as mquinas dentro da faixa de endereos especificadas tero acesso ao servidor, o que seria interessante do ponto de vista da segurana, j que de qualquer forma o servidor deve ser acessado apenas por clientes da rede local. O maior problema que a opo "hosts allow" usada na seo [global] tem precedncia sobre qualquer opo "hosts deny" usada dentro dos compartilhamentos, o que pode criar problemas caso voc queira restringir o acesso de alguma mquina da rede local a

um determinado compartilhamento. Por exemplo, ao usar: [global] netbios name = Servidor workgroup = Grupo hosts allow = 192.168.1. [share] path = /mnt/sda2/shared hosts deny = 192.168.1.2 A mquina "192.168.1.2" continuaria tendo acesso ao compartilhamento [share], pois o acesso autorizado pela opo "hosts allow = 192.168.1." usada na seo [global]. Nesse caso, o melhor seria remover a linha "hosts allow = 192.168.1." da seo [global] e deixar apenas a opo "hosts deny = 192.168.1.2" na seo [share]: [global] netbios name = Servidor workgroup = Grupo [share] path = /mnt/sda2/shared hosts deny = 192.168.1.2 Em caso de conflito direto entre uma regra definida na seo [global] e outra definida em um dos compartilhamentos, a regra definida na seo [global] tem precedncia. Por exemplo, ao usar: [global] netbios name = Servidor workgroup = Grupo hosts deny = 192.168.1.3 [share] path = /mnt/sda2/shared hosts allow = 192.168.1.3 A mquina "192.168.1.3" continuar sem acesso ao compartilhamento "share" (ou a qualquer outro recurso do servidor), j que vale a regra definida na seo [global]. Enquanto a linha "hosts deny = 192.168.1.3" no for removida, a mquina no ter acesso a nenhum dos compartilhamentos, no importa o que digam as demais linhas do arquivo. Continuando, um problema comum enfrentado ao administrar uma rede mista so os usurios escreverem a primeira letra do login em maisculo, como em "Joao" no lugar de "joao". No Windows isso no um problema, j que o sistema case insensitive, mas no Linux faz com que o sistema recuse o login. Uma forma de evitar isso no Samba usar a opo "username level", como em: username level = 2 Esta opo faz com que o Samba verifique vrias combinaes de maisculas e minsculas caso o login seja recusado pelo sistema. O nmero indica o volume de variaes, que pode ser qualquer nmero inteiro. Ao usar o valor "2", o Samba verifica at dois nveis, incluindo variaes como JOao, jOAo, Joao, jOaO e assim por diante. Usar um nmero maior pode retardar a autenticao, j que o Samba precisar testar muitas combinaes, por isso so geralmente usados os valores "1" ou "2". Outra peculiaridade digna de nota a questo dos nomes de arquivos. No Windows, os nomes de arquivos so salvos da forma como digitados pelo usurio, preservando os caracteres maisculos e minsculos. Entretanto, o sistema case insensitive, de forma que o sistema no diferencia um arquivo chamado "Trabalho.txt" de outro chamado "trabalho.txt". Embora o Linux seja case sensitive, o Samba tenta emular o comportamento de uma mquina Windows ao localizar arquivos. Se o cliente pede o arquivo "Trabalho.txt", quando na verdade o arquivo armazenado na pasta se chama "trabaLho.txt" o Samba vai acabar fornecendo o arquivo correto para o cliente, pois o

encontrar depois de testar diversas combinaes de maisculas e minsculas. No Samba 3 este recurso funciona muito bem, mas tem a desvantagem de consumir uma certa quantidade de memria do servidor. Em um pequeno servidor de rede local, isso no faz diferena, mas em um servidor que atende um grande nmero de requisies, a diferena pode se tornar considervel. Voc pode simplificar as coisas orientando o Samba a salvar todos os arquivos em minsculas. Para isso, adicione as linhas: preserve case = no default case = lower No caso de servidores com duas ou mais interfaces de rede, sobretudo no caso de servidores conectados simultaneamente internet e rede local, voc pode especificar qual interface ser usada pelo Samba atravs da opo "interfaces", que deve ser combinada com a opo "bind interfaces only = yes". Para que o servidor escute apenas a interface eth0, ignorando tentativas de conexo em outras interfaces, voc usaria: interfaces = eth0 bind interfaces only = yes Por default, o Samba escuta em todas as interfaces, o que (se no houver nenhum firewall ativo) pode expor seus compartilhamentos para a Internet caso voc ative o Samba em uma mquina conectada diretamente internet, como no caso de um servidor que compartilha a conexo. recomendvel usar sempre estas duas opes, como uma forma de garantir que o Samba ficar disponvel apenas na interface desejada. Outra opo interessante a "netbios aliases", que permite criar "apelidos" para o servidor, de modo de que ele possa ser acessado por mais de um nome. Usando um alias, o servidor realmente aparece duas ou mais vezes no ambiente de rede, como se existissem vrias mquinas. Geralmente, isso acaba confundindo mais do que ajudando, mas pode ser til em algumas situaes, quando, por exemplo, um servidor desativado e os compartilhamentos so movidos para outro. O novo servidor pode responder pelo nome do servidor antigo, permitindo que os desavisados continuem acessando os compartilhamentos atravs do endereo anterior. Para us-la, basta adicionar a opo, seguida pelos apelidos desejados, como em: [global] netbios name = Servidor netbios aliases = athenas, sparta workgroup = Grupo No tpico sobre o Swat falei sobre as opes "Local Master", "OS Level" e "Preferred Master", que definem se o servidor Samba deve participar das eleies para Master Browser e com qual nvel de credencial. Para que o servidor participe com OS Level 100, voc adicionaria as linhas: local master = yes os level = 100 preferred master = yes Um segundo servidor Samba na rede poderia participar com uma credencial mais baixa, de forma a assumir o cargo apenas caso o servidor principal esteja desconectado da rede. Para isso, basta usar um valor mais baixo na opo OS Level, como em: local master = yes os level = 90 preferred master = no O valor da opo OS Level absoluto, no se trata de um sorteio. Um servidor configurado com o valor "100" ganha sempre de um com o valor "99", por exemplo. Se voc omitir as trs linhas, o servidor simplesmente utiliza os valores default (local master = yes, os level = 20), que fazem com que ele participe das eleies, mas utilize credenciais baixas. A opo "wins support = yes" faz com que o servidor Samba passe a trabalhar como um servidor WINS (Windows Internetworking

Name Server) na rede. O WINS um protocolo auxiliar dentro das redes Microsoft, responsvel pela navegao na rede e listagem dos compartilhamentos e outros recursos disponveis, de forma similar a um servidor DNS. O uso do WINS no obrigatrio; sua rede vai muito provavelmente funcionar muito bem sem ele. Entretanto, sem um servidor WINS os clientes passam a usar pacotes de broadcast para a navegao (a menos que voc utilize um domnio), o que aumenta o trfego da rede e torna todo o processo mais passvel de falhas. Outra limitao importante que os pacotes de broadcast so descartados pelos roteadores, o que faz com que eles (os pacotes de broadcast) no sejam transmitidos de um segmento a outro da rede caso ela esteja dividida em vrios segmentos, interligados atravs de roteadores. O mesmo acontece caso voc tenha duas redes ligadas atravs de uma VPN, onde o trfego seja roteado. Em ambos os casos, os pacotes de broadcast so descartados pelos roteadores, fazendo com que os micros em um segmento no enxerguem os micros do outro e vice-versa. A soluo em ambos os casos implantar um servidor WINS na rede. Com isso, os clientes passam a consultar o servidor ao invs de mandar pacotes de broadcast, fazendo com que a navegao funcione mesmo ao utilizar vrios segmentos de rede. Para isso, basta incluir a opo dentro da seo [global] do smb.conf: wins support = yes O prximo passo configurar os clientes da rede para utilizarem o servidor. A opo fica escondida nas propriedades da conexo de rede, no Protocolo TCP/IP > Propriedades > Avanado > WINS, onde voc deve adicionar o endereo IP do servidor:

A configurao do servidor WINS pode ser tambm enviada automaticamente para os clientes. Para isso, necessrio incluir a opo "netbios-name-servers" na configurao do servidor DHCP (no arquivo "/etc/dhcp3/dhcpd.conf", ou "/etc/dhcpd.conf"), especificando o nome do servidor, como em:

option netbios-name-servers 192.168.1.254; Esta linha colocada dentro da seo com a configurao da rede, como nesse exemplo: subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option netbios-name-servers 192.168.1.254; option broadcast-address 192.168.1.255; } No caso de outros micros Linux rodando o Samba que forem ser configurados como clientes do servidor principal, a configurao feita adicionando a opo "wins server = servidor" (tambm na seo [global] do smb.conf), onde voc especifica o endereo IP do servidor principal, como em: wins server = 192.168.1.254 Uma observao importante que as opes "wins support" e "wins server" so mutuamente exclusivas. Ou a mquina atua como servidor WINS, ou como cliente (nunca as duas coisas ao mesmo tempo), de forma que voc no deve jamais combinar as duas opes dentro da configurao. Em verses antigas do Samba, combinar as duas opes na configurao simplesmente fazia com que o servidor deixasse de funcionar. Nas atuais o resultado no chega a ser dramtico (o servidor vai simplesmente ignorar a opo que for colocada depois), mas mesmo assim este um erro grave de configurao que deve ser evitado. Um exemplo de seo [global] usando as opes que vimos at aqui seria: [global] netbios name = Athenas server string = Servidor Samba workgroup = Grupo username level = 1 preserve case = no default case = lower interfaces = eth0 bind interfaces only = yes local master = yes os level = 100 preferred master = yes wins support = yes Esta configurao ativa o teste de variaes de maisculas e minsculas para os logins recusados (apenas um nvel), faz com que todos os arquivos salvos nos compartilhamentos sejam renomeados para caracteres minsculos, faz com que o servidor escute apenas a interface eth0, que seja master browser da rede e que atue como servidor WINS. Este um arquivo de configurao perfeitamente utilizvel, faltaria apenas adicionar as sees referentes aos compartilhamentos.

A Seo [Homes]
Uma vantagem de utilizar usurios "reais" no servidor Samba, em vez de usurios castrados, que voc tem a opo de compartilhar os diretrios home atravs da seo [homes] no smb.conf. Este um servio interno do Samba, que permite compartilhar automaticamente o diretrio home de cada usurio, sem precisar criar um compartilhamento separado para cada um. A configurao mais comum compartilhar os diretrios home com permisso de acesso apenas para o respectivo usurio. Dessa forma, cada usurio tem acesso apenas ao seu prprio diretrio home (que aparece no ambiente de redes como um compartilhamento com o mesmo nome), sem poder acessar, nem muito menos alterar o contedo dos diretrios home dos demais usurios. Nesse caso, a configurao fica: [homes] valid users = %S read only = no create mask = 0700

directory mask = 0700 browseable = no No necessrio especificar a pasta a compartilhar, pois ao omitir a linha "path" o Samba sabe que deve compartilhar o home de cada usurio. As opes "create mask = 0700" e "directory mask = 0700" fazem com que todos os arquivos e pastas criados pelo usurio dentro do home sejam acessveis apenas por ele mesmo. A opo "browseable = no" faz com que cada usurio possa ver apenas seu prprio diretrio, o que reforado pela opo "valid users = %S", que diz explicitamente que apenas o prprio usurio deve ter acesso sua pasta home. Uma queixa comum que ao acessar o diretrio home atravs do Samba, os usurios vero todos os arquivos e pastas de configurao de programas que so salvos dentro do diretrio home, o que pode ser confuso. Uma forma de evitar isso alterar a configurao, de forma que o Samba compartilhe uma pasta vazia dentro do home, e no o diretrio home em si. Com isso mantido o propsito de oferecer uma pasta particular para o usurio, onde ele possa salvar seus arquivos particulares e seus backups, sem a poluio gerada pela presena dos arquivos de configurao. A configurao nesse caso ficaria: [homes] path = /home/%u/share valid users = %S read only = no create mask = 0700 directory mask = 0700 browseable = no A linha "path = /home/%u/share" especifica que o Samba deve agora compartilhar a pasta "share" dentro do home e no mais o diretrio home em si (voc pode especificar outra pasta qualquer) e a linha "valid users = %S" garante que a pasta ficar acessvel apenas para o prprio usurio. Naturalmente, a pasta "share" precisa ser criada dentro do home de cada usurio manualmente. Voc pode fazer isso de forma automtica para todos os usurios usando este mini shell script: cd /home for i in *; do mkdir $i/share chown $i:$i $i/share done Aproveite para criar tambm a pasta "share" dentro do diretrio "/etc/skel", que usado como um modelo para a criao do home de novos usurios. Isso faz com que o diretrio seja adicionado ao home de todos os usurios criados da em diante, de forma automtica: # mkdir /etc/skel/share Concluindo, aqui vai uma lista de outras variveis do Samba para referncia: %a : A verso do Windows usada, onde o "%a" substitudo pelas strings "Win95" (Windows 95/98), "WinNT" (Windows NT 3.x ou 4.x), "Win2K" (Windows 2000 ou XP) ou "Samba" (mquinas Linux rodando o Samba) %I : Endereo IP da mquina cliente (ex: 192.168.1.2) %m : Nome da mquina cliente (ex: cliente1) %L : Nome do servidor (ex: athenas) %u : Nome do usurio, como cadastrado no servidor Linux (ex: joao) %U : Nome do usurio, como enviado pelo cliente Windows (pode ser diferente do login cadastrado no servidor em algumas situaes) %H : Diretrio home do usurio (ex: /home/maria) %g : Grupo primrio do usurio (ex: users) %S : Nome do compartilhamento atual (o valor informado entre colchetes, ex: arquivos)

%P : Pasta compartilhada (o valor informado na opo "path", ex: /mnt/arquivos) %v : Verso do Samba (ex: 3.2.24) %T : Data e horrio atual Ao longo do texto, veremos alguns outros exemplos de uso destas variveis, mas voc pode us-las em outras situaes para criar compartilhamentos "inteligentes", que mostram pastas diferentes de acordo com as propriedades do cliente. Por exemplo, a varivel "%a" (que indica a verso do Windows no cliente), poderia ser usada para criar um compartilhamento com drivers, que mostrasse diretamente a pasta com os drivers corretos para a verso do Windows usada. Nesse caso, voc poderia usar algo como: [drivers] path = /mnt/sda2/drivers/%a read only = yes A pasta "/mnt/sda2/drivers/" incluiria uma srie de sub-pastas, com os valores possveis para a varivel, incluindo "Win95", "WinNT", "Win2K" e "Samba". Ao acessar o compartilhamento, o cliente v apenas o contedo da pasta correspondente ao sistema operacional usado.

A Conta Guest
No Windows XP usado por padro um modo simplificado de compartilhamento de arquivos, o "simple sharing", que visa imitar o modo de acesso do Windows 95/98, onde os compartilhamentos so pblicos e voc apenas define se eles so apenas leitura ou leitura e escrita. Na verdade, o Windows XP usa o controle de acesso com base no usurio, assim como o Samba 3, mas, por baixo dos panos, todos os acessos passam a ser mapeados para a conta "guest" (ativa por padro), o que permite que usurios remotos sem login vlido acessem os compartilhamentos diretamente. Este recurso tambm chamado de "force guest". Naturalmente, podemos fazer o mesmo no Samba. Para isso, adicione as linhas abaixo dentro da seo [global] do smb.conf: map to guest = bad user guest account = guest A primeira opo faz com que sempre que um cliente especificar um usurio invlido ao tentar acessar o servidor, o servidor mapeie a requisio para o login especificado na opo "guest account", que usada para acessar o compartilhamento. Neste exemplo, qualquer usurio no autenticado passaria a usar a conta "guest", que deve ter sido previamente cadastrada no servidor. Voc pode tambm usar qualquer outra conta vlida, como em "guest account = maria". Uma opo menos usada a "map to guest = bad password". Ela se diferencia da "map to guest = bad user" pois permite o acesso apenas caso o usurio especifique um login vlido, mas erre apenas a senha. O principal motivo dela no ser muito usada que ela confunde o usurio, j que ele ou vai achar que est realmente logado no servidor (quando na verdade est apenas acessando de forma limitada atravs da conta guest) ou vai passar a achar que o servidor aceita qualquer senha. Para que os usurios no-autenticados possam acessar os compartilhamentos, voc deve explicitamente autorizar o acesso, adicionando a opo "guest ok = yes" na configurao, como em: [global] netbios name = Sparta workgroup = Grupo map to guest = bad user guest account = guest [publico] path = /mnt/sda2/publico writable = yes

guest ok = yes Note que no exemplo usei a opo "writable = yes". Entretanto, para que os usurios noautenticados possam efetivamente escrever na pasta, necessrio verificar se as permisses de acesso da pasta permitem que a conta especificada ("guest" no exemplo) altere os arquivos. Como disse anteriormente, o Samba est subordinado s permisses de acesso do sistema. Outra opo comum em compartilhamentos pblicos a "guest only = yes" (usada no lugar da "guest ok = yes", na seo [global]). Ela simula o "simple sharing" do Windows XP, mapeando qualquer acesso para a conta guest, sem sequer abrir o prompt de login para o cliente. Vamos ento a mais um exemplo de configurao do smb.conf, desta vez usando a conta guest para criar um servidor de arquivos pblico. Ele possui duas parties de arquivos (montadas nas pastas "/mnt/hda2 e "/mnt/sda1") que ficam disponveis a todos os usurios da rede: [global] netbios name = Plutus server string = Servidor pblico workgroup = Grupo local master = yes os level = 100 preferred master = yes wins support = yes map to guest = bad user guest account = gdh [arquivos] path = /mnt/hda2 writable = yes guest ok = yes [backups] path = /mnt/sda1 writable = yes guest ok = yes Esta configurao bastante simples e a prova de falhas. O servidor vai assumir a funo de master browser, se responsabilizando pela navegao dos clientes e vai mapear qualquer acesso para a conta "gdh" usada na opo "guest account", permitindo que qualquer um possa ler e gravar arquivos nos dois compartilhamentos. As duas principais observaes so que o usurio "gdh" deve ser um usurio real do sistema, cadastrado no servidor Samba, e que ele deve ser o dono das duas pastas compartilhadas, de forma que no tenha problemas para acessar seu contedo. Isso pode ser feito usando os 4 comandos a seguir: # adduser gdh <senha> # smbpasswd -a gdh <mesma senha> # chown -R gdh:gdh /mnt/hda2 # chown -R gdh:gdh /mnt/sda1 Essa configurao ideal para pequenos servidores de rede local, que devem apenas disponibilizar arquivos na rede, sem muita segurana. Ela similar ao exemplo de configurao para um servidor de arquivos pblico que inclu no livro Redes, Guia Prtico.

Lixeira no Samba
Em qualquer servidor de arquivos, a principal prioridade assegurar a integridade e a segurana dos dados. Entretanto, por mais estvel que seja a rede e por mais robusto que seja o servidor, o elo

mais fraco da cadeia acaba sendo sempre o usurio. De nada adianta um servidor perfeitamente estvel se ele deleta um arquivo importante sem querer. Pensando nisso, o Samba oferece a opo de usar uma lixeira, que pode lhe poupar muita dor de cabea em diversas situaes. Isso feito atravs da opo "vfs object = recycle", que cria uma lixeira dentro de cada pasta compartilhada, que passa a armazenar todos os arquivos deletados. Isso previne a remoo acidental de arquivos, j que o usurio passa a precisar deletar o arquivo e em seguida limpar o contedo da lixeira para realmente remov-lo, o que o comportamento esperado por muitos. Por padro, os arquivos deletados vo para a pasta ".recycle" (dentro do compartilhamento), mas o nome pode ser alterado atravs da opo "recycle:repository = lixeira" (onde o "lixeira" o nome desejado, que pode ser qualquer um). Quando uma pasta deletada, o padro simplesmente misturar todos os arquivos no diretrio raiz da lixeira, mas isso pode ser evitado adicionando a opo "recycle:keeptree = yes". Aqui temos mais um exemplo de compartilhamento, incluindo as trs opes: [projetos] path = /mnt/sda2/projetos writable = yes valid users = +apolo, isac vfs object = recycle recycle:repository = lixeira recycle:keeptree = yes Outra opo til a "recycle:versions", que faz com que a lixeira mantenha diferentes verses do mesmo arquivo, em vez de manter apenas a ltima verso. Os arquivos repetidos passam ento a ser renomeados para "Copy #1 of Samba.sxw", "Copy #2 of Samba.sxw" e assim por diante. recycle:versions = yes Com isso, voc passa a dormir um pouco mais tranquilo a noite e se salva (na maior parte dos casos) de precisar recuperar arquivos acidentalmente deletados a partir de backups. preciso apenas se lembrar de verificar o contedo das lixeiras de vez em quando e limpar as pastas quando elas comearem a consumir muito espao em disco. Voc pode inclusive deletar a pasta da lixeira inteira, pois ela recriada automaticamente quando o prximo arquivo for deletado.

Uma opo para reduzir o problema do espao desperdiado centralizar todas as lixeiras em uma nica pasta. Isso permite inclusive que voc utilize uma partio ou um HD separado para armazenar os arquivos da lixeira, sem correr o risco de ela crescer at ocupar todo o espao disponvel na partio principal. Para isso, usamos a opo "recycle:repository", seguida da pasta a ser utilizada (que deve ser criada previamente), como em:

recycle:repository = /var/samba/trash/ Como adicionamos o caminho completo (em vez de usar "recycle:repository = lixeira", como no exemplo anterior), a opo pode tanto ser adicionada individualmente em cada compartilhamento quanto ser especificada apenas uma vez na seo [global], o que faz com que a lixeira passe a ser automaticamente usada para arquivos deletados em todos os compartilhamentos do servidor. Centralizar todos os arquivos em uma nica pasta criaria uma grande confuso, j que ela misturaria arquivos deletados por todos os usurios. Uma soluo adicionar a varivel "%U", que faz com que os arquivos sejam organizados em vrias subpastas, separados por usurio (as subpastas usadas por cada usurio so criadas automaticamente conforme necessrio). Nesse caso a opo fica: recycle:repository = /var/samba/trash/%U O problema em usar essa opo que os usurios deixam de ver a lixeira, j que ela passa a ficar em uma pasta separada. Uma soluo para o problema criar um novo compartilhamento, que permite que cada usurio veja sua lixeira particular. Para isso, iremos novamente usar a varivel "%U": [lixeira] path = /var/samba/trash/%U writable = yes Usei a opo "writable = yes" para permitir que o prprio usurio possa limpar a lixeira quando quiser, mas isso opcional. Vale lembrar que para que o usurio consiga limpar os arquivos da lixeira, necessrio que ele tenha permisso de escrita para a pasta "/var/samba/trash/". Nesse caso, voc tem a opo de simplesmente abrir as permisses da pasta (chmod 777), ou ajustar manualmente as permisses da sub-pasta de cada usurio, como em: # chown -R joao:joao /var/samba/trash/joao Mais uma medida til para evitar desperdcio de espao bloquear a gravao de arquivos de backup e de arquivos temporrios na lixeira, j que eles costumam ser numerosos e raramente so importantes. saudvel bloquear tambm arquivos .iso (que so tipicamente muito grandes), de forma que eles sejam tambm deletados diretamente. As extenses de arquivos so especificadas atravs da opo "recycle:exclude" e nomes de pasta atravs da opo "recycle:exclude_dir", como em: recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache Assim como a "recycle:repository", as demais opes da lixeira podem tanto serem especificadas individualmente dentro de cada compartilhamento quanto diretamente dentro da seo [global], o que naturalmente o mais simples caso voc deseje ativ-la para todos os compartilhamentos. O default do Samba 3 manter todas as opes desativadas, de forma que a lixeira s usada quando as opes so especificadas. Um exemplo de configurao, com a lixeira ativa dentro da seo [global], dois compartilhamentos de arquivos e mais o compartilhamento que d acesso pasta central da lixeira por parte dos usurios seria: [global] netbios name = Phanteon server string = Servidor com lixeira workgroup = Grupo local master = yes os level = 100 preferred master = yes wins support = yes vfs objects = recycle recycle:keeptree = yes

recycle:versions = yes recycle:repository = /var/samba/trash/%U recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache [engenharia] path = /mnt/sda2/engenharia writable = yes valid users = +engenheiros [gerencia] path = /mnt/gerencia writable = yes valid users = paulo, rebeca hosts allow = micro3, micro4 browseable = no [lixeira] path = /var/samba/trash/%U writable = yes

Auditando Acessos
O Samba oferece tambm um recurso de gerao de log. Ele pode ser ativado adicionando as opes abaixo na seo [global] do smb.conf: log level = 1 log file = /var/log/samba.log max log size = 1000 A opo "log level" indica o nvel das mensagens (de 0 a 10), sendo que o nvel 0 mostra apenas mensagens crticas, o nvel 1 mostra alguns detalhes sobre os acessos e os demais mostram diversos nveis de informaes de debug, teis a desenvolvedores. A opo "log file" indica o arquivo onde ele ser gerado e a "max log size" indica o tamanho mximo, em kbytes. A partir do Samba 3.04 foi includo um mdulo de auditoria, que permite logar os acessos e as modificaes feitas de uma forma muito mais completa que o log tradicional. Isso feito atravs do mdulo "full_audit", que (do ponto de vista tcnico) funciona de forma similar ao mdulo "recycle" usado pela lixeira. O primeiro passo ativar o mdulo, o que feito atravs da linha abaixo: vfs objects = full_audit O prximo passo definir quais operaes devem ser logadas atravs da opo "full_audit:success", como em: full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown (as opes formam uma nica linha) As opes que inclu no exemplo so open (ler um arquivo), opendir (ver os arquivos dentro de uma pasta), write (alterar um arquivo), unlink (deletar um arquivo), rename (renomear um arquivo), mkdir (criar um diretrio), rmdir (remover um diretrio), chmod (alterar as permisses de acesso de um arquivo) e chown (mudar o dono de um arquivo). Voc pode remover algumas destas opes, deixando apenas as opes desejadas, ou ver uma lista completa das opes que podem ser includas no manual do vfs_full_audit, disponvel no: http://samba.org/samba/docs/man/manpages3/vfs_full_audit.8.html Continuando a configurao, especificamos as informaes que desejamos que sejam includas no log, usando a opo "full_audit:prefix". Aqui podemos utilizar as variveis que mostrei no tpico sobre o compartilhamento [homes], como a "%u" (o nome do usurio), "%I"

(o IP da mquina) e "%S" (o nome do compartilhamento onde foi feito o acesso ou a alterao). No necessrio incluir a varivel referente ao nome da mquina, pois o nome includo automaticamente: full_audit:prefix = %u|%I|%S Por padro, o mdulo loga no apenas os acessos e modificaes, mas tambm um grande volume de mensagens de alerta e erros gerados durante a operao. A opo "full_audit:failure = none" evita que estas mensagens sejam logadas, fazendo com que o log fique muito mais limpo e seja mais fcil encontrar as opes que realmente interessam: full_audit:failure = none Concluindo, especificamos o nvel dos alertas, entre os suportados pelo syslog, como em: full_audit:facility = local5 full_audit:priority = notice Juntando tudo, temos: vfs objects = full_audit full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown full_audit:prefix = %u|%I|%S full_audit:failure = none full_audit:facility = local5 full_audit:priority = notice Esta configurao pode ser tanto includa dentro da seo [global] (de forma que o log inclua os acessos e as alteraes feitas em todos os compartilhamentos) quanto ser includa apenas na configurao de um compartilhamento especfico. Com isso, o Samba vai passar a gerar os eventos referentes aos acessos. Falta agora configurar o sysklogd (o servio responsvel pela gerao dos logs do sistema), para logar os eventos, gerando o arquivo de log que poder ser consultado. Para isso, abra o arquivo "/etc/syslog.conf" e adicione a linha abaixo: local5.notice /var/log/samba-full_audit.log Note que o "local5.notice" corresponde aos valores informados nas opes "full_audit:facility" e "full_audit:priority", enquanto o "/var/log/samba-full_audit.log" o arquivo de log que ser gerado. Depois de concluda a configurao, reinicie os servios e o log passar a ser gerado imediatamente: # /etc/init.d/samba restart # /etc/init.d/sysklogd restart Dentro do arquivo, voc ver entradas contendo a data e hora, o nome da mquina, o usurio, o IP da mquina, o nome do compartilhamento, a operao realizada e o nome do arquivo ou pasta onde ela foi realizada, como em: Nov 18 15:21:15 m5 smbd_audit: joao|192.168.1.23|arquivos|opendir|ok|. Nov 18 15:21:29 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|r|addr.txt Nov 18 15:21:34 m5 smbd_audit: joao|192.168.1.23|arquivos|mkdir|ok|trabalho Nov 18 15:21:36 m5 smbd_audit: joao|192.168.1.23|arquivos|opendir|ok|trabalho Nov 18 15:21:43 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|w|trabalho/Samba.sxw Nov 18 15:21:44 m5 smbd_audit: joao|192.168.1.23|arquivos|open|ok|w|trabalho/foto.jpg O log conter entradas referentes a todos os usurios e mquinas, mas fcil ver apenas as entradas referentes a um determinado usurio, compartilhamento, endereo IP ou outro parmetro qualquer ao listar o arquivo pelo terminal usando o grep, que permite mostrar apenas as linhas contendo determinados trechos de texto, como em: # cat /var/log/samba-full_audit.log | grep "joao|192.168.1.23" (mostra os acessos provenientes do usurio joao, feitos a partir do endereo 192.168.1.23)

# cat /var/log/samba-full_audit.log | grep "|arquivos|" (acessos feitos ao compartilhamento "arquivos", por parte de qualquer usurio) E assim por diante. Voc pode tambm direcionar a sada para um novo arquivo (ao invs de tentar l-la pelo prprio terminal), como em: # cat /var/log/samba-full_audit.log | grep "|arquivos|" > arquivos.log

Backends: smbpasswd ou tdbsam


As primeiras verses do Samba suportavam apenas o uso de senhas de texto puro, que eram transmitidas de forma no encriptada atravs da rede. Ainda possvel reverter a este sistema primitivo nas verses recentes do Samba usando a opo "encrypt passwords = no" no smb.conf, mas, alm de no trazer nenhuma vantagem, isso quebra a compatibilidade com todas as verses recentes do Windows, que no aceitam o envio de senhas em texto puro. Durante a evoluo do Samba, foram criados diversos backends, que permitem armazenar senhas encriptadas e outras informaes referentes aos usurios. Voc pode escolher qual backend usar atravs da opo "passdb backend" do smb.conf. Vamos entender como eles funcionam. O smbpasswd o backend mais simples. Nele, as senhas so salvas no arquivo "/etc/samba/smbpasswd" e so transmitidas de forma encriptada atravs da rede, com suporte ao sistema NTLM, usado pelas verses contemporneas do Windows. A vantagem do smbpasswd que ele um sistema bastante simples. Embora encriptadas, as senhas so armazenadas em um arquivo de texto, com uma conta por linha. Se voc quer apenas configurar um servidor Samba para compartilhar arquivos e impressoras com a rede local, sem us-lo como PDC, ento o smbpasswd funciona bem. Ele usado por padro no Samba 3, de forma que se o arquivo smb.conf do seu servidor no contm a linha "passdb backend =" (como nos exemplos que vimos at aqui), voc est usando justamente o smbpasswd. Em seguida temos o tdbsam, que usa uma base de dados muito mais robusta, armazenada no arquivo "/var/lib/samba/passdb.tdb" ( justamente este arquivo que o script executado durante a instalao do pacote "samba" no Debian pergunta se deve ser criado). O tdbsam oferece duas vantagens sobre o smbpasswd: oferece um melhor desempenho em servidores com um grande nmero de usurios cadastrados e oferece suporte ao armazenamento dos controles SAM estendidos usados pelas verses server do Windows. O uso do tdbsam fortemente recomendvel caso seu servidor tenha mais do que algumas dezenas de usurios cadastrados ou caso voc pretenda usar seu servidor Samba como PDC da rede (veja mais detalhes a seguir). Ele tambm um pr-requisito caso voc precise migrar um domnio NT j existente para o servidor Samba. Ao usar uma verso recente do Samba, ativar o uso do tbdsam bastante simples, basta incluir a linha "passdb backend = tdbsam" na seo [global] do smb.conf, como em: [global] netbios name = Sparta workgroup = Grupo server string = Servidor encrypt passwords = true wins support = yes preferred master = yes os level = 100 enable privileges = yes passdb backend = tdbsam Embora o arquivo de senhas seja diferente, o comando para cadastrar os usurios no Samba ao usar o tdbsam continua sendo o mesmo: # smbpasswd -a usuario Isso acontece porque, ao ser executado, o smbpasswd verifica a configurao presente no smb.conf

e assim realiza as operaes necessrias para cadastrar os usurios no backend utilizado. A principal dica que, ao utilizar o tdbsam, voc deve adicionar a linha "passdb backend = tdbsam" no smb.conf logo no incio da configurao, antes de comear a cadastrar os usurios no servidor, caso contrrio, o smbpasswd cadastrar os usurios no smbpasswd e voc precisar cadastr-los novamente para atualizar a base do tdbsam mais tarde. Em muitos casos, um script includo na distribuio pode se encarregar de fazer a converso automaticamente, mas melhor no contar com isso. Para verificar se os usurios esto cadastrados na base de dados do tdbsam, use o comando "pdbedit -Lw" (como root). Ele deve retornar uma lista contendo todos os usurios cadastrados, como em: # pdbedit -Lw
gdh:1006:5567A38FC604AC6B90213960766D16B5:15350B7F4983CB5EAC073A892B423E8E:[U ]:LCT-471F5AF2: root:0:E412294BCF24C19D433AC183134CC0F3:121797EEFB127E62222B23F77ED087BE:[U ]:LCT-464460FF: manuel:1005:5567A38FC604AC63902139606B6D16B5:15350B7F4983CB5EAC073A892C687E8E:[U ]:LCT-4710F13C: hp$:1007:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0D80C51183ED74320799B5BEDDCBE388:[W ]:LCT-47421493: m5$:1009:B233C3E987D08D924405A9EF76E52792:65DD4A9908A35667D79B599F94691E34:[W ]:LCT-4742D747:

Em seguida temos o mysqlsam e o ldapsam, onde as contas e senhas so armazenadas em, respectivamente, um servidor MySQL e um servidor LDAP. O uso do MySQL em conjunto com o Samba no muito comum, mas o LDAP vem crescendo bastante em grandes redes. A grande vantagem que o banco de dados pode ser acessado por vrios servidores, sem necessidade de replicar o arquivo de senhas manualmente (usando o rsync, por exemplo). Isso muito til no caso de redes muito grandes onde a autenticao dos usurios dividida entre vrios servidores. Nesta configurao, o PDC divide a carga de trabalho com um conjunto de BDCs (backup domain controllers), que podem ser tanto outros servidores Samba quanto servidores Windows. Os BDCs so subordinados ao servidor PDC, mas todos tem acesso mesma base de dados com os usurios, armazenada no servidor LDAP, o que evita problemas de sincronismo entre eles. De uma forma geral, um nico PDC usando o tdbsam como backend atende bem a at 250 clientes. Este limite no relacionado ao uso do tdbsam, mas sim a questes prticas relacionadas ao desempenho da rede. Ele pode ser maior ou menor na prtica, de acordo com a velocidade da rede (100 ou 1000 megabits), o hardware do servidor e a carga sobre a rede. A partir da, passa a fazer sentido migrar para um banco de dados LDAP e passar a adicionar servidores BDC secundrios.

Usando o Samba como PDC


Em uma pequena rede, manter as senhas dos usurios sincronizadas entre as estaes Windows e o servidor Samba no chega a ser um grande problema. No entanto, em redes de maior porte, isso pode se tornar uma grande dor de cabea e passar a consumir uma boa parte do seu tempo. Para solucionar o problema, existe a opo de usar o servidor Samba como um controlador primrio de domnio (PDC), onde ele passa a funcionar como um servidor de autenticao para os clientes Windows e, opcionalmente, armazenar os perfis dos usurios, permitindo que eles tenham acesso a seus arquivos e configuraes a partir de qualquer mquina onde faam logon. Ao cadastrar um novo usurio no servidor Samba, ele automaticamente pode fazer logon em qualquer uma das estaes configuradas. Ao remover ou bloquear uma conta de acesso, o usurio automaticamente bloqueado em todas as estaes. Isso elimina o problema de sincronismo entre as senhas no servidor e nas estaes, alm de centralizar a administrao de usurios e permisses de acesso no servidor, simplificando bastante seu trabalho de administrao. O primeiro passo modificar o arquivo de configurao do Samba. Existem algumas regras adicionais para transformar o Samba em um controlador de domnio. A seo "global" deve conter as linhas "domain master = yes", "domain logons = yes", "logon script = netlogon.bat" e (importante) no deve conter a linha "invalid users = root", pois precisaremos usar a conta de root no Samba ao configurar os clientes. preciso, ainda, adicionar um compartilhamento chamado "netlogon", que conter o script de logon que ser executado pelas estaes. Continuando a lista de "exigncias", necessrio tambm que o modo de

segurana esteja configurado em nvel de usurio (security = user) e que o uso de senhas encriptadas esteja ativado (encrypt passwords = yes). Na verdade, no obrigatrio incluir estas duas linhas no smb.conf, j que estes valores so usados por default pelo Samba 3, mas sempre interessante us-los em exemplos e modelos de configurao para fins didticos e para deixar claro que o arquivo no deve ter opes que conflitem com elas. Embora no seja obrigatrio, fortemente recomendvel ativar o uso do tdbsam como backend, adicionando a linha "passdb backend = tdbsam", como vimos a pouco. Usar o smbpasswd em um PDC oferece vrias desvantagens. A principal delas que o smbpasswd armazena um conjunto bastante incompleto de atributos referentes aos usurios, de forma que atributos como o SID (um cdigo de identificao nico a cada usurio, usado como verificao de segurana) ficam em branco ou so gerados dinamicamente durante os acessos, o que pode quebrar o suporte aos roaming profiles em algumas situaes. O uso do tdbsam soluciona estes problemas. Este um exemplo de arquivo de configurao do Samba para um controlador de domnio. Ele no contm as configuraes para compartilhamento de impressoras, lixeira e outras opes que voc pode adicionar (juntamente com os compartilhamentos desejados) depois de testar a configurao bsica: [global] workgroup = Dominio netbios name = GDH server string = Samba PDC domain master = yes domain logons = yes logon script = netlogon.bat security = user encrypt passwords = yes enable privileges = yes passdb backend = tdbsam preferred master = yes local master = yes os level = 100 wins support = yes [netlogon] comment = Servico de Logon path = /var/samba/netlogon read only = yes browseable = no [homes] valid users = %S create mask = 0700 directory mask = 0700 browseable = no Acostume-se a sempre rodar o comando "testparm" depois de fazer alteraes no arquivo, pois ele verifica a sintaxe e indica erros de configurao. Ao configurar o Samba como PDC, ele deve exibir a mensagem: "Server role: ROLE_DOMAIN_PDC", como em: $ testparm Load smb config files from /etc/samba/smb.conf Processing section "[netlogon]" Processing section "[homes]" Loaded services file OK. Server role: ROLE_DOMAIN_PDC

As linhas "preferred master = yes", "local master = yes" e "os level = 100" fazem com que o servidor assuma tambm a funo de master browser da rede. comum que o PDC acumule tambm a funo de master browser, mas, na verdade, uma coisa no tem relao com a outra. Voc pode remover as trs linhas e configurar outra mquina para assumir a funo de master browser se preferir. Depois de configurar o arquivo, verifique se a conta root do sistema foi cadastrada no Samba e se as senhas esto iguais. Caso necessrio, use o comando "smbpasswd -a root" para cadastrar o a conta de root no Samba. Aproveite para criar a pasta "/var/samba/netlogon" e configurar corretamente as permisses: # mkdir -p /var/samba/netlogon # chmod 775 /var/samba/netlogon Com o "775" estamos permitindo que, alm do root, outros usurios que voc adicionar no grupo possam alterar o contedo da pasta. Isso pode ser til caso existam outros administradores de rede alm de voc. Cadastre agora os logins dos usurios, com as senhas que eles utilizaro para fazer logon a partir das mquinas Windows. Nesse caso, no preciso se preocupar em manter as senhas em sincronismo entre o servidor e as estaes. Na verdade, as contas que criamos aqui no precisam sequer existir nas estaes, pois o login ser feito no servidor. Para adicionar um usurio de teste "joao", use os comandos: # adduser joao # smbpasswd -a joao importante criar tambm a pasta "profile.pds" dentro do diretrio home do usurio, onde o cliente Windows armazena as informaes da sesso cada vez que o usurio faz logon no domnio: # mkdir /home/joao/profile.pds Ao rodar este comando como root, no se esquea de ajustar as permisses da pasta, de forma que o usurio seja o dono: # chown -R joao:joao /home/joao/profile.pds Aproveite e crie a pasta "profile.pds" dentro do diretrio /etc/skel, de forma que ela seja criada automaticamente dentro do home dos usurios que criar daqui em diante: # mkdir /etc/skel/profile.pds Alm das contas para cada usurio, preciso cadastrar tambm uma conta (bloqueada, e por isso sem senha), para cada mquina. Voc deve usar aqui os mesmos nomes usados na configurao de rede em cada cliente. Se a mquina se chama "alesia" por exemplo, preciso criar um login de mquina com o mesmo nome: # useradd -d /dev/null -s /bin/false alesia$ # passwd -l alesia$ # smbpasswd -a -m alesia Note que, nos dois primeiros comandos, adicionado um "$" depois do nome, que indica que estamos criando uma conta de mquina, que no tem diretrio home (-d /dev/null), no possui um shell vlido (-s /bin/false) e est travada (passwd -l); a conta vlida apenas no Samba, onde cadastrada com a opo "-m" (machine). Essas contas de mquina so chamadas de "trusted accounts" ou "trustees". Lembre-se de que para usar este comando o arquivo "/etc/shells" (no servidor) deve conter a linha "/bin/false". Em caso de erro ao adicionar a mquina, use o comando abaixo para adicionar a linha e tente novamente: # echo "/bin/false" >> /etc/shells (este comando s funciona se executado diretamente usando o root, no funciona se executado usando o sudo) Se preferir, voc pode adicionar as contas de mquina dentro de um grupo do sistema ("maquinas" ou "machines" por exemplo). Nesse caso, crie o grupo usando o comando "groupadd" e use o

comando abaixo para criar as contas de mquina j incluindo-as no grupo: # useradd -g maquinas -d /dev/null -s /bin/false alesia$ Por ltimo, necessrio criar o arquivo "/var/samba/netlogon/netlogon.bat", um script que lido e executado pelos clientes ao fazer logon. Voc pode fazer muitas coisas atravs dele, mas um exemplo de arquivo funcional : net use h: /HOME net use x: gdharquivos /yes Este script faz com que a pasta home de cada usurio (compartilhada pelo Samba atravs da seo "homes") seja automaticamente mapeada como a unidade "H:" no cliente, o que pode ser bastante til para backups, por exemplo. Naturalmente, cada usurio tem acesso apenas a seu prprio home. A segunda linha um exemplo de como fazer com que determinados compartilhamentos do servidor sejam mapeados no cliente. O "net use x: gdharquivos /yes" faz com que o compartilhamento "arquivos" (que precisaria ser configurado no smb.conf), seja mapeado como o drive "X:" nos clientes. Lembre-se que o "gdh" dentro do netlogon.bat deve ser substitudo pelo nome do seu servidor Samba, configurado na opo "netbios name =" do smb.conf. Mais um detalhe importante que o arquivo do script de logon deve usar quebras de linhas no padro MSDOS e no no padro Unix (que o padro na maioria dos editores de texto do Linux). Voc pode cri-lo usando um editor de texto do Windows ou usar algum editor do Linux que oferea esta opo. No Kwrite por exemplo, a opo est em: "Configuraes > Configurar Editor > Abrir/Salvar > Fim de linha > DOS/Windows":

Mais uma configurao til (porm opcional) fazer com que o servidor armazene os arquivos e configuraes do usurio (recurso chamado Roaming Profiles, ou perfis mveis), fornecendo-os estao no momento em que o usurio faz logon. Isso permite que o usurio possa trabalhar em outras mquinas da rede e faz com que seus arquivos de trabalho sejam armazenados no servidor, reduzindo a possibilidade de perda de dados. Por outro lado, ativar os perfis mveis faz com que seja consumido mais espao de armazenamento no servidor e aumenta o trfego da rede, j que os arquivos precisam ser transferidos para a estao a cada logon. Isso pode tornar-se um problema caso os usurios da rede tenham o hbito de salvar muitos arquivos grandes na rea de trabalho. Note que o servidor no armazena todos os arquivos do usurio, apenas as configuraes dos aplicativos, entradas do menu iniciar, cookies, bookmarks, arquivos temporrios do IE e o contedo das pastas "Desktop", "Modelos" e "Meus Documentos". Para ativar o suporte no Samba, adicione as duas linhas abaixo no final da seo "global" do smb.conf (abaixo da linha "logon script = netlogon.bat"): logon home = %L%U.profiles logon path = %Lprofiles%U

A varivel "%L" indica, neste caso, o nome do servidor, enquanto o "%U" indica o nome do usurio que est fazendo logon. Dessa forma, quando o usurio "joao" faz logon montado o compartilhamento "gdhprofilesjoao", por exemplo. Adicione tambm um novo compartilhamento, adicionando as linhas abaixo no final do arquivo: [profiles] path = /var/profiles writeable = yes browseable = no create mask = 0600 directory mask = 0700 Concluindo, crie a pasta "/var/profiles", com permisso de escrita para todos os usurios: # mkdir /var/profiles # chmod 1777 /var/profiles Cada usurio passa a ter uma pasta pessoal dentro da pasta ("/var/profiles/joao", por exemplo) onde as configuraes so salvas. Apesar das permisses locais da pasta permitirem que qualquer usurio a acesse, o Samba se encarrega de permitir que cada usurio remoto tenha acesso apenas ao seu prprio profile. As estaes Windows 2000 utilizam os perfis mveis automaticamente, quando o recurso est disponvel no servidor Samba. Voc pode verificar a configurao e, caso desejado, desativar o uso do perfil mvel no cliente no "Meu Computador > Propriedades > Perfis de Usurio > Alterar tipo". No Windows XP, o default foi alterado e o sistema tenta usar o perfil mvel por padro, exibindo uma mensagem de erro (repetida a cada logon) caso o recurso no esteja disponvel no servidor. Para eliminar as mensagens de erro necessrio desativar o uso dos perfis mveis, o que feito atravs do utilitrio "gpedit.msc", que pode ser chamado atravs do "Iniciar > Executar" ( necessrio estar logado localmente, usando uma conta com privilgios administrativos). Dentro dele, acesse a opo "Configurao do computador > Modelos administrativos > Sistema > Perfis de usurio > S permitir perfis de usurio locais" e mude a opo de "No configurado" para "Ativado" (esta alterao precisa ser repetida em todas as mquinas):

Aqui vai mais um exemplo de configurao para o servidor Samba, incluindo a configurao para uso como PDC, o compartilhamento netlogon, suporte a perfis mveis e compartilhamento de impressoras:

[global] netbios name = Byzantium workgroup = Dominio server string = Servidor PDC domain master = yes domain logons = yes logon script = netlogon.bat logon home = %L%U.profiles logon path = %Lprofiles%U security = user encrypt passwords = yes enable privileges = yes passdb backend = tdbsam preferred master = yes local master = yes os level = 100 wins support = yes printing = cups load printers = yes enable privileges = yes [printers] path = /var/spool/samba print ok = yes guest ok = yes browseable = yes [print$] path = /var/smb/printers read only = yes write list = gdh inherit permissions = yes [netlogon] comment = Servico de Logon path = /var/samba/netlogon read only = yes browseable = no< [profiles] path = /var/profiles writeable = yes browseable = no create mask = 0600 directory mask = 0700 [homes] valid users = %S create mask = 0700 directory mask = 0700 browseable = no [arquivos] path = /mnt/hda2 writable = no write list = +arquivos

Com o servidor Samba configurado, falta o mais importante, que configurar os clientes para fazerem logon no domnio. Ao usar um PDC, surge a necessidade de cadastrar as mquinas no domnio, para s ento os usurios cadastrados poderem utilizar as mquinas. possvel cadastrar tanto mquinas Windows quanto mquinas Linux no domnio, vamos agora s peculiaridades de cada sistema.

Logando Clientes Windows


Nem todas as verses do Windows suportam o uso de um domnio. Como controladores de domnio so usados principalmente em redes de mdio ou grande porte, em empresas, a Microsoft no inclui suporte no Windows XP Home e no XP Starter, assim como no Vista Starter, Vista Home Basic e Vista Home Premium, de forma a pressionar as empresas a comprarem as verses mais caras do sistema. possvel burlar a limitao atravs da alterao de chaves do registro, mas isso viola o contrato de uso do sistema, o que de qualquer forma no aceitvel em um ambiente de produo. Tendo isso em mente, vamos aos passos relacionados configurao, que muda de acordo com a verso do Windows: No Windows XP Professional, acesse o "Painel de Controle > Sistema > Nome do Computador" e use a opo "Alterar...". No menu seguinte, defina o nome da mquina (que precisa ser um dos logins de mquinas adicionados na configurao do Samba) e o nome do domnio, que definido na opo "workgroup =" do smb.conf. Para ter acesso a esta opo, voc deve estar logado como administrador:

Nunca demais lembrar que o "Nome do computador" fornecido na opo deve corresponder a uma das contas de mquinas cadastradas no servidor Samba, usando os trs comandos que citei anteriormente. Para cadastrar a mquina "hp", por exemplo, voc usaria (no servidor, como root) os comandos abaixo: # useradd -d /dev/null -s /bin/false hp$ # passwd -l hp$ # smbpasswd -a -m hp Na tela de identificao que ser aberta a seguir, logue-se como "root", com a senha definida no servidor Samba. normal que a conexo inicial demore um ou dois minutos. Se tudo der certo,

voc saudado com a mensagem "Bem-vindo ao domnio Dominio" (onde o "Dominio" o nome definido na opo "workgroup" do smb.conf):

Fornecer a senha de root do servidor ao cadastrar o cliente no domnio, prova que quem est fazendo a operao o administrador, ou algum autorizado por ele. Se qualquer um pudesse adicionar e remover mquinas do domnio, ele no seria muito diferente de um grupo de trabalho e a configurao perderia todo o sentido. Se voc no gostou da idia de usar a senha de root para cadastrar as mquinas, possvel tambm outorgar o privilgio a uma outra conta atravs do comando "net", como veremos a seguir. Quando a mquina passa a fazer parte do domnio, criada uma "relao de confiana" entre ela e o servidor. Uma senha (chamada de "machine trust account password") usada pela mquina para comprovar sua identidade ao contatar o servidor de domnio. Esta uma senha interna, gerada automaticamente pelo sistema durante a conexo inicial. Depois de reiniciar a estao, aparecer a opo "Efetuar logon em: DOMINIO" na tela de login, permitindo que o usurio faa logon usando qualquer uma das contas cadastradas no servidor. Continua disponvel tambm a opo de fazer um login local, mas, nesse caso, perde-se o acesso aos recursos relacionados ao domnio e usado o perfil do usurio local:

Para remover a mquina do domnio, preciso acessar a mesma opo e mudar a opo de "Membro de Domnio:" para "Membro de Grupo de trabalho:". O sistema solicita novamente a senha do servidor, como uma forma de comprovar que o usurio est autorizado a realizar a operao. Isso evita que os usurios da rede desfaam a configurao, removendo as mquinas do domnio sem permisso do administrador. Para confirmar se os clientes esto realmente efetuando logon no servidor, use o comando "smbstatus" (no servidor). Ele retorna uma lista dos usurios e das mquina logadas, como em:
Samba version 3.0.14a-Debian PID Username Group Machine ----------------------------------------------------4363 joao joao athenas (192.168.0.34) Service pid machine Connected at ----------------------------------------------------joao 4363 athenas Sat Jul 9 10:37:09 2005

No Windows Vista, a opo de adicionar a mquina ao domnio est no "Painel de Controle > Sistema > Configuraes avanadas do sistema (na lista esquerda) > Nome do Computador > Alterar":

A forma como voc escolhe se quer se logar ao domnio ou fazer um login na mquina local na tela de login do Vista segue uma lgica um pouco curiosa. Depois que a mquina adicionada ao domnio, a tela de login mostra a opo de fazer logon no domnio, onde o ltimo login utilizado fica pr-selecionado. Para usar outro login, necessrio clicar no boto "Trocar Usurio" e forneclo na tela seguinte. Entretanto, no existe uma opo para fazer logon na mquina local. Para isso, necessrio especificar o nome da mquina seguido pelo nome do usurio no campo de login, como em: Vistagdh. Outra opo usar um "." antes do nome do usurio, como em ".gdh". No Windows 2000, o procedimento basicamente o mesmo do Windows XP, muda apenas a localizao da opo, que est disponvel no "Meu Computador > Propriedades > Identificao de rede > Propriedades". Ao contrrio do XP Home, XP Starter, Vista Starter e Vista Home, as mquinas com o Windows 98 ou o Windows ME podem ser adicionadas ao domnio. Entretanto, elas participam dentro de um modo de compatibilidade, onde podem acessar os compartilhamentos, mas no tm acesso ao recurso de perfis mveis, por exemplo. Para cadastrar a mquina, comece logando-se na rede (na tela de login aberta na inicializao do sistema) com o mesmo usurio e senha que ser usado para fazer logon no domnio. Acesse agora o "Painel de Controle > Redes > Cliente para redes Microsoft > Propriedades". Marque a opo "Efetuar Logon num domnio NT", informe o nome do domnio e marque a opo "Efetuar logon e restaurar conexes". Ao terminar, preciso fornecer o CD do Windows (para a instalao dos componentes necessrios) e reiniciar a mquina.

Corrigindo problemas
Naturalmente, com tantos passos a seguir, nem sempre as coisas do certo na primeira tentativa. Vamos ento a uma rpida seo de troubleshoot, com mensagens de erro comuns ao tentar cadastrar a mquina no domnio:

Esta primeira mensagem aparece quando o nome da mquina no foi cadastrado no servidor Samba

como uma conta de mquina. O "nome de usurio" se refere, na verdade, conta da mquina, adicionada usando os trs comandos que vimos a pouco. Outro erro comum :

Esta segunda mensagem indica que a conta de root no foi cadastrada no Samba (smbpasswd -a root), que a senha informada no cliente est incorreta ou que o Samba no est sendo capaz de utilizar a conta de root devido presena da linha "invalid users = root" no smb.conf. Em resumo, ela exibida quando, por qualquer motivo, o servidor Samba no consegue autenticar a conta de root e recusa o login da mquina Windows no domnio. O Samba inteiramente compatvel com as estaes rodando o Windows XP a partir da verso 3. As ltimas verses da srie 2.x tambm podiam ser configuradas como servidores de domnio, mas, ao us-las, era necessrio fazer um conjunto de alteraes nos clientes, desativando recursos que no eram suportados pelo Samba. Naturalmente, muito mais fcil simplesmente atualizar o servidor Samba do que fazer alteraes em cada cliente, mas de qualquer forma, caso isso no seja possvel, voc pode ajustar os clientes de duas formas: 1. Copie o arquivo "/usr/share/doc/samba-doc/registry/WinXP_SignOrSeal.reg" (do servidor), que fica disponvel como parte da instalao do pacote "samba-doc" para cada cliente e execute o arquivo, para que ele faa as alteraes necessrias no registro. 2. Acesse o "Painel de controle > Ferramentas administrativas > Diretiva de segurana local > Diretivas locais > Opes de segurana" e desative as seguintes opes: Membro do domnio: criptografar ou assinar digitalmente os dados de canal seguro (sempre) Membro do domnio: desativar alteraes de senha de conta da mquina Membro do domnio: requer uma chave de sesso de alta segurana (Windows 2000 ou posterior).

Cadastrando as mquinas sem usar a conta de root


Normalmente, voc deve fornecer a senha de root ao inserir cada mquina no domnio. Fornecer a senha de root justamente uma prova de que voc realmente o administrador do servidor e est autorizado a cadastrar as mquinas. Esta a forma mais simples de trabalhar, mas muitos torcem o nariz para a idia, temendo abrir uma brecha para ataques. possvel evitar a necessidade de usar a conta de root ao cadastrar as mquinas criando uma conta especial, com privilgios para adicionar mquinas ao domnio, de forma similar ao que fizemos ao configurar o fornecimento automtico de drivers de impresso. Para isso, usamos novamente o comando "net", adicionando agora o privilgio "SeMachineAccountPrivilege" ao usurio que ter permisso para adicionar as mquinas no domnio. Se o servidor se chama "athenas" e o usurio se chama "gdh", o comando seria: # net -S localhost -U root -W ATHENAS rpc rights grant 'ATHENASgdh' SeMachineAccountPrivilege (todo o comando forma uma nica linha) Este comando deve ser executado em um prompt do prprio servidor, e no localmente, nos

clientes. Se voc no tem acesso fsico ao servidor, pode se logar nele via SSH. Ao executar o comando, o sistema solicita a senha de root (do servidor) e exibe uma mensagem de confirmao. Com isso, a conta de usurio especificada no comando (gdh no exemplo) ganha permisso para adicionar mquinas no domnio e pode ser usada para cadastrar os clientes, no lugar da conta root. Lembre-se de que, para adicionar os privilgios, voc deve comentar ou remover a linha "invalid users = root" e adicionar a linha "enable privileges = yes" na seo [global] do smb.conf, como vimos no tpico sobre impresso.

Ajustando as permisses locais


Ao adicionar uma mquina Windows ao domnio, criada uma distino entre as contas locais e as contas de domnio. Quando o usurio se loga na estao Windows usando uma das contas cadastradas no servidor, ele na verdade logado (na estao local) usando uma conta limitada, onde ele no tem permisso para compartilhar arquivos, para alterar as configuraes da rede, nem para alterar a maior parte das configuraes do sistema. Em muitas situaes, exatamente isso que voc quer, mas em outras isso pode ser um grande problema, j que o usurio no conseguir compartilhar pastas com outros usurios da rede, por exemplo. Veja que a aba de compartilhamento sequer fica disponvel nas propriedades da pasta:

Para mudar isso, necessrio ajustar as permisses da mquina local, de forma que a conta do domnio tenha permisso para alterar as configuraes. Para isso, logue-se localmente na estao Windows, usando uma conta com privilgios administrativos e acesse o "Painel de controle > Contas de usurio". Clique no "Adicionar" e especifique o login do usurio e o nome do domnio e, na tela seguinte, especifique o nvel de permisso na mquina local (Administrador, Usurio avanado, etc.). Voc pode adicionar outros usurios se desejar:

Faa logoff e logue-se novamente no domnio com a conta que foi cadastrada. Se voc a cadastrou com privilgios administrativos, voc notar que a aba de compartilhamento voltou a aparecer e o acesso s demais configuraes foi destravado. Com isso o usurio assume o controle de sua mquina local e pode criar compartilhamentos e alterar as demais configuraes:

Inicialmente, os compartilhamentos aparecero no ambiente de rede, mas usurios de outras mquinas (tambm cadastradas no domnio) no conseguiro acess-los, recebendo uma mensagem de permisso negada. Para solucionar este ltimo problema, acesse as permisses da pasta (ainda na mquina local) e adicione os usurios do domnio que tero permisso para acess-la, definindo as permisses de acesso de cada um:

Note que essa configurao necessria apenas se voc quiser que os usurios das estaes possam criar compartilhamentos locais. Outra opo simplesmente adicionar compartilhamentos no servidor e orientar os usurios a usarem os compartilhamentos criados para compartilharem os arquivos desejados. Centralizar todos os compartilhamentos no servidor Samba mais seguro e facilita bastante os backups, j que voc precisar se preocupar apenas em fazer backup dos arquivos do servidor. Continuando, possvel tambm criar usurios administrativos, com permisso para alterar o dono e as permisses dos arquivos colocados nos compartilhamentos do prprio servidor. Isso feito usando o comando "net", o mesmo que utilizamos para permitir que o usurio possa dar upload dos drivers de impresso e possa adicionar mquinas ao domnio. Os trs privilgios relacionados so: SeDiskOperatorPrivilege: Permite que o usurio altere as permisses de acesso dos compartilhamentos e arquivos dentro deles. SeRestorePrivilege: Permite que o usurio altere o dono dos arquivos e pastas, transferindo a posse para outro usurio (exceto ele mesmo) SeTakeOwnershipPrivilege: Permite que o usurio assuma para si a posse de arquivos e pastas, complementando o SeRestorePrivilege. Se o servidor se chama "athenas" e o usurio que receber os privilgios se chama "gdh", os comandos para fornecer os trs privilgios (a serem executados em um terminal do servidor) seriam: # net -S localhost -U root -W ATHENAS rpc rights grant 'ATHENASgdh' SeDiskOperatorPrivilege # net -S localhost -U root -W ATHENAS rpc rights grant 'ATHENASgdh' SeRestorePrivilege # net -S localhost -U root -W ATHENAS rpc rights grant 'ATHENASgdh' SeTakeOwnershipPrivilege No preciso dizer que, em uma grande rede, estes privilgios devem ser atribudos apenas a outros administradores ou a usurios de sua inteira confiana, j que eles permitem acesso quase que irrestrito aos arquivos no servidor. Para listar os privilgios atribudos a cada usurio, use o comando:

# net -S localhost -U% rpc rights list accounts Isso lista todos os usurios com privilgios especiais, incluindo as contas do sistema. Depois de executar os trs comandos que vimos a pouco, teramos o usurio "gdh" aparecendo no final da lista, com os trs privilgios: ATHENASgdh SeDiskOperatorPrivilege SeRestorePrivilege SeTakeOwnershipPrivilege Para remover um determinado privilgio, usado o mesmo comando que usamos para adicionar, apenas substituindo o "grant" por "revoke", como em: # net -S localhost -U root -W ATHENAS rpc rights revoke 'ATHENASgdh' SeTakeOwnershipPrivilege

Logando clientes Linux no domnio


Embora a configurao seja um pouco mais complexa, possvel tambm logar clientes Linux no domnio, j que o Samba pode ser usado como cliente de um PDC Samba (ou de um PDC Windows). Isso permite que a estao Linux acesse os recursos do domnio normalmente e utilize o PDC como um servidor de autenticao na hora de compartilhar arquivos com a rede, da mesma forma que as mquinas Windows. Com isso, voc elimina a necessidade de cadastrar os logins de usurios em todas as mquinas Linux que precisarem compartilhar arquivos, j que todo o processo de autenticao centralizado no servidor. O primeiro passo cadastrar o nome da mquina no servidor PDC, usando os trs comandos que j vimos: # useradd -d /dev/null -s /bin/false nome$ # passwd -l nome$ # smbpasswd -a -m nome No caso dos clientes Linux, vale o nome definido durante a instalao do sistema, que fica armazenado dentro do arquivo "/etc/hostname". Esta a nica configurao que precisa ser feita no servidor. Os passos seguintes so feitos no prprio cliente. Comece fazendo uma instalao normal do Samba, instalando os pacotes "samba" e "samba-client" (ou smbclient) atravs do gerenciador de pacotes, da mesma forma que faria ao instalar um servidor Samba para a rede. necessrio cadastrar pelo menos uma conta de usurio no Samba (da estao), com a mesma senha definida no sistema, usando o comando smbpasswd, como em: # smbpasswd -a joao Com o Samba instalado, edite o arquivo smb.conf, deixando-o como este modelo: [global] netbios name = M5 workgroup = Dominio security = domain encrypt passwords = yes password server = 192.168.1.254 username map = /etc/samba/smbusermap [arquivos] path = /home/arquivos writable = yes A seo global deve conter as linhas "security = domain" (como citei anteriormente, este o nvel de segurana que permite que o Samba atue como cliente de um PDC), "encrypt passwords = yes" e

a linha "password server =" que indica o endereo IP (ou o nome netbios) do servidor PDC. importante tambm que a linha "workgroup" inclua o nome correto do domnio e a linha "netbios name" contenha o nome da mquina (cliente), como cadastrado no servidor e salvo no arquivo "/etc/hostname". Voc pode incluir tambm os compartilhamentos de arquivos e impressoras desejados, como no caso do compartilhamento [arquivos] que inclu no exemplo. Depois de salvar o arquivo e reiniciar o servio, hora de adicionar a mquina ao domnio, o que feito usando o comando abaixo (executado na estao): # net join -U root Password: Joined domain DOMINIO. A senha de root solicitada a senha de root cadastrada no servidor, que checada ao cadastrar a estao como uma forma de provar que voc o administrador da rede. Voc pode tambm criar um usurio administrativo com poderes para adicionar as mquinas ao domnio (evitando assim o uso da conta de root), dando a ela o privilgio "SeMachineAccountPrivilege", como vimos no tpico anterior. Se o comando exibir a mensagem "Joined domain DOMINIO." sem solicitar a senha, rodeo novamente, pois isso acontece quando (por qualquer motivo) ele no conseguiu contactar o servidor. Se ele reclamar que a senha est incorreta, ou exibir um erro de permisso, verifique a configurao do servidor. Isso acontece, por exemplo, quando a linha "invalid users = root" est presente na configurao. Uma vez inserida no domnio, a instncia do Samba rodando na estao passar a encaminhar todos os pedidos de autenticao para o servidor. Se o servidor autoriza o acesso, ento o servidor Samba local permite o acesso ao compartilhamento. Com isso, um novo usurio cadastrado no servidor PDC, ganha acesso tambm aos compartilhamentos do estao, sem que voc precise cadastr-lo duas vezes. Para que isso funcione, necessrio duas coisas. Em primeiro lugar, necessrio especificar o endereo IP ou nome do servidor, para que a estao consiga contact-lo, o que e feito atravs da opo "password server", como j vimos. O segundo passo criar um arquivo com um mapa dos usurios na estao. O arquivo pode ser armazenado em qualquer pasta, mas voc precisa especificar sua localizao corretamente na opo "username map" do smb.conf, como em: username map = /etc/samba/smbusermap Este arquivo relaciona os logins cadastrados no servidor PDC com a conta cadastrada no servidor Samba local, explicando a ele como acessar os arquivos no sistema depois que o acesso autorizado pelo PDC. Sem isso, o sistema bloqueia o acesso, j que as contas cadastradas no PDC no existem localmente. O arquivo com o username map segue uma estrutura muito simples, onde voc especifica uma conta por linha, sempre seguindo a sintaxe "conta_local = nome_do_dominioconta_no_dominio", como em: joao = DOMINIOgdh joao = DOMINIOmaria joao = DOMINIOjose joao = DOMINIOisac Basta criar um arquivo de texto usando qualquer editor e salv-lo, prestando ateno no uso de barras invertidas. Quando qualquer usurio especificado no arquivo autorizado pelo PDC, o servidor Samba local realiza a leitura no sistema de arquivos utilizando a conta "joao", que a nica cadastrada localmente. Com isso, voc precisa apenas manter o arquivo atualizado, sem se preocupar com com senhas. Ao administrar uma rede com vrias estaes, interessante manter o SSH ativo em todas as mquinas, de forma que voc possa atualizar o arquivo remotamente, quando necessrio. Ao serem acessados atravs do ambiente de rede, os compartilhamentos das estaes de trabalho Linux ficam disponveis para as demais mquinas do domnio sem necessidade de autenticao adicional, j que a autenticao centralizada no PDC. Aqui temos um exemplo de mquina Linux, configurada como cliente do PDC, que est compartilhando uma pasta com a rede:

Concluindo, caso voc deseje mais tarde remover a mquina Linux do domnio, basta alterar novamente o smb.conf (na estao), mudando a linha "workgroup = ", para que ela passe a indicar o nome do grupo de trabalho (e no mais do domnio) e alterar a linha "security = domain" para "security = user", como em: [global] workgroup = grupo netbios name = M5 security = user encrypt passwords = yes Depois de reiniciar o Samba (ou aguardar o tempo de atualizao aps a mudana no arquivo), a estao deixa o domnio e volta a fazer parte do grupo de trabalho. A principal limitao dessa configurao que ela permite centralizar apenas a autenticao dos compartilhamentos de rede, mas no resolve o problema da autenticao local nas estaes Linux, que continua sendo feita da forma tradicional. Isso nos leva ao tpico seguinte...

Usando o PDC para autenticao local no Linux


possvel configurar os clientes Linux para fazerem a autenticao dos usurios locais no PDC e armazenarem as configuraes no prprio servidor (assim como no caso das mquinas Windows), mas, nesse caso, a configurao bem mais complicada, pois temos que fazer vrias alteraes que alteram a forma como sistema autentica os usurios. Ao invs de verificar os arquivos "/etc/passwd" e "/etc/shadow", onde ficam armazenadas as contas locais, o cliente passa a utilizar o Samba e o Winbind para buscar os logins no servidor e assim autenticar o usurio. Se voc procura uma soluo simples e limpa, recomendo que se limite configurao que mostrei at aqui. Se no se importa de sujar as mos, continue por sua conta e risco. :) Esta configurao indicada para distribuies derivadas do Debian que utilizam o KDM. Ela funciona em outras distribuies, mas, eventualmente, podem ser necessrias pequenas mudanas, de acordo com as peculiaridades de cada uma. O primeiro passo instalar os pacotes "samba" (ou samba-server), "winbind" (ou samba-winbind) e "libpam-modules" em cada cliente. Nas distribuies derivadas do Debian, instale diretamente os trs pacotes: # apt-get install samba winbind libpam-modules No Fedora, o winbind est includo no pacote principal do Samba e os mdulos do PAM so

instalados atravs do pacote "pam_smb": # yum install samba pam_smb A configurao no servidor no muda em relao ao que j vimos. Toda a configurao que vemos aqui feita nos clientes. Abra agora o arquivo "/etc/samba/smb.conf" (no cliente Linux) e faa com que a seo Global fique como o exemplo. Voc pode tanto adicionar compartilhamentos, quanto ficar apenas com esta configurao bsica: [global] netbios name = cliente1 workgroup = Dominio winbind use default domain = yes obey pam restrictions = yes security = domain encrypt passwords = true wins server = 192.168.1.254 winbind uid = 10000-20000 winbind gid = 10000-20000 template shell = /bin/bash template homedir = /home/%U winbind separator = + invalid users = root No se esquea de substituir o "Dominio" pelo nome do domnio usado na rede, o "cliente1" pelo nome do cliente e o "192.168.1.254" pelo endereo IP do servidor Samba PDC. Abra agora o arquivo "/etc/nsswitch.conf" e substitua as linhas: passwd: compat group: compat shadow: compat No incio do arquivo, por: passwd: compat winbind group: compat winbind shadow: compat winbind Um exemplo do arquivo completo : passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns mdns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis Depois de modificar os dois arquivos, reinicie o Samba e o Winbind e teste a configurao, ingressando no domnio. Para isso, use o comando "net rpc join": # net rpc join member -U root Password: Joined domain DOMINIO. A senha solicitada a senha de root do servidor PDC, cadastrada no Samba, assim como fazemos ao cadastrar as mquinas Windows. Em caso de problemas, voc pode usar tambm o comando abaixo, que especifica o nome do servidor (-S) e o nome do domnio (-w):

# net rpc join -S gdh -w dominio -U root Se voc receber uma mensagem de erro, como: Creation of workstation account failed Unable to join domain DOMINIO. Provavelmente voc esqueceu de cadastrar a mquina cliente no servidor. O nome da mquina (que voc verifica atravs do comando "hostname") deve ser o mesmo que o includo no arquivo smb.conf. Para criar a conta de mquina para o cliente, use (no servidor) os comandos que vimos anteriormente: # useradd -d /dev/null -s /bin/false cliente1$ # passwd -l cliente1$ # smbpasswd -a -m cliente1 Nesse ponto o cliente j estar logado no domnio. Esta configurao permanente, de forma que voc no precisa se preocupar em refazer a configurao a cada boot. Falta agora a parte mais problemtica, que configurar o PAM, o sistema de autenticao do sistema, para buscar os logins no servidor. Isso feito modificando os arquivos "/etc/pam.d/login" e "/etc/pam.d/kdm". Comece adicionando as linhas abaixo no incio do arquivo "/etc/pam.d/login" (responsvel pela autenticao dos usurios no sistema), sem apagar as demais: session required pam_mkhomedir.so skel=/etc/skel umask=0022 session optional pam_mount.so auth sufficient pam_winbind.so account sufficient pam_winbind.so session required pam_winbind.so Abra agora o arquivo "/etc/pam.d/kdm", deixando o arquivo com o seguinte contedo (apague ou comente as demais linhas). A mesma configurao pode ser usada no arquivo "/etc/pam.d/gdm", usado por distribuies que trazem o Gnome por padro: auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_winbind.so auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok account required /lib/security/pam_winbind.so session required /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022 Esta configurao faz com que o KDM exiba a lista de usurios cadastrados no servidor e permita que voc faa login diretamente no domnio, sem passar pela autenticao local. importante tambm desativar o autologin do KDE (ainda no cliente), no "Centro de Controle do KDE > Administrao do Sistema > Gerenciador de login".

Se voc apenas adicionar as linhas acima no "/etc/pam.d/kdm", mas no apagar as linhas que j existem no arquivo (que permitem a autenticao local), a tela do KDM vai exibir a lista de logins do servidor, mas vai recusar o login, dizendo que a senha est incorreta. Este um dos erros de configurao mais comuns. Se voc deixar disponvel a opo "Bloquear sesso" do KDE, vai precisar editar tambm o arquivo "/etc/pam.d/kscreensaver", para que ele tambm use as contas do servidor. Caso contrrio, o usurio vai acabar tendo que reiniciar o X, cada vez que clicar por engano no cone:

Adicione as duas linhas abaixo no incio do arquivo (/etc/pam.d/kscreensaver), sem apagar as demais: auth sufficient pam_winbind.so auth required pam_unix.so shadow nullok Para que esta configurao funcione, importante que os usurios sejam cadastrados no servidor como usurios reais, usando o comando "adduser", e no o "adduser --disabled-login --no-createhome" ou similar. Basicamente, preciso que o usurio possa se logar no servidor, caso contrrio ele tambm no vai conseguir se logar nas estaes. Ainda no cliente, acesse a pasta "/etc/rc5.d" e verifique se os links responsveis por inicializar os servios samba, winbind e kdm foram criados corretamente. Eles precisam ser carregados nessa ordem. No caso de distribuies que inicializam o KDM primeiro, renomeie o link, de forma que ele seja inicializado por ltimo, como em: # mv /etc/rc5.d/S02kdm /etc/rc5.d/S99kdm Reinicie o cliente para que os mdulos do PAM sejam atualizados e os servios inicializados na ordem correta. Voc notar que a tela de login do KDM passar a exibir os usurios cadastrados no servidor, ao invs dos usurios locais, sintoma de que est tudo funcionando:

Configurando desta forma, os usurios locais que forem eventualmente criados no terminal chegam a aparecer na lista, mas no possvel fazer login neles atravs do KDM (essa justamente a idia). Apesar disso, voc pode se logar nos terminais remotamente (usando o root e outros logins locais) via SSH, quando precisar alterar as configuraes. No arquivo "/etc/pam.d/login", inclumos a linha "session required pam_mkhomedir.so skel=/etc/skel umask=0022". Ela faz com que a pasta "/etc/skel" (da estao) seja usada como um template para a criao dos diretrios home dos usurios que s existem no servidor PDC. A pasta "/home" (na estao) armazena apenas os arquivos que forem alterados em relao pasta "/etc/skel", simplificando os backups. Voc pode configurar o servidor Samba instalado em cada estao para compartilhar o diretrio home, com permisses de acesso apenas para o administrador da rede, de forma que voc possa acessar o home de cada estao a partir do servidor e fazer backup periodicamente. O "/etc/skel" justamente uma pasta modelo, cujo contedo copiado para o diretrio home, sempre que um novo usurio criado. As configuraes padro mudam muito de distribuio para distribuio. Esta configurao privilegia o uso das configuraes padro de cada distribuio, permitindo que voc use diversas distribuies diferentes nos clientes, independentemente de qual esteja usando no servidor. O Fedora continua com cara de Fedora, o Debian com cara de Debian e assim por diante.

Compartilhando impressoras no Samba


O Samba oferece suporte aos mais diferentes sistemas de impresso, incluindo o BSD, SYSV, AIX, HPUX, QNX, PLP e LPRNG. Antigamente, criar um simples compartilhamento de impressora no Samba era uma tarefa espinhosa, j que voc precisava verificar qual era o sistema de impresso usado na instalao do sistema e especificar os comandos de impresso manualmente na configurao do Samba, adicionado opes como estas na seo [global], ou na seo referente a cada compartilhamento: printing = bsd print command = /usr/bin/lpr -P%p %s; /bin/rm %s lpq command = /usr/bin/lpq -P%p lprm command = /usr/bin/lprm -P%p %j queue pause command = /usr/sbin/lpc stop %p queue resume command = /usr/sbin/lpc start %p

Com a popularizao do Cups, tudo se tornou muito mais simples, pois voc precisa apenas adicionar as opes "printing = cups" e "load printers = yes" na seo [global] do smb.conf e nada mais: printing = cups load printers = yes Na verdade, nas verses recentes do Samba estas linhas nem mesmo so obrigatrias, pois o Cups j o sistema de impresso usado por padro e as impressoras disponveis so carregadas por padro quando o Samba encontra uma configurao vlida no arquivo smb.conf.

De qualquer forma, se voc est usando alguma distribuio antiga, pode checar se a verso do Samba instalada inclui suporte ao Cups usando o comando "smbd -b", como em: # smbd -b | grep CUPS Ele deve responder: HAVE_CUPS Continuando, o primeiro passo para compartilhar a impressora instal-la no servidor, o que pode ser feito da forma tradicional, utilizando utilitrios como o kaddprinterwizard (usado nas distribuies com o KDE) o gnome-cups-add (o utilitrio equivalente no Gnome) ou o system-config-printer (usado no Fedora e no CentOS) o que, desde que a impressora seja bem suportada pelo sistema, bastante simples nas distribuies atuais:

Configurando a impressora pelo gnome-cups-add Estas ferramentas de configurao esto fortemente atreladas s bibliotecas do KDE e do Gnome, de forma que elas no estaro disponveis se voc fizer uma instalao enxuta do sistema no servidor, sem instalar os ambientes grficos. Naturalmente, os desenvolvedores do Cups pensaram nessa possibilidade e adicionaram uma interface de administrao via web, similar ao Swat, que pode ser usada at mesmo no caso de servidores sem interface grfica, que voc acessa remotamente:

A interface de administrao do Cups A interface de administrao fica acessvel atravs da porta 631 (TCP) do servidor e pode ser acessada atravs do navegador, tanto localmente (atravs do endereo http://127.0.0.1:631) quanto remotamente (atravs do http://servidor:631). O grande problema que voc s tem acesso s opes administrativas (como adicionar ou remover impressoras) ao acessar a interface usando um navegador rodando no servidor, o que um problema quando voc est configurando o servidor remotamente. possvel alterar as permisses de acesso, de forma a liberar o acesso para o endereo IP do seu micro de forma simples editando o arquivo de configurao do Cups, o "/etc/cups/cupsd.conf". Procure a seo referente pasta "/admin" (onde esto concentradas as opes administrativas) e adicione uma linha autorizando o endereo IP da sua mquina logo depois do "Allow localhost", como em: <Location /admin> Order allow,deny Allow localhost Allow 192.168.1.10 </Location> Depois da alterao, reinicie o servio e voc poder acessar a interface sem limitaes e assim fazer toda a configurao da impressora: # /etc/init.d/cupsys restart

Compartilhando a impressora no Samba


Depois de instalar e testar a impressora no servidor, o prximo passo compartilh-la atravs do

Samba. A forma mais simples de fazer isso adicionar o compartilhamento "[printers]" no arquivo de configurao. Ele um servio interno do Samba, similar ao "[homes]", que permite compartilhar de uma vez todas as impressoras disponveis no servidor e replica as mudanas na configurao do Cups de forma automtica. O servio "[printers]" pode ser inclusive usado em conjunto com o "[homes]", basta adicionar as duas sees no arquivo de configurao. A nica observao ao usar os dois em conjunto que voc no pode ter um usurio e uma impressora com o mesmo nome, caso contrrio o servidor no conseguir compartilhar a impressora. A principal vantagem de usar o "[printers]" que voc no precisa especificar manualmente quais impressoras deseja compartilhar, basta configurar as impressoras no Cups e incluir a seo referente ao compartilhamento no smb.conf: [printers] comment = Todas as Impressoras print ok = yes guest ok = yes path = /var/spool/samba Aqui, temos um exemplo de arquivo completo, incluindo o compartilhamento: [global] netbios name = Hades workgroup = Grupo server string = Servidor encrypt passwords = true preferred master = yes os level = 100 preferred master = yes wins support = yes printing = cups load printers = yes< [homes] valid users = %S create mask = 0700 directory mask = 0700 browseable = no [arquivos] path = /mnt/hda6 writable = no write list = +arquivos [printers] comment = Todas as Impressoras path = /var/spool/samba print ok = yes guest ok = yes browseable = yes A opo "print ok" similar opo "available" que usamos nos compartilhamentos de pastas. Ao usar o "print ok = yes" a impressora fica disponvel e, ao usar "print ok = no" o compartilhamento desativado temporariamente. obrigatrio incluir esta opo no compartilhamento, pois justamente ela que indica que trata-se de um compartilhamento de impressora. A opo "guest ok = yes" indica que a impressora deve ficar disponvel para o uso de qualquer um. Se preferir que ela fique disponvel apenas para os usurios cadastrados no Samba, mude para "guest ok = no". A opo "path" indica o diretrio do sistema onde sero armazenados os trabalhos de impresso. A

pasta "/var/spool/samba" usada por padro e deve ter sido criada automaticamente durante a instalao do Samba. De qualquer forma, se mais para a frente voc no conseguir imprimir, recebendo mensagens de "disco cheio" ou "acesso negado" a partir dos clientes, verifique se a pasta realmente existe e se as permisses esto corretas: # ls -l /var/spool/ | grep samba Ele deve responder algo como: drwxrwxrwt 2 root root 4096 2008-01-24 15:37 samba O drwxrwxrwt indica as permisses da pasta, no caso uma pasta pblica onde todos os usurios podem ler e gravar arquivos. O ltimo "t" indica o uso do sticky bit, uma precauo de segurana, que faz com que cada usurio possa alterar apenas seus prprios arquivos. Isso evita que algum engraadinho consiga corromper trabalhos de impresso enviados por outros usurios. Se voc precisar criar manualmente a pasta, o comando para setar as permisses corretamente : # chmod 1777 /var/spool/samba/ (note o uso do "1", que ativa o stick bit) Continuando, depois de reiniciar o Samba, ou aguardar o tempo de atualizao, as impressoras passaro a aparecer no ambiente de redes, com os mesmos nomes que foram definidos ao instalar as impressoras no servidor. O Samba pode inclusive ser usado para centralizar as impressoras da rede, recompartilhando impressoras disponibilizadas por outros micros, desde que voc as configure corretamente no Cups. Nesse screenshot, por exemplo, temos duas impressoras. A "E230" est instalada diretamente no servidor, enquanto a "Optra-E+" uma impressora disponibilizada por outro micro. Como pode ver, o cliente pode visualizar e imprimir em ambas:

possvel, tambm, especificar individualmente o compartilhamento de cada impressora, o que til quando o servidor compartilha vrias impressoras diferentes e voc precisa especificar as permisses individualmente. A configurao a adicionar no arquivo de configurao praticamente a mesma. A principal diferena que agora voc deve especificar o nome da impressora no nome do compartilhamento, ao invs de usar a string "printers", como em: [E230] print ok = yes guest ok = yes path = /var/spool/samba Assim como no caso dos compartilhamentos de arquivos, voc pode limitar o acesso impressora com base nos endereos IP ou nos nomes das mquinas, com base nos logins de usurio, ou atravs de uma combinao de ambos, atravs das opes "hosts allow", "hosts deny", "valid users" e "invalid users". Estas opes podem ser usadas tanto ao ativar o servio [printers] quanto ao

compartilhar as impressoras individualmente. Para permitir que a impressora seja usada por apenas alguns endereos especficos, voc usaria: [E230] print ok guest ok path = hosts allow = 192.168.1.3, 192.168.1.4, 192.168.1.65 = = yes yes /var/spool/samba

Voc pode, tambm, usar os nomes das mquinas dentro da rede Windows no lugar dos endereos IP, como em: [E230] print ok = yes guest ok = yes path = /var/spool/samba hosts allow = micro1, micro2, micro3 Para bloquear o acesso impressora para os usurios "joao" e "maria", utilizaramos a opo "invalid users", assim como em um compartilhamento de arquivos: [E230] print guest path invalid users = joao, maria ok ok = = = yes no /var/spool/samba

Similarmente, para inverter a lgica, permitindo que apenas os dois usem a impressora, usaramos a opo "valid users": [E230] print guest ok path valid users = joao, maria ok = = = no /var/spool/samba yes

Para combinar as duas coisas, permitindo que a impressora seja usada apenas pelos dois usurios e, alm disso, apenas a partir de dois endereos especficos, voc usaria: [E230] print ok = yes guest ok = no path = /var/spool/samba valid users = joao, maria hosts allow = 192.168.1.3, 192.168.1.4

Configurao nos clientes


Continuando, a impressora pode ser instalada nos clientes Windows atravs do "Painel de Controle > Impressora > Adicionar Impressora > Impressora de rede" ou simplesmente clicando sobre ela no ambiente de rede. O Samba no se preocupa com o driver de impresso, apenas disponibiliza um spool remoto no qual os clientes podem colocar os trabalhos de impresso. Devido a isso, necessrio instalar os drivers de impresso nos clientes, da mesma forma que voc faria ao instalar uma impressora local. Inicialmente, voc receber uma mensagem de erro ao instalar a impressora nos clientes, avisando que o servidor no possui o driver instalado:

Esta mensagem se refere a outro recurso suportado por servidores Windows, onde voc pode fazer o upload dos drivers de impresso para o servidor, de forma que os clientes possam obt-los automaticamente ao se conectarem impressora. Por enquanto ainda no configuramos isso, de forma que preciso instalar a impressora da forma tradicional, fornecendo os drivers manualmente no cliente:

Naturalmente, as impressoras compartilhadas atravs do Samba podem tambm ser usadas a partir dos clientes Linux, que precisam apenas ter instalado o Cups e o cliente Samba. Ao instalar a impressora nos clientes, procure pela opo de instalar uma impressora Windows ou SMB, que suportada pela maioria das ferramentas de configurao. No caso do kaddprinterwizard voc usaria a opo "Impressora SMB compartilhada (Windows)" e no gnome-cups-add a opo "Impressora Windows (SMB)":

possvel tambm instalar as impressoras nos clientes Linux diretamente via linha de comando usando o comando "lpadmin", como em: # lpadmin -p E230 -E -v smb://192.168.1.254/E230 O parmetro "-p" especifica o nome da impressora, conforme ser instalada no cliente (no precisa necessariamente ser o mesmo nome usado pelo servidor), enquanto o "-v" indica a localizao da impressora (endereo IP ou nome do servidor, seguido pelo nome do compartilhamento). Nesse

exemplo, estamos instalando a impressora "E230" compartilhada pelo servidor disponvel no endereo 192.168.1.254. Se o compartilhamento no servidor incluir a opo "guest ok = yes" voc conseguir acessar a impressora diretamente, caso contrrio voc precisar especificar o login e senha ao instal-la. Nesse caso, o comando ficaria: # lpadmin -p E230 -E -v smb://gdh: 12345@192.168.1.254 Este endereo de e-mail est protegido contra SpamBots. Voc precisa ter o JavaScript habilitado para v-lo. /E230 Veja que o login e a senha so especificados diretamente no comando, entre o "smb://" e o endereo do servidor, que agora separado por um "@".

Disponibilizando drivers de impresso para os clientes


Em uma pequena rede, instalar os drivers manualmente ao configurar a impressora nos clientes no seria um grande problema, j que voc poderia simplesmente carregar o CD de instalao, ou mesmo criar um compartilhamento de rede contendo os arquivos e fazer a instalao manualmente em cada um. Entretanto, em uma grande rede isso pode ser bastante tedioso. Chegamos ento ao recurso de upload de drivers de impresso que, naturalmente, tambm suportado pelo Samba. Ele consiste em um compartilhamento oculto, chamado "print$", que contm os drivers que sero fornecidos aos clientes. Depois de configurar o recurso, o uso das impressoras nos clientes torna-se muito mais simples, pois voc precisa apenas clicar sobre o cone da impressora no "Meus locais de rede" para instal-la, recurso chamado de "point and print" ou "p-n-p" (diferente do PnP, de "plugand-play"). O Windows exibe um aviso, confirmando a instalao do driver e em seguida, a impressora instalada automaticamente:

Configurar este recurso um pouco trabalhoso, mas no chega a ser difcil. Vamos l :). O primeiro passo criar um usurio administrativo, que voc usar para acessar o servidor a partir dos clientes Windows e assim poder dar o upload dos drivers. Comece criando o usurio no servidor e cadastrando-o no Samba da forma tradicional: # adduser gdh # smbpasswd -a gdh O prximo passo ativar o uso de privilgios (que vamos usar mais adiante) no Samba e criar um compartilhamento chamado "print$", o compartilhamento oculto onde iro os drivers de impresso. Para isso, precisaremos fazer duas alteraes no arquivo "/etc/samba/smb.conf". A primeira adicionar a linha "enable privileges = yes" no final da seo "[global]", sem alterar as demais, como em: [global] workgroup = GRUPO netbios name = Asus server string = Servidor encrypt passwords = true wins support = yes preferred master = yes # invalid users = root

os level = 100 enable privileges = yes Se voc usou o Swat para configurar o arquivo, muito provavelmente ele conter a linha "invalid users = root". importante que esta linha seja removida ou comentada (como no meu exemplo), caso contrrio voc no conseguir atribuir os privilgios para o usurio, como faremos em seguida. O prximo passo incluir as linhas referentes ao compartilhamento "[printer$]", que um pouco diferente de um compartilhamento normal: [print$] comment = Drivers de impresso para os clientes Windows path = /var/smb/printers read only = yes write list = gdh inherit permissions = yes A opo "path" diz qual a pasta do servidor onde sero colocados os drivers. Aqui estou usando a pasta "/var/smb/printers", mas voc pode usar outra pasta se quiser. Em seguida, usamos a opo "read only = yes" para que o compartilhamento seja somente-leitura e usamos a opo "write list" para criar uma exceo, permitindo que o usurio administrativo que criamos na etapa anterior possa gravar no compartilhamento. A segurana importante, pois os drivers so baixados automaticamente para os clientes Windows, de forma que algum mal intencionado que pudesse alterar o contedo da pasta poderia muito bem usar o servio como um vetor para transmitir vrus e spywares para os clientes Windows da rede. Voc pode tambm usar um grupo, como em "write list = +ntadmin" ou uma lista de usurios, como em "write list = gdh, admin"; o importante limitar o acesso apenas s pessoas autorizadas. No se esquea de reiniciar o Samba ou aguardar alguns minutos para que as alteraes entrem em vigor. O prximo passo criar a pasta onde ficaro os drivers de impresso, criar as subpastas WIN40 (drivers para estaes 95/98/ME) e W32X86 (estaes com o NT/2000/XP) dentro dela e ajustar as permisses, de forma que o usurio criado tenha permisso para alterar o contedo da pasta e os demais possam apenas ler: # mkdir -p /var/smb/printers # cd /var/smb/printers # mkdir WIN40 W32X86 # chown gdh WIN40 W32X86 # chmod 2775 WIN40 W32X86 Falta agora uma etapa importante, que transformar o usurio em um administrador de impresso no Samba, pois, sem isso, ele ter acesso ao compartilhamento mas no conseguir dar upload dos drivers a partir dos clientes, usando o procedimento que veremos a seguir. Isso feito usando o comando "net", usado para ajustar os privilgios dos usurios do Samba, que deve ser executado no servidor, como root. Se o servidor se chama "asus" e o usurio se chama "gdh", o comando seria: # net -S localhost -U root -W ASUS rpc rights grant 'ASUSgdh' SePrintOperatorPrivilege A opo "-S localhost -U root" diz que o comando net deve se conectar ao servidor Samba rodando na mquina local, usando a conta de root. A opo "-W ASUS" especifica o nome do servidor (como definido na configurao do Samba) e o "grant 'ASUSgdh' SePrintOperatorPrivilege" adiciona os privilgios para o usurio "gdh" do servidor "asus". Ele vai pedir a senha de root e, em seguida, exibir uma mensagem de confirmao: Password: Successfully granted rights. Se nesse ponto voc receber uma mensagem de erro, dizendo que no possvel se logar no servidor, muito provavelmente voc esqueceu de comentar a linha "invalid users = root", esqueceu de adicionar a linha "enable privileges = yes" ou as alteraes no arquivo ainda no entraram em

vigor (nesse caso, experimente reiniciar o Samba manualmente, usando o "/etc/init.d/samba restart" ou o "service smb restart"). Com isso, conclumos a configurao no servidor. Os passos seguintes so feitos a partir de um cliente Windows da rede. O primeiro passo se logar no cliente usando o mesmo login (gdh no exemplo) que foi criado no servidor, j que apenas ele possui as permisses necessrias para atualizar os drivers. Caso necessrio, adicione o usurio na estao usando o "Painel de Controle > Contas de usurio". Acesse o servidor atravs do "Meus locais de rede", acesse a pasta "Impressoras e aparelhos de fax" e clique na opo "Arquivo > Propriedades do servidor" na janela principal do Explorer:

Na janela de propriedades, acesse a aba "drivers", que mostra os drivers disponveis no servidor. Originalmente ela estar vazia; use o boto "Adicionar" para instalar os drivers de impresso desejados:

Se nesse ponto as opes no estiverem disponveis, provavelmente voc no adicionou o privilgio "SePrintOperatorPrivilege" para o usurio administrativo, ou no se logou usando o login correto na estao Windows. Clicando no "adicionar" aberta a tela padro de seleo do driver, onde voc pode usar um dos drivers do Windows ou especificar a localizao de um driver. Entretanto, diferente do que teramos normalmente, os drivers no so propriamente instalados, mas apenas copiados para o compartilhamento "print$" do servidor. A idia da ferramenta justamente permitir que voc adicione vrios drivers diferentes, que atendam clientes rodando diferentes verses do Windows, por isso, a cada driver, aberta uma nova janela de seleo, que pergunta a que verses do Windows o driver destinado. Na lista, "Intel" corresponde a mquinas rodando as verses de 32 bits do Windows, enquanto "x64" corresponde a mquinas rodando as verses de 64 bits do sistema:

Dessa forma, voc pode cadastrar um driver para mquinas com o Windows XP ou 2000, outra para os clientes com o 98/ME, outro para os com o XP de 64 bits e assim por diante. Se o servidor tiver mais de uma impressora instalada, voc pode aproveitar para carregar os drivers das outras impressoras:

Nesse ponto, voc ver que foram criadas subpastas dentro das pastas "/var/smb/printers/W32X86" e "/var/smb/printers/WIN40" do servidor, referentes aos drivers carregados. Por enquanto, os

drivers foram apenas copiados para o servidor. preciso ainda associar a impressora com o driver correspondente, para que o servidor passe a fornec-lo para os clientes. Ainda logado com o usurio administrativo, clique com o boto direito sobre a impressora e acesse as propriedades:

Voc receber a mesma mensagem exibida ao instalar a impressora nos clientes, dizendo que o servidor no possui o driver de impresso ( justamente isso que estamos corrigindo, afinal :).

Nesse ponto, a resposta natural seria clicar no "OK", mas, se voc fizer isso, vai abrir a tela de seleo do driver e acabar fazendo uma instalao local dos drivers da impressora que no o que queremos. Por estranho que possa parecer, a resposta correta aqui o boto "Cancelar", o que o levar s propriedades da impressora:

Dentro do menu de propriedades, acesse aba "Avanado" e especifique o driver que ser usado na opo "Driver", que originalmente estar em branco. Com isso, o driver associado com a impressora, fazendo com que o servidor passe a fornec-lo para os clientes que se conectarem a ela, concluindo a configurao. Se o servidor tiver outras impressoras compartilhadas, faa o mesmo para as demais. Estes passos parecem estranhos e pouco intuitivos, mas so os mesmos passos que voc usaria para instalar os drivers em um servidor de impresso Windows. O Samba simplesmente implementa as mesmas funes. Uma observao que ativar o upload de drivers faz com que as impressoras compartilhadas, disponveis na pasta "Impressoras e aparelhos de fax" sejam renomeadas para o nome "oficial" fornecido pelo driver. por isso que a minha "E230" foi renomeada para "Lexmark Optra E+ (MS)". Se voc no quiser que isso acontea, adicione a opo "force printername = yes" na seo referente impressora (ou na seo [printers]) do smb.conf, como em: [E230] print ok = yes guest ok = yes path = /var/spool/samba force printername = yes Depois que a alterao aplicada, a impressora volta a ser compartilhada com o nome definido por voc. Vamos ento a mais um exemplo de configurao, desta vez bem mais incrementado, incluindo o compartilhamento de impressoras, o compartilhamento para os drivers Windows, lixeira e outros recursos que vimos at aqui: [global] netbios name = Cartago server string = Servidor workgroup = Grupo

local master = yes os level = 100 preferred master = yes wins support = yes map to guest = bad user guest account = guest vfs objects = recycle recycle:keeptree = yes recycle:versions = yes recycle:repository = /mnt/sda2/trash/%U recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache printing = cups load printers = yes enable privileges = yes [lixeira] path = /mnt/sda2/trash/%U writable = yes [printers] path = /var/spool/samba print ok = yes guest ok = yes browseable = yes [print$] path = /var/smb/printers read only = yes write list = gdh inherit permissions = yes [arquivos] path = /mnt/hda2 writable = no write list = +arquivos [engenharia] path = /mnt/sda1/engenharia writable = yes valid users = +engenheiros browseable = no [gerencia] path = /mnt/sda1/gerencia writable = yes valid users = joao, maria hosts allow = 192.168.1.2, 192.168.1.32 browseable = no [publico] path = /mnt/sda2/publico writable = yes guest ok = yes [backup] path = /mnt/sda2/backup/%U writable = yes

valid users = %U writable = yes guest ok = no Este exemplo de configurao exige alguns passos adicionais para ser usado, incluindo a configurao das impressoras e a instalao dos drivers de impresso a partir dos clientes Windows, como vimos at aqui; ele no poderia ser usado diretamente em um servidor que voc acabou de instalar. Ele inclui tambm o uso da lixeira para todos os compartilhamentos e o uso de 5 compartilhamentos de arquivos. Um deles o compartilhamento "arquivos", que j utilizei em exemplos anteriores, onde os arquivos ficam disponveis para todos os usurios, mas apenas os usurios cadastrados no grupo "arquivos" podem fazer alteraes. Continuando, temos os compartilhamentos "engenharia" e "gerencia", que so um pouco mais seguros, acessveis apenas para alguns usurios. Eles so tambm protegidos pela opo "browseable = no", que, como vimos, faz com que eles no sejam listados no ambiente de redes. Os trs so complementados pelo compartilhamento "publico", que fica acessvel para todos os usurios atravs do uso da conta "guest". Este exemplo no inclui o [homes], que substitu por um compartilhamento para armazenamento de backups. Ele utiliza a varivel "%U" (nome do usurio) para criar pastas particulares, onde cada usurio pode armazenar seus backups. Para us-lo, seria necessrio criar diversas subpastas dentro da pasta "/mnt/sda2/backup", uma com o nome de cada usurio, e ajustar as permisses para que o usurio tenha acesso apenas sua prpria pasta, como em: # mkdir /mnt/sda2/backup/joao # chown joao:joao /mnt/sda2/backup/joao Todos os usurios vero o compartilhamento "backup" ao acessarem o servidor, mas devido ao uso da varivel, cada um ver apenas sua prpria pasta ao acess-lo.

Compartilhando impressoras atravs do Cups


Ao compartilhar impressoras, o Samba atua mais como um spool de impresso do que como um servidor propriamente dito, j que o trabalho pesado na verdade feito pelo servidor Cups rodando abaixo dele. O Samba se limita a receber os trabalhos de impresso enviados pelos clientes e repass-los ao servidor de impresso. Se voc est configurando um servidor Samba, natural uslo para compartilhar tambm as impressoras, j que o Samba oferece diversas opes de controle de acesso e outras opes avanadas. Entretanto, o prprio Cups possui um recurso nativo de compartilhamento de impressoras, que alm de atender outras mquinas Linux (como seria de se esperar) permite que as impressoras sejam usadas tambm pelos clientes Windows, de uma forma bastante simples. Para habilitar o compartilhamento, edite o arquivo "/etc/cups/cupsd.conf" (no servidor), deixando-o com o seguinte contedo: Port 631 Listen 631 Browsing On BrowseAllow All BrowseInterval 30 BrowseAddress @LOCAL BrowseInterval 30 <Location /> Order allow,deny Allow all </Location>

<Location /printers> Order allow,deny Allow all </Location> <Location /admin> Encryption Required Order allow,deny Allow localhost </Location> <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow localhost </Location> Veja que a seo "<Location /printers>" dentro do arquivo (que define as permisses de acesso s impressoras) fica com permisso de acesso para todo mundo, enquanto o utilitrio de administrao do Cups (<Location /admin>) continua acessvel apenas localmente, atravs do endereo http://127.0.0.1:631. No caso do Ubuntu e do Kubuntu necessrio um passo adicional. Os desenvolvedores optaram por mudar a configurao padro, mantendo a porta utilizada pelo servidor Cups aberta apenas para o localhost, de forma que precisamos abr-la para que os demais hosts da rede possam imprimir. A configurao de portas vai num arquivo separado, o "/etc/cups/cups.d/ports.conf". Edite-o, substituindo a linha: Listen localhost:631 Por: Listen 631 At aqui, no estamos impondo nenhum tipo de restrio, por isso contamos com o firewall para bloquear qualquer tentativa de impresso proveniente de micros da Internet. Voc pode tambm fazer o compartilhamento de uma forma mais segura, especificando manualmente a faixa de endereos da rede local, ou mesmo especificando individualmente os endereos IP que podero imprimir. Neste caso, as sees <Location /> (onde vai a configurao que permite aos clientes verem as impressoras disponveis) e <Location /printers> ficaria: <Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168.1.* </Location> <Location /printers> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168.1.* </Location> No se esquea de incluir o endereo "127.0.0.1" na lista. Caso contrrio, todo mundo vai imprimir na impressora, menos voc mesmo. :)

Configurao das impressoras nos clientes


Alm da configurao mais simples, outra vantagem de compartilhar atravs do Cups que as impressoras podem ser configuradas automaticamente nos clientes Linux, sem necessidade de qualquer configurao manual. Basta manter a opo "browsing" ativa na configurao do Cups (/etc/cups/cupsd.conf) nos clientes, como em: LogLevel warning SystemGroup lpadmin Listen localhost:631 Listen /var/run/cups/cups.sock Browsing On BrowseOrder allow,deny BrowseAllow @LOCAL BrowseAddress @LOCAL A opo "browsing" faz com que os clientes Linux da rede reconheam automaticamente a impressora compartilhada e a configurem automaticamente durante o boot, sem necessidade de nenhuma interveno manual. um recurso bastante interessante: voc d boot usando uma distribuio Live-CD no cliente, manda imprimir qualquer coisa e o trabalho direcionado de forma automtica para a impressora compartilhada no servidor, sem que voc precise fazer nada para configur-la. Funciona mais ou menos assim: durante o boot, o cliente manda um broadcast para a rede, perguntando se algum est compartilhando impressoras. O servidor responde que est compartilhando a "e230" e aproveita para transmitir detalhes, como o modelo e driver usado pela impressora, configurao de impresso, etc. Como ambos esto rodando o Cups, significa que o cliente usa o mesmo conjunto de drivers de impresso do servidor; isso permite que ele simplesmente configure a impressora usando as informaes recebidas, sem precisar perguntar nada ao usurio. O pacote de broadcast reenviado periodicamente pelo cliente, permitindo que impressoras recentemente compartilhadas sejam descobertas. Caso existam mais impressoras na rede, voc pode escolher qual usar nas preferncias de impresso do cliente. um recurso que funciona surpreendentemente bem.

Caso voc precise adicionar a impressora manualmente, abra o kaddprinterwizard (ou outro utilitrio de configurao disponvel no cliente) e selecione a opo "Remote Cups Server". Fornea o endereo IP do servidor na rede local (ex: 192.168.1.10) e a porta onde o Cups est escutando, que por padro a 631. Isso mostrar uma lista das impressoras disponveis no servidor. Basta escolher a que ser usada, apontar o driver que ser usado e configurar as opes da impressora (papel, qualidade de impresso, etc.).

Nos clientes Windows, a configurao semelhante. Eles no suportam o recurso de configurao automtica, por isso preciso adicionar a impressora manualmente atravs do "Painel de Controle > Impressoras" e fornecer o CD com os drivers. Vamos por passos. Comece abrindo o navegador e acessando a pgina de administrao do Cups no servidor. Ela fica disponvel atravs do http://ipdo-servidor:631. Dentro da interface, acesse a opo "Manage Printers" e clique no link da impressora que ser usada. Voc ver um endereo, como "http://192.168.1.1:631/printers/e230", na barra do navegador. Este o endereo "completo" da sua impressora, que vamos usar na instalao. De volta ao "Painel de Controle > Impressora", clique no "Adicionar Impressora" e marque a opo "Impressora de rede". Selecione a opo "Conectar-se a uma impressora na internet ou na intranet" e preencha o campo "URL" com o endereo completo da impressora (o "http://192.168.1.1:631/printers/e230" que anotamos no passo acima). Se voc estiver usando o Windows 2000 sem o Service Pack 2 ou o XP sem atualizaes, ele vai mostrar um erro estpido, dizendo que no possvel se conectar impressora, mas isso esperado. D ok e volte tela inicial. Marque agora a opo "Impressora local" e deixe marcado o "Detectar e instalar automaticamente impressora Plug and Play". Ele dar outro erro, simplesmente confirme e diga que quer indicar a impressora manualmente. Voc ver que, apesar dos erros, a impressora aparecer disponvel no final da lista. Basta selecion-la e continuar com o processo normal de instalao da impressora, fornecendo o CD de drivers, etc. Se voc tem um servidor de impresso problemtico na sua rede, que precisa ser reiniciado vrias vezes ao dia, etc., recomendo que experimente substitu-lo por um servidor de impresso Linux. O Cups um servidor de impresso bastante slido e que utiliza poucos recursos da mquina. Isso permite que voc utilize at mesmo uma mquina antiga como servidor de impresso. Lembre-se de que qualquer tipo de compartilhamento de rede sempre um risco potencial de segurana. Se voc for ativ-lo em um micro simultaneamente conectado internet e rede local, no se esquea de habilitar o firewall, abrindo apenas para os endereos da rede local. O suporte a impressoras de rede compartilhadas no Cups foi includo apenas a partir do Windows 2000. Para usar este recurso no Windows 95, 98 ou ME, voc deve instalar o "Internet Printer Services", uma atualizao disponibilizada pela Microsoft, que voc pode baixar em: http://www.microsoft.com/windows98/downloads/contents/WUPreviews/IPP/Default.asp Depois de

reiniciar, acesse o "Painel de Controle > Impressora", clique no "Adicionar Impressora" e marque a opo "Impressora de rede". Coloque o endereo da impressora (http://192.168.1.1:631/printers/e230, por exemplo) no lugar do caminho para a impressora e fornea o driver.

Dicas e configuraes adicionais


A configurao do Samba que vimos at aqui voltada para a configurao de servidores de arquivos. Como voc viu, possvel gerar rapidamente tanto configuraes bsicas, que fazem com que o Samba simplesmente compartilhe algumas pastas, sem muita segurana, quanto configuraes muito mais complexas, com o uso de um PDC, perfis mveis e tudo mais. Entretanto, imagine que voc precisa permitir que os usurios tambm criem compartilhamentos em suas estaes de trabalho Linux, assim como no Windows. No seria muito prtico ter que ensin-los a usar o Swat ou a editarem manualmente o arquivo smb.conf. Precisaramos de algum sistema mais simples para a criao dos compartilhamentos. O KDE possui um mdulo que resolve este ltimo problema, permitindo que os usurios compartilhem arquivos dentro dos seus respectivos diretrios de usurio de uma forma bastante simples, algo parecido com o que temos no Windows. Para que este recurso funcione, voc deve instalar o mdulo de compartilhamento de arquivos do Konqueror. No Debian, ele fornecido pelo pacote "kdenetwork-filesharing", que pode ser instalado pelo aptget, juntamente com o servidor Samba: # apt-get install kdenetwork-filesharing samba Em outras distribuies, ele includo diretamente no pacote "kdenetwork", que faz parte da instalao bsica do KDE. Nesses casos, o mdulo j vem ativado e voc precisa instalar apenas o pacote do servidor Samba. Como os usurios podem apenas compartilhar seus prprios arquivos, a possibilidade de danos ao sistema pequena. Se voc tiver um firewall isolando a sua rede local da internet, voc poder conviver com isso sem muitos sustos. :) Dentro do "Centro de Controle do KDE" (em cada estao), acesse a seo "Internet & Rede > Compartilhamento de arquivos". Clique no "Modo administrador", fornea a senha de root e marque a opo "Compartilhamento simples (habilite o compartilhamento simples, para permitir que os usurios compartilhem pastas de sua pasta pessoal (home), sem saberem a senha de root.)". No boto "Usurios permitidos" voc tem a opo de autorizar todos os usurios (permitir a todos os usurios compartilhar pastas) ou autorizar apenas os usurios de um determinado grupo. Neste caso, use o "users-admin" ou outro programa de configurao de usurios e grupos para criar um novo grupo e adicionar os usurios desejados a ele:

A partir da os usurios podero compartilhar pastas simplesmente acessando a aba "Compartilhar" dentro das propriedades de cada uma e ativando a opo "Compartilhado":

Este compartilhamento do KDE faz, na verdade, um duplo compartilhamento. Alm do Samba, os compartilhamentos ficam disponveis na rede atravs do NFS, permitindo que voc possa escolher qual protocolo prefere usar em cada caso. Lembre-se de que, se voc no quiser o compartilhamento via NFS, basta desativar (ou desinstalar) o servio "nfs-kernel-server" (ou "nfs", nas distribuies derivadas do Red Hat). Naturalmente, para que o compartilhamento funcione,

voc dever ter o servidor e o cliente Samba instalados no sistema e manter o servio SMB ativo.

Montagem permanente dos compartilhamentos


A forma mais prtica de acessar os compartilhamentos do Samba em clientes Linux utilizar clientes grficos como o Smb4K (do KDE) e o mdulo de acesso a compartilhamentos do Nautilus (disponvel no menu "Locais > Rede"):

Apesar disso, o Samba possui tambm um cliente de modo texto, o smbclient, usado via terminal. possvel tambm montar os compartilhamentos diretamente, funcionalidade que equivale opo "mapear unidade de rede" disponvel nos clientes Windows. Para que os compartilhamentos sejam montados durante o boot, necessrio adicionar as entradas apropriadas no arquivo "/etc/fstab". Dessa forma, os compartilhamentos so montados automaticamente durante o boot e ficam acessveis de forma permanente nas pastas especificadas por voc. Esta uma opo interessante em muitos ambientes, j que mais fcil para os usurios simplesmente acessarem os arquivos atravs de uma pasta, do que terem que montar o compartilhamento usando o Smb4K ou o Nautilus. O primeiro passo aprender a sintaxe da montagem dos compartilhamentos via linha de comando, j que as entradas do fstab utilizam os mesmos argumentos. Comeando do bsico, voc pode listar os compartilhamentos disponveis em um servidor da rede usando o comando: $ smbclient -L 192.168.1.254 -U gdh Veja que o comando especifica o endereo do servidor (voc pode usar tambm o nome na rede Windows) e a conta de usurio que ser usado para abrir a conexo. Depois de fornecer a senha, voc obtm uma lista dos compartilhamentos disponveis, como em: E230 Printer print$ Disk Drivers de impressao para os clientes Windows arquivos Disk projetos Disk backup Disk IPC$ IPC IPC Service (Samba PDC) O exemplo mais simples para montar um dos compartilhamentos via linha de comando seria: # mount -t smbfs //servidor/arquivos /mnt/smb Aqui, estou montando o compartilhamento "arquivos" na pasta "/mnt/smb" (que deve ser previamente criada usando o comando mkdir). O "servidor" pode tanto ser o nome da mquina, dentro da rede Windows, quanto seu endereo IP. Como em outros comandos de montagem, voc precisa executar o comando como root. O comando mount um dos comandos mais tradicionais do Linux, que permite "mapear" um diretrio qualquer dentro de outro diretrio do sistema. A opo "-

t" serve para especificar o sistema de arquivos, neste caso o "smbfs", usado para acessar compartilhamentos Windows. Note que a localizao do compartilhamento fornecida numa sintaxe muito similar que usaramos para mapear um compartilhamento no Windows, com a sintaxe "barra barra servidor barra compartilhamento". A nica diferena que aqui usamos barras "normais" ao invs de barras invertidas. S para efeito de comparao, ao mapear o mesmo compartilhamento em uma mquina Windows, teramos:

O problema com o comando anterior que ele s funciona realmente ao montar compartilhamentos do Windows 95, 98 e ME, que no possuem senhas. No Windows 2000, XP e Vista (com exceo das estaes com o simple sharing ativado), sem falar dos prprios servidores Linux rodando o Samba, voc vai receber uma mensagem de acesso negado, j que neles voc precisa se autenticar para obter acesso aos compartilhamentos. Para isso, necessrio incluir a opo "-o username=usuario" (tudo junto, sem espaos), especificando o login que ser usado, como em: # mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh possvel tambm especificar a senha diretamente no comando, o que permite us-lo em scripts: # mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh,password=1234 Se, ao executar o comando, voc receber um erro similar a: mount: tipo de sistema de arquivos incorreto, opo invlida, superbloco invlido em //servidor/arquivos, faltando pgina de cdigo ou outro erro Em alguns casos informaes teis so encontradas no syslog - tente "dmesg | tail" ou algo do tipo Significa que o cliente Samba e/ou o suporte ao sistema de arquivos smbfs no est instalado na estao. Nesse caso, instale o pacote "smbfs" usando o gerenciador de pacotes, como em: # apt-get install smbfs Este problema muito reportado por usurios do Ubuntu, j que o pacote no vinha instalado por padro no Edgy, no Feisty e no Gutsy. Continuando, depois de montado o compartilhamento, os arquivos podem ser acessados normalmente, usando o Konqueror, Nautilus ou outro gerenciador de arquivos. muito similar ao acessar um compartilhamento mapeado no Windows, a principal diferena que voc define uma pasta onde ele ser montado, ao invs de acess-lo atravs de uma letra, como "E:" ou "Z:". Uma peculiaridade do mount que os arquivos dentro da pasta montada passaro por padro a ser propriedade do root. Isso no altera as permisses de acesso dos arquivos no servidor (a mudana apenas local), mas impede que seu login de usurio consiga alterar os arquivos, mesmo que as permisses de acesso do Samba digam o contrrio. Para evitar isso

necessrio adicionar a opo "uid=", especificando o login de usurio (na mquina local) correto, como em: # mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh,password=1234,uid=gdh A opo "uid=" interpretada localmente. O login especificado no repassado ao servidor Samba, de forma que voc pode usar qualquer conta de usurio local. Ele serve apenas para corrigir as permisses de acesso, de forma que voc possa alterar os arquivos normalmente usando seu login de usurio. O passo seguinte tornar a montagem permanente, j que usando o comando mount ela perdida ao reiniciar o micro. Para isso, inserimos uma nova linha no final do arquivo "/etc/fstab". A ordem dos parmetros fica um pouco diferente, mas voc notar que os argumentos continuam os mesmos que usamos no comando anterior: //servidor/arquivos /mnt/smb smbfs username=gdh,password=1234,uid=gdh 0 0 Caso necessrio, voc pode tambm indicar o grupo, junto com o usurio local, usando a opo "gid=", como em: //servidor/arquivos /mnt/smb smbfs username=gdh,password=1234,uid=gdh,gid=users 0 0 O fstab um dos principais arquivos de configurao do sistema, por isso sempre importante ter cuidado ao edit-lo. Apenas adicione a nova linha, sem alterar as anteriores e lembre-se sempre de deixar uma linha em branco no final do arquivo. Um parmetro til que pode ser includo a opo "users", que permite que voc consiga montar e desmontar o compartilhamento usando seu login de usurio, sem precisar usar a conta de root. Para isso, adicione o parmetro "user", antes do "username=" (sem espaos), como em: //servidor/arquivos /mnt/smb smbfs users,username=gdh,password=1234,uid=gdh 0 0 A montagem e desmontagem neste caso feita indicando apenas o diretrio, como em "umount /mnt/smb" e "mount /mnt/smb". A principal observao que o smbmnt (o comando responsvel pela montagem) s aceita fazer a montagem em uma pasta de propriedade do usurio, por isso necessrio ajustar as permisses da pasta usando o comando chown, como em: # chown gdh:gdh /mnt/smb O "0 0" includo sempre no final da linha um parmetro passado ao sistema, que diz que ele no deve verificar o sistema de arquivos usando o fsck durante a inicializao, j que aqui estamos montando um compartilhamento de rede e no uma partio. Embora no seja muito recomendvel do ponto de vista da segurana, tambm possvel escancarar as permisses, fazendo com que qualquer usurio logado no cliente Linux tenha acesso completo a todos os arquivos. Para isso, voc usaria o parmetro "smbpasswd,fmask=777,dmask=777", como em: //servidor/arquivos /mnt/smb smbpasswd,fmask=777,dmask=777 (tudo em uma nica linha) smbfs users,username=gdh,password=1234 0 0

Como estamos adicionando as senhas dos compartilhamentos dentro do arquivo, tambm fortemente recomendvel manter as permisses de leitura do arquivo em "600", de forma que apenas o root tenha permisso para ver seu contedo. Para isso, use o comando: # chmod 600 /etc/fstab possvel montar diversos compartilhamentos, adicionando uma linha para cada um. No existe limitao para o nmero mximo de compartilhamentos que podem ser adicionados, mas voc deve ter cuidado de adicionar apenas compartilhamentos de servidores que ficam ligados continuamente. Se o servidor estiver desligado durante o boot da estao, o boot do cliente vai demorar muito mais que o normal e o usurio ver o erro relacionado montagem do compartilhamento, o que no muito elegante, nem muito bom para sua reputao como administrador. :) Nos exemplos anteriores, especificamos as senhas de montagem dos compartilhamentos diretamente no arquivo "/etc/fstab".

Mesmo protegendo o arquivo com o "chmod 600", muita gente afirma que isso um problema grave de segurana, j que algum que conseguisse obter acesso ao arquivo, obteria automaticamente as senhas dos compartilhamentos. Uma opo usar um arquivo externo para armazenar as senhas. Ele pode ser armazenado tanto dentro do diretrio /home/root, quanto dentro do home do usurio do sistema que tem acesso ao compartilhamento. Voc pode tambm usar diversos arquivos de senha, um para cada compartilhamento que precisa ser montado. Para criar os arquivos de senha, use os trs comandos abaixo, ainda como root: # echo "username=gdh" > /home/gdh/.smbpasswd # echo "password=1234" >> /home/gdh/.smbpasswd # chmod 600 /home/gdh/.smbpasswd Usado desta forma, o comando echo permite criar arquivos de texto e adicionar novas linhas. O primeiro comando cria o arquivo, adicionando a linha com o nome do usurio, enquanto o segundo adiciona a linha com a senha. Se por acaso o arquivo j existir, ele subescrito. Como o arquivo foi criado pelo root, o comando "chmod 600" usado no final faz com que, mesmo colocado dentro do home do usurio "joao", apenas o root tenha acesso ao arquivo, evitando acidentes. Voc pode tambm criar o arquivo usando um editor de textos qualquer e ajustar as permisses manualmente. Neste caso, bastaria adicionar as duas linhas: username=gdh password=1234 Com o arquivo criado, voc pode modificar a(s) linha(s) no fstab, especificando a localizao do arquivo, ao invs de colocar o usurio e senha diretamente, como em: //servidor/arquivos /mnt/smb smbfs users,credentials=/home/gdh/.smbpasswd 0 0 ou: //servidor/arquivos /mnt/smb smbfs users,credentials=/home/gdh/.smbpasswd smbpasswd,uid=gdh,gid=gdh 0 0 (tudo em uma nica linha) Ao montar vrios compartilhamentos, que so acessados usando o mesmo login e senha, voc pode especificar o mesmo arquivo em todas as linhas, mas, no caso de diversos compartilhamentos, montados usando credenciais diferentes, voc deve criar arquivos separados para cada um e especificar o arquivo correto dentro da linha de montagem de cada compartilhamento. Voc pode criar quantos arquivos de senha diferentes quiser, mas cada arquivo deve conter um nico usurio e senha. Concluindo, uma limitao importante do smbfs que ele suporta, por default, transferncias de arquivos de no mximo 2 GB. O sintoma do problema que as transferncias comeam normalmente, mas param ao chegar aos 2 GB, com um erro "file size limit exceeded" ou outra mensagem de erro qualquer, gerada quando o gerenciador de arquivos no consegue concluir a transferncia:

Esta na verdade no uma limitao do Samba, mas sim do protocolo SMB, que usado por default pelo smbfs. A soluo para o problema adicionar a opo "lfs" (a sigla abreviao de "large file support" e, como o nome sugere, ativa o suporte a arquivos de mais de 2 GB, que est disponvel no protocolo CIFS) no comando de montagem, ou entre as opes especificadas na linha do fstab. como em: # mount -t smbfs //servidor/arquivos /mnt/smb -o lfs,username=gdh,password=1234,uid=gdh

ou: //servidor/arquivos /mnt/smb smbfs lfs,users,username=gdh,password=1234 smbpasswd,fmask=777,dmask=777 0 0 (tudo em uma nica linha) importante notar que a opo lfs elimina qualquer limitao com relao ao tamanho dos arquivos por parte do Samba, mas voc ainda poder ter problemas ao copiar arquivos grandes para mquinas com HDs formatados em FAT32, sistema que suporta arquivos de no mximo 4 GB. A soluo nesses casos (no caso das mquinas Windows) converter as parties para NTFS. No caso das mquinas Linux, no existem restries, j que o EXT3 suporta arquivos de at 2 TB.

Portas e firewall
O Samba um servidor destinado a ser usado dentro da rede local, ou da intranet. muito difcil imaginar uma situao em que voc gostaria de disponibilizar um servidor Samba na internet. relativamente comum encontrarmos mquinas ou mesmo servidores Windows onde o compartilhamento de arquivos e impressoras est disponvel para o mundo devido a algum descuido do dono, mas quase impossvel encontrar algum que o faa intencionalmente. Existem muitas formas de impedir que o servidor Samba fique disponvel na internet. Em um servidor com duas placas de rede, a mais simples configurar o firewall para bloquear todas as conexes provenientes da placa ligada internet e/ou adicionar a linha "interfaces = eth1" (onde a "eth1" a placa da rede local) na seo [global] do smb.conf, o que faz com que o Samba passe a escutar apenas na interface especificada. Mais uma opo que pode ser usada a "hosts allow", que permite que voc especifique uma faixa de endereos a partir da qual o servidor vai aceitar requisies. Limitando o acesso faixa de endereos da rede local, voc garante que ele no vai ser acessado por hosts da internet. Nesse caso, voc adicionaria a linha "hosts allow = 192.168.0." (onde o 192.168.0. a faixa de endereos da rede local) na seo [global]. Voc pode inclusive combinar as trs coisas (o firewall e as duas regras restritivas), afinal, segurana nunca demais. No caso da rede local, o firewall nem sempre necessrio, j que em pequenas redes voc normalmente conhece os usurios. Em redes maiores, entretanto, o cenrio mais "cada um por s" e uma configurao mais cuidadosa torna-se necessria. O ideal ativar o firewall e manter abertas apenas as portas dos servios intencionalmente disponibilizados, minimizando a chance de algum obter acesso ao servidor atravs de algum servio que voc no sabia que estava ativo. As portas usadas pelo Samba, que precisam ficar abertas na configurao do Firewall so: 137/udp: Usada pelo Daemon nmbd, responsvel pela navegao nos compartilhamentos de rede. 138/udp: Tambm usada pelo nmbd, dessa vez para a resoluo dos nomes das mquinas da rede. 139/tcp: Usada pelo daemon smbd, o componente principal do Samba, responsvel pelo compartilhamento de arquivos e impressoras. 445/tcp: Esta porta usada pelos clientes Windows 2000, XP e Vista para navegao na rede. Eles utilizam o protocolo CIFS, no lugar do antigo protocolo NetBIOS. Um exemplo de regras do Iptables que voc poderia incluir no seu script de firewall para mant-las abertas : iptables -A INPUT -p udp --dport 137 -j ACCEPT iptables -A INPUT -p udp --dport 138 -j ACCEPT iptables -A INPUT -p tcp --dport 139 -j ACCEPT iptables -A INPUT -p tcp --dport 445 -j ACCEPT

Mantendo o horrio sincronizado


Ao compartilhar arquivos na rede, manter os relgios das mquinas sincronizados passa a ser uma necessidade, afinal, se cada mquina est usando um horrio diferente, fica impossvel acompanhar as datas de modificaes dos arquivos. Achar a verso mais recente de um determinado arquivo torna-se uma tarefa impossvel e o trabalho de ferramentas diversas de backup fica prejudicado, sem falar nos logs do sistema e outros recursos que dependem do horrio. Felizmente, muito simples manter os horrios das mquinas sincronizados, graas a vrios servidores NTP pblicos, disponveis pelo mundo. Os servidores principais, chamados de stratum 1, sincronizam seus relgios a partir de relgios atmicos ou um sistema de GPS e, por isso, so extremamente precisos. A seguir, temos os servidores stratum 2, servidores menores sincronizados a partir dos primeiros. Voc pode sincronizar o relgio da sua mquina rapidamente usando o comando "ntpdate -u", seguido pelo servidor desejado. O comando faz parte do pacote "ntp" ou "ntpd", instalado por padro na maioria das distribuies. A opo "-u" faz com que seja usada uma porta alta, necessrio se voc acessa usando uma conexo compartilhada ou tem um firewall ativo. Para facilitar as coisas, existe o servidor "pool.ntp.org", que serve como um load balancer, encaminhando as requisies para um servidor geograficamente prximo de voc. Ao invs de ficar caando servidores pblicos no Google, voc pode sincronizar diretamente a partir dele: # ntpdate -u pool.ntp.org Sep 14:12:29 ntpdate[20592]: step time server 128.208.109.7 offset -9.091791 sec O Linux utiliza um sistema relativamente complexo para manter o horrio do sistema. Em vez de simplesmente confiar no horrio informado pelo relgio da placa me, ele utiliza um sistema mais elaborado, baseado no clock da placa me para calcular a passagem do tempo. Sempre que o sistema desligado corretamente, diferenas no horrio do sistema e no horrio informado pelo relgio da placa me so salvas em um arquivo, de forma que possam ser recuperadas na hora do boot. Em geral, este sistema bem mais preciso e permite que o horrio mantenha-se correto (desde que o micro no seja desligado) mesmo nos casos em que a bateria do setup est fraca e o relgio da placa-me est atrasando. No entanto, existem casos onde o sistema calcula o clock de forma incorreta, fazendo com que o relgio comece a adiantar ou atrasar, mesmo que o relgio da placame esteja indicando o horrio corretamente. A soluo, nestes casos, rodar o comando ntpdate periodicamente, de forma que o horrio seja sempre corrigido antes que as diferenas se acumulem. Neste caso, a melhor soluo fazer com que o cron execute o comando de hora em hora. O jeito mais simples de fazer isso criar um pequeno script dentro da pasta "/etc/cron.hourly/", cujo contedo executado de hora em hora pelo cron. Crie o arquivo "/etc/cron.hourly/ntpdate", contendo as duas linhas a seguir: #!/bin/sh ntpdate -u pool.ntp.org Em seguida, transforme-o em executvel: # chmod +x /etc/cron.hourly/ntpdate O cron detecta mudanas nos arquivos automaticamente, mas, se preferir, voc pode forar a atualizao usando o comando: # /etc/init.d/cron restart Um nmero cada vez maior de distribuies oferecem a opo de manter o horrio sincronizado automaticamente em relao a um servidor NTP durante a instalao, o que torna desnecessrio usar o ntpdate manualmente. Os servidores NTP atendem clientes de todo o mundo, independentemente do fuso horrio, pois so configurados para utilizar um horrio comum, o UTC (Universal Time Zone). Os clientes ajustam o horrio de acordo com o fuso horrio local, adicionando ou subtraindo algumas horas do horrio UTC. Naturalmente, para que isso funcione, necessrio que o fuso

horrio esteja configurado corretamente. A maioria das distribuies ajusta isso logo durante a instalao, mas voc pode configurar o fuso horrio do sistema atravs de vrios utilitrios, como o "tzconfig" ou o configurador do KDE (kcmshell clock), que aparece ao clicar com o boto direito sobre o relgio e acessar a opo "Mudar data e hora". O NTP suportado tambm pelos clientes Windows. No Windows XP, a opo de usar o NTP est disponvel no "Painel de Controle > Data e hora > Horrio da Internet". Por padro, usado um servidor da Microsoft, mas voc pode alterar a configurao usando o pool.ntp.org, ou qualquer outro servidor de sua preferncia, incluindo um servidor disponvel na sua rede local (veja a seguir).

A coisa fica um pouco mais complicada no caso do Windows 2000, Windows 98 e outras verses antigas do Windows, que no suportam o NTP nativamente. No caso deles, voc precisa utilizar um cliente NTP avulso. Voc pode baixar as verses oficiais no: http://ntp.isc.org/bin/view/Main/ExternalTimeRelatedLinks O protocolo NTP leva em conta o ping entre as mquinas e outros fatores para fazer as atualizaes de forma extremamente precisa. Diferenas de sincronismo entre os servidores so sempre da ordem de poucos milsimos de segundo. Apesar disso, muitos administradores preferem configurar servidores NTP locais. A principal vantagem que configurando as estaes para sincronizarem o horrio em relao a um servidor local, voc garante que todas mantero exatamente o mesmo horrio e que a sincronizao continuar funcionando mesmo que o link com a Internet caia. Um servidor local tambm a melhor opo em casos onde os demais micros da rede no possuem acesso internet. O primeiro passo instalar o pacote com o servidor NTP que, de acordo com a distribuio usada, pode se chamar "ntp", "ntpd" ou "ntp-server". Nas distribuies derivadas do Debian, voc instalaria diretamente pelo apt-get: # apt-get install ntp A configurao vai no arquivo "/etc/ntp.conf". Normalmente, o arquivo padro funcional, mas permite apenas conexes a partir do localhost. Para permitir que os demais micros da rede local sincronizem o horrio a partir do servidor, voc deve adicionar a linha abaixo no final do arquivo: restrict 192.168.1.0 mask 255.255.255.0 nomodify O "nomodify" faz com que os micros da rede local tenham acesso apenas de leitura ao horrio do servidor, sem poder alter-lo (o que o comportamento desejvel). No se esquea de alterar a faixa

de endereos e a mscara de acordo com a usada na sua rede local. Um exemplo de arquivo de configurao simplificado (mas funcional) : driftfile /var/lib/ntp/ntp.drift statsdir /var/log/ntpstats/ server 0.pool.ntp.org iburst server pool.ntp.org iburst restrict 127.0.0.1 restrict 192.168.1.0 mask 255.255.255.0 nomodify As duas linhas "server" indicam os endereos a partir dos quais o servidor ir sincronizar seu horrio e as duas linhas "restrict" fazem com que o servidor NTP fique acessvel apenas a partir do localhost e dos micros da rede local. Ao alterar o arquivo, voc deve reiniciar o servidor NTP, usando o comando: # /etc/init.d/ntp restart (ou /etc/init.d/ntpd restart) Se quiser ter certeza de que o servio est funcionando, voc pode usar o comando "ntpdc -p", que mostra o status atual do servidor NTP e a lista dos servidores em relao aos quais ele est sincronizando. normal que o servidor demore alguns minutos para comear a responder depois de reiniciado o servio. A partir da, voc pode configurar os micros da rede local para sincronizarem o horrio em relao ao endereo IP do seu servidor NTP local, como no screenshot do cliente Windows que vimos a pouco. O servidor passa, ento, a sincronizar o horrio em relao aos servidores da Internet especificados no arquivo e os clientes da rede local passam a sincronizar o horrio em relao a ele. Ao usar um firewall no servidor, certifique-se de que a porta 123/UDP usada pelo NTP est aberta (o NTP usa apenas UDP). necessrio que ela fique aberta tanto para a rede local, quanto para a internet, j que o servidor precisa sincronizar o horrio em relao aos servidores externos. Caso necessrio, voc pode acrescentar uma regra como esta no seu script de firewall, de forma a manter a porta aberta: iptables -A INPUT -p udp --dport 123 -j ACCEPT

Anda mungkin juga menyukai