Você está na página 1de 17

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Entendendo o LDAP
Autor: Francisco jonathan Rebouas Maia <jonathanmaia at pop-ce.rnp.br> Data: 21/11/2005 Introduo Um diretrio, em uma definio bem simplria, um banco de dados desenvolvido para atender principalmente a grandes quantidades de consultas e no a grandes volumes de atualizaes (inseres ou remoes). A forma em que os diretrios armazenam suas informaes hierrquica e no relacional, ou seja, em sistemas de diretrios no temos tabelas de dados como temos em bancos relacionais (como MySQL, Oracle, SQL Server...). No lugar de tabelas, os dados so organizados em uma DIT (Directory Information Tree rvore de informao do diretrio), que uma rvore onde cada vrtice um registro (onde um registro um conjunto de informaes sobre determinado objeto que queremos guardar).

Definio de DIT e protocolo LDAP Para quem conhece estruturas computacionais chamadas grafos, talvez a definio de rvore e de vrtices j esteja bem clara, mas se voc no sabe o que isso, vou tentar explicar de uma forma simples e resumida atravs de um exemplo usando a prpria DIT. Uma rvore formada por vrtices (no caso da DIT cada vrtice um registro) e por arestas, que so "linhas" que relacionam dois vrtices. Veja a seguinte DIT:

1 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Figura 1 Nesse exemplo, cada elipse um vrtice da rvore, ou seja, cada elipse representa um registro da rvore, que onde as informaes de certo objeto so guardadas. No exemplo, temos o registro "POP-CE", que pode guardar vrias informaes, como onde localiza-se o Pop-ce, quais membros, quais projetos em andamento, etc (mais a frente explicarei como as informaes so armazenadas em cada registro). Cada linha que relaciona (liga) dois registros chamada de aresta. Dessa forma, temos uma aresta entre os registros "RNP" e "POP-CE", outra entre "POP-CE" e "VOIP", etc. Nesse caso, essas arestas so usadas para podermos perceber o carter hierrquico dessa rvore. Veja que "POP-CE", "POP-RJ", "POP-PE" esto todos abaixo de "RNP", assim como "VOIP" e "GERENCIA" esto abaixo de "POP-CE". Tente ver a DIT como se fosse um sistema de pastas (isso apenas uma analogia), no qual a pasta principal a pasta "RNP" e dentro dela esto as pastas "POP-CE", "POP-RJ" e "POP-PE", dentro da pasta POP-CE esto as pastas "VOIP" e "GERENCIA", etc. Assim, j podemos ter uma idia do que uma rvore. A DIT uma rvore enraizada, pois sempre vamos ter um nico registro na parte mais alta da rvore, registro esse chamado de raiz (no exemplo, a raiz o registro "RNP"). O LDAP basicamente um sistema de diretrios que engloba o diretrio em si (a DIT) e um protocolo tambm denominado LDAP* (LightWeight Directory Access Protocol - Protocolo leve de acesso a diretrios), que o protocolo que

2 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

permite o acesso DIT (sempre que for me referir ao protocolo LDAP, colocarei um * no final). O nome do sistema de diretrios ser LDAP se deve ao fato do protocolo usado para acessar o sistema se chamar LDAP*. O sistema LDAP derivado de um sistema de diretrios chamado X.500. O X.500 usava como protocolo para acessar sua DIT o protocolo DAP (Directory Access Protocol). Mas quais as diferenas entre o X.500 e o LDAP? O LDAP, como o prprio nome diz, mais leve, retirou alguns problemas que haviam no X.500 (como redundncia de dados), mas as principais diferenas esto entre os protocolos de acesso LDAP* e DAP. O protocolo DAP era implementado sobre o padro OSI de sete camadas, o que o deixava um tanto quanto incompatvel e pesado. J o LDAP* implementado sobre o sistema TCP/IP, que atualmente mundialmente difundido, o que permite uma boa portabilidade entre os sistemas que desejam utilizar LDAP, alm de possuir um menor overhead que o DAP nos pacotes enviados.

