# Guia do Linux/Avançado/SAMBA/Configuração em Domínio
## Configuração em Domínio

Esta seção descreve todos os passos necessários para configurar um servidor de domínio PDC (Primary Domain Control) com perfis móveis e outros recursos que tornam úteis e seguras a administração de uma rede NetBEUI.

### Uma breve introdução a um Domínio de rede

Um domínio de rede consiste em uma máquina central chamada de servidor, que mantém o controle de todas as contas de usuários/grupos e permissões para acesso a rede. O acesso desta forma é centralizado, como vantagem disto você pode usar o nível de acesso por usuários nas máquinas, definindo quais usuários ou grupos terão acesso de leitura/gravação, além de tudo que é feito gera uma cópia no servidor. É permitido criar scripts de logon, assim comandos programados pelo administrador serão executados nas máquinas clientes durante o logon no domínio (veja [#s-s-samba-dom-logonscripts Criando Scripts de logon, Seção 18.7.7]). O nome da máquina é protegido contra hijacking através de contas de máquinas que fazem parte do domínio (veja [#s-s-samba-dom-contasmac Contas de máquinas de domínio, Seção 18.7.5]). Isto só é possível em clientes Linux, Windows NT, Windows 2000 e Windows XP. Você poderá usar perfis móveis, copiando todas as personalizações do seu desktop para qualquer máquina na rede que você faça o logon. Para o administrador, ele poderá definir políticas com o Poledit e outros programas que serão salvas junto com o perfil do usuário, valendo para qualquer máquina que ele se autentique na rede (veja [#s-s-samba-dom-logonscripts Criando Scripts de logon, Seção 18.7.7]). Se você deseja iniciar logo a configuração do seu domínio, siga até [#s-s-samba-dom-config Configurando um servidor PDC no SAMBA, Seção 18.7.4].

### Local Master Browser

É a máquina que ganhou a eleição no segmento local de rede (veja [#s-s-samba-s-oslevel Níveis de sistema para eleição de rede, Seção 18.2.12]). Logo que é declarada o local master browser, ela começa a receber via broadcasting a lista de recursos compartilhados por cada máquina para montar a lista principal que será retornada para outras máquinas do grupo de trabalho ou outras subredes que solicite os recursos compartilhados por aquele grupo. Uma nova eleição é feita a cada 36 minutos ou quando a máquina escolhida é desligada.

### Domain Master Browser

Quando o local master browse é eleito no segmento de rede, uma consulta é feita ao servidor WINS para saber quem é o Domain Master Browse da rede para enviar a lista de compartilhamentos. A máquina escolhida como Local Master Browse envia pacotes para a porta UDP 138 do Domain Master e este responde pedindo a lista de todos os nomes de máquinas que o local master conhece, e também o registra como local master para aquele segmento de rede. Caso tenha configurado sua máquina para ser o domain master browser da rede (também chamado de controlador principal de domínio ou PDC), ela tentará se tornar a máquina que terá a lista completa de recursos enviados pelos locais master browsers de cada segmento de rede. Um PDC também é o local master browse de seu próprio segmento de rede. É possível ter mais de um domain master browse, desde que cada um controle seu próprio domínio, mas não é possível ter 2 domain master browsers em um mesmo domínio. Caso utilize um servidor WINS em sua rede, o PDC fará consultas constantes em sua base de dados para obter a lista de domínios registrados. O domínio é identificado pelo caracter 1b na rede (veja [#s-s-samba-c-workgroup-linux-nmblookup nmblookup, Seção 18.14.2.9.3]). OBS: O Windows NT configurado como PDC sempre tenta se tornar o domain master browser em seu grupo de trabalho. Não sendo possível retirar o Windows NT configurado como PDC do domínio (por alguma outra razão), a única forma será deixar ele ser o domain master browser. Se este for o caso, você poderá continuar lendo este documento para aprender mais sobre NetBIOS e talvez ainda mudar de idéia sobre manter o NT na rede após ver as características do SAMBA ;-)

### Configurando um servidor PDC no SAMBA

Esta é a parte interessante do guia, a prática. Para os administradores que conhecem através da experiência própria os problemas e definições do SAMBA, grande parte do guia foi apenas uma revisão (por favor, se faltou algo que acha interessante, me notifiquem que incluirei na próxima versão e colocarei uma nota no lançamento e na página com os devidos créditos :-)) Para configurar uma máquina para ser o PDC (Controladora Principal de Domínio ou Primary Domain Control), siga esta sequência:
** Habilite o suporte a senhas criptografadas. Caso ainda não tenha feito isso, leia a seção [#s-s-samba-senhas-crypto Ativando o suporte a senhas criptografadas, Seção 18.8].
** Na seção [global], insira/modifique os seguintes parâmetros:
Onde os parâmetros significam:
*** netbios name = gleydson - Nome do computador. Este também será o nome usado pelas outras máquinas clientes quando for configurar o PDC (controlador de domínio).
*** workgroup = focalinux - Nome do domínio que está criando. Todas as máquinas que pertencerem a este domínio, terão o nível de acesso definido pelo PDC. Note que o parâmetro workgroup também é usado ao especificar o nome do grupo de trabalho quando se é usado a configuração grupo de trabalho ([#s-s-samba-wrkgrp Configuração em Grupo de Trabalho, Seção 18.4]).
*** security = user - Requerido para controle de acesso por domínio, já que é utilizado o controle de acesso local usando usuários e grupos locais.
*** domain master = yes - Especifica se está máquina está sendo configurada para ser o PDC da rede.
OBS: Por favor, certifique-se que não existe outro PDC no domínio. Veja [#s-s-samba-dom-dmbrowser Domain Master Browser, Seção 18.7.3]. prefered master = yes - Força uma eleição com algumas vantagens para seu servidor ser eleito sempre como o controlador de domínio. Isto garante que a máquina SAMBA sempre seja o PDC. Veja [#s-s-samba-s-global-browsing Navegação no servidor/tipo de servidor, Seção 18.2.8.6]. local master = yes - Define se a máquina será o controlador principal do grupo de trabalho local que ela pertence. Pronto, agora teste se existem erros em sua configuração executando o comando testparm ([#s-s-samba-s-testparm Buscando problemas na configuração, Seção 18.2.11]) e corrija-os se existir. Resta agora reiniciar o servidor nmbd para que todas as suas alterações tenham efeito. Para adicionar seus clientes a um domínio, veja [#s-s-samba-dom-contasmac Contas de máquinas de domínio, Seção 18.7.5] e [#s-s-samba-c-dominio Configurando clientes em Domínio, Seção 18.14.3].

### Contas de máquinas de domínio

Uma conta de máquina de domínio garante que nenhum outro computador possa utilizar o mesmo nome de uma máquina confiável e assim utilizar os compartilhamentos que ela tem permissão. Os clientes Windows NT, Windows XP e Windows 2000 precisam de uma conta de máquina para ter acesso ao domínio e seus recursos. A criação de uma conta de máquina é bastante semelhante a criação da conta de um usuário normal no domínio. Existe uma coisa que precisa sempre ter em mente quando estiver configurando uma conta de máquina de domínio: Quando você cria uma conta para a máquina, ela entra e altera sua senha no próximo logon usando um "segredo" entre ela e o PDC, este segredo a identifica sempre como dona daquele nome NetBIOS, ou seja, até o primeiro logon no NT, outra máquina com o mesmo nome NetBIOS poderá ser a dona do netbios naquele domínio caso faça o logon no domínio. A única forma de se evitar isto é logar imediatamente no domínio NT assim que criar as contas de máquinas. Existem duas formas para criação de contas de máquinas: manual e automática.

#### Criando contas de máquinas manualmente

Para criar uma conta de domínio para a máquina master, siga estes 2 passos:
* Crie uma conta de máquina no arquivo /etc/passwd:
O comando acima cria uma conta para a máquina master$ e torna ela parte do grupo domainmac. É necessário especificar o caracter $ após o nome da máquina para criar uma conta de máquina no domínio, caso contrário o próximo passo irá falhar. Acredito que nas próximas versões do SAMBA seja desnecessário o uso do arquivo /etc/passwd para a criação de contas de máquina.
* Crie uma conta de máquina no arquivo /etc/samba/smbpasswd:
Isto cria uma conta de máquina para o computador master no arquivo /etc/samba/smbpasswd. Note que a criação de uma conta de máquina é muito semelhante a criação de um usuário apenas precisa adicionar a opção -m. Quando for criar uma conta com o smbpasswd Não é necessário especificar $ no final do nome da máquina. O mais importante: Entre IMEDIATAMENTE no domínio após criar a conta de máquina usando a conta de administrador de domínio criada no SAMBA (veja [#s-s-samba-dom-admin Criando uma conta de administrador de domínio, Seção 18.7.6])! como a máquina ainda não se autenticou pela primeira vez, qualquer máquina que tenha o mesmo nome e entre no domínio, poderá alocar o nome recém criado. A única forma de resolver este problema, é apagando a conta de máquina e criando-a novamente no domínio. Siga os passos de acordo com o sistema operacional em [#s-s-samba-c-dominio Configurando clientes em Domínio, Seção 18.14.3] para colocar seus clientes em domínio. OBS1: Como segurança, recomendo desativar a conta de máquina no /etc/passwd usando o comando passwd -l conta. Esta conta NUNCA deverá ser usada para login, isto deixa nossa configuração um pouco mais restrita. OBS2: A localização do arquivo de senhas criptografadas do SAMBA pode ser modificado através da opção smb passwd file na seção [global] do arquivo smb.conf. OBS3: Os que tem experiência com NT e Windows 2000 devem ter notado que este método é semelhante ao do Server Manager das ferramentas de gerenciamentos de servidores existentes no Windows.

#### Criando contas de máquinas automaticamente

Através deste método, as máquinas clientes terão sua conta criada automaticamente assim que seja feita a entrada no domínio usando a conta do administrador de domínio no SAMBA. Este é o método recomendável de colocação de máquinas no domínio por ser mais prática ao invés do método manual. Note que normalmente isto funciona para o WinXP e Win2000 mas não funciona em redes com o NT4, devendo ser criadas contas de máquinas usando o método manual. Para fazer a configuração automática, coloque a seguinte linha no arquivo smb.conf na seção [global]:
Assim, a conta de máquina será automaticamente criada quando o administrador fizer sua configuração no domínio (veja [#s-s-samba-dom-admin Criando uma conta de administrador de domínio, Seção 18.7.6]). No SAMBA 3.0, a opção add machine script deverá ser usada no lugar de add user script para adicionar uma máquina no domínio.

### Criando uma conta de administrador de domínio

A conta de administrador do domínio é a conta que tem permissões para realizar operações de manutenção e administração de máquinas que compõem o domínio de rede. Com ela é possível, entre outras coisas, adicionar e remover máquina que compõem o domínio. Para especificar que contas de usuários do arquivo /etc/samba/smbpasswd que terão poderes administrativos, utilize a opção domain admin group ou admin users na seção [global] do arquivo /etc/samba/smb.conf. O parâmetro admin users permite que todas as operações realizadas pelo usuário sejam feitas com poderes de usuário root. Isto é necessário porque o arquivo smbpasswd (usado para ajustar as contas de máquinas) normalmente tem permissões de leitura/gravação somente para root. O domain admin group permite que usuários específicos ou usuários do grupo especificado sejam parte do grupo de administradores do domínio para adicionar máquinas, etc. Por exemplo, para tornar o usuário gleydson com privilégios para adicionar/remover máquinas no domínio:
Isto permite que o usuário gleydson possa adicionar/remover máquinas do domínio NT (veja [#s-s-samba-c-dominio Configurando clientes em Domínio, Seção 18.14.3]) entre outras tarefas. Por segurança, recomendo que coloque esta conta no invalid users de cada compartilhamento para que seja utilizada somente para fins de gerenciamento de máquinas no domínio, a menos que deseje ter acesso total aos compartilhamentos do servidor (nesse caso, tenha consciência do nível de acesso que esta conta possui e dos problemas que pode causar caso caia em mãos erradas). OBS1: Tenha SEMPRE bastante cuidado com quem dará poderes de administrador de domínio, pois toda sua rede poderá ficar vulnerável caso os cuidados de administração não estejam em boas mãos. OBS2: Em versões antigas do SAMBA, somente o usuário root tem poderes para adicionar máquinas no domínio usando o parâmetro domain admins group, devendo ser também adicionado no arquivo smbpasswd para que possa fazer isto e obviamente não deverá estar listado em invalid users. Mesmo assim, existem outras formas explicadas no guia de se contornar o risco causado pela liberação de acesso do usuário root.

### Criando Scripts de logon

Uma dos recursos mais úteis em um domínio é a possibilidade de se executar comandos nas máquinas cliente quando fazem o logon no domínio. Desta forma, é possível instalar programas, executar anti-vírus, mapear compartilhamentos automaticamente no clientes, etc. A programação de scripts de logon é feita usando a linguagem em lote do DOS, com possibilidades de usar variáveis de ambiente, cópia de arquivos entre servidores, etc. O guia não irá abordar a programação em linguagem de lote, mas isto é simples de se encontrar na internet e mesmo a documentação que acompanha o próprio Windows é útil. Para habilitar o recurso de scripts de logon na máquina, adicione os seguintes parâmetros no arquivo smb.conf:
Segue a descrição de cada parâmetro com detalhes importantes para a configuração e funcionamento do recurso de logon:
** domain logons - Deve ser definido para yes para ativar o recurso de logon scripts do SAMBA.
** logon drive é a unidade de disco que terá o homedir do usuário mapeado. Isto somente é usado por máquinas NT/2000/XP.
** logon script - Define qual é o script que será executado na máquina cliente quando fizer o logon. Ele deve ser gravado no diretório especificado pela opção path do compartilhamento [netlogon] (/pub/samba/netlogon no exemplo). Os scripts de logon podem ser tanto em formato .bat ou .cmd. Se for programar um script universal, é recomendável o uso do formato .bat por ser compatível tanto com Win9X e WinNT.
Um detalhe que deve ser lembrado durante a programação do script de logon é que ele DEVE seguir o formato DOS, ou seja, ter os caracteres CR LF como finalizador de linhas. Para utilizar editores do UNIX para escrever este script, será necessário executar o programa flip (flip -m -b arquivo) ou unix2dos no arquivo para converte-lo em formato compatível com o DOS. Segue abaixo um exemplo de script de logon que detecta quando o cliente é Windows 95/NT, ajusta a hora com o servidor e mapeia 2 unidades de disco:
Note no exemplo acima que não pode haver linhas em branco, você deverá utilizar a palavra rem (comentário em arquivos em lote) em seu lugar. Note que existem diferenças entre o comando net do Windows 9x/ME e do NT, as variáveis também possuem um significado diferente entre estes 2 sistemas, isto explica a necessidade de se incluir um bloco separado detectando a existência de qual sistema está sendo efetuado o logon. A lista completa de variáveis disponíveis para cada sistema operacional pode ser obtida colocando-se set >c:\vars.txt que gravará uma lista de variáveis disponíveis durante o logon no arquivo c:\vars.txt da máquina cliente. OBS: Caso especifique um computador que contém o script de login, lembre-se de faze-lo sempre com \ ao invés de / para não ter incompatibilidade com o Windows 95/3.11. ATENÇÃO: Lembre-se que copiar e colar pode não funcionar para este script. Leia novamente esta seção do guia se estiver em dúvidas.

### Configurando perfis de usuários

Os profiles permitem que os clientes utilizem o mesmo perfil em qualquer máquina que ele se autentique na rede. Isto é feito após a autenticação copiando os arquivos que contém os dados de personalização de usuários (user.dat, NTuser.dat) para a máquina local. Este processo também inclui a cópia de papéis de parede, links da área de trabalho, cache do IE, etc. Para configurar o recurso de perfis móveis no domínio, é necessário adicionar os seguintes parâmetros no seu arquivo smb.conf:
Segue a descrição dos parâmetros de detalhes para seu funcionamento:
** O parâmetro domain logons = yes especifica que o servidor será usado para fazer logons no domínio. Quando este parâmetro é definido para yes, a máquina automaticamente tentará ser o PDC.
** logon path e logon home definem (respectivamente) o diretório de logon do /pub/profilesNT/usuario (NT) e /pub/profiles/usuario (Win95) respectivamente. Durante o logon, a variável %N será substituída pelo nome do servidor (ou servidor de diretórios, se for o caso) e a variável %u pelo nome do usuário.
O sistema operacional de origem é detectado no momento da conexão. Isto significa que o usuário poderá ter 2 profiles diferentes, de acordo com o tipo de sistema operacional cliente que estiver conectando.
** O diretório home do usuário será mapeado para a unidade H: (logon drive = h:). O parâmetro logon drive somente é usado pelo NT/2000/XP.
** As opções preserve case, short preserve case e case sensitive permite que os nomes dos arquivos/diretórios tenham as letras maiúsculas/minúsculas mantidas, isto é requerido para os profiles.
O compartilhamento dos 2 profiles pode ser feito sem tantos traumas, mas isto não será explicado profundamente no guia pois o procedimento segue o mesmo padrão do NT sendo bastante documentado na internet. Note que é possível definir um servidor separado para servir os profiles para um domínio modificando a variável %N para apontar direto para a máquina. Na máquina que armazenará os profiles, basta definir o nível de segurança por servidor (security = server) e o endereço IP do servidor de senhas (password server = IP). OBS1: Os perfis só funcionam caso o servidor de profiles contenha a opção security = user e encrypt passwords = yes ou security = server e password server = endereço_IP. Caso tenha problemas, verifique se uma destas alternativas está correta. OBS2: Quando utiliza o SAMBA com o Windows 2000 SP2, é necessário adicionar a opção nt acl support = no no compartilhamento [profiles], caso contrário, ele retornará um erro de acesso ao compartilhamento.

### Modificações de permissões de acesso pelos clientes do domínio

Um usuário do Windows NT (ou versões baseadas neste) pode modificar as permissões dos arquivos/diretórios que tem acesso através da caixa de diálogo de listas de acesso do NT, lembrando que estas permissões nunca substituirão as definidas pelo administrador local. A opção "nt acl support" deverá estar definida para "yes" na seção [global] do arquivo de configuração, caso contrário você não terá acesso para mudar as permissões através de caixas de diálogo do NT. \