Aprenda Linux, 302 (Ambientes Mistos): Winbind

Usando um controlador de domínio do Windows para gerenciamento de conta Linux

Se sua rede inclui um controlador de domínio (ou um computador Windows ou um servidor Samba), é possível usar seu banco de dados do usuário em vez de ou além de manter usuários de login local em um banco de dados de contas local do computador com Linux. Fazer isso exige o uso de um conjunto de ferramentas conhecido como Winbind. Esse conjunto de ferramentas pode ser útil até para computadores com Linux que não executam Samba para compartilhar arquivos ou impressoras; os usuários com contas de domínio do Windows podem efetuar login no console ou usar SSH para acessar recursos apenas do Linux, usar servidores de correio POP ou IMAP com autenticação de domínio do Windows, e assim por diante.

Roderick W. Smith, Consultant and author

Roderick Smith author photoRoderick W. Smith é consultor e autor de mais de doze livros sobre UNIX e Linux, incluindo The Definitive Guide to Samba 3, Linux in a Windows World, e Linux Professional Institute Certification Study Guide. Ele também é o autor do software de particionamento GPT fdisk. Atualmente, ele mora em Woonsocket, Rhode Island.



28/Nov/2011

Sobre esta série

Esta série de artigos ajuda você a saber mais sobre as tarefas de administração de sistemas Linux. Também é possível usar o material desses artigos para se preparar para os exames de certificação do Linux Professional Institute nível 3 (LPIC-3).

Consulte o developerWorks roadmap for LPIC-3 para ver uma descrição de cada artigo da série e um link para cada um desses artigos. O roteiro está em andamento e reflete os objetivos atuais (março de 2011) em relação aos exames LPIC-3. À medida que cada artigo é concluído, eles são adicionados ao roteiro.

Visão geral

Neste artigo, saiba mais sobre estes conceitos:

  • Instalação de Winbind
  • Configuração de Winbind

Este artigo ajuda a se preparar para o Objetivo 313.3 do Tópico 312 do exame de especialidade de Ambiente Misto (302) do Linux Professional Institute (LPI). O objetivo tem peso 2.


Pré-requisitos

Sobre o exame elegível LPI-302

O Linux Professional Institute Certification (LPIC) é como muitas outras certificações, pois também oferece certificações em níveis diferentes, e cada nível requer mais conhecimento e experiência que o anterior. O exame LPI-302 é um exame elegível de especialização no terceiro nível da hierarquia do LPIC e requer um nível avançado de conhecimento de administração de sistemas Linux.

Para obter a certificação LPIC nível 3 (LPIC-3), é necessário passar nos dois primeiros exames do primeiro nível (101 e 102), nos dois exames do segundo nível (201 e 202) e no exame principal do LPIC-3 (301). Depois de alcançar esse nível, é possível realizar os exames elegíveis de especialização, como o LPI-302.

Para aproveitar ao máximo os artigos desta série, é necessário ter um conhecimento avançado de Linux e um sistema Linux funcional, no qual seja possível praticar os comandos mencionados neste artigo. Especificamente, este artigo pressupõe que o leitor tenha conhecimento de trabalho das funções de linha de comando do Linux e, pelo menos, entendimento geral do propósito do Samba, conforme explicado em Aprenda Linux, 302 (Ambientes Mistos): Conceitos, bem como noções básicas de configuração de Samba, incluindo a configuração dele para uso em controlador de domínio. É necessário ter familiaridade com a estrutura geral do arquivo de configuração smb.conf. Também deve entender como servidores em geral são executados, incluindo uso de scripts de inicialização System V (SysV) e superservidores. Como questão prática, é preciso ter acesso a um domínio do Windows para utilizar as informações aqui apresentadas. (Pode-se usar um domínio gerenciado pelo Samba ou por um computador que execute o sistema operacional Windows Server.)


Entendendo o Winbind

Desenvolva seu próprio feed

