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.