Esta é a tradução do artigo "Don't make me LDAP you", publicado pelo LinuxWorld em inglês e traduzido para o português pelo César A. K. Grossmann, (ckant@fazenda.gov.br) a princípio para seu uso pessoal - mas depois ele pensou melhor e resolveu compartilhar com a comunidade Linux brasileira o resultado do seu esforço. Obrigado César!
Resumo
O LDAP pode fazer muitas coisas variadas, maravilhosas. Mas em uma instalação leve do Lightweight Directory Access Protocol, talvez sua funcionalidade mais útil para o administrador de sistema é que ajuda a evitar que usuários o atropelem perguntando o email de outros usuários. Mark Komarisnki e Cari Collet mostram o caminho.
Por Mark Komarinski e Cary Collet
A coluna deste mês trata de um protocolo que você provavelmente ouviu falar bastante, mas que continua um mistério para você. Você não tem idéia por que iria querer ou como esta ferramenta pode ser útil para você até você possuí-la. O LDAP (Lightweight Directory Access Protocol - Protocolo Leve de Acesso a Diretório) foi projetado para armazenar informações e responder consultas por TCP/IP. Com somente um pouco de informação sobre um usuário registrado (o sobrenome, por exemplo) um cliente pode recuperar o número do telefone, endereço de email, etc. Por exemplo, uma pesquisa em "Lister" retorna dave.lister@reddwarf.co.uk, um número de extensão telefônica, um endereço de correio, e assim por diante.
O método atual para distribuir senhas e outras informações por uma rede é o NIS (Network Information Service - Serviço de Informações de Rede). O NIS permite que tenha-se um servidor central para distribuir informações de usuários, incluindo aliases de email e informação de automount. Entretanto, o NIS não é apropriado para administrar grandes objetos binários (BLOBs) como imagens JPEG ou outra coisa que não seja o velho texto plano ASCII.
Por outro lado, o LDAP é feito para este tipo de tarefa. Como resultado, o LDAP está sendo usado para substituir serviços NIS no Linux completamente. De fato, o LDAP possui várias vantagens sobre o NIS:
Até agora, a maioria dos servidores LDAP era comercial, como o servidor de diretórios da Netscape. A única versão OSS (Open Source Software) até pouco tempo atrás era o servidor LDAP da Universidade de Michigan (U of M's). Infelizmente, o código da Universidade não tem sido atualizado há um bom tempo. O lançamento do OpenLDAP traz este protocolo ao alcance dos usuários Linux que querem testar a versatilidade do LDAP com um código atualizado, ao mesmo tempo que mantém compatibilidade de API com programas escritos para o U of M. O OpenLDAP foi codificado para ser escalável, fornecendo suporte para replicação de servidores, e uma escolha de servidores de bancos de dados de backend (como o GDBM). O projeto do LDAP é hierárquico (como o DNS) ao invés de um banco de dados relacional, o que significa que você pode não ver nenhum suporte para o mySQL ou o PostgreSQL. Usar uma base de dados relacional diminui um pouco a performance quando se está consultando informações hierarquizadas. A diferença pode não ser muita, mas aumenta conforme a taxa de consultas aumenta.
Com os fundamentos encaminhados, irei mostrar a você como instalar, configurar e usar o OpenLDAP como uma tabela de consulta de email para ser utilizada pelo Outlook ou o Netscape. permitir que usuários não-root acrescentem ou modifiquem dados;
Até agora, a maioria dos servidores LDAP era comercial, como o servidor de diretórios da Netscape. A única versão OSS (Open Source Software) até pouco tempo atrás era o servidor LDAP da Universidade de Michigan (U of M's). Infelizmente, o código da Universidade não tem sido atualizado há um bom tempo. O lançamento do OpenLDAP traz este protocolo ao alcance dos usuários Linux que querem testar a versatilidade do LDAP com um código atualizado, ao mesmo tempo que mantém compatibilidade de API com programas escritos para o U of M. O OpenLDAP foi codificado para ser escalável, fornecendo suporte para replicação de servidores, e uma escolha de servidores de bancos de dados de backend (como o GDBM). O projeto do LDAP é hierárquico (como o DNS) ao invés de um banco de dados relacional, o que significa que você pode não ver nenhum suporte para o mySQL ou o PostgreSQL. Usar uma base de dados relacional diminui um pouco a performance quando se está consultando informações hierarquizadas. A diferença pode não ser muita, mas aumenta conforme a taxa de consultas aumenta.
Com os fundamentos encaminhados, irei mostrar a você como instalar, configurar e usar o OpenLDAP como uma tabela de consulta de email para ser utilizada pelo Outlook ou o Netscape.
Primeiro, obtenha a última cópia do software de OpenLDAP.org (veja a seção Recursos). Esta versão do LDAP é baseada no U of M, fornecendo compatibilidade com aplicações escritas para usar o software do University. A versão que estou usando é a versão 1.2, mas novas versões com correções de bugs podem estar disponíveis. Leia o arquivo INSTALL para saber quais alterações foram incluídas na última versão.
Antes de compilar o software, algumas opções de configuração devem ser definidas. Conforme definido anteriormente, o LDAP é similar, em arquitetura, ao DNS. Você inicia no topo, e trabalha para baixo, em países, seguido de organizações. O servidor LDAP inicia sua hierarquia (similar ao SOA do DNS) no "base DN". Este é, tipicamente, uma combinação do nome da organização e o nome ISO do país. Para especificar cada um, a organização é prefixada com 'o=', o país com 'c=', e os dois são separados por uma vírgula (,). Desta forma, você pode ter um base DN como "o=Red Dwarf, c=UK" ou "o=Possum Lodge, c=CA".
Isto significa que a primeira coisa que você precisa decidir é qual será o seu base DN. Diferentemente do DNS, parece não haver uma autoridade central para atribuir DN's. Isto significa que você pode fazer um base DN para ti mesmo. Você deverá apenas certificar-se, se pretende comunicar com outros servidores LDAP (o que não faremos neste estágio), que não tenham o mesmo base DN.
Uma vez definido o base DN, pode-se fazer a compilação. As versões mais novas do OpenLDAP usam um script configure em vez de obrigar a edição manual de makefiles. Você pode utilizar o comando ./configure para iniciar. Se pretende ter suporte ao crypt(3), use o comando ./configure --enable-crypt.
Prossiga e execute o comando make -- e observe como são belas as linhas da compilação...
Uma vez que o make tenha feito o seu trabalho, você pode querer testar a configuração executando um make test, garantindo desta forma que tudo funcione de acordo. Isto vai tomar mais alguns minutos, mas o protege de muita dor de cabeça no futuro, se lhe informar que algo não está funcionando de forma adequada.
Por padrão, o comando make install coloca arquivos em /usr/local/libexec/(daemons), /usr/local/bin (programas cliente), /usr/local/sbin (programas para converter ao formato LDAP), e /usr/local/etc/ldap (arquivos de configuração).
Você pode editar o arquivo /usr/local/etc/openldap/slapd.conf para configurar o base DN que você criou anteriormente. O arquivo é bem comentado, e você vai querer editar a linha que inicia com "suffix".
Uma vez configurado, você precisa iniciar o banco de dados. A forma mais fácli de fazer isto é usar um conjunto de ferramentas de migração, ou scripts Perl que convertem um banco de dados NIS inteiro para o LDAP (veja em Resources). Uma vez que somente queremos colocar o conteúdo de /etc/passwd, isto vai nos ajudar a popular o banco de dados. Verifique no README que acompanha o pacote se há necessidade de configurar as ferramentas para a sua configuração em particular. A forma mais rápida e fácil de fazer isto (assumindo que /etc/passwd esteja preenchido) é escrever
../migrate_passwd.pl /etc/passwd ./passwd.ldif
Este comando cria um arquivo passwd.ldif (LDIF é o formato de arquivo usado para importar dados para o LDAP).
Seu arquivo LDIF deve ter um punhado de entradas como estas:
dn: uid=markk,o=Aurora Technologies, c=US uid:markk cn: Mark Komarinski krbname: markk@AURORATECH.COM objectClass: kerberosSecurityObject objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson givenname: Mark sn: Komarinski mail: markk@auroratech.com objectClass: posixAccount objectClass: account userpassword: {crypt}Imnottellingyou loginShell: /bin/csh uidNumber:202 gidNumber:101 homeDirectory: /home/markk gecos: Mark Komarinski
Como pode ser visto, cada entrada inicia com um único DN. Muitas destas entradas são desnecessárias, e você pode acrescentar novas entradas conforme necessário. Por exemplo, números de telefone, informações para localização, e até dados binários, como uma chave PGP ou imagens JPEG (eu não testei isto ainda) podem ser armazenadas no registro.
Antes de criar o banco de dados GDBM, precisamos incluir um cabeçalho (que as ferramentas de migração normalmente incluem) para informar ao SLDAP (novamente) qual é o base DN.
No início do arquivo, coloque algo como:
nd: o=Aurora Technologies, c=US o: Aurora Technologies objectClass: organization
(Atenção: você deve alterar as entradas o e c para os nomes que você determinou como sendo o seu base DN, anteriormente, na instalação).
O banco de dados GDBM pode ser criado, então, com o comando:
/usr/local/sbin/ldif2ldbm -i passwd.ldif
Agora que o banco de dados está carregado, o servidor pode ser iniciado com o seguinte comando:
/usr/local/libexec/slapd
Para executar um teste rápido, use um comando como:
/usr/local/bin/ldapsearch 'objectClass=*'
e você deve ter todas as entradas listadas.
A pesquisa pode agora ser refinada para algo como:
/usr/local/bin/ldapsearch -b'o=Aurora Technologies, c=US' 'uid=markk'
que deve apresentar todo o registro.
Já temos alguns dados. E agora? Hora de configurar o Netscape.
Usando o Netscape 4.5 no Linux, vá à lista de endereços (Communicator, Address Book). Você vai ver a lista de endereços local e mais três listas remotas (Netcenter, InfoSpace e Verisign). Clique com o botão direito sobre Netcenter e clique em 'New Directory'. Uma janela vai abrir, permitindo que você entre um nome de diretório (pode ser qualquer coisa), o hostname (o equipamento em que você iniciou o SLAPD), e, novamente, o base DN (você vai memorizar ele rapidamente, à medida que instala tudo). O Netscape suporta conexões SSL ao LDAP mas, como não estamos usando isto, deixe desmarcado, bem como "Login with name and password". Com esta configuração, entre seu sobrenome na caixa de pesquisa (Search) e deve ser recuperado seu nome, email e organização.
Isto feito, devo admitir que não sou um grande expert em LDAP. Como a maioria de vocês, eu só quero que os usuários não me perturbem por causa de endereços de email de outras pessoas. O bom sobre isto é que ele pode ser incrementado para armazenar todo tipo de informação que pode ser consultada via uma página Web.
Estou trabalhando, por exemplo, para desenvolver uma página de administração LDAP, onde um usuário possa facilmente fazer um logon e mudar seu endereço de email, acrescentar números de telefones móveis, e assim por diante. O código para este tipo de modificação acompanha o módulo Perl Net::LDAP, originalmente escrito por Clayton Donley.
Ainda estou tentando corrigir os erros (por enquanto senhas encriptadas não funcionam, mas senhas em texto plano funcionam). Mas tendo um diretório para todos na empresa já é um grande começo.
Mark Komarinski é um administrador de sistemas em Aurora Technologies e em Carlo Gavazzi Computer Systems Group, ambos em Waltham, MA. É um ex-colunista do Linux Journal, e o autor do The Linux Companion, bem como o autor (em conjunto com Cary Collet) do The Linxu System Administrator Handbook.
Colunas Uptime anteriores nos arquivos da LinuxWorld
Ferramentas de Migração Perl
Download do serviço de diretório LDAP
Recursos LDAP
RFC 1777 The Lightweight Directory Access Protocol
An overview of LDAP-based directory service from the University of Michigan
Coluna da Sunworld de Outubro de 1996, introduzindo o LDAP
Coluna da Sunworld de Outubro de 1996, comparando o LDAP com o DNS
Tradução: César A. K. Grossmann (ckant@fazenda.gov.br)
Feedback: lweditors@linuxworld.com (só em inglês)
URL do original: http://www.linuxworld.com/lw-1999-03/lw-03-uptime.html
Última alteração: Sábado, 20 de Novembro de 1999
© ITworld.com
A mensagem de copyright abaixo é reproduzida a pedido do proprietário
This entire issue, including text, programs, applets, source code, and
images of LinuxWorld is copyright 1999 by ITworld.com, an IDG
Communications company, or the copyright holder specified, all rights
reserved. Unauthorized duplication or dissemination is strictly forbidden.
LinuxWorld may be viewed, copied, printed, archived, or posted to a
noncommercial Internet site, and distributed, for informational,
non-commercial purposes only, and with our copyright notice.
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.
Créditos