Registros Vamos descrever agora um pouco mais como os registros so construdos e organizados na DIT. Cada registro, como j foi dito, um conjunto de informaes sobre certo objeto. Cada informao guardada em um atributo no registro. Mas, nesse ponto, surge a pergunta: quais atributos podem ser colocadas em um registro? Depende de quais OBJECT CLASSES (Classes de objetos) constituem o registro. Uma object class apenas informa quais atributos so obrigatrios e quais so opcionais para certo registro. Cada registro pode ser constitudo por uma ou mais object classes. Usando o exemplo da figura 1, suponha que, na definio do registro "GERENCIA", dizemos que esse registro faz parte de duas object classes: da top e da inetOrgPerson. A object class top exige que o registro faa parte de pelo menos uma outra object class, que nesse caso a inetOrgPerson. J a inetOrgperson, exige que o registro tenha os atributos "cn" e "sn" (que significam commonname - nome comum e surname - sobrenome) e tenha os seguintes atributos como opcionais: mail, manager, mobile, o, pager, photo, roomNumber, secretary, uid, userCertificate, entre outros. Voc deve estar se perguntando como saber quais atributos so obrigatrios

3 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

em uma objectclass, quais objects classes voc pode usar, entre outras coisas. Na verdade, a descrio de quais objectclasses voc pode usar encontram-se em arquivos chamados schema (esquema). Nos schemas, voc ver quais atributos so obrigatrios e quais so opcionais em certa objectclass, qual a sintaxe que cada atributo te que obedecer (se uma string, se um inteiro, etc). Existe uma pgina bem interessante, que caso voc queira j pode ir dando uma olhada, que descreve vrias object classes, mostrando quais atributos ela pode conter. A pgina : http://www.ldap.liceu.com.br/topo/classes_atributtos/classes.htm Cada registro na DIT tem que possuir um identificador nico, para no haver ambiguidades na hora das buscas. Esse identificador nico chamado de DN (Distinguished Name - nome distinto), que basicamente o caminho de registros que fica entre o registro a ser especificado e a raiz. Mas como indicar quais os registros que ficam nesse caminho? Atravs de vrios RDN (Relative Distinguished Name), onde cada RDN um atributo que identificar um registro em seu nvel. Um pouco complicado no? Vamos ver o exemplo na prxima pgina para facilitar o entendimento.

Exemplo de registros

Figura 2 Veja que nossa figura j est diferente. Agora, j temos uma organizao da DIT bem mais prxima de como ela realmente . Nesse exemplo da figura 2, para facilitar o entendimento, foi colocado um nmero para identificar cada

4 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

registro. Veja a seguir o DN e o RDN de cada registro dessa DIT:


Registro 1 DN: dc=rnp RDN: dc=nrp Registro 2 DN: ou=pop-ce,dc=rnp (identificador nico) RDN: ou=pop-ce (identificador no nvel) Registro 3 DN: ou=pop-rj,dc=rnp RDN: ou=pop-rj Registro 4 DN: ou=pop-pe,dc=rnp RDN: ou=pop-pe Registro 5 DN: cn=voip,ou=pop-ce,dc=rnp (identificador nico) RDN: cn=voip (identificador no nvel) Registro 6 DN: cn=gerencia,ou=pop-ce,dc=rnp RDN: cn=gerencia Registro 7 DN: cn=voip,ou=pop-rj,dc=rnp RDN: cn=voip Registro 8 DN: cn=seguranca,ou=pop-pe,dc=rnp RDN: cn=seguranca

