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:
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.
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 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 em Figura 45.1, “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.
Tabela 45.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 45.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 |
Exemplo 45.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 45.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.