Ldap o resto todo

Demorou mas eu voltei! Voltei pra finalizar com o assunto do LDAP, afinal de contas ficou faltando como, modificar, acrescentar e deletar coisas na linha de comando no seu serviço de diretórios.

O post vai ser meio extenso, vou tentar falar dos três comandos faltantes, ldapadd, ldapdelete e ldapmodify, sendo que o que te da mais opções é o de modificação. E por que disso? Acho que a comparação mais básica que se faz do serviço de diretórios é com um sistema gerenciador de banco de dados, os famosos SGBD, sendo assim o ldapadd e ldapdelete são mais usados para apagar e adicionar “tabelas” nessa nossa pequena comparação, enquanto o ldapmodify, faz alterações, ou apaga e adiciona novos dados nessas mesmas tabelas, ou seja faz menores alterações de todos os tipos na nossa árvore. Indo para a prática, vamos continuar dando exemplos usando nossa árvore de com os usuários do Zimbra.

Primeiro de tudo vamos buscar as informações completas de um determinado usuário:

ldapsearch -D “usuario_ldap” -w senha_ldap -p 389 -h localhost -b “uid=isaac,ou=people,dc=isaac,dc=com”

# extended LDIF
#
# LDAPv3
# base <uid=isaac,ou=people,dc=isaac,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# isaac, people, isaac.com
dn: uid=isaac,ou=people,dc=isaac,dc=com
uid: isaac
mail: isaac@isaac.com
displayName: isaac souza
givenName: isaac
objectClass: inetOrgPerson
objectClass: zimbraAccount
objectClass: amavisAccount
zimbraMailHost: zm-teste.copasa.com.br
cn: isaac souza
zimbraMailStatus: enabled
zimbraAccountStatus: active
zimbraId: 40914cc1-caec-4c92-9586-f7f9b8137d29
zimbraPrefGroupMailBy: message
zimbraMailTransport: lmtp:zm-teste.copasa.com.br:7025
sn: souza
zimbraCreateTimestamp: 20141211195136Z
zimbraMailDeliveryAddress: isaac@isaac.com
zimbraPrefZimletTreeOpen: FALSE
zimbraLastLogonTimestamp: 20141211200157Z
zimbraAuthTokenValidityValue: 2

Bom não estão todas as informações ai mas da pra conseguir o que queremos, você pode ver que usamos o DN do usuário na busca para conseguirmos todos os dados que estão abaixo dessa ramificação, assim então se você quiser fazer um backup desses dados é só mandar essa saída para um arquivo, normalmente chamado de ldif.

Estes arquivos são usados normalmente juntamente com o comando ldapadd para podermos inserir dados em um serviço de diretórios. Para simplificar a coisa vamos mostrar como apagaríamos todos os dados debaixo dessa determinada DN para então podermos restaura-los, ficaria assim então

Apagando a DN:

ldapdelete -D “usuario_ldap” -w senha_ldap -p 389 -h localhost uid=isaac,ou=people,dc=isaac,dc=com

Agora digamos que tínhamos um arquivo com esses dados chamado isaac.ldif (ou um arquivo ldif que queiramos importar para a nossa árvore):

ldapadd -D “usuario_ldap” -w senha_ldap -p 389 -h localhost -f isaac.ldif

Mais simples que isso, impossível.

Agora o mais legal na minha opinião. Vamos substituir um dado, digamos que a queiramos trocar o zimbraAccountStatus de active para lockout. Você faria o seguinte:

ldapmodify -D “usuario_ldap” -w senha_ldap -p 389 -h localhost

dn: uid=isaac,ou=people,dc=isaac,dc=com

changetype: modify

replace: zimbraAccountStatus

zimbraAccountStatus: lockout

Pronto, a conta foi trancada, lembre-se de sempre bater o enter após o que você deseja alterar para que ele seja mudado efetivamente.

Existem também outros tipos de “changetype”, o modify troca um valor por outro, delete é apagado um valor, e add é adicionado um novo valor, lembrando que esse novo valor deve ser um campo previamente conhecido pelo seu servidor de diretórios, no caso da adição, e que certos tipos de valores podem se repetir, e outros não (como se fossem chaves primarias em tabelas de bancos de dados).

Bom acho que isso é tudo que precisamos para um lado client usando o LDAP, como sempre espero ter ajudado. E em breve voltaremos com mais algum assunto interessante.

Dúvidas, sugestões ou reclamações me deixe um comentário.

Anúncios