Perceba que todos DN so distintos (pois so identificadores nicos de cada registro), mas os RDN no precisam ser distintos (com excesso de RDNs de registros que esto abaixo do mesmo registro, pois seno teramos DNs iguais, o que no pode acontecer - por exemplo: no poderamos ter dois registros exatamente abaixo do registro 1 com RDNs iguais). Outra coisa a ser percebida que o DN de um registro exatamente o seu RDN seguido do DN do registro que est exatamente acima dele. Sempre que formos adicionar um registro na rvore, devemos ento decidir abaixo de qual registro ele deve estar (isso ir depender de organizao que voc deseja que seu diretrio possua), registro esse que deve estar previamente criado por voc ou deve ser a raiz do diretrio (que no OpenLdap indicada no arquivo de configurao slapd.conf - O OpenLdap a implementao livre usada do LDAP neste documento) e tambm devemos decidir qual atributo usaremos para especificar o RDN desse registro (voc pode escolher o atributo que desejar, desde que a objectclass que permite que ele seja usado tambm esteja especificada na declarao do registro). Para inserir um registro em nosso diretrio, usaremos arquivos LDIF (Ldap Data Interchange Format - formato de intercmbio de dados LDAP), que onde especificamos de quais objectclasses o registro faz parte e os valores de seus atributos. Esses arquivos tambm podem ser usados para remover e alterar registros do diretrio.

5 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Modelos de abordagem do LDAP At o momento j falamos sobre dois modelos de abordagem do LDAP: o modelo de nomes e o modelo de informaes. O modelo de nomes o que trata da organizao da DIT, como os RDNs e os DNs, j o modelo de informaes o que trata dos atributos, das objectclasses, dos schemas, etc. No modelo de informaes, ainda falta falarmos como os atributos e as objectclasses esto organizadas. Cada atributo e objectclass, quando declarado em um schema, possui um OID (Object Identifier) nico, que tambm especificado no schema. Da mesma forma que na DIT, esses atributos e objectclasses tambm ficam organizados em uma rvore e o OID indica onde eles esto nessa rvore. Veja o exemplo do OID do atributo cn: 2.5.4.3, onde 2 indica a raiz da rvore de informaes onde esse atributo est, 5 um filho da raiz, 4 um dos filhos de 5 e 3 indica o atributo cn. Cada objectclass tambm possui um OID que a identifica da mesma forma acima, ou seja, com um caminho entre a raiz e a prpria object class. Esses nmeros de OID so padronizados e distribudos pela IANA (Internet Assigned Numbers Authority - www.iana.org), dessa forma, se voc quiser criar seu prprio atributo e sua prpria objectclass oficiais, voc deve procurar essa instituio para requisitar OIDs gratuitamente. Mas se voc no v necessidade de registrar suas criaes, basta utilizar um OID que no est sendo usado no momento que seus atributos e object classes iro funcionar. Temos outros dois modelos de abordagem do LDAP: modelo de segurana e modelo funcional. O modelo de segurana trata de aspectos como autenticao e autorizao. No LDAP, podemos ter vrios usurios alm do administrador. Na verdade, caso voc deseje, o LDAP pode tratar cada registro da DIT como um usurio. Para dizer o que cada usurio ter permisso de fazer (ler ou modificar) e em quais registros ele poder fazer isso (registros prprios dele ou dos outros), existem as ACLs (Access Control Lists). O modelo funcional o que descreve o que poderemos fazer com o diretrio e atravs de quais ferramentas, como por exemplo: fazer autenticao, buscar no diretrio, modificar dados, etc.

6 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Instalao do OpenLdap Vamos agora iniciar com a prtica usando o OpenLdap. Aqui usaremos a verso 2.2.28 do OpenLdap, que pode ser encontrada em: www.openldap.org No iremos explicar aqui o processo de instalao do OpenLdap a partir do cdigo fonte (pode ser visto na documentao que acompanha o software). Voc tambm poder usar o apt-get para instalar o OpenLdap: # apt-get install slapd Caso deseje remov-lo atravs do apt, s usar o comando: # apt-get remove slapd Caso deseje instalar a partir dos fontes, necessrio que sejam instalados antecipadamente os pr-requisitos, que so os seguintes: OpenSSL (www.openssl.org/source); Berkeley DB (www.sleepycat.com); SASL (ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/); Gdbm (http://ftp.matrix.com.br/pub/gnu/gdbm). No momento da instalao do OpenLdap, ser perguntado a voc o DN da raiz da DIT de seu diretrio. Geralmente, como raiz da rvore, colocado o domnio da empresa ou algo que represente o local onde o diretrio est instalado. Seguindo o exemplo da figura 2, o DN da raiz de nosso diretrio ser: dc=rnp Onde dc (domain component - componente de domnio) um atributo da objectclass dcObjet. Voc poderia especificar um DN com mais subdivises para a raiz, por exemplo, poderamos ter o DN da seguinte forma: dc=popce,dc=rnp ou o=popce,dc=rnp

