Vous êtes sur la page 1sur 93

Samba, parte 1: Instalao e configurao usando o Swat

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: Documentao Swat: swat samba-swat

Debian samba smbclient samba-doc

Fedora samba samba-client samba-doc

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:

# # /etc/init.d/samba stop

/etc/init.d/samba

start

... para iniciar e parar o servio. 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 alm os do compilados cdigo de por fonte, colaboradores disponvel na no no pasta http://samba.org/samba/ftp/Binary_Packages/, default na pasta "/usr/local/samba", com

http://samba.org/samba/ftp/stable/. Ao instalar a partir do cdigo fonte, o Samba instalado por arquivos configurao "/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 os 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-createhome", 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 log_on_failure disable }

swat = = = = = += = 901 stream no root /usr/sbin/swat USERID no

Depois de criado o arquivo, reinicie o servio e o Swat ficar disponvel.

# /etc/init.d/xinetd restart
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:

# chkconfig # service xinetd restart

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-config-printer", 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. Confira a segunda parte em: http://www.hardware.com.br/tutoriais/samba-configuracao-

avancada/

Introduo
Clique aqui para ver a primeira parte

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 workgroup

name =

Sparta Grupo

[arquivos] path comment = Teste

/mnt/arquivos

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: a) 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. b) 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 Processing section Loaded services Server role: ROLE_STANDALONE

from file

/etc/samba/smb.conf "[arquivos]" OK.

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 # comment = Compartilhamento que no funciona

Pasta

compartilhada

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] # path comment = Agora sim

Pasta =

compartilhada /mnt/arquivos

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 --disabledlogin --no-create-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 writable comment = Teste

= =

/mnt/arquivos yes

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 # adduser maria arquivos

joao

arquivos

Para remover usurios do grupo, voc usa o comando "deluser", como em:

# deluser # deluser maria arquivos

joao

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 # chmod 775 /mnt/arquivos

arquivos

/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 # chmod -R 775 /mnt/arquivos

arquivos

/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 writable valid users = +arquivos

= =

/mnt/arquivos yes

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 = writable valid users = joao, maria, jose

/mnt/arquivos yes

possvel tambm combinar as duas coisas, indicando um ou mais grupos e tambm alguns usurios avulsos, como em:

[arquivos] path = writable = valid users = +arquivos, jose, joaquim, +admin

/mnt/arquivos yes

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 writable invalid users = jose, joaquim

= =

/mnt/arquivos yes

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 writable valid invalid users = joao

= = users =

/mnt/arquivos yes +arquivos

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 writable valid write list = maria users

= = =

/mnt/arquivos no +arquivos

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 writable valid

= = users = +arquivos,

/mnt/arquivos no 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 writable valid users read list = maria, jose

= = = +arquivos,

/mnt/arquivos yes +admin

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 read only = yes

/mnt/modelos

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 = writable = hosts allow = 192.168.1.23, 192.168.1.24

/mnt/arquivos yes

ou

[arquivos] path writable hosts allow = sparta, athenas

= =

/mnt/arquivos yes

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 = writable hosts deny = 192.168.1.23, athenas

/mnt/arquivos yes

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 = writable = valid users = hosts allow = 192.168.1.23, 192.168.1.24

maria,

/home/arquivos yes joao

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 writable hosts allow = 192.168.1.

= =

/mnt/arquivos yes

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 = writable = hosts allow = 192.168.1. EXCEPT 192.168.1.23, 192.168.1.24

/mnt/arquivos yes

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 = writable = valid users hosts deny = 192.168.1. EXCEPT 192.168.1.23

/mnt/sda2/restrito yes isac

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 hosts allow hosts deny comment = Algo est errado

= = =

/mnt/isos 192.168.1. 192.168.1.43

... 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 hosts allow comment = Agora sim

= 192.168.1.

EXCEPT

/mnt/isos 192.168.1.43

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 writable valid available = no

= = users = maria,

