Se estiver a trabalhar numa empresa média-grande, provavelmente irá interagir diariamente com LDAP.
Se isto está num controlador de domínio do Windows, ou num servidor Linux OpenLDAP, o protocolo LDAP é muito útil para centralizar a autenticação.
no entanto, à medida que o seu directório LDAP cresce, poderá perder-se em todas as entradas que poderá ter de gerir.
Felizmente, existe um comando que o ajudará a procurar por itens numa árvore de pastas LDAP : ldapsearch.
neste tutorial, vamos ver como você pode procurar facilmente LDAP usando ldapsearch.
também vamos rever as opções fornecidas pelo comando, a fim de realizar pesquisas LDAP avançadas.
Índice
- Pesquisa LDAP usando ldapsearch
- procurar LDAP com a conta admin
- executar pesquisas LDAP com filtros
- Encontrar todos os objetos na árvore de diretório
- Encontrar contas de utilizador usando ldapsearch
- e operador que utiliza ldapsearch
- OU Operador usando o ldapsearch
- a Negação de Filtros usando ldapsearch
- Encontrar a configuração do servidor LDAP usando o ldapsearch
- usando caracteres especiais em buscas LDAP
- Ldapsearch Opções Avançadas
- LDAP Extensível Correspondem aos Filtros
- sobrecarregar os operadores predefinidos
- conclusão
Pesquisa LDAP usando ldapsearch
A maneira mais fácil para procurar LDAP é usar ldapsearch com a opção “-x” para autenticação simples e especificar a base de pesquisa com o “-b”.
Se não estiver a correr a pesquisa directamente no servidor LDAP, terá de indicar a máquina com a opção “-H”.
$ ldapsearch -x -b <search_base> -H <ldap_host>
como exemplo, digamos que você tem um servidor OpenLDAP instalado e em execução na máquina 192.168.178.29 da sua rede.
Se o seu servidor estiver a aceitar a autenticação anónima, poderá efectuar uma pesquisa LDAP sem se ligar à conta admin.
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
Como você pode ver, se você não especificar qualquer filtros, o cliente LDAP irá assumir que você deseja executar uma procura em todas as classes de objeto de sua árvore de diretório.como consequência, ser-lhe-á apresentada muita informação. Se você quiser restringir a informação apresentada, vamos explicar os filtros LDAP no próximo capítulo.
procurar LDAP com a conta admin
em alguns casos, poderá querer executar as consultas LDAP como a conta admin, de modo a ter informações adicionais apresentadas a si.
para conseguir isso, você terá que fazer um pedido de bind usando a conta de administrador da árvore LDAP.
para procurar LDAP usando a conta admin, Você tem que executar a consulta “ldapsearch” com a opção “-D” para o bind DN e o “-W”, a fim de ser solicitado para a senha.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
como exemplo, digamos que a sua conta de administrador tem o seguinte nome distinto:”cn=admin,dc=devconnected,dc=com”.
a fim de realizar uma pesquisa LDAP como esta conta, você teria que executar a consulta seguinte
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W
Ao executar uma pesquisa LDAP como a conta de administrador, você pode ser exposto a senhas criptografadas, portanto, certifique-se de que você executar a consulta particular.
executar pesquisas LDAP com filtros
executar uma pesquisa LDAP simples sem quaisquer filtros é provável que seja uma perda de tempo e de recursos.
na maioria das vezes, você deseja executar uma pesquisa LDAP, a fim de encontrar objetos específicos na sua árvore de diretórios LDAP.
para procurar por um item LDAP com filtros, você poderá adicionar o seu filtro no fim do comando ldapsearch : à esquerda, você indica o tipo de objecto e à direita o valor do objecto.
opcionalmente, poderá indicar os atributos a devolver do objecto (o utilizador, a senha do Utilizador, etc.)
$ ldapsearch <previous_options> "(object_type)=(object_value)" <optional_attributes>
Encontrar todos os objetos na árvore de diretório
para retornar todos os objetos disponíveis na sua árvore LDAP, você pode acrescentar o “objectclass” filtro e um caractere curinga “*” para especificar que você deseja retornar todos os objetos.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"
ao executar esta consulta, você será apresentado com todos os objetos e todos os atributos disponíveis na árvore.
Encontrar contas de utilizador usando ldapsearch
por exemplo, digamos que deseja encontrar todas as contas de utilizador na árvore de pastas LDAP.
Por padrão, as contas de usuário provavelmente terão a classe de objeto estrutural” conta”, que pode ser usada para restringir todas as contas de usuário.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"
por omissão, a consulta irá devolver todos os atributos disponíveis para a classe de objecto indicada.
Conforme especificado na seção anterior, você pode acrescentar atributos opcionais a sua consulta se quiser afinar a sua pesquisa.
Por exemplo, se você está interessado apenas em que o usuário CN, UID, e o diretório, você deve executar o seguinte pesquisa LDAP
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
Incrível, você executou uma pesquisa LDAP usando os filtros de atributo e seletores!
e operador que utiliza ldapsearch
a fim de ter vários filtros separados por “e” operadores, você tem que incluir todas as condições entre parênteses e ter um “&” caractere escrito no início da consulta.
$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"
Por exemplo, digamos que você deseja encontrar todas as entradas têm um “objectclass” que é igual a “conta” e um “uid” é igual ao “joão”, você deve executar a seguinte consulta
$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
OU Operador usando o ldapsearch
para ter vários filtros separados por “OU” operadores, você tem que colocar todas as condições entre colchetes e tem um caractere “|” escrito no início da consulta.
$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"
Por exemplo, se você deseja encontrar todas as entradas com uma classe de objeto do tipo “conta” ou tipo “organizationalRole”, execute a seguinte consulta
$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"
a Negação de Filtros usando ldapsearch
Em alguns casos, você quer negativamente coincidir com algumas das entradas na árvore do diretório de LDAP.
A fim de ter um filtro de correspondência negativo, você tem que incluir a sua condição(s) com um “!”caractere e ter condições separadas por parêntesis.
$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"
Por exemplo, se você deseja fazer a correspondência de todas as entradas NÃO tendo um “cn” atributos de valor “joão”, você deve escrever a seguinte consulta
$ ldapsearch <previous_options> "(!(cn=john))"
Encontrar a configuração do servidor LDAP usando o ldapsearch
Uma utilização avançada do comando ldapsearch é para recuperar a configuração de sua árvore LDAP.
Se estiver familiarizado com o OpenLDAP, sabe que existe um objecto de configuração global no topo da sua hierarquia LDAP.
em alguns casos, você pode querer ver atributos da sua configuração LDAP, a fim de modificar o controle de acesso ou para modificar a senha de administrador raiz, por exemplo.
para procurar a configuração LDAP, use o comando ” ldapsearch “e indique” cn=config ” como base de pesquisa para a sua árvore LDAP.
para executar esta pesquisa, você tem que usar a opção “-Y” e especificar “externo” como o mecanismo de autenticação.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config
Nota : Este comando tem de ser executado directamente no servidor, não a partir de um dos seus clientes LDAP.
Por padrão, esse comando irá retornar um monte de resultados como ele retorna infra-estruturas, esquemas e módulos.
Se quiser restringir a sua pesquisa às configurações da base de dados, poderá indicar a classe de objectos “olcDatabaseConfig” com ldapsearch.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"
usando caracteres especiais em buscas LDAP
outra forma poderosa de pesquisar através de uma lista de entradas LDAP é usar caracteres especiais como o asterisco (“*”).
o carácter da carta especial tem a mesma função que o asterisco que usa na expressão regular : será usado para corresponder a qualquer atributo que comece ou termine com um dado sub-texto.
$ ldapsearch <previous_options> "(object_type)=*(object_value)"$ ldapsearch <previous_options> "(object_type)=(object_value)*"
como exemplo, digamos que você quer encontrar todas as entradas com um atributo “uid” começando com a letra “j”.
$ ldapsearch <previous_options> "uid=jo*"
Ldapsearch Opções Avançadas
neste tutorial, você aprendeu sobre básica ldapsearch opções, mas há muitas outras que podem ser de interesse para você.
LDAP Extensível Correspondem aos Filtros
Extensível LDAP correspondem aos filtros são usados para turbinar os operadores existentes (por exemplo, o operador de igualdade), especificando o tipo de comparação que você deseja executar.
sobrecarregar os operadores predefinidos
para sobrecarregar um operador LDAP, você tem que usar a sintaxe”:=”.
$ ldapsearch <previous_options> "<object_type>:=<object_value>"
Por exemplo, se você quer procurar todas as entradas têm um “cn” é igual ao “joão”, você deve executar o seguinte comando
$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"
Como você deve ter notado, a execução da pesquisa sobre o “joão” ou “JOÃO” retorna o mesmo resultado exato.
Como consequência, você pode querer restringir os resultados para a correspondência exata “john”, tornando o caso de pesquisa sensível.
Usando ldapsearch, poderá adicionar filtros adicionais separados por caracteres”:”.
$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"
Por exemplo, para ter uma pesquisa que diferencia maiúsculas de minúsculas, você deve executar o seguinte comando
$ ldapsearch <previous_options> "cn:caseExactMatch:=john"
Se você não estiver familiarizado com o LDAP correspondem aos filtros, aqui está uma lista de todos os operadores disponíveis para você.
conclusão
neste tutorial, você aprendeu como pode procurar numa árvore de pastas LDAP com o comando ldapsearch.
Você viu o básico de pesquisar Entradas e atributos básicos, bem como construir filtros de correspondência complexos com operadores (e, ou e operadores negativos).
Você também aprendeu que é possível sobrecarregar os operadores existentes usando opções de correspondência extensíveis e especificando o operador personalizado a ser usado.
Se você está interessado na administração avançada do sistema Linux, temos uma seção completa dedicada a ele no site, por isso certifique-se de verificá-lo!