UP | HOME

LPI-2 202-450 Topico 210.3
Uso de clientes LDAP

Índice

210.3 Uso de clientes LDAP - Objetivos

Peso 2

O candidato deve ser capaz de realizar consultas e atualizações em um servidor LDAP. Inclui também importar e incluir itens, assim como incluir e administrar usuários.

Conhecimentos-chave:

  • Ferramentas do LDAP para administração de dados e consultuas;
  • Alterar senhas de usuários;
  • Consultar o diretório LDAP.

Lista parcial dos arquivos, termos e ferramentas utilizados:

210.3 Uso de clientes LDAP - Conteúdo

Observações:

  • Este tópico é sobre os utilitários clientes LDAP e seu uso. Logicamente precisaremos de um servidor LDAP configurado e em funcionamento para executaer as consultas e modificações;
  • é recomendável ler primeiro o tópico 210.4 antes de ler este tópico;
  • os utilitários clientes LDAP podem ser diferentes dependendo da versão do pacote OpenLDAP instalado;
  • Para melhores resultados e cobrir corretamente os objetivos do exame LPIC2 foi utilizado o OpenLDAP v2.3.x em um CentOS5 para os exemplos aqui expostos.

O comando ldapsearch

O comando ldapsearch abre uma conexão com o servidor LDAP, executa consultas através de parâmetros especificos. Por padrão o ldapsearch consulta o host local mas pode consultar hosts remotos com a opção -h e especificando o servidor.

Em nosso servidor OpenLDAP previamente configurado vamos executar o comando ldapsearch e verificar os resultados:

┌─[root@centos5]──[22:58]──[~]
└─[156]─># ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts 
#

#
dn:
namingContexts: dc=infralinux,dc=net

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

É possível resumir a saída do comando ldapsearch adicionando o modificador -L, no caso quanto mais L se colocar no comando mais simples será a saída:

ldapsearch -LLL -x -b ...

O comando ldapadd

O comando ldapadd é um comando de entrada, permite encaminhar arquivos .ldif para alimentar o banco LDAP

Logo para podermos criar um DC e uma OU para estruturar nosso servidor de diretórios. Assim precisaremos criar um arquivo .ldif.

dn: dc=infralinux,dc=net
objectClass: dcObject
dc: infralinux
objectclass: organizationalUnit
ou: rootobject

dn: ou=gerentes,dc=infralinux,dc=net
ou: gerentes
description: Gerentes da minha empresa
objectclass: organizationalUnit

Depois rodamos o comando ldapadd apontando para o nosso arquivo myou.ldif e entrando com as devidas credenciais que criamos ao configurar o arquivo slapd.conf.

┌─[root@centos5]──[23:49]──[~]
└─[189]─># ldapadd -x -D "cn=ldap2admin,dc=infralinux,dc=net" -W -f myou.ldif 
Enter LDAP Password: 
adding new entry "dc=infralinux,dc=net"

adding new entry "ou=gerentes,dc=infralinux,dc=net"

Os opcionais usados foram:

  • -x: Usar autenticação simples;
  • -D: mostra qual conta administrativa será utilizada para executar a operação;
  • -W: cria o prompt para entrar com a senha da conta administrativa indicada;
  • -f: especifica o arquivo .ldif a utilizar.

O resultado das alterações executadas acima podem ser consutadas através do comando slapcat

┌─[root@centos5]──[23:49]──[~]
└─[190]─># slapcat
dn: dc=infralinux,dc=net
objectClass: dcObject
objectClass: organizationalUnit
dc: infralinux
ou: rootobject
structuralObjectClass: organizationalUnit
entryUUID: a7712f72-eb4b-103b-80df-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207014926Z
entryCSN: 20211207014926Z#000000#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207014926Z

dn: ou=gerentes,dc=infralinux,dc=net
ou: gerentes
description: Gerentes da minha empresa
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
entryUUID: a7812f8a-eb4b-103b-80e0-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207014926Z
entryCSN: 20211207014926Z#000001#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207014926Z

Agora com a existência da OU gerentes podemos adicionar entradas a ela preparando um arquivo .ldif

dn: cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net
objectclass: inetOrgperson
cn: Pedro Silva
sn: silva
uid: pjsilva
userpassword: Aa12345
carlicense: abc123
homephone: 111-222-3344
mail: p.silva@infralinux.net
mail: psilva@infralinux.net
mail: pedro.silva@infralinux.net
description: Big Boss
ou: gerentes

Logo podemos inserir mais esse .ldif da mesma forma de quando criamos a OU gerentes.

┌─[root@centos5]──[00:10]──[~]
└─[205]─># ldapadd -x -D "cn=ldap2admin,dc=infralinux,dc=net" -W -f myuser.ldif 
Enter LDAP Password: 
adding new entry "cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net"

Podemos verificar os resultados de nossas modificações utilizando os comandos slapcat e o comando ldapsearch:

┌─[root@centos5]──[00:10]──[~]
└─[206]─># slapcat
dn: dc=infralinux,dc=net
objectClass: dcObject
objectClass: organizationalUnit
dc: infralinux
ou: rootobject
structuralObjectClass: organizationalUnit
entryUUID: a7712f72-eb4b-103b-80df-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207014926Z
entryCSN: 20211207014926Z#000000#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207014926Z