7 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Perceba que para o ltimo e penltimo caso, onde o DN da raiz composto por mais de um atributo, no precisamos criar antecipadamente o registro cujo DN dc=rnp. Podemos dizer logo o DN completo da raiz como ns queremos que fique, pois o DN da raiz (intuitivamente) como se fosse um sufixo para todos os DNs de todos os registros de nosso diretrio. O DN da raiz pode conter um ou mais atributos, fica a seu critrio. Outra coisa a ser observada que podemos usar outros atributos alm de dc para especificar o DN da raiz. No OpenLdap, o registro da raiz (que criado automaticamente durante a instalao) pertence a trs objectclasses: objectClass: top objectClass: dcObject objectClass: organization A top apenas para indicar que obrigatrio que o registro contenha outras objectclasses em sua declarao. As outras duas indicam os atributos que podem ser usados para elaborar o DN da raiz (tambm comumente chamada de base do diretrio). Os atributos mais usados so dc e o (organization organizao). Durante a instalao, tambm ser pedido a voc a senha do administrador do diretrio, cujo DN de seu registro ser: cn=admin,dc=rnp O registro do administrador criado automaticamente durante as instalao, j com seu DN levando em considerao ao DN da raiz escolhida. interessante ver como os usurios do LDAP so tambm guardados como registro no prprio diretrio. Lembre-se da senha do administrador, pois ela ser importante na hora de fazermos alteraes no diretrio. Aps instalar, voc perceber dois daemons novos: o slapd (Standalone Ldap Daemon - Daemon autnomo Ldap) e o slurpd (Standalone Ldap Update Replication Daemon - Daemon de replicao e atualizao autnomo Ldap). O slapd o que inicia o servio de diretrios e o slurp o responsvel por propagar as informaes entre diretrios que esto conectados ( um sistema bastante interessante que o LDAP disponibiliza, que permite que servidores LDAP possam ser mantidos como rplicas de outros, ou que vrios servidores LDAP se integrem, cada um contendo uma parte de uma DIT global).

8 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Para iniciar o slapd basta digitar em qualquer shell: # slapd Para finalizar o servidor LDAP voc pode digitar: # killall slapd Aps fazer qualquer modificao no arquivo de configurao do Slapd (/etc/ldap/slapd.conf), lembre-se de finalizar e reiniciar o servidor, pois s ai as novas mudanas iro vigorar.

slapd.conf O prximo passo ver o arquivo de configurao do slapd, que est em /etc/ldap/slapd.conf. Na parte inicial do arquivo, veja vrias linhas iniciadas por include, onde cada include indica um arquivo de esquema, que contm , como j visto, declaraes de objectclasses e atributos a serem usados pelo LDAP. Voc poder ver tambm nesse arquivo a declarao do DN da base de nossa DIT, que no arquivo est como um atributo chamado suffix. Voc tambm ver em alguns locais a palavra bdb (Berkeley Database), que indica a base de dados escolhida para implementar seu diretrio ( como se fosse a forma em que os dados sero organizados). No final do arquivo, esto as ACLs (Access Control Lists), que indicam quem pode acessar "o que" e o que pode ser feito por quem est acessando. Veja o seguinte trecho do arquivo, onde linhas comeadas com # so comentrios: # indica que para modificar algum atributo de um registro # necessrio que o usurio passe um nome de usurio e senha access to attrs=userPassword # o admin pode escrever em tudo by dn="cn=admin,dc=popce,dc=rnp" write # um annimo tem que se identificar

9 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