É possível desenvolver um feed RSS, Atom ou HTML customizado para receber uma notificação sobre a inclusão de novos artigos ou a atualização do conteúdo. Acesse os feeds RSS do developerWorks . Selecione Linux como zona e Articles como tipo, e digite Linux Professional Institute como palavra-chave. Em seguida, escolha o tipo de feed preferencial.

Conforme descrito em Aprenda Linux, 302 (Ambientes Mistos): Funções do Samba e Aprenda Linux, 302 (Ambientes Mistos): Controle de Domínio, as redes Windows muitas vezes incluem um controlador de domínio, que é um computador que gerencia a autenticação para todos os computadores com Windows na rede. Essa configuração pode simplificar muito a vida em uma rede com muitos usuários e computadores, porque as informações das contas de usuário não precisam ser duplicadas (e mantidas) em diversos computadores. Em vez disso, todas as informações de conta de Windows são centralizadas em um único computador, permitindo que os administradores gerenciem as contas em um local e que os usuários alterem suas senhas uma vez para todos os computadores membros do domínio.

É possível configurar um servidor Samba para ser servidor membro de um domínio configurando várias opções. U m conjunto típico de opções globais para juntar um domínio talvez se pareça ao seguinte:

security = Domain
password server = CONTROL
domain logons = No
encrypt passwords = Yes

É possível usar security = ADS em vez de security = Domain se o controlador de domínio suportar os recursos de Microsoft Active Directory Domain Services. Também se deve juntar o servidor Samba ao domínio digitando net join member -U adminuser, onde adminuser é a conta administrativa de domínio. Consulte Aprenda Linux, 302 (Ambientes Mistos): Funções do Samba para obter uma descrição mais detalhada de como configurar o servidor Samba como membro de domínio.

Tudo isso é muito bom para um servidor Samba, mas é claro que o Samba é apenas um servidor que pode ser executado em um computador com Linux. Outros servidores, bem como serviços de login locais, poderiam, em princípio, se beneficiar de um controlador de domínio. Por exemplo, se alguns computadores de uma rede funcionam como estações de trabalho Linux ou se é executado um servidor de email POP (Post Office Protocol) em um computador com Linux, talvez seja bom que eles usem o controlador de domínio para autenticação. É aí que entra o Winbind; ele fornece a "cola" que permite que o Linux use contas de um domínio do Windows para tarefas de autenticação não do Samba.

Antes de configurar o Winbind, porém, é preciso conhecer suas limitações. Visto que a Microsoft projetou seus procedimentos de autenticação de domínio tendo em mente as necessidades do Windows, ele não dispõe de certos recursos de que o Linux precisa em suas contas, como ID do usuário estilo UNIX® (UID) e valores de ID do grupo (GID). Em vez disso, os domínios do Windows usam IDs de segurança, que não são diretamente mapeáveis em UIDs e GIDs do Linux. Da mesma forma, os controladores de domínio não armazenam informações do diretório inicial do UNIX/Linux. Assim, o Winbind deve criar algumas dessas informações de Linux localmente. Isso é suficiente para muitos propósitos, mas significa que dois computadores com Linux que usam o Winbind podem facilmente criar diferentes UIDs e GIDs para um único usuário. Esse fato poderia ter consequências negativas se esses computadores compartilham arquivos usando o Network File System (NFS), que depende de UIDs e GIDs correspondente entre todos os servidores. Nessas situações, pode ser melhor configurar um servidor LDAP (Lightweight Directory Access Protocol) para a rede e usar seu banco de dados de contas para as contas Linux e para as contas de domínio do Windows.

O Winbind depende de diversos elementos diferentes:

  • Opções específicas de Winbind em smb.conf
  • Opções de configuração para o subsistema PAM (Pluggable Authentication Modules), que é parte padrão de instalações modernas do Linux
  • Opções de configuração para o subsistema NSS (Net Service Switch), que é parte padrão de instalações modernas do Linux
  • O programa de servidor winbindd

