Definição do LDIF

Um arquivo LDIF é:

Um registro consiste de uma seqüência de linhas descrevendo uma entrada do diretório ou um conjunto de modificações em uma entrada do diretório. Ele especifica um conjunto de entradas do diretório ou um conjunto de mudanças a ser aplicado nas entradas do diretório, mas não ambos.

Existe uma relação um-para-um entre as operações LDAP que modificam o diretório (add, delete, modify e modrdn) e os tipos de registros. Essa correspondência é intencional, pois permite uma tradução direta do registro LDIF para as operações do protocolo. Mais informações sobre as operações no Apêndice D, Operações do LDAP.

A forma básica de um registro é:

# comentário
dn: distinguished name
attrdesc: attrvalue
attrdesc: attrvalue

A seguir está um exemplo de um arquivo LDIF.

Exemplo B.1. Arquivo LDIF

dn: dc=ime,dc=usp,dc=br
objectClass: domain
dc: ime

dn: cn=admin,dc=ime,dc=usp,dc=br
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: admin
description: Administrador do LDAP
userPassword: {CRYPT}NHiC2OYs6eym2

dn: ou=Users,dc=ime,dc=usp,dc=br
objectClass: organizationalUnit
ou: Users
description: Usuários da organização

dn: ou=Groups,dc=ime,dc=usp,dc=br
objectClass: organizationalUnit
ou: Groups
description: Grupos do sistema

Cada registro consiste em um DN obrigatoriamente, e uma ou mais classes de objetos e múltiplas definições de atributos. O objectClass especifica a classe de objeto da entrada. A classe define quais atributos ou schema's são permitidos ou obrigatórios para a entrada. Os dados em um arquivo LDIF devem obedecer as regras de schema do diretório LDAP.

Agora vamos analisar alguns registros:

dn: dc=ime,dc=usp,dc=br
objectClass: domain
dc: ime

Esse registro define o domínio, que é a raiz da árvore de diretório.

dn: cn=admin,dc=ime,dc=usp,dc=br
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: admin
description: Administrador do LDAP
userPassword: {CRYPT}NHiC2OYs6eym2

Esse registro define a entrada que será usada como administrador do diretório. A classe organizationalRole define entradas que representam cargos desempenhados pelas pessoas em uma organização. A classe simpleSecurityObject permite o uso de passwords por outras classes. cn é um atributo obrigatório da classe organizationalRole. description é um atributo da classe organizationalRole, que define a descrição do cargo. userPassword é um atributo obrigatório da classe simpleSecurityObject, que define o password da entrada.

cn (Common Name) é um atributo usado para definir o nome (RDN) de uma entrada no diretório. Ele é bem genérico, pois seu tipo não diz nada a respeito do que representa a entrada. O atributo dc (Domain Component) é usado para definir uma parte do nome de um domínio. Ele também pode definir o RDN de uma entrada, no exemplo, seria dc=ime.

dn: ou=Users,dc=ime,dc=usp,dc=br
objectClass: organizationalUnit
ou: Users
description: Usuários da organização

dn: ou=Groups,dc=ime,dc=usp,dc=br
objectClass: organizationalUnit
ou: Groups
description: Grupos do sistema

Esses registros definem duas unidades organizacionais, ou=Users,dc=ime,dc=usp,dc=br, que contém os usuários, e ou=Groups,dc=ime,dc=usp,dc=br, que contém os grupos de usuários. ou (Organizational Unit) é um atributo da classe organizationalUnit. Ela permite definir uma entrada como uma unidade organizacional e também é usado para definir o RDN da entrada.

Outro exemplo:

Exemplo B.2. Outro arquivo LDIF

dn: uid=barbosa,ou=Users,dc=ime,dc=usp,dc=br
objectClass: account
objectClass: posixAccount
uid: barbosa
uidNumber: 2424
gidNumber: 20000
cn: Barbosa Pinto
userPassword: {CRYPT}KSC/iTKEfKm0A
loginShell: /bin/bash
homeDirectory: /home/barbosa/
gecos: Barbosa Pinto

dn: cn=SI,ou=Groups,dc=ime,dc=usp,dc=br
objectClass: posixGroup
cn: SI
gidNumber: 20000
description: Grupo dos usuários do SI

O primeiro registro, que é das classes account e posixAccount, representa um usuário Linux/Unix, e o segundo, que é da classe posixGroup, representa um grupo Linux/Unix. Na verdade essas classes servem para definir usuário e grupo de qualquer sistema operacional que siga o padrão POSIX.

uid (User Identification) é um atributo que é usado para definir o RDN da entrada que represente um usuário.

Esses exemplos de arquivos LDIF poderiam ser usados para importar informações de um diretório. A seguir está um exemplo que poderia ser usado para representar uma mudança a ser aplicada em uma entrada do diretório.

Exemplo B.3. Arquivo LDIF para remover usuário

dn: uid=barbosa,ou=Users,dc=ime,dc=usp,dc=br
changetype: delete

A palavra-chave changetype é usada para modificar registros existentes no diretório. changetype recebe o valor delete, que significa que o registro cujo dn é uid=barbosa,ou=Users,dc=ime,dc=usp,dc=br é para ser apagado.

Dica

Trabalhar com arquivos LDIF assim como com ferramentas de linha de comando é construtivo para o aprendizado e entendimento das estruturas de dados do diretório. Porém não é muito conveniente na prática. Por isso existem várias ferramentas gráficas para isso. Mais informações no Capítulo 4, Ferramentas de gerenciamento.