/home/arquivos yes joao

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 writable browseable = no

= =

/home/arquivos yes

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 ------------------------------------------------------IPC$ 17107 hp Sun Oct 28 15:54:04 arquivos 11588 semprao Sun Oct 28 15:23:59 No locked files at 2007 2007

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 workgroup hosts allow = 192.168.1.

= =

Servidor Grupo

... 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 workgroup hosts

name = allow =

Servidor Grupo 192.168.1.

[share] path hosts deny = 192.168.1.2

/mnt/sda2/shared

... 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 workgroup [share] path hosts deny = 192.168.1.2

name =

Servidor Grupo

/mnt/sda2/shared

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 workgroup hosts

name = deny =

Servidor Grupo 192.168.1.3

[share] path hosts allow = 192.168.1.3

/mnt/sda2/shared

... 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 default case = lower

case

no

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 bind interfaces only = yes

eth0

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 usla, basta adicionar a opo, seguida pelos apelidos desejados, como em:

[global] netbios name netbios aliases workgroup = Grupo

= = athenas,

Servidor sparta

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 os level preferred master = yes

= =

yes 100

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 os preferred master = no

master level

= =

yes 90

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 range option option option option }

192.168.1.0

netmask 192.168.1.100 routers domain-name-servers netbios-name-servers broadcast-address

255.255.255.0 { 192.168.1.199; 192.168.1.1; 192.168.1.1; 192.168.1.254; 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 server workgroup username preserve default

name string level case case = only = =

= Servidor = = =

Athenas Samba Grupo 1 no lower eth0 yes yes 100 yes

interfaces bind interfaces local master os level preferred master 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 read create directory browseable = no

users only mask mask

= = = =

%S no 0700 0700

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 valid read create directory browseable = no

= users only mask mask

= = = =

/home/%u/share %S no 0700 0700

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 for mkdir chown done

in $i:$i

*;

/home do $i/share $i/share

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 %I %m %L %u : : : : Nome do no : : : Pasta : Diretrio Grupo compartilhada (o Endereo Nome Nome usurio, rodando IP da do como servidor home primrio valor do do na da mquina mquina cadastrado em usurio usurio opo "path", no o cliente cliente servidor servidor algumas (ex: (ex: ex: (ex: (ex: (ex: (ex: Linux Samba) 192.168.1.2) cliente1) athenas) (ex: joao)

%U : Nome do usurio, como enviado pelo cliente Windows (pode ser diferente do login cadastrado %H %g %P %v situaes) /home/maria) users)

%S : Nome do compartilhamento atual (o valor informado entre colchetes, ex: arquivos) informado do /mnt/arquivos) 3.2.24) Verso Samba

%T : Data e horrio atual Ao longo do texto, veremos alguns outros exemplos de uso destas variveis, mas voc pode uslas 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 read only = yes

/mnt/sda2/drivers/%a

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 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: 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

map to guest account = guest

guest

bad

user

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 workgroup map guest [publico] path writable guest ok = yes

name = to guest account =

= bad =

Sparta Grupo user guest

= =

/mnt/sda2/publico 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 server workgroup local os preferred wins map guest [arquivos] path writable guest [backups] path writable guest ok = yes

name string master level master support guest account = =

= Servidor = = = = = = bad

to

Plutus pblico Grupo yes 100 yes yes user gdh

= = ok =

/mnt/hda2 yes yes

= =

/mnt/sda1 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:

# < # <mesma

adduser smbpasswd -a

gdh senha> gdh senha>

# chown # chown -R gdh:gdh /mnt/sda1

-R

gdh:gdh

/mnt/hda2

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 = writable valid users vfs object recycle:repository recycle:keeptree = yes

= = = =

/mnt/sda2/projetos yes +apolo, isac recycle lixeira

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 writable = yes

/var/samba/trash/%U

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" "recycle:exclude_dir", como em: e nomes de pasta atravs da opo

recycle:exclude = *.tmp, *.log, recycle:exclude_dir = tmp, cache