Portanto, configurar o Winbind exige modificar cada uma dessas configurações. Não é preciso executar os programas do servidor Samba principal, smbd e nmbd, para usar o Winbind, mas talvez seja preciso instalar o servidor para obter todos os arquivos de suporte necessários. Pode ser necessário instalar um pacote de Winbind separado, em geral chamado winbind ou samba-winbind. Também pode ser necessário instalar um pacote chamado samba-winbind-clients. Confirme se sua instalação final inclui os arquivos /lib/security/pam_winbind.so e /lib/libnss_winbind.so.2.


Configurando as opções de Winbind em smb.conf

Para configurar o Winbind, primeiro configure o computador para juntar um domínio, como já descrito brevemente e em mais detalhes em Aprenda Linux, 302 (Ambientes Mistos): Funções do Samba . Daí, é preciso configurar várias opções do smb.conf relacionadas especificamente ao Winbind.

Explorando as opções do Winbind

As opções do smb.conf que talvez precisem ser configuradas incluem:

  • winbind separator. Em um domínio, os nomes de usuário do Windows incluem o nome de usuário e um nome de domínio, com um caractere que os separa. Essa opção define esse caractere. O padrão é uma barra invertida (\), mas um sinal de mais (+) é uma alternativa comum.
  • winbind cache time. O Winbind armazena em cache os dados de autenticação por determinado período que, por padrão, é de 300 segundos (5 minutos). Pode ser interessante reduzir esse valor ao testar a configuração do Winbind.
  • template shell. O shell padrão dos usuários é configurado usando essa opção. O valor padrão é /bin/false, que é adequado para sistemas que não suportam acesso a shell; mas se quiser que os usuários consigam efetuar login localmente ou por servidores como o shell seguro (SSH), essa opção deve ser configurada para /bin/bash ou outro shell legal do Linux.
  • template homedir. Deve-se configurar um diretório inicial padrão para os usuários. Em geral, usam-se uma ou mais variáveis do Samba, como %U para o nome de usuário e talvez %D para o nome de domínio. Esse valor padrão de parâmetro é /home/%D/%U.
  • winbind enum users. Essa opção de operadores booleanos ativa ou desativa o suporte a certas chamadas de sistema que permitem que os programas enumerem os usuários. O valor padrão é Yes, mas configurá-la como No pode melhorar o desempenho ao custo de comportamento estranho de alguns programas, como finger.
  • winbind enum groups. Essa opção funciona de maneira muito semelhante a winbind enum users, mas aplica-se a grupos em vez de a usuários.
  • winbind use default domain. Se essa opção for configurada para Yes, o Winbind descarta o componente de domínio dos nomes de usuário na maioria das operações, o que costuma ser desejável, porque encurta os nomes de usuário —por exemplo, de MYDOMAIN\rexx para rexx. Usar o valor padrão No faz sentido se sua rede inclui diversos domínios.
  • idmap uid. Deve-se especificar um conjunto de UIDs com essa opção, usando um travessão (-) como separador, como em 10000-20000. Confirme se o intervalo usado não se sobrepõe aos UIDs definidos localmente em uso no seu sistema.
  • idmap gid. Essa opção é muito semelhante a idmap uid, mas configura o intervalo de GIDs.

Examinando uma configuração de amostra

Como exemplo, considere a Listagem 1, que mostra um conjunto de opções de smb.conf que demonstra todas as opções anteriores.

Listagem 1. Um arquivo smb.conf de exemplo, demonstrando a configuração do Winbind
winbind separator = +
winbind cache time = 60
template shell = /bin/bash
template homedir = /home/%U
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
idmap uid = 10000-20000
idmap gid = 10000-20000

Naturalmente, é preciso customizar essas opções de acordo com as necessidades. Por exemplo, como já mencionado, o valor padrão de template shell provavelmente é adequado para servidores que não fornecem acesso a shell de login, como servidores de email ou servidores FTP.