by anonymous auth # o dono de um registro pode escrever nele by self write # para o restante dos usurios no permitido modificar nada nos registros by * none # A prxima opo deve sempre ser deixada da seguinte forma, # seno poder comprometer o acesso dos usurios ao diretrio. # Essa opo d permisso de leitura para a base (raiz) da DIT # (dn.base="") a todos (*). access to dn.base="" by * read # A prxima seo permite que o admin escreva em qualquer registro # e que qualquer pessoa (inclusive annima) possa fazer leituras # no diretrio. access to * by dn="cn=admin,dc=popce,dc=rnp" write by * read Inserindo registros no LDAP O prximo passo iniciar a inserir registros no diretrio. Mas para isso preciso aprender a criar arquivos Ldif. Nesses arquivos ficam basicamente a descrio de um ou mais registros a serem inseridos. A descrio de um registro , na maioria dos casos, da seguinte forma: # DN do registro a ser inserido dn: ... # uma lista de object classes que compe o registro objectClass: ... objectClass: ... ... # uma lista de atributos permitidos pelas objectclasses acima atributo: valor atributo: valor ... # acima temos a especificao do primeiro registro. A partir # daqui j podemos colocar outras descries de outros registros.

10 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Veja a seguir como fica o arquivo que ser usado para inserir e construir o diretrio da figura 2. Esse arquivo chama-se "insere.ldif" e pode ser criado em qualquer editor de texto comum. Sero colocados comentrios aqui na descrio do arquivo, mas no arquivo verdadeiro os comentrios devem ser retirados. Outra coisa a se falar que o mtodo de leitura do arquivo pelo slapd case sensitive (sensvel a caixa), ou seja, "Bola" diferente de "bola". # insere.ldif # descrio do registro 2 da figura 2. # DN do registro dn: ou=pop-ce,dc=rnp # # # # # # # # colocando as object classes de que o registro faz parte. a escolha dessas object classes feita vendo quais atributos sero necessrios no registro. Nos registros 2, 3 e 4 sero usadas as mesmas object classes, pois eles so estruturalmente iguais. A object class top necessria pois ser preciso o uso de outras object classes. A object class organizationalUnit colocada para poder ter o atributo ou (organizational unit - unidade organizacional).

objectClass: top objectClass: organizationalUnit # incio do trecho onde os valores dos atributos so colocados. # veja que tem que se colocar aqui o RDN, que nesse caso ou: # pop-ce, igual a forma que o RDN foi colocado no DN do registro ou: pop-ce # descrio do registro 3 da figura 2. dn: ou=pop-rj,dc=rnp objectClass: top objectClass: organizationalUnit ou: pop-rj # descrio do registro 4 da figura 2. dn: ou=pop-pe,dc=rnp

11 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

objectClass: top objectClass: organizationalUnit ou: pop-pe # # # # # # # # # # # # # # # agora ser iniciada a descrio dos registros das reas em cada pop (nesse caso, as reas aqui so fictcias). Nesse tipo de registro, o atributo cn (commonname - nome comum) ser necessrio. Para isso iremos colocar nos registros 5, 6, 7 e 8 da figura 2 a objectclass inetOrgPerson. Alm de usar o atributo cn (que ser o RDN desses registros), tambm iremos usar os atributos sn (usaremos esse atributo surname pois ele obrigatrio pela objectclass inetOrgPerson - nele colocaremos o nome de um responsvel por essa rea - o intuito real era colocar o sobrenome de algum, mas deixemos as formalidades totais de lado) e mail (conter o e-mail da pessoa contida em sn). Perceba que outras objectclasses tambm poderiam ser colocadas nesses registros, mas para manter a simplicidade vamos colocar o mnimo possvel de coisas em cada registro.

# descrio do registro 5 da figura 2 dn: cn=voip,ou=pop-ce,dc=rnp objectClass: top objectClass: inetOrgPerson cn: voip sn: joao mail: joao@pop-ce.rnp.br # descrio do registro 6 da figura 2 dn: cn=gerencia,ou=pop-ce,dc=rnp objectClass: top objectClass: inetOrgPerson cn: gerencia sn: jose mail: jose@pop-ce.rnp.br # descrio do registro 7 da figura 2 dn: cn=voip,ou=pop-rj,dc=rnp objectClass: top objectClass: inetOrgPerson cn: voip sn: maria mail: maria@pop-rj.rnp.br

