25.4. Tratamento de dados no diretório LDAP

O OpenLDAP oferece uma série de ferramentas para a administração de dados no diretório LDAP. A quatro ferramentas mais importantes para adicionar, apagar, pesquisar e modificar o estoque de dados são explicadas abaixo.

25.4.1. Inserindo dados em um diretório LDAP

Depois que a configuração do seu servidor LDAP em /etc/openldap/lsapd.conf estiver correta e pronta (ela apresenta entradas apropriadas para suffix, directory, rootdn, rootpw e index), continue a inserir registros. OpenLDAP oferece o comando ldapadd para esta tarefa. Se possível, adicione os objetos ao banco de dados em pacotes por razões práticas. O LDAP é capaz de processar o formato LDIF (formato intercambiável de dados LDAP) para isso. Um arquivo LDIF é um arquivo de texto simples que pode conter um número arbitrário de pares de atributo e valor. Consulte os arquivos de esquema declarados em slapd.conf para os atributos e as classes de objeto disponíveis. O arquivo LDIF para criar uma estrutura bruta para o exemplo na Figura 25.1, “Estrutura de um diretório LDAP” teria a mesma aparência que no Exemplo 25.7, “Exemplo de um arquivo LDIF”.

Exemplo 25.7. Exemplo de um arquivo LDIF

# The SUSE Organization
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# The organizational unit development (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]Codificação de arquivos LDIF

O LDAP funciona com o UTF-8 (Unicode). Umlauts deve ser codificado corretamente. Use um editor que suporte UTF-8, como o Kate ou versões recentes de Emacs. De outra forma, evite umlauts e outros caracteres especiais ou use recode para registrar a entrada em UTF-8.

Salve o arquivo com o sufixo .ldif, em seguida, transmita-o ao servidor com o seguinte comando:

ldapadd -x -D <dn of the administrator> -W -f <file>.ldif

-x desliga a autenticação com o SASL neste caso. -D declara o usuário que chama a operação. O DN válido do administrador é inserido aqui como foi configurado em slapd.conf. No exemplo atual, há cn=admin,dc=suse,dc=de. -W evita a inserção de senha na linha de comando (em texto claro) e ativa um prompt de senha separado. Esta senha foi determinada previamente em slapd.conf com rootpw. -f transmite o nome de arquivo. Consulte os detalhes da execução de ldapadd no Exemplo 25.8, “ldapadd com example.ldif”.

Exemplo 25.8. ldapadd com example.ldif

 
ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldif 

Insira a senha do LDAP: 
adding new entry "dc=suse,dc=de" 
adding new entry "ou=devel,dc=suse,dc=de" 
adding new entry "ou=doc,dc=suse,dc=de" 
adding new entry "ou=it,dc=suse,dc=de"

Os dados de usuário de indivíduos podem ser preparados em arquivos LDIF separados. O Exemplo 25.9, “Dados LDIF para Tux” adiciona Tux ao novo diretório LDAP.

Exemplo 25.9. Dados LDIF para Tux

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
objectClass: inetOrgPerson
cn: Tux Linux
givenName: Tux
sn: Linux
mail: tux@suse.de
uid: tux
telephoneNumber: +49 1234 567-8

Um arquivo LDIF pode conter um número arbitrário de objetos. É possível transmitir ramificações de todo o diretório ao servidor de uma vez ou somente partes como mostrado no exemplo de objetos individuais. Se for necessário modificar alguns dados com freqüência, uma subdivisão de objetos únicos é recomendável.

25.4.2. Modificando dados no diretório LDAP

A ferramenta ldapmodify é fornecida para modificar o estoque de dados. A forma mais fácil de fazer isso é modificar o arquivo LDIF correspondente e, em seguida, transmitir este arquivo modificado ao servidor LDAP. Para alterar o número de telefone do colega Tux de +49 1234 567-8 para +49 1234 567-10, edite o arquivo LDIF como no Exemplo 25.10, “Arquivo LDIF modificado tux.ldif”.

Exemplo 25.10. Arquivo LDIF modificado tux.ldif

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +49 1234 567-10

Importe o arquivo modificado no diretório LDAP com o seguinte comando:

ldapmodify -x -D cn=admin,dc=suse,dc=de -W -f tux.ldif

Alternativamente, transmita os atributos para alterar diretamente para ldapmodify. O procedimento para isto está descrito abaixo:

  1. Inicie ldapmodify e insira sua senha:

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password:
    
  2. Insira as modificações e siga cuidadosamente a sintaxe na ordem apresentada abaixo:

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

Informações detalhadas sobre ldapmodify e sua sintaxe podem ser encontradas na página de manual de ldapmodify(1).

25.4.3. Buscando ou lendo dados de um diretório LDAP

OpenLDAP fornece, com ldapsearch, uma ferramenta de linha de comando para pesquisar dados em um diretório LDAP e ler dados a partir dele. Uma consulta simples teria a seguinte sintaxe:

ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"

A opção -b determina a base de busca — a seção da árvore dentro da qual a busca deve ser executada. No caso atual, isto é dc=suse,dc=de. Para realizar uma busca mais detalhada em subseções específicas do diretório LDAP (por exemplo, somente no departamento devel), transmita esta seção para ldapsearch com -b. -x solicita a ativação da autenticação simples. (objectClass=*) declara que todos os objetos contidos no diretório devem ser lidos. Esta opção de comando pode ser usada após a criação de uma nova árvore de diretório para verificar se todas as entradas foram registradas corretamente e se o servidor responde como desejado. Mais informações sobre o uso de ldapsearch podem ser encontradas na página de manual correspondente (ldapsearch(1)).

25.4.4. Apagando dados de um diretório LDAP

Apague entradas indesejadas com ldapdelete. A sintaxe é similar àquela dos comandos descritos acima. Para apagar, por exemplo, a entrada completa para Tux Linux, emita o seguinte comando:

ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \
Linux,ou=devel,dc=suse,dc=de