*.obj,

~*.*,

*.bak,

*.iso

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 server workgroup local os preferred wins

name string = master level master support objects = = *.tmp, = *.log, Servidor =

= com = = = = =

Phanteon lixeira Grupo yes 100 yes yes

vfs recycle:keeptree recycle:versions recycle:repository recycle:exclude =

*.obj,

recycle yes yes /var/samba/trash/%U ~*.*, *.bak, *.iso

recycle:exclude_dir [engenharia] path writable valid [gerencia] path writable valid hosts browseable [lixeira] path writable = yes

tmp,

cache

= = users =

/mnt/sda2/engenharia yes +engenheiros

= = users allow = = = paulo, micro3,

/mnt/gerencia yes rebeca micro4 no

/var/samba/trash/%U

Auditando os 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 log file max log size = 1000

= =

1 /var/log/samba.log

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

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/manpages-3/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 full_audit:priority = notice

local5

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 # /etc/init.d/sysklogd restart

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 workgroup server string encrypt passwords wins support preferred master os level enable privileges passdb backend = tdbsam

= = = = = = = =

Sparta Grupo Servidor true yes yes 100 yes

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:15350B7F4983CB5EAC073A892C687 E8E:[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. Confira a terceira parte em: http://www.hardware.com.br/tutoriais/samba-pdc/

Introduo
Clique aqui para ler a segunda parte 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 netbios server domain domain logon security encrypt enable passdb preferred local os wins [netlogon] comment path read browseable [homes] valid create directory browseable = no

= name string master logons script = passwords privileges backend master master level support = = = = = = = = = = = = Samba

Dominio GDH PDC yes yes netlogon.bat user yes yes tdbsam yes yes 100 yes

= = only

Servico = =

de Logon /var/samba/netlogon yes no

users mask mask

= = =

%S 0700 0700

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 Processing section Processing section Loaded services Server role: ROLE_DOMAIN_PDC

from

file

/etc/samba/smb.conf "[netlogon]" "[homes]" OK.

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 # chmod 775 /var/samba/netlogon

-p

/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:

# # smbpasswd -a joao

adduser

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 # passwd # smbpasswd -a -m alesia

/dev/null

-s -l

/bin/false

alesia$ 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 net use x: gdharquivos /yes

h:

/HOME

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 MS-DOS 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 logon path = %Lprofiles%U

%L%U.profiles

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 writeable browseable create directory mask = 0700

= = = mask =

/var/profiles yes no 0600

Concluindo, crie a pasta "/var/profiles", com permisso de escrita para todos os usurios:

# # chmod 1777 /var/profiles

mkdir

/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 workgroup server domain domain logon logon logon security encrypt enable passdb preferred local os wins printing load enable [printers] path print guest browseable

name string master logons script home path = passwords privileges backend master master level support = printers privileges = =

= Servidor = = = = =

Byzantium Dominio PDC yes yes netlogon.bat %L%U.profiles %Lprofiles%U user yes yes tdbsam yes yes 100 yes cups yes yes

= = = = = = =

= =

= ok ok = = =

/var/spool/samba yes yes yes

[print$] path read write inherit [netlogon] comment path read browseable [profiles] path writeable browseable create directory [homes] valid create directory browseable [arquivos] path writable write list = +arquivos

= only list permissions = = =

/var/smb/printers yes gdh yes

= = only

Servico = =

de Logon /var/samba/netlogon yes no<

= = = mask mask = =

/var/profiles yes no 0600 0700

users mask mask =

= = =

%S 0700 0700 no

= =

/mnt/hda2 no

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 # passwd # smbpasswd -a -m hp

/dev/null

-s -l

/bin/false

hp$ 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 PID Username Group ----------------------------------------------------4363 joao joao athenas

3.0.14a-Debian Machine (192.168.0.34)

Service pid machine Connected ----------------------------------------------------joao 4363 athenas Sat Jul 9 10:37:09 2005

at

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 fornec-lo 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: a) 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. b) 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 'ATHENASgdh' SeDiskOperatorPrivilege # net -S localhost -U root 'ATHENASgdh' SeRestorePrivilege -W

