samba avançado

Embed Size (px)

Citation preview

Instalao e configurao usando o SwatA 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 HistriaO 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 SambaComo 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 UsuriosDepois 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 SwatO 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 SwatNo 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 SwatAo 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 CompartilhamentosDepois 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 SambaComo 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 acessoCom 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 GuestNo 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 # smbpasswd -a gdh # 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 SambaEm 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