dn: ou=gerentes,dc=infralinux,dc=net
ou: gerentes
description: Gerentes da minha empresa
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
entryUUID: a7812f8a-eb4b-103b-80e0-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207014926Z
entryCSN: 20211207014926Z#000001#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207014926Z

dn: cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net
objectClass: inetOrgPerson
cn: Pedro Silva
sn: silva
uid: pjsilva
userPassword:: QWExMjM0NQ==
carLicense: abc123
homePhone: 111-222-3344
mail: p.silva@infralinux.net
mail: psilva@infralinux.net
mail: pedro.silva@infralinux.net
description: Big Boss
ou: gerentes
structuralObjectClass: inetOrgPerson
entryUUID: 95908da4-eb4e-103b-80e2-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207021025Z
entryCSN: 20211207021025Z#000000#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207021025Z

┌─[root@centos5]──[00:13]──[~]
└─[211]─># ldapsearch -x -b 'ou=gerentes,dc=infralinux,dc=net' '(objectclass=inetorgperson)' uid
# extended LDIF
#
# LDAPv3
# base <ou=gerentes,dc=infralinux,dc=net> with scope subtree
# filter: (objectclass=inetorgperson)
# requesting: uid 
#

# Pedro Silva, gerentes, infralinux.net
dn: cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net
uid: pjsilva

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Observação ao final da linha do comando ldapsearch requisitamos o campo que queremos consultar. No exemplo da Listagem 7 requisitamos a uid do objeto. Porém se requisitarmos um userPassword o comando ldapsearch não nos trará a resposta. A única forma de vermos esse campo é através do comando slapcat e este nos trará apenas a hash para o conteúdo desse campo.

O comando ldappasswd

Usamos ldappasswd para gerar a senha em hash para o usuário administrador LDAP, mas também podemos usá-lo para reiniciar as senhas dos usuários:

┌─[root@centos5]──[00:44]──[~]
└─[226]─># ldappasswd -x -D "cn=ldap2admin,dc=infralinux,dc=net" -s NovaSenha \
> -W "cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net"
Enter LDAP Password: 
Result: Success (0)

As opções que usamos foram:

  • -x: Para autenticação simples;
  • -D: especifica o usuário que tem permissão de escrever na base LDAP;
  • -s: onde colocamos a senha nova para o usuário que iremos editar;
  • -W: emite o prompt para entrarmos com a senha do usuário com poderes de escrita
  • por fim colocamos a DN do usuário que receberá a senha nova.

Rodando novamente o comando slapcat podemos notar que o campo userPassword agora apresenta um conteúdo diferente do antigo (QWExMjM0NQ==).

dn: cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net
objectClass: inetOrgPerson
cn: Pedro Silva
sn: silva
uid: pjsilva
carLicense: abc123
homePhone: 111-222-3344
mail: p.silva@infralinux.net
mail: psilva@infralinux.net
mail: pedro.silva@infralinux.net
description: Big Boss
ou: gerentes
structuralObjectClass: inetOrgPerson
entryUUID: 95908da4-eb4e-103b-80e2-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207021025Z
userPassword:: e1NTSEF9aE9mVExqRDhNSHZQQ2RaNElkTTBZbnlGVTN3MXZqelQ=
entryCSN: 20211207024220Z#000000#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207024220Z

O comando ldapdelete

Funciona de forma semelhante ao ldapadd e outros. Permite deletar registros.

┌─[root@centos5]──[00:56]──[~]
└─[229]─># ldapdelete "cn=Pedro Silva,ou=gerentes,dc=infralinux,dc=net" -x \
> -D "cn=ldap2admin,dc=infralinux,dc=net" -W
Enter LDAP Password: 
┌─[root@centos5]──[00:56]──[~]
└─[230]─># slapcat
dn: dc=infralinux,dc=net
objectClass: dcObject
objectClass: organizationalUnit
dc: infralinux
ou: rootobject
structuralObjectClass: organizationalUnit
entryUUID: a7712f72-eb4b-103b-80df-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207014926Z
entryCSN: 20211207014926Z#000000#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207014926Z

dn: ou=gerentes,dc=infralinux,dc=net
ou: gerentes
description: Gerentes da minha empresa
objectClass: organizationalUnit
structuralObjectClass: organizationalUnit
entryUUID: a7812f8a-eb4b-103b-80e0-bd5a31775489
creatorsName: cn=ldap2admin,dc=infralinux,dc=net
createTimestamp: 20211207014926Z
entryCSN: 20211207014926Z#000001#00#000000
modifiersName: cn=ldap2admin,dc=infralinux,dc=net
modifyTimestamp: 20211207014926Z

Onde os opcionais -x, -D e -W funcionam igual aos outros comandos até aqui mostrados.

E é tudo o necessário a estudar para este tópico.

Autor: Jeremias Alves Queiroz

Criado em: 2021-12-17 sex 18:37

Valid XHTML 1.0 Strict