ATHENAS

rpc

rights

grant

ATHENAS

rpc

rights

grant

# net -S localhost -U root -W 'ATHENASgdh' SeTakeOwnershipPrivilege

ATHENAS

rpc

rights

grant


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 'ATHENASgdh' SeTakeOwnershipPrivilege

ATHENAS

rpc

rights

revoke

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 # passwd # smbpasswd -a -m nome

-s -l

/bin/false

nome$ 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 security encrypt password username [arquivos] path writable = yes

= = passwords server map = = =

Dominio domain yes

192.168.1.254 /etc/samba/smbusermap

/home/arquivos


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 joao joao joao = DOMINIOisac

= = =

DOMINIOgdh DOMINIOmaria DOMINIOjose


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 netbios security encrypt passwords = yes

= name = =

grupo M5 user

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, nos leva ao tpico seguinte: mas no resolve o problema da autenticao local nas estaes Linux, que continua sendo feita da forma tradicional. Isso

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 = workgroup = winbind use default domain obey pam restrictions security = encrypt passwords = wins server = winbind uid = winbind gid = template shell = template homedir = winbind separator = invalid users = root

cliente1 Dominio = yes = yes domain true 192.168.1.254 10000-20000 10000-20000 /bin/bash /home/%U +


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: group: shadow: compat


... no incio do arquivo, por:

compat compat


passwd: group: shadow: compat winbind
Um exemplo do arquivo completo :

compat compat

winbind winbind


passwd: group: shadow: hosts: networks: protocols: services: ethers: rpc: netgroup: nis files compat compat compat dns winbind winbind winbind mdns files files files files files

db db db db


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): 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.

# net rpc join -S gdh -w dominio -U root


Se voc receber uma mensagem de erro, como:

Creation of workstation Unable to join domain DOMINIO.

account

failed

... 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 # passwd # smbpasswd -a -m cliente1

-s -l

/bin/false

cliente1$ 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 session optional auth sufficient account sufficient session required pam_winbind.so

skel=/etc/skel

umask=0022 pam_mount.so pam_winbind.so 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:


Para que esta configurao funcione, importante que os usurios sejam cadastrados no servidor como usurios reais, usando o comando "adduser", e no o "adduser --disabledlogin --no-create-home" ou similar. Basicamente, preciso que o usurio possa se logar no servidor, caso contrrio ele tambm no vai conseguir se logar nas estaes. Adicione as duas linhas abaixo no incio do arquivo (/etc/pam.d/kscreensaver), sem apagar as demais:

auth sufficient auth required pam_unix.so shadow nullok

pam_winbind.so

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.

Introduo

Clique aqui para ver a terceira parte


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 = print command = /usr/bin/lpr -P%p %s; /bin/rm lpq command = /usr/bin/lpq lprm command = /usr/bin/lprm -P%p queue pause command = /usr/sbin/lpc stop queue resume command = /usr/sbin/lpc start %p

bsd %s -P%p %j %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 load printers = yes

cups

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 Order Allow Allow < /Location>

/admin> allow,deny localhost 192.168.1.10


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 = print ok guest ok path = /var/spool/samba

Todas

as = =

Impressoras yes yes


Aqui, temos um exemplo de arquivo completo, incluindo o compartilhamento:

[global] netbios workgroup server encrypt preferred os preferred wins printing load [homes] valid create directory browseable [arquivos] path writable write [printers] comment = path print guest browseable = yes

name = string passwords master level master support = printers =

= = = = =

Hades Grupo Servidor true yes 100 yes yes cups yes<

users mask mask =

= = =

%S 0700 0700 no

= = list =

/mnt/hda6 no +arquivos

Todas = ok ok

as = =

Impressoras /var/spool/samba yes 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.