Configurando PAM

Com a configuração do smb.conf pronta, é preciso passar para a configuração de PAM. Learn Linux, 302 (Mixed environments): Authentication and authorization apresentou o PAM, mas para as finalidades do Winbind queremos incluir o Winbind como método de autenticação para ferramentas não Samba em vez de autenticar os usuários de Samba usando o PAM. Fazer isso pode ser um pouco complicado, porque distribuições diferentes configuram o PAM de formas diferentes, de modo que a modificação que funciona perfeitamente em uma distribuição é um fracasso em outra.

Entendendo o PAM

O PAM é um conjunto de bibliotecas que podem ser usadas por programas que exigem autenticação, como o programa login que manipula logins em modo de texto, um programa gerenciador de tela X que manipula logins na interface gráfica com o usuário ou um programa de servidor de email POP. Para fornecer um sistema flexível, pode-se configurar o PAM usando arquivos de configuração, conforme descrito brevemente.

O PAM é um sistema complexo e, por causa das diferenças entre as distribuições na configuração do PAM, uma descrição completa não é possível aqui. (A seção Recursos fornece ponteiros para obter documentação adicional sobre PAM.) Configure o PAM por meio dos arquivos em /etc/pam.d. A maioria dos arquivos nesse diretório descreve como o PAM funciona para programas específicos, como o programa de modo de texto login ou o programa de servidor SSH. Mas a maioria das distribuições fornece arquivos de configuração PAM globais, como system-auth ou stackname comum, em que stackname é um dos quatro nomes de pilha do PAM. (Cada pilha define um tipo específico de serviço que o PAM fornece.)

Modificando uma pilha de PAM

Ao reconfigurar o PAM, é preciso decidir se deseja fazer uma mudança que afete todos os seus serviços de login ou apenas alguns. (Examine os arquivos em /etc/pam.d para ver que tipos de serviços de login estão instalados no seu sistema, e depois se pergunte se todos ou apenas alguns precisam usar o Winbind.) Se quiser modificar apenas um ou dois serviços, como o servidor POP, mas não ativar a autenticação por Winbind em outros, como no servidor FTP, modifique apenas o arquivo do serviço que deseja alterar. Mas se quiser que todos os serviços sejam afetados, edite o arquivo genérico, como system-auth.

Uma pilha típica de PAM se parece à Listagem 2, que é o arquivo /etc/pam.d/common-auth de um sistema Ubuntu versão 10.10.

Listagem 2. Exemplo de pilha de PAM
auth  [success=1 default=ignore]  pam_unix.so nullok_secure
auth  requisite                   pam_deny.so
auth  required                    pam_permit.so

Infelizmente, essa sintaxe específica é um pouco confusa. O módulo pam_unix.so gerencia a autenticação usando arquivos locais de banco de dados de senha, e a opção success=1 naquela linha significa que o PAM ignora uma linha quando esse módulo retorna um sucesso. Assim, pam_deny.so (que sempre retorna um código de falha de autenticação) é ignorado se pam_unix.so é bem-sucedido, e o login é bem-sucedido.

Para modificar essa configuração a fim de incorporar o Winbind, é preciso incluir uma referência ao módulo pam_winbind.so e mudar o número de linhas a ignorar na linha pam_unix.so . O resultado se parece à Listagem 3, que destaca as mudanças.

Listagem 3. Pilha de PAM com suporte a Winbind
auth  [success=2
 default=ignore]  pam_unix.so nullok_secure
auth  [success=1 default=ignore]  pam_winbind.so cached_login try_first_pass
auth  requisite                   pam_deny.so
auth  required	                  pam_permit.so

Distribuições que não sejam do Ubuntu, na qual este exemplo se baseia, exigem outras mudanças no PAM, mas é preciso entender totalmente a configuração inicial antes de fazer essas mudanças. Note também que devemos modificar todas as quatro pilhas —auth, account, session e password. Essas pilhas talvez apareçam todas em um arquivo ou estejam divididas entre diversos arquivos. Se quiser modificar serviços individuais, será preciso modificar todas as quatro pilhas nos arquivos de configuração de todos os serviços que quiser ajustar.

