Usando o Samba como controlador de domínio
Por Carlos E. Morimoto
05/07/2005
Numa pequena rede, manter as senhas dos usuários sincronizadas entre as estações Windows e o servidor Samba não chega a ser um grande problema. Mas, em redes de maior porte isto pode tornar-se uma grande dor de cabeça e passar a consumir uma boa parte do seu tempo.
Para solucionar o problema, existe a opção de usar o servidor Samba como um controlador primário de domínio (PDC), servindo como um servidor de autenticação para os clientes Windows.
Ao cadastrar um novo usuário no servidor Samba, ele automaticamente pode logar-se em qualquer uma das estações configuradas. Ao remover ou bloquear um login, ele automaticamente é bloqueado em todas as estações. Isto elimina o problema de sincronismo entre as senhas no servidor e nas estações e centraliza a administração de usuários e permissões de acesso no servidor, simplificando bastante seu trabalho de administração.
O primeiro passo é modificar o arquivo de configuração do Samba. Existem algumas regras adicionais para transformar o Samba num controlador de domínio. A seção "global" deve conter as linhas " domain master = yes", "domain logons = yes" e "logon script = netlogon.bat" e (importante) não deve conter a linha "invalid users = root" pois precisaremos usar a conta de root no Samba ao configurar os clientes. É preciso adicionar também um compartilhamento chamado "netlogon", que conterá o script de login que será executado pelas estações.
Este é um exemplo de arquivo de configuração do Samba para um controlador de domínio. Ele não contém as configurações para compartilhamento de impressoras, que você pode adicionar (juntamente com os compartilhamentos desejados) depois de testar a configuração básica:
[global]
workgroup = Dominio
netbios name = GDH
server string = Samba PDC
domain master = yes
preferred master = yes
local master = yes
domain logons = yes
logon script = netlogon.bat
security = user
encrypt passwords = yes
os level = 100
[netlogon]
comment = Servico de Logon
path = /var/samba/netlogon
guest ok = Yes
browseable = No
[homes]
comment = Diretorio Home
valid users = %S
guest ok = Yes
browseable = No
Acostume-se a sempre rodar o comando "testparm" depois de fazer alterações no arquivo, pois ele verifica a sintaxe e indica erros de configuração. Ao configurar o Samba como PDC, ele deve exibir a mensagem: "Server role: ROLE_DOMAIN_PDC".
Depois de configurar o arquivo, verifique se a conta root do sistema foi cadastrada no Samba e se as senhas estão iguais. Caso necessário, use o comando "smbpasswd -a root" para cadastrar o root.
Aproveite para criar a pasta "/var/samba/netlogon" e configurar corretamente as permissões:
# mkdir -p /var/samba/netlogon
# chmod 775 /var/samba/netlogon
Com o "775" estamos permitindo que além do root, outros usuários que você adicionar no grupo possam alterar o conteúdo da pasta. Isso pode ser útil caso existam outros administradores de rede além de você.
Cadastre agora os logins dos usuários, com as senhas que eles utilizarão para se logar a partir das máquinas Windows. Neste caso não é preciso se preocupar em manter as senhas em sincronismo entre o servidor e as estações. Na verdade, as contas que criamos aqui não precisam sequer existirem nas estações, pois o login será feito no servidor. Para adicionar um usuário de teste "joao", use os comandos:
# adduser joao
# smbpasswd -a joao
É importante criar também a pasta "profile.pds" dentro do diretório home do usuário, onde o cliente Windows armazenará as informações de seção cada vez que o usuário faz logon:
# mkdir /home/joao/profile.pds
Além das contas para cada usuário, é preciso cadastrar também uma conta (sem senha) para cada máquina. Você deve usar aqui os mesmos nomes usados na configuração de rede em cada cliente. Se a máquina se chama "athenas" por exemplo, é preciso criar um login de máquina com o mesmo nome:
# useradd -d /dev/null -s /bin/false athenas$
# passwd -l athenas$
# smbpasswd -a -m athenas
Note que nos dois primeiros comandos é adicionado um "$" depois do nome, que indica que estamos criando um login de máquina, que não tem diretório home (-d /dev/null), não possui um shell válido (-s /bin/false) e está travada (passwd -l). Esta conta é válida apenas no Samba, onde é cadastrada com a opção "-m" (machine). Estas contas de máquina são chamadas de "trusted accounts" ou "trustee".
Por último, é necessário criar o arquivo "/var/samba/netlogon/netlogon.bat", um script que é lido e executado pelos clientes ao fazer logon. Você pode fazer muitas coisas através dele, mas um exemplo de arquivo funcional é:
net use H: /HOME
net use x: \\gdh\arquivos /yes
net time \\gdh /set /yes
Este script faz com que a pasta home de cada usuário (compartilhada pelo Samba através da seção "homes") seja automaticamente mapeada como a unidade "H:" no cliente, o que pode ser bastante útil para backups por exemplo. Naturalmente, cada usuário tem acesso apenas a seu próprio home.
A segunda linha é um exemplo de como fazer com que determinados compartilhamentos do servidor sejam mapeados no cliente. O "net use x: \\gdh\arquivos /yes" faz com que o compartilhamento "arquivos" (que precisaria ser configurado no smb.conf) seja mapeado como o drive "X:" nos clientes. A terceira linha sincroniza o relógio do cliente com o do servidor.
Lembre-se que o "gdh" dentro do netlogon.bat deve ser substituído pelo nome do seu servidor Samba, configurado na opção "netbios name =" do smb.conf.
Mais uma configuração útil (porém opcional) é fazer com que o servidor armazene os arquivos e configurações do usuário (recurso chamado Roaming Profiles), fornecendo-os à estação no momento em que o usuário faz logon. Isto permite que o usuário possa trabalhar em outras máquinas da rede e faz com que seus arquivos de trabalho sejam armazenados no servidor, diminuindo a possibilidade de perda de dados.
Por outro lado, isto faz com que seja consumido mais espaço de armazenamento do servidor e aumenta o tráfego da rede, já que os arquivos precisam ser transferidos para a estação a cada logon. Isto pode tornar-se um problema caso os usuários da rede tenham o hábito de salvar muitos arquivos grandes na área de trabalho.
Note que o servidor não armazena todos os arquivos do usuário, apenas as configurações, entradas do menu iniciar, cookies, bookmarks e arquivos temporários do IE e o conteúdo das pastas Desktop, Modelos e Meus Documentos.
Para ativar o suporte no Samba, adicione as duas linhas abaixo no final da seção "global" do smb.conf (abaixo da linha "logon script = netlogon.bat"):
logon home = \\%L\%U\.profiles
logon path = \\%L\profiles\%U
Adicione também um novo compartilhamento, adicionando as linhas abaixo no final do arquivo:
[profiles]
path = /var/profiles
writeable = Yes
browseable = No
create mask = 0600
directory mask = 0700
Crie a pasta "/var/profiles", com permissão de escrita para todos os usuários:
# mkdir /var/profiles
# chmod 1777 /var/profiles
Cada usuário passa a ter uma pasta pessoal dentro da pasta ("/var/profiles/joao" por exemplo) onde as configurações são salvas. Apesar das permissões locais da pasta permitirem que qualquer usuário a acesse, o Samba se encarrega de permitir que cada usuário remoto tenha acesso apenas ao seu próprio profile.
As estações Windows 2000 e Windows XP utilizam os perfis móveis automaticamente quando o recurso está disponível no servidor Samba. Você pode verificar a configuração e, caso desejado, desativar o uso do perfil móvel no cliente no "Meu Computador > Propriedades > Perfis de Usuário > Alterar tipo".
Neste ponto a configuração do servidor Samba está pronta. Falta apenas configurar os clientes Windows para efetuarem logon no domínio.
Nem todas as versões do Windows suportam este recurso. Como controladores de domínio são usados principalmente em redes de médio ou grande porte em empresas, a Microsoft não inclui suporte no Windows XP Home e no XP Starter (também chamado jocosamente de "Miserable Edition"), de forma a pressionar as empresas a comprarem o XP Professional, que é mais caro.
A configuração muda de acordo com a versão do Windows:
- No Windows 2000, acesse o "Meu Computador > Propriedades > Identificação de rede > Propriedades". Coloque aqui o nome do computador (que precisa ser um dos logins de máquinas adicionados na configuração do Samba) e o nome do Domínio, que é definido na opção " workgroup =" do smb.conf. Para ter acesso a esta opção você deve estar logado como administrador:
Na tela de identificação que será aberta a seguir, logue-se como "root", com a senha definida no Samba. É normal que a conexão inicial demore dois ou três minutos. Se tudo der certo, você é saudado com uma mensagem como a abaixo:
É necessário identificar-se como root ao fazer a configuração inicial, para que seja criada a relação de confiança entre o servidor e o cliente. A partir daí aparece a opção opção "Efetuar logon em: DOMINIo" na tela de login, permitindo que o usuário logue-se usando qualquer uma das contas cadastradas no servidor. Continua disponível também a opção de fazer um login local.
- No Windows 98 ou ME: Comece logando-se na rede (na tela de login aberta na inicialização) com o mesmo usuário e senha que será usado para fazer logon no domínio. Acesse agora o "Painel de Controle > Redes > Cliente para redes Microsoft > Propriedades". Marque a opção "Efetuar Logon num domínio NT", informe o nome do domínio e marque a opção "Efetuar logon e restaurar conexões". Ao terminar, ainda é preciso fornecer o CD de instalação e reiniciar a máquina.
Note que as máquinas com o Windows 98/ME não são compatíveis com todos os recursos do domínio, elas acessam o domínio dentro de uma espécie de modo de compatibilidade.
- No Windows XP Professional o procedimento é um pouco mais complicado. Comece copiando o arquivo "/usr/share/doc/samba-doc/registry/WinXP_SignOrSeal.reg" (do servidor), que fica disponível ao instalar o pacote "samba-doc". Esta é uma chave de registro que precisa ser instalada no cliente.
Acesse agora as propriedades do "Meu Computador" e na aba "Nome do Computador" clique no botão "ID de rede". Será aberto um Wizard que coleta o nome do domínio, nome da máquina e login de usuário. Lembre-se que é necessário efetuar o primeiro logon como root.
Se não der certo da primeira vez, acesse o "Painel de controle > Ferramentas administrativas > Diretiva de segurança local > Diretivas locais > Opções de segurança" e desative as seguintes opções:
* Membro do domínio: criptografar ou assinar digitalmente os dados de canal seguro (sempre)
* Membro do domínio: desativar alterações de senha de conta da máquina
* Membro do domínio: requer uma chave de sessão de alta segurança (Windows 2000 ou posterior)
Para confirmar se os clientes estão realmente efetuando logon no servidor, use o comando "smbstatus" (no servidor). Ele retorna uma lista dos usuários e máquina logadas, como em:
Samba version 3.0.14a-Debian
PID Username Group Machine
-----------------------------------------------------
4363 joao joao athenas (192.168.o.34)
Service pid machine Connected at
-----------------------------------------------------
joao 4363 athenas Sat Jul 9 10:37:09 2005
-----------------------------------------------------
Aki deu certo, então aí tbm vai dar.