Samba

pode

inclusive no

ser

usado

para

centralizar

as por

impressoras exemplo,

da

rede, duas

recompartilhando impressoras disponibilizadas por outros micros, desde que voc as configure corretamente Cups. Nesse screenshot, temos 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 guest ok path = /var/spool/samba

= =

yes yes


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 = yes guest ok = yes path = /var/spool/samba hosts allow = 192.168.1.3, 192.168.1.4, 192.168.1.65
Voc pode, tambm, usar os nomes das mquinas dentro da rede Windows no lugar dos endereos IP, como em:

[E230] print ok guest ok path = hosts allow = micro1, micro2, micro3

= =

yes yes /var/spool/samba


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 ok guest ok path = invalid users = joao, maria

= =

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 ok guest ok path = valid users = joao, maria

= =

yes no /var/spool/samba

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 guest ok path = valid users = hosts allow = 192.168.1.3, 192.168.1.4

= =

yes no /var/spool/samba joao, maria

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/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 "plug-and-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:

# # smbpasswd -a gdh

adduser

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 netbios server encrypt wins preferred

= name string passwords support master = = = = =

GRUPO Asus Servidor true yes yes

# invalid os level enable privileges = yes

users =

root 100


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 = path read write

Drivers

de

impresso =

para

os = =

clientes Windows /var/smb/printers yes gdh

only list

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 # cd # mkdir # chown # chmod 2775 WIN40 W32X86

-p

gdh

/var/smb/printers /var/smb/printers WIN40 W32X86 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 SePrintOperatorPrivilege

'ASUSgdh'


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 guest ok path = force printername = yes

= =

yes yes /var/spool/samba


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 server workgroup local os preferred wins map guest

name string = master level master support guest account

= = = = = = = = = = = = *.log, = = *.obj, bad

to

Cartago Servidor Grupo yes 100 yes yes user guest

vfs objects recycle:keeptree recycle:versions recycle:repository recycle:exclude = *.tmp, recycle:exclude_dir printing load enable [lixeira] path writable [printers] path print guest browseable [print$] path read write inherit [arquivos] path writable write [engenharia] path writable valid

recycle yes yes /mnt/sda2/trash/%U ~*.*, *.bak, *.iso tmp, cache cups yes yes

printers privileges

= =

= =

/mnt/sda2/trash/%U yes

= ok ok = = =

/var/spool/samba yes yes yes

= only list permissions

= =

/var/smb/printers yes gdh = yes

= = list =

/mnt/hda2 no +arquivos

= = users =

/mnt/sda1/engenharia yes +engenheiros

browseable [gerencia] path writable valid hosts browseable [publico] path writable guest [backup] path writable valid writable guest ok = no

no

= users allow

/mnt/sda1/gerencia yes = joao, maria 192.168.1.2, 192.168.1.32 = no =

= = ok =

/mnt/sda2/publico yes yes

= = users =

/mnt/sda2/backup/%U yes = %U yes


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 # chown joao:joao /mnt/sda2/backup/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 us-lo 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 Listen Browsing BrowseAllow BrowseInterval BrowseAddress BrowseInterval < Order Allow < < Order Allow < < Encryption Order Allow < < AuthType Require Order Allow < /Location> Location

631 631 On All 30 @LOCAL 30 /> allow,deny all /Location> /printers> allow,deny all /Location> /admin> Required allow,deny localhost /Location> /admin/conf> Basic @SYSTEM allow,deny localhost

Location

Location

Location user


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 Allow < <Location Order Deny Allow Allow < /Location>

From From From

/> Deny,Allow All 127.0.0.1 192.168.1.* /Location> /printers> Deny,Allow All 127.0.0.1 192.168.1.*

From From From


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 SystemGroup Listen Listen Browsing BrowseOrder BrowseAllow BrowseAddress @LOCAL

warning lpadmin localhost:631 /var/run/cups/cups.sock On allow,deny @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://ip-do-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.