Algumas distribuições fazem mudanças adequadas em suas configurações de PAM ao instalar o pacote Winbind. Assim, talvez não seja necessário fazer nenhuma mudança.


Configurando NSS

Um segundo serviço que se deve ajustar para permitir logins com Winbind é o NSS. Felizmente, a configuração do NSS é consideravelmente mais simples do que a do PAM. É preciso editar o arquivo /etc/nsswitch.conf e alterar as seguintes três linhas:

passwd:     compat
group:      compat
shadow:     compat

Alguns sistemas usam files em vez de compat nessas linhas, e é possível que encontremos outras entradas nessas linhas. Essas linhas dizem ao NSS para usar arquivos locais para sua tarefa, que é fornecer listas de usuários e grupos aos programas que as quiserem. Para incluir Winbind no sistema, inclua uma referência a ele em cada uma dessas linhas:

passwd:     compat winbind
group:      compat winbind
shadow:     compat winbind

Executando o Winbind

Com essas mudanças implementadas, finalmente podemos executar e testar o Winbind. Em geral, pode-se ativar o Winbind usando o script de inicialização SysV, como em:

# /etc/init.d/winbind start

Cuidado: Se seu sistema estiver executando NSCD (Name Service Cache Daemon), finalize o daemon antes de executar o daemon do Winbind. O NSCD pode interferir nas operações do Winbind.

Se quiser executar o daemon automaticamente sempre que o sistema for iniciado, confirme se seu script de inicialização SysV está configurado adequadamente para essa tarefa. É possível usar chkconfig, ntsysv, update-rc.d ou outras ferramentas para isso.

Com o Winbind em execução, o programa wbinfo permite testá-lo. A opção -u retorna uma lista de usuários:

$ wbinfo -u
grogers
fastaire
mikhail

Esse exemplo mostra três usuários. Também é possível digitar getent passwd para recuperar uma lista de usuários; isso é basicamente o equivalente ao arquivo /etc/passwd. Esse comando retorna todos os usuários definidos de qualquer maneira, incluindo contas locais, Winbind e qualquer outro serviço que estejamos usando, como um servidor do LDAP.

Observação: Os comandos wbinfo -u e getent passwd às vezes deixam de retornar uma lista completa de usuários do domínio, em especial se tiver sido configurado winbind enum users = No. Assim, se esses comandos parecerem não funcionar, teste sua capacidade de efetuar login.

Naturalmente, o teste definitivo de se o Winbind está funcionando é se ele consegue autenticar usuários de forma adequada nos serviços que configuramos para usá-lo no PAM. Assim, devemos testar essa capacidade usando uma conta definida no domínio do Windows, mas não no computador local. Se não tiver sucesso, tente examinar os arquivos de log no cliente e no controlador do domínio do Windows. Lembre-se de que se for configurado inbind use default domain = No, seus nomes de usuários locais assumirão a forma de DOMAIN\username (ou algo parecido, com um separador diferente se tivermos configurado o winbind separator.


Progredindo

O próximo tópico desta série, Saiba mais sobre Linux, 302 (Ambientes Mistos): Integração de CIFS, abrange a integração de um computador com Linux a uma rede Bloco de Mensagens do Servidor (SMB)/Common Internet File System (CIFS) como cliente de compartilhamento de arquivo. Esse tópico inclui o uso de ferramentas de cliente independente e montar compartilhamentos de SMB/CIFS na hierarquia padrão do sistema de arquivos Linux.

Recursos

Aprender

Discutir

  • Participe da comunidade My developerWorks. Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=777561
ArticleTitle=Aprenda Linux, 302 (Ambientes Mistos): Winbind
publish-date=11282011