Configurando um servidor PDC para sua rede Windows, no FreeBSD, usando o Samba.
Gente esse tutorial foi desenvolvido pelo
Foi novamente o Capriotti que veio fazer um aparte.
Tomei a liberdade de publicar um tutorial sobre Samba como PDC em FreeBSD, devido a uma demanda relativamente alta na lista, e uma falta de documentação específica para FreeBSD na rede.
Eu parto do pre suposto que você já sabe configurar o Samba em modo workgroup, pois muitas coisas são iguais.
Também assumo que seu Samba já está instalado e que você o testou pelo menos com o utilitário
smbclient no shell do seu servidor.
Esta é uma opção avançada, e como tal, não vou ficar me apegando ao básico, ok ?
As versões do Samba que foram testadas foram 2.2.3a (com alguns bugs) e 2.2.4_1. Em ambos os casos, com pacotes pré-compilados (tgz).
Em princípio
Bom, é sempre bom etender como as coisas se passam na cabeça da Microsoft, pois eles é que são os donos da bola.
Não que faça o que é o melhor, mas definem como o padrão se comporta.
Entendendo o que é um DOMÍNIO na concepção da Microsoft:
Domínio é um conjunto de usuários conhecidos (cadastrados) que podem estar utilizando várias máquinas, em vários locais diferentes.
Daí vai que usuário tem que ter cadastro e podem ter scripts de logon.
Acontece que máquinas (computadores) também precisam de cadastro para funcionar em domínio. E podem ter um script para eles também !
O que acontece é que máquinas Windows 9x (e possivelmente ME e XP home também) não funcionam 100% no modo domínio ! Mas essas máquinas são TOLERADAS nos domínios, como se estivessem em um modo de compatibilidade. Isso tudo porque elas não usam de um identificador que máquinas NT workstation, NT Server, 2000 Professional e 2000 Server (e possivelmente os similares XP) usam: o
NOME da máquina.
Em verdade um computador funcionando como PDC nada mais faz do que controlar uma lista de nomes de máquinas e usuários.
Contas de usuários são chamados de "
contas de usuários " (dããã), e contas de máquinas são chamadas de "
trusted accounts", "
trusted machine" ou "
trustee ".
Quando um usuário, utilizando de uma máquina com
sistema operacional sério (em se tratando de Microsoft esses são NT e 2000
não home, ok ?) tenta fazer o seu logon, o PDC verifica em sua base de dados se a conta do usuário existe, e se a máquina dele está presente no banco de dados de máquinas participantes do domínio.
Isto posto, estamos prontos para discutir o PDC em Samba, no FreeBSD !
Cadastrando usuários
Para começar a bagunçar a vida de quem está acostumado a usar o Samba em modo WORKGROUP, o modo de domínio exige que se usem as senhas criptografadas. Não que a criptografia usada pela Microsoft valha alguma coisa, mas temos que lembrar que o Samba precisa seguir o padrão Microsoft se ele tem que falar com outros servidores e estações de trabalho.
Portanto, não adianta ser mais realista que o rei. A criptografia é
Microsoft-compliant mesmo.
Tudo isso para dizer que você vai precisar de:
1) Uusários cadastrados no sistema com o adduser (ou vipw ou usando o /stand/sysinstall); O que imoporta é que o
username esteja presente no arquivo de usuário do FreeBSD. Cabe aqui comentar que esses usuários podem ou não ter acesso a outros recursos nesse servidor (como WEB, FTP, shell, etc). A senha de acesso a esses serviços pode ser diferente da senha do Samba. Veja o próximo passo.
2) Criar as senhas de acesso do usuário ao domíio usando o comando
smbpasswd -a username
Depois de informar a senha, e confirmá-la, o usuáio já tem acesso ao Samba.
Isso gera a tal da senha criptografada em /usr/local/private/smbpwaasd
Não esqueça de fazer isso para o
root também, ok ? Vai ser necessário.
3) Criara as contas "Trustee" no sistema, o que no FreeBSD é um capítulo à parte, tratado a seguir, em tópico especial e clima de "gala".
Cadastrando máquinas
Bem, uma conta de máquina não é muito diferente de uma conta de usuário. Apenas um "pequeno" detalhe: O nome da conta tem que ter um "$" no final, o que complica completamente a história, pois no FreeBSD esse caracter não é aceito normalmente como parte de uma
username. Minha sugestão é que se siga o seguinte padrão:
Suponha que você tem um computador que você quer adicionar no domínio que tem o
nome NETBIOS de COMP1. O nome da conta dele, portanto deveria ser
comp1$. Sim em minúsculas, e com o $ no final.
Para fazer isso acrescente uma conta ao sistema, da maneira que você preferir, com o nome de comp1.Garanta que esse usuário não vai ter shell, não vai ter diretório home, e vai ter senha desabilitada. (veja a seguir). Eu uso o
adduser para acrescentar meus usuários.
Para você ter uma conta de usuário com o nome comp1$ você vai ter que usar o
vipw e alterar o arquivo na mão.
Dica !!!! Tem que ser o
vipw ! não simplesmente usar o
vi para alterar o /etc/passwd !!!!! O
vipw atualiza a base de dados do sistema, e não apenas o arquivo texto que você vê na tela !
Tipicamente uma entrada de uma "trusted machine" no /etc/passwd tem essa cara:
comp1$:*:5000:5001::0:0:Trusted Machine:/dev/null:/sbin/nologin
Você altera o nome, colocando o $ no final do username, certifica-se que o * está logo após o username (depois do : ) para desabilitar senhas. Os números 5000 e 5001 referem-se a UID e GID (números sequenciais de usuário e grupo) e deveriam ser atribuídos automaticamente, durante a criação da conta. /dev/null se refere ao diretório home, e por fim a óbvia negação do direito de login no sistema.
Isso finaliza a tragédia grega do cadastro da máquina no banco de dados de usuários do FreeBSD. Claro qeu alguém com mais de 10 máquinas na rede vai querer alterar o script do addueser para ele passar a aceitar o $ como parte do nome.
Mas até aqui, nada é relativo ao Samba... Tudo foi FreeBSD.
Agora é o Samba que pede passagem.
Precisamos cadastrar a máquina NT/2000 no domínio; Para isso basta o comando
smbpasswd -a -m comp1
(SEM o $ no final, e com letras minúsculas).
isso também gera uma entrada em /usr/local/private/smbpwaasd
Com isso o computador já vai ser conhecido no domínio, mas ainda não vai ter acesso a ele. Ele precisa ser oficialmente "acrescentado", e isso é feito no próprio Windows, como vamos ver logo mais.
Finalmente o smb.conf
Para fazer todo esse circo funcionar, o meu smb.conf acabou ficando assim:
[global]
netbios name = VOICE
; muito embora esteja escrito "workgroup", é o nome do seu
; domínio mesmo.
workgroup = TABAJARACORP
; esta informação eu pastei um pouco para conseguir. Parece ser
; vital para o sucesso da operação que um dos usuário de
; administração seja o root.
admin users = jose root martin Administrator administrator
; A próxima linha ainda está em testes. Eu deixei, só por via das
; dúvidas.
Domain Admin Group = @wheel
; Eu alterei o local e o nome dos arquivos de log para facilitar
; a vida ! Veja o último share e você vai entender como nos
; economiza tempo !
log file = /var/sambalog/log.%m.doc
; Vamos Garantir que esta máquina vai ser a "preferida"
; nas eleições de controladores
; os level : Quanto menor, melhor ! Mais prioritária sua máquina
; vai ser em uma eleição para PDC (sim, vários servidores podem
; brigar para ser PDC em uma rede).
os level = 31
preferred master = yes
domain master = yes
local master = yes
; security settings (tem que ser security = user para ser
; PDC)
security = user
; Senha sempre criptografada para um PDC. Esqueça clear
; text...
; você não está mais usando workgroup ! Agora a coisa é séria !
;
encrypt passwords = yes
; Claro que temos que explicitar que vamos trabalhar em
; domínio.
domain logons = yes
; onde vão os profiles de usuários ? o "profiles" desta linha se
; refere ao share [profile] ali embaixo; LEIA os comentários
; sobre ele.
logon path = \\%L\profiles\%U
;Não sei até que ponto isso é necessário
; deixei ái para testar mais tarde.
; Fato: não vi nenhum disco H: na máquina cliente.
logon drive = H:
logon home = \\homeserver\%u
; Especificação de script de logon genérico. Dispensável.
; this is a relative **DOS** path to the [netlogon] share
logon script = /usr/local/samba/scripts/logon.cmd
; Indispensável para PDC, segundo alguma documentação que eu vi.
[netlogon]
; Inclui as três linhas seguintes a partir de um exemplo em
; uma lista de discussão, mas até agora não vi isso funcionar.
; Acho que pode ser deixado de fora.
comment = On the fly creation off Logon script
root preexec = /usr/local/samba/lib/netlogon/logonscript.pl %U %M %m
root postexec = /usr/local/samba/lib/netlogon/logoutscript.pl %U %M %m
; Parece incrível, mas esse diretório está vazio até hoje.
; E foram dias de briga !
path = /usr/local/samba/lib/netlogon
read only = yes
write list = @samba, @wheel
public = no
writeable = yes
browsable = no
force user = root
force group = wheel
; share for storing user profiles - Este é uma outra história !
; O windows parece gostar muito deste share. Ele grava TODAS as
; configurações do usuário
;(especialemnte Win2000) aí !
; Cor de tela de fundo, preferências, arquivos temporários, papel
; de parede, arquivos
; gravados no desktop, TUDO !!!
;
; O meu ficou com 11 MB !
; Mas já vi configurações sem isso, e parece funcionar, pois cada
; máquina trabalha com sua cópia local, sem gerar tráfego na rede.
; Isso precisa ser configurado na máquina do cliente ! (Talvez seja
; interessante estudar "policies").
;
;A Microsoft fez isso pensando no conceito de "Usuários móveis",
; ou "roaming", onde, em qquer máquina que o usuário se logar vá
; reproduzir sua interface normal de trabalho.
;
; CLAAAAAAAAAAAAARO que o pentium 133 do escritório via aguentar
; o mesmo tranco que o meu notebook P3 933 com 256 de ram que eu
; uso em campo !!!
;
;Vai ser a primeira coisa que eu vou desabilitar quando puder.
;
;Gera um tráfego louco na rede sempre que uma máquina liga - e lê
; as configurações - e desliga - gravando TUDO !
;
;Usuário tem que ter direito de escrita !
[profiles]
path = /export/smb/ntprofile
writeable = yes
browsable = no
guest ok = yes
; Verificar esse "write list"; acho que está errado ;
;Os perfis são particulares !
;Só o usuário tem que ter acesso !
write list = @samba,root
; Daqui para baixo não é nada necessário, mas pode ser MUITO
; útil ter esses shares no momento de um setup.
[samba_docs]
path = /usr/local/share/doc/samba/htmldocs
public = yes
writable = no
printable = no
[swat_docs]
path = /usr/local/share/swat/help
public = yes
writable = no
printable = no
[samba_log]
path = /var/sambalog
public = yes
writable = no
printable = no
; Este share é fantástico ! Não tem que ficar editando
; arquivo de log a cada 2 minutos em um shell !
; É só clicar e pronto !
Finalmente, liberando o acesso da "trusted account" ao seu PDC
Você dever ter parado e reiniciado o serviço do samba antes de fazer os seguintes passos. Deve também, preferencialmente tar reinicializado sua máquina Windows e não ter feito nenhum acesso à rede. Certifique-se que sua máquina não está tentando capturar nenhum recurso (share) automaticamente quando inicializa, ok ?
Quando se está na estação Win2000, e a quer incluir no domínio, vai aparecer uma janela pedindo username e password de um usuário com
direitos de administrador.
Tentei usar os usuários do grupo wheel, e nada. Retornava algum erro louco, e algumas vezes o processo do Samba abrtava com erro 6 ou 11, com mensagem INTERNAL ERROR nos logs, mas sem core dump (provável bug do 2.2.3a).
Quando passei a usar o root, tudo funcionou ! Mas depois de ter definido o root como admin no smb.conf !
Troubleshooting no Windows
Ao tentar incluir sua máuina Windows no domínio, por favor, tenha certeza que você não tentou fazer nenhum acesso ao servidor em modo WORKGROUP, pois isso gera um erro de "conflito de credenciais".
Para resolver isso, sipesmente dê um logout no seu usuário e entre de novo, ou, em um prompt do "DOS" execute:
net session /d
Comentário final sobre PDC e BDC.
Na arquitetura Microsoftiana, o BDC (backup domain controller) pode ser transfomado em PDC. Só que não pode voltar atrás.
Estou propenso a acreditar que no FreeBSD e demais arquiteturas usando Samba essa "trava" não exista, pois os arquivos de usuários do sistema podem simplesmente ser copiados de uma máquina para outra, e arquivos de configuração podem ser alterados à vontade.
Testem essa flexibilidade e nos dêm um retorno.
Tenham um bom uso.