User Tools

Site Tools


wikiv3:comando-ldapsearch

Comando ldapsearch

Por meio dele, é possível construir buscas na base LDAP.

Opções para o escopo de pesquisa:

  • b → Define a partir de qual “galho” a pesquisa será feita;
  • s → Define o escopo da pesquisa.

As opções abaixo referem-se aos escopos para a opção “-s”:

  • base → Busca apenas na base DN;
  • one → Busca no mesmo nível do “galho” definido em -b e em mais um subnível;
  • Sub → Opção padrão, busca recursivamente a partir do “galho”.

No exemplo abaixo, temos uma pesquisa simples onde todas as informações contidas no galho Usuários será trazida:

# service slapd start
# ldapsearch -h localhost -p 389 -x -D cn=admin,dc=laboratorio,dc=com,dc=br -w senha -b ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br -LLL
dn: ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
ou: Usuarios
objectClass: organizationalUnit
objectClass: top
 
dn: cn=Linus Torvalds,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
uid: linust
cn: Linus Torvalds
sn: linust
objectClass: inetOrgPerson
objectClass: posixAccount
homeDirectory: /home/linust
loginShell: /bin/bash
uidNumber: 1020
gidNumber: 1020
userPassword:: MTIzbXVkYXI=
  • Em geral nas pesquisas utilizamos a opção -LLL que desabilita comentários e informações extras nos resultados de pesquisas.

Construindo um filtro de busca

Buscando apenas pelo usuário linust:

# ldapsearch -h localhost -p 389 -x -D cn=admin,dc=laboratorio,dc=com,dc=br -w senha -b ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br -LLL uid=linust
dn: cn=Linus Torvalds,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
uid: linust
cn: Linus Torvalds
sn: linust
objectClass: inetOrgPerson
objectClass: posixAccount
homeDirectory: /home/linust
loginShell: /bin/bash
uidNumber: 1020
gidNumber: 1020
userPassword:: MTIzbXVkYXI=

Neste segundo exemplo, a busca foi feita pelo atributo “uid”, porém ao final desta, é requisitado que o valor retornado seja os atributos “cn” e “sn”:

# ldapsearch -h localhost -p 389 -x -D cn=admin,dc=laboratorio,dc=com,dc=br -w senha -b ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br -LLL uid=linust cn sn
dn: cn=Linus Torvalds,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
cn: Linus Torvalds
sn: linust

No exemplo abaixo, a busca criada trará campos onde uid for igual a linust e uidNumber igual a 2000. Repare que nessa sintaxe o operador “&” (and) aparece antes dos valores requeridos:

# ldapsearch -h localhost -p 389 -x -D cn=admin,dc=laboratorio,dc=com,dc=br -w senha -b ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br -LLL '(&(uid=linust)(uidNumber=2000))' cn

Para facilitar na construção dos próximos exemplos vamos definir o servidor e a base padrão para as buscas do ldap:

# vim /etc/ldap/ldap.conf
[...]
BASE    dc=laboratorio,dc=com,dc=br
URI     ldap://127.0.0.1
[...]

E vamos adicionar mais um usuário:

# cat user02.ldif 
dn: cn=Tim Berners-Lee,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
uid: timb
cn: Tim Berners-Lee
sn: timb
objectClass: inetOrgPerson
objectClass: posixAccount
loginShell: /bin/bash
uidNumber: 1021
gidNumber: 1021
homeDirectory: /home/timb
userPassword: {SSHA}w6sk3690RGbCzTWmmr1JpkcY2HQpysC7
# service slapd stop
# slapadd -l user02.ldif 
_#################### 100.00% eta   none elapsed            none fast!         
Closing DB...

Exemplos de buscas avançadas:

# service slapd start
# ldapsearch -h localhost -p 389 -x -D cn=admin,dc=laboratorio,dc=com,dc=br -w senha -b ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br -LLL '(|(uid=linut)(uid=timb))' cn
dn: cn=Tim Berners-Lee,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
cn: Tim Berners-Lee
# ldapsearch -h localhost -p 389 -x -D cn=admin,dc=laboratorio,dc=com,dc=br -w senha -b ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br -LLL '(&(uid=linust)(!(uidNumber=1021)))' cn
dn: cn=Linus Torvalds,ou=Usuarios,o=matriz,dc=laboratorio,dc=com,dc=br
cn: Linus Torvalds
wikiv3/comando-ldapsearch.txt · Last modified: by 127.0.0.1