Comandos de gerenciamento do LDAP

 

O OpenLDAP possui muitos front-ends para administração, mas a forma padrão de administração é feita via linha de comando com os comandos providos pelo pacote “ldap-utils”. todos os comandos iniciando com slap* vem com o servidor LDAP e devem ser executados com o servidor parado, e os comandos iniciando com ldap* podem ser utilizados com o servidor em execução.

Vamos preparar o ambiente:

# apt-get install ldap-utils

Comandos SLAP*:

Não se esqueça de parar o servidor LDAP

# /etc/init.d/slapd stop

slaptest

-f /caminho/conf - Fornece um nome alternativo para o slapd.conf

Este comando testa a integridade do arquivo de configuração slapd.conf e suas opções.
Excelente para saber se as opções estão corretamente definidas.

# slaptest

slapcat

Este comando permite que a base LDAP seja exportada para um arquivo ldif que é a
extensão de arquivos utilizada para adicionar e/ou remover informações de uma base
LDAP.

-l ldif - Grava a base exportada para o arquivo ldif informado.

# slapcat -l base_cooperati.ldif

slapadd

Este comando utiliza um arquivo ldif para adicionar objetos à base LDAP.

-l ldif - arquivo ldif contendo as entradas para a base LDAP.

slappasswd

Este comando é um utilitário para geração de senhas em “hash”. O seu uso é muito
simples:

-s senha - Senha em texto puro.
-h hash - Qual o tipo de hash utilizado. Se omitido irá utilizar {SSHA}.

# slappasswd -h {SSHA} | tee -a /etc/ldap/slapd.conf

Sua utilidade é transformar senhas literais em senhas seguras em hash. Este “hash” deve ser colocado integralmente no atributo “userPassword”, assim a senha não mais será armazenada em texto plano.

slapindex

Este comando é utilizado para indexar a base LDAP seguindo às instruções definidas na opção “index” do arquivo de configuração “slapd.conf”.

Comandos LDAP*:

Esta série de comandos deve ser utilizada com o servidor LDAP rodando:

# /etc/init.d/slapd start

Todos os comando possuem essas opções em comum, e as principais são:

-h ldaphost - Especifica um host alternativo no qual deseja se conectar (Está se tornando obsoleto em favor de -H).

-p ldapport - Especifica uma porta alternativa do servidor LDAP (Está se tornando obsoleto em favor de -H).

-x - Usa autenticação simples no lugar de SASL

-ZZ - Inicia uma conexão segura, com start_tls.

-D binddn - Usa a DN informada para se conectar no diretório LDAP.

-W - É usado para não especificar a senha na linha de comandos.

-w senha - Senha para se autenticar no servidor LDAP.

ldapsearch

Comando utilizado para consultar uma base de dados LDAP.

-b searchbase - Apartir de que ponto do diretório a pesquisa irá iniciar.

-s Define o escopo da pesquisa. As opções são: base, one e sub
    base – Busca apenas na base DN
    one – busca no mesmo nível do “galho” definido em -b e em mais
um sub-nível;
    sub – opção padrão, busca recursivamente a partir do “galho”

-f arquivo - As linhas são lidas do arquivo informado.

-t - Em uma saída onde caracteres não imprimíveis surgem, os mesmo serão copiados para o diretório /tmp, tipicamente os atributos jpegPhoto ou audio.

-v - Retorna o diagnóstico da operação na saída padrão.

-L - Mostra informações restrita ao formato LDIFv1.

-LL - Mostra informações do LDIF sem os comentários.

-LLL - Mostra informações sobre o LDIF sem os comentários e sem a versão.

-C - Garante que ele vai seguir as referências da pesquisas.

[filtros] - Condição de pesquisa. Se omitido assume '(objectClass)'

[atributos ... ] - Atributos que devem ser retornados na pesquisa.

ldapadd

Comando utilizado para adicionar entradas no diretório LDAP.

ldapmodify

Comando utilizado para modificar dados no diretório LDAP.

ldapdelete

Comando utilizado para apagar uma ou mais entradas do diretório LDAP.

-f arquivo - As linhas são lidas do arquivo informado.

ldapmodrdn

Comando utilizado para modificar uma RDN.

-r - Remove o antigo valor de RDN.

Alguns exemplos:

# vi nascimento.ldif

# Cadastrando usuário
dn: cn=Capitao Nascimento,ou=People,dc=cooperati,dc=local
objectClass: inetOrgPerson
sn: Nascimento
homePhone: 1111-1111
mail: [email protected]
description: Faca na Caveira
ou: BOPE

Cadastrando o usuário:

# ldapadd -x -D cn=admin,dc=cooperati,dc=local -W -f nascimento.ldif

Consulta simples

# ldapsearch -x -b dc=cooperati,dc=local

Que é a mesma coisa que:

# ldapsearch -x -b dc=cooperati,dc=local ‘(dc=objectClass=*)’

Mas a próxima consulta é diferente:

# ldapsearch -x -b dc=cooperati,dc=local -D cn=admin,dc=cooperati,dc=local -W

Consultas com filtros usando E OU e EXCETO

Consulta com OU (OR):

# ldapsearch -x -b dc=cooperati,dc=local ‘(|(objectClass=inetOrgPerson) (objectClass=posixAccount))’

Consulta com E (AND):

# ldapsearch -x -b dc=cooperati,dc=local ‘(&(objectClass=inetOrgPerson) (objectClass=posixAccount))’

Consulta com EXCEÇÃO (NOT):

# ldapsearch -x -b dc=cooperati,dc=local ‘(!(cn=user1))’

Procurando por user1:

# ldapsearch -x -LL -b dc=cooperati,dc=local ‘(cn=user1)’

Consultando o email do Capitao Nascimento:

# ldapsearch -x -b dc=cooperati,dc=local ‘(cn=Capitao Nascimento)’ mail

Modificando uma entrada

# vi mudança1.ldif

dn: uid=user1,ou=People,dc=cooperati,dc=local
changetype: modify
replace: givenName
givenName: Usuario 1

# ldapmodify -x -D cn=admin,dc=cooperati,dc=local -W -f mudança1.ldif

Adicionando uma entrada

# vi mudança2.ldif

dn: uid=user1,ou=People,dc=cooperati,dc=local
changetype: modify
add: title
title: Gerente de Contas

# ldapmodify -x -D cn=admin,dc=cooperati,dc=local -W -f mudança2.ldif

Outra entrada mas com jpegPhoto

# vi mudança3.ldif

dn: uid=user1,ou=People,dc=cooperati,dc=local
changetype: modify
add: jpegPhoto
jpegPhoto:< file:///root/linux_kruguer.jpg

# ldapmodify -x -D cn=admin,dc=cooperati,dc=local -W -f mudança3.ldif

Modificando uma RDN

# vi mudança4.ldif

uid=user1,ou=People,dc=cooperati,dc=local
uid=usuario1

# ldapmodrdn -r -x -D cn=admin,dc=cooperati,dc=local -W -f mudança4.ldif

Apagando uma entrada

# vi mudança5.ldif

uid=usuario1,ou=People,dc=cooperati,dc=local

uid=user2,ou=People,dc=cooperati,dc=local

# ldapdelete -x -D cn=admin,dc=cooperati,dc=local -W -f mudança5.ldif

 

Espero que tenham gostado do post, e na próxima semana tem mais.

  • Thyago

    Ola, otimo post, vê se você pode me ajudar, eu fiz uma integração do samba 3 para o openldap, dai eu quero criar umas unidades organizacionais onde quero colocar os usuários, porém não consigo fazer a copia ou modificação, será que você pode me da uma luz.