12 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

# descrio do registro 8 da figura 2 dn: cn=seguranca,ou=pop-pe,dc=rnp objectClass: top objectClass: inetOrgPerson cn: seguranca sn: pedro mail: pedro@pop-pe.rnp.br # fim do arquivo insere.ldif Aps colocar todas essas definies em um arquivo chamado insere.ldif (lembre-se de retirar do arquivo as linhas comeadas com #, que so comentrios), s falta inserir esses registros no diretrio. Para isso, ser usado o comando ldapadd. A sintaxe mais bsica para a insero no diretrio a seguinte: ldapadd -x -D "DN do usurio" -W -f "arquivo_ldif_com_registros" Veja uma pequena descrio do que cada parmetro usado significa: -x : indica que ser usada autenticao simples; -D "Dn do usurio" : indica o Dn do usurio que vai fazer a operao no diretrio. Em nosso caso usaremos o Dn do admin, pois no arquivo slapd.ldif temos que ele o nico usurio que pode escrever em todo o diretrio; -W : faz que aparea um prompt pedindo a senha do usurio; -f "arquivo_ldif_com_registros" : indica o arquivo que contm os registros a serem inseridos no diretrio. Para ver todos os parmetros permitidos pelo ldapadd, digite em qualquer shell: # ldapadd --help No exemplo atual, para inserir os registros contidos no arquivo insere.ldif, usaramos a seguinte linha de comando: # ldapadd -x -D "cn=admin,dc=rnp" -W -f insere.ldif

13 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Removendo registros do LDAP Para remover um registro, pode-se usar o comando ldapdelete. A sintaxe bsica que ele usa a seguinte: ldapdelete -v -x -D "DN "ldif_com_registros_a_serem_deletados" do usurio" -W -f

Os parmetros tm o mesmo sentido dos usados no comando ldapadd. S foi usado aqui um parmetro a mais, que o: -v : faz com que os resultados da operao sejam mostrados na tela. Caso esse parmetro no seja colocado, voc no ver se o registro foi excludo ou no, s se fizer uma busca e verificar que ele no est mais l. No arquivo ldif, a diferena que deve-se ter apenas os Dns dos registros a serem deletados. Caso voc deletar um registro, basta criar um arquivo chamado delete.ldif (pode ser o nome que voc quiser) que contenha o DN do registro a ser excludo (no arquivo, no coloque "dn:" na frente do DN) e depois executar o seguinte comando: # ldapdelete -v -x -D "cn=admin,dc=rnp" -W -f delete.ldif Um exemplo de como ficaria a arquivo delete.ldif o seguinte: # incio de delete.ldif cn=voip,ou=pop-ce,dc=rnp # fim de delete.ldif - Lembre-se de retirar os comentrios Fazendo buscas no diretrio No momento, j foi ensinado como inserir e remover registro, mas ainda est faltando o mais importante, que como fazer buscas no diretrio. Para isso ser usado o comando ldapsearch. A sintaxe bsica desse comando : ldapsearch -x -b "DN_da_raiz_da_DIT" "filtros" Aqui temos o atributo novo -b:

14 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

-b "DN_da_raiz_da_DIT" : indica o DN da raiz da DIT, pois caso no seja informado, talvez sua busca no consiga retornar os resultados desejados. No comando tambm foi usada a expresso "filtros", que serve para procurar apenas registros com certo valor para um atributo. Por exemplo, se quisermos fazer uma busca por todos os registros que tenham o atributo cn=voip, teramos o seguinte comando j fazendo a adaptao do filtro: # ldapsearch -x -b "dc=rnp" cn=voip Perceba que nessa busca no foi preciso se autenticar, pois no arquivo slapd.conf temos que qualquer pessoa pode ter acesso de leitura ao diretrio. Existem vrias outras formas de filtragem de buscas que no sero abordadas nesse documento, pois o objetivo das implementaes feitas aqui apenas o de que o usurio possa ter uma melhor viso de como funciona um diretrio LDAP. Informaes mais aprofundadas sobre a sintaxe de consultas, inseres e outras operaes usando o OpenLdap podem ser encontradas na pgina oficial do software: http://www.openldap.org Nos manuais que acompanham o programa e nos helps que podem ser acessados atravs do parmetro -- help na linha de comandos (Ex: ldapsearch --help). Uma coisa que ainda deve ser citada que se o seu servidor LDAP no estiver na mesma mquina onde voc est fazendo as inseres, remoes ou consultas, necessrio adicionar o seguinte parmetro aos respectivos comandos: -h "ip_ou_nome_do_servidor" : indica o endereo ou o nome do servidor LDAP. Exemplo: # ldapsearch -h 192.168.0.12 -x -b "dc=rnp" cn=voip

