Mapeamento de usuários/grupos em clientes

O mapeamento de usuários do servidor remoto com a máquina local é usado quando você deseja controlar o acesso aos arquivos/diretórios a nível de usuário. No Windows isto permite que cada arquivo/diretório tenha o acesso leitura/gravação somente para os usuários definidos e autenticados no controlador de domínio. No Linux as permissões de arquivos e diretórios podem ser definidas para o usuário do PDC, garantindo o mesmo nível de controle de acesso.

Esta seção explica como configurar o mapeamento de UID/GID entre o servidor PDC SAMBA e seus clientes NetBIOS Windows e Linux.

Mapeamento de usuários/grupos domínio em Windows

Para o Windows utilizar os usuários remotos do servidor para fazer seu controle de acesso por nível de usuário, siga os seguintes passos:

Windows 9X

Entre no Painel de Controle/Propriedades de Rede e clique na tab Controle de Acesso. Marque a opção Controle de acesso a nível de usuário e coloque o nome da máquina PDC na caixa de diálogo de onde os usuários/grupos serão obtidos. Você também pode colocar o nome do grupo de trabalho, neste caso a máquina fará uma busca pelo PDC ou outra máquina de onde pode obter os nomes de usuários/grupos.

OBS: Para fazer isto, você deverá estar autenticado no domínio.

Mapeamento de usuários/grupos domínio em Linux

A associação de UIDs de usuários de um domínio com usuários locais no Linux é feita pelo programa winbind. Ele utiliza o mecanismo nsswitch para obter outras fontes de dados de usuários e os associa nas ferramentas de gerenciamento de contas existentes no sistema. Siga estes passos para fazer sua instalação e configuração do Winbind em um servidor Linux:

  • Instale o programa winbind: apt-get install winbind.

  • Modifique o arquivo smb.conf adicionando as seguintes linhas na seção [global]:

    winbind separator = +
    winbind cache time = 30
    winbind uid = 10000-15000
    winbind gid = 10000-12000
    winbind enum users = yes
    winbind enum groups = yes
    template homedir = /home/winbind/%D/%U
    template shell = /bin/false
    

    Onde

    winbind separator

    Separador usado para separar o nome dos grupos do nome de domínio. Este parâmetro somente tem sentido quando usado em conjunto com um PDC Windows ou quando os módulos pam_winbind.so e nss_winbind.so estão sendo utilizados.

    winbind cache time

    Define a quantidade de tempo em segundos que um nome/grupo permanecerá no cache local para não ser feita uma nova consulta no servidor PDC.

    winbind uid

    Especifica o intervalo que será usado para mapear os nomes de usuários remotos como UIDs locais. Você precisará ter certeza que nenhum UID nesse intervalo é usado no sistema, como pelo LDAP, NIS ou usuários normais. Por padrão, os IDS de usuários normais na maioria dos sistemas Linux, começam por 1000. No exemplo serão usados os UIDs de 10000 a 15000 para mapeamento e UIDs dos usuários do domínio para usuários locais.

    winbind gid

    Especifica o intervalo de GIDs que será usado para mapear os nomes de grupos remotos do domínio como GIDs locais. Como no parâmetro winbind uid, você deverá ter certeza que esta faixa de GIDs não está sendo usada em seu sistema.

    OBS: Atualmente SAMBA não possui suporte a grupos globais, apenas para usuários globais, desta forma os grupos da máquina remota não serão trazidos para o sistema. Uma forma de contornar isto, é utilizando o LDAP ou o NIS no PDC e nos clientes Linux.

    winbind enum users

    Permite enumerar usuários do winbind para retornarem dados quando solicitados. A não ser que possua uma instalação parecida em todas as máquinas (como com o uso de LDAP e NIS) responda "yes" para não ter problemas.

    winbind enum groups

    Permite enumerar grupos do winbind para retornarem dados quando solicitados. A não ser que possua uma instalação parecida em todas as máquinas (como com o uso de LDAP e NIS) responda "yes" para não ter problemas.

    template homedir

    Quando o sistema cliente for um Windows NT ou baseado, este diretório será retornado como diretório de usuário para o sistema. O parâmetro %D será substituído pelo nome do domínio e %U pelo nome de usuário durante a conexão.

    template shell

    Este será o shell enviado para máquinas NT ou baseadas nele como shell usado para login. O valor usado foi /bin/false pois desabilita os logons, mas você poderá usar /bin/sh (ou algum outro shell) para efetuar conexões do comando net ou outras ferramentas NetBEUI ao servidor.

  • Reinicie o servidor SAMBA

  • Edite o arquivo /etc/nsswitch.conf alterando a ordem de pesquisa de nomes de usuários e grupos do sistema local para a seguinte:

    passwd:         files winbind
    group:          files winbind
    shadow:         compat
    
  • Agora, inicie o daemon winbind local com o comando: /etc/init.d/winbind restart.

  • Entre no domínio com o comando: smbpasswd -j domínio -r nome_do_PDC -U usuario (veja “Linux” para aprender como entrar no domínio em caso de dúvidas).

  • Agora faça o teste para obter a listagem dos grupos e usuários do domínio do PDC digitando:

    wbinfo -u
    wbinfo -g
    getent passwd
    getent group
    

    Caso isto não aconteça, revise suas configurações e veja os logs procurando por erros quando o winbind tenta obter a lista de usuários/grupos do domínio.

Agora você deve ser capaz de criar diretórios/arquivos locais usando os nomes de usuários/grupos do domínio. Lembre-se de reiniciar sempre o winbind quando reiniciar o SAMBA por alguma modificação for feita (ao mesmo que saiba que não afeta o winbind), assim como entrar novamente no domínio, caso contrário o mapeamento deixará de funcionar.

OBS: Atualmente, o winbind não oferece suporte a restrições por data/hora de logon para estações de trabalho. Isto deverá ser implementado em uma futura versão