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

Configuração em Domínio

editar

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

editar

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

editar

É 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

editar

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

editar

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:
     ; Identificação da máquina e domínio
     netbios name = gleydson
     workgroup = focalinux

     ;níveis de acesso e funções do servidor
     security = user
     domain master = yes
     prefered master = yes
     local master = yes

     ; senhas criptografadas
     encrypt passwords = yes
     smb passwd file = /etc/samba/smbpasswd.db

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

editar

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

editar

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:
     useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null master$

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:
     smbpasswd -m -a master

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

editar

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

     add user script = useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null %u

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

editar

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:

     [global]
     ...
     admin users = gleydson
     ou
     domain admin group = @admins gleydson

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

editar

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:

     [global]
     domain logons = yes
     logon script = logon.cmd

     [netlogon]
         path = /pub/samba/netlogon
         read only = yes
         write list = ntadmin

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:

     @echo off
     cls
     rem Logon Script desenvolvido por Gleydson Mazioli
     rem da Silva como modelo para o guia Foca GNU/Linux
     rem
     rem Este script pode ser utilizado para fins didáticos
     rem e distribuído livremente de acordo com os termos
     rem da GPL
     rem
     echo "Aguarde enquanto sua máquina efetua"
     echo "o logon na rede do domínio focalinux."
     rem
     if %OS%==Windows_NT goto NT-2000
     rem
     echo "--------------------------------"
     echo "SO: %OS%"
     echo "Usuário: %USERNAME%"
     echo "Grupo de Trabalho: %LANGROUP%"
     echo "Servidor: %DOMINIO%"
     echo "--------------------------------"
     echo "Recuperando compartilhamentos"
     rem mapeia o compartilhamento publico definido no servidor
     net use e: \\gleydson\publico
     echo "Sincronizando data/hora"
     rem sincroniza a data/hora com o servidor
     net time \\gleydson /set /yes
     goto fim
     rem
     rem
     :NT-2000
     echo "--------------------------------"
     echo "SO: %OS%"
     echo "Usuário: %USERNAME%"
     echo "Windows: %windir%"
     echo "Logon de domínio: %LOGONSERVER%"
     echo "--------------------------------"
     echo "Recuperando compartilhamentos"
     net use e: \\gleydson\publico /persistent:yes
     echo "Sincronizando data/hora"
     net time \\gleydson /set /yes
     rem
     rem
     goto fim
     rem
     :fim

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

editar

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:

     [global]
     security = user
     encrypt passwords = yes
     domain logons = yes
     logon drive = H:
     logon path = \\%N\profilesNT\%u
     logon home  = \\%N\profiles\%u
     preserve case = yes
     short preserve case = yes
     case sensitive = no

     [profiles]
         path = /pub/profiles
         read only = no
         create mask = 0600
         directory mask = 0700

     [profilesNT]
         path = /pub/profilesNT
         read only = no
         create mask = 0600
         directory mask = 0700

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

editar

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. \