15 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

Caso voc queira fazer buscas usando o modo grfico, possvel usar browsers (clientes) LDAP. Um browser bastante interessante, o LBE (LDAP Browser Editor) pode ser encontrado em: http://www.iit.edu/~gawojar/ldap/download.html Esse cliente Java bem fcil de configurar. Basta informar qual o servidor LDAP, qual a porta que ele est usando (a porta padro a 389) e qual o DN da base do diretrio. possvel tambm, diretamente do browser, fazer modificaes nos registros, caso voc se autentique com o usurio adequado (para fazer modificaes via shell deve ser usado o comando ldapmodify).

Criando usurios, consideraes finais e bibliografia J falamos algumas vezes nesse documento em usurios do LDAP, mas at agora no foi visto como criar esses usurios. Para criar um usurio, basta inserir um registro no diretrio (preferencialmente que seja um registro que contenha os dados desse usurio) e colocar uma senha para ele. Esse registro tem que possuir um RDN que seja formado por um atributo que possa referenciar um usurio, como por exemplo cn ou uid (User Identifier), pois no so todos atributos que o LDAP aceita para criar um usurio (por exemplo, mail no aceito). Para colocar a senha e criar o usurio propriamente dito, pode-se usar o comando ldappasswd, cuja sintaxe : ldappasswd -x -D "DN_do_admin" "DN_do_registro_do_usurio" -W -S O parmetro -S quer dizer: -S : faz que um prompt seja usado para indicar a nova senha do usurio. Nesse caso (adicionar um novo usurio), com o parmetro -D temos que usar o DN do admin, pois s ele vai ser capaz de adicionar usurios. Mas depois de criado, o usurio pode mudar sua prpria senha apenas usando com o parmetro -D seu prprio DN. Um exemplo de criao do usurio cujo DN cn=voip, ou=pop-rj, dc=rnp fica da seguinte forma: # ldappasswd -x -D "cn=admin,dc=rnp" "cn=voip,ou=pop-rj,dc=rnp" -W

16 de 17

29-02-2012 13:20

Entendendo o LDAP [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.p...

-S Caso o usurio voip queira mudar sua senha, basta ele usar o seguinte comando: # ldappasswd -x rj,dc=rnp" -W -S -D "cn=voip,ou=pop-rj,dc=rnp" "cn=voip,ou=pop-

De acordo com o arquivo slapd.conf, usurios extras que forem criados alm do admin no tm permisso de escrita no diretrio, a no ser em seu prprio registro. Conclumos dizendo que o LDAP uma soluo interessante na rea de diretrios, que como todas aplicaes, tem suas vantagens e desvantagens dependendo dos objetivos. Bibliografia: http://www.ldap.org.br http://www.ldap.liceu.com.br/topo/classes_atributtos/classes.htm http://geocities.yahoo.com.br/cesarakg/artigos.html#ldap http://rfc.net/rfc3703.html http://rfc.net/rfc2252.html http://rfc.net/rfc2253.html http://rfc.net/rfc2254.html http://rfc.net/rfc2255.html http://rfc.net/rfc2256.html

http://www.vivaolinux.com.br/artigo/Entendendo-o-LDAP Voltar para o site

17 de 17

29-02-2012 13:20

Você também pode gostar