25.2. Estrutura de uma árvore de diretórios LDAP

Um diretório LDAP tem uma estrutura de árvores. Todas as entradas (chamadas objetos) do diretório têm uma posição definida nesta hierarquia. Esta hierarquia é chamada de árvore de informação de diretórios (DIT). O caminho completo à entrada desejada, que a identifica de forma clara, é chamado nome distinto ou DN. Um único nó no caminho para esta entrada é chamado nome distinto relativo ou RDN. Objetos podem geralmente ser atribuídos a um ou dois tipos possíveis:

container

Estes objetos podem conter outros objetos. Tais classes de objetos são root (o elemento root da árvore de diretórios, que não existe realmente), c (país) ou (unidade organizacional) e dc (componente do domínio). Este modelo é comparável aos diretórios (pastas) em um sistema de arquivos.

folha

Estes objetos estão no final de uma ramificação e não têm objetos subordinados. Exemplos: person, InetOrgPerson ou groupofNames.

O topo da hierarquia de diretório tem um elemento root. Isso pode conter c (país), dc (componente de domínio) ou o (organização) como elementos subordinados. As relações em uma árvore de diretórios LDAP tornam-se mais evidentes no exemplo seguinte, mostrado na Figura 25.1, “Estrutura de um diretório LDAP”.

Figura 25.1. Estrutura de um diretório LDAP

Estrutura de um diretório LDAP

O diagrama completo compreende uma árvore de informações de diretório ficcional. As entradas em três níveis estão apresentadas. Cada entrada corresponde a uma caixa na figura. O nome distinto válido e completo para o funcionário SUSE ficcional Geeko Linux, neste caso é cn=Geeko Linux,ou=doc,dc=suse,dc=de. Ele é composto através da adição do RDN cn=Geeko Linux ao DN da entrada anterior ou=doc,dc=suse,dc=de.

A determinação global dos tipos de objetos que devem ser armazenados no DIT é realizada segundo um esquema. O tipo de um objeto é determinado pela classe de objeto. A classe de objeto determina quais atributos podem ou devem ser atribuídos ao objeto em questão. Portanto, um esquema deve conter definições de todos atributos e classes de objetos usados no cenário do aplicativo desejado. Há alguns esquemas comuns (consulte RFC 2252 e 2256). Porém, é possível criar esquemas personalizados ou usar vários esquemas complementando um ao outro se isso for exigido pelo ambiente no qual o servidor LDAP deve operar.

A Tabela 25.1, “Atributos e classes de objeto usados comumente” oferece uma pequena visão geral das classes de objeto de core.schema e inetorgperson.schema usadas no exemplo, incluindo atributos necessários e valores de atributos válidos.

Tabela 25.1. Atributos e classes de objeto usados comumente

Classe de objeto

Significado

Entrada de exemplo

Atributos compulsórios

dcObject

domainComponent (nomeie componentes do domínio)

suse

dc

organizationalUnit

organizationalUnit (unidade organizacional)

doc

ou

inetOrgPerson

inetOrgPerson (dados relativos a pessoas para a intranet ou Internet)

Geeko Linux

sn e cn

O Exemplo 25.1, “Exemplo de schema.core ” mostra um exemplo de uma diretiva de esquemas com explicações (numeração de linha para motivos explanatórios).

Exemplo 25.1. Exemplo de schema.core

 
#1 attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName') 
#2        DESC 'RFC2256: unidade organizacional à qual este objeto pertence' 
#3        nome SUP )

... 
#4 objectclass ( 2.5.6.5 NAME 'organizationalUnit' 
#5        DESC 'RFC2256: an organizational unit' 
#6        SUP top STRUCTURAL 
#7        MUST ou 
#8 MAY (userPassword $ searchGuide $ seeAlso $ businessCategory 
    $ x121Address $ registeredAddress $ destinationIndicator 
    $ preferredDeliveryMethod $ telexNumber 
    $ teletexTerminalIdentifier $ telephoneNumber 
    $ internationaliSDNNumber $ facsimileTelephoneNumber 
    $ street $ postOfficeBox $ postalCode $ postalAddress 
    $ physicalDeliveryOfficeName 
    $ st $ l $ description) ) 
...

O tipo de atributo organizationalUnitName e a classe de objeto correspondente organizationalUnit servem como um exemplo aqui. A linha 1 apresenta o nome do atributo, seu OID exclusivo (identificador de objeto) (numérico) e a abreviação do atributo.

A linha 2 fornece uma descrição breve do atributo com DESC. O RFC correspondente na qual a definição é baseada também é mencionado aqui. SUP na linha 3 indica um tipo de atributo super ordenado ao qual este atributo pertence.

A definição da classe de objeto organizationalUnit começa na linha 4, como na definição do atributo, com um OID e o nome da classe de objeto. A linha 5 apresenta uma breve descrição da classe de objeto. A linha 6, com esta entrada SUP top, indica que esta classe de objeto não está subordinada a outra classe de objeto. A linha 7, começando com MUST, lista todos os tipos de atributo que devem ser usados em conjunto com um objeto do tipo organizationalUnit. A linha 8, começando com MAY, lista todos os tipos de atributos que são permitidos em conjunto com esta classe de objeto.

Uma boa introdução para o uso de esquemas pode ser encontrada na documentação de OpenLDAP. Quando instalada, encontre-a em /usr/share/doc/packages/openldap2/admin-guide/index.html.