ver todos os atributos possíveis de uma objectClass for LDAP

2

Estou programando alguma automação do ldap e consegui um ligeiro desligamento. Basicamente, eu quero verificar se um atributo que está sendo adicionado a uma entrada realmente existe dentro de um determinado objectClass antes de tentar adicioná-lo.

Até agora, a melhor idéia que tenho para isso é apenas executar um regex no arquivo de definição de esquema para o atributo, mas isso não levaria em conta o arquivo de esquema que está sendo editado após a configuração ser inicializada.

Um segundo pensamento seria apenas pegar o erro lançado se o atributo não puder ser adicionado, mas isso parece menos eficiente, já que minha próxima etapa seria adicionar o atributo ao esquema e reconstruir a configuração.

Parece que deve haver um comando ldapsearch simples para fazer isso, mas não consigo descobrir a sintaxe.

até agora eu tentei:

ldapsearch -x -b 'dc=MY_DOMAIN,dc=com' '(objectclass=mySCHEMA)'

mas isso apenas lista qualquer entrada do ldap que tenha a classe de objeto mySCHEMA nelas.

Obrigado pela ajuda, Felicidades!

    
por Rooster 27.05.2014 / 17:49

5 respostas

5

Você está procurando o subschemaSubentry .
RFC 2252 Acesso ao diretório leve Protocolo (v3): Definições de Sintaxe do Atributo

5.1.5. subschemaSubentry

The value of this attribute is the name of a subschema entry (or subentry if the server is based on X.500(93)) in which the server makes available attributes specifying the schema.

( 2.5.18.10 NAME 'subschemaSubentry'
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 NO-USER-MODIFICATION
  SINGLE-VALUE USAGE directoryOperation )

Você pode encontrá-lo assim:

$ ldapsearch -s base -b '' subschemaSubentry
dn:
subschemaSubentry: cn=Subschema

$ ldapsearch -s base -b cn=Subschema objectClasses

Como uma linha:

ldapsearch -s base -b $(ldapsearch -s base -b '' subschemaSubentry | sed '/dn:/d;/^$/d;s/subschemaSubentry: //' ) objectClasses

Se você estiver criando scripts no bash e sua versão do ldapsearch oferecer suporte, -o ldif-wrap=no significará que você não precisa analisar a quebra de linha do ldif.

cn=schema,cn=config , embora útil, geralmente não está disponível no OpenLDAP devido aos controles de acesso herdados de cn=config .

    
por 28.05.2014 / 19:22
3

Isso é o que eu uso para mostrar o esquema de um objectClass específico , como organizationalRole

$ ldapsearch -s base -b cn=Subschema objectClasses -LLL -o ldif-wrap=no |\
  sed -nr '/organizationalRole/ p' | sed -r 's/[$()]+/\n /g'
    
por 10.11.2016 / 13:28
2

Já passou muito tempo desde que eu estava trabalhando com o LDAP, mas acho que cada servidor LDAP pode expor o esquema em um determinado sufixo.

Eu acho que no Openldap você pode procurar na base "cn = schema, cn = config" para encontrar o esquema atual. Experimente algo como ldapsearch -x -s sub -b "cn=schema,cn=config" '(objectclass=*)' para ver o que você recebe. (Não testei esta linha de comando, mas você entendeu ...).

Da perspectiva de um desenvolvedor, eu esperaria que o esquema correto estivesse lá e lidasse com a exceção de violação de classe de objeto como se fosse algum tipo de erro.

Acho que alterar o esquema não é algo que deve ser tratado pelo aplicativo que adiciona / exclui dados, mas pelo procedimento de instalação do software.

    
por 27.05.2014 / 19:23
1

Abordagens de script shell / awk simples não funcionarão por causa da herança da classe de objeto. Você tem que avaliar isso para realmente descobrir antecipadamente o que o servidor LDAP estaria fazendo com sua solicitação de adição / modificação. (Pelo menos é o que eu entendo o que você quer alcançar.)

Se você não se importar com o script em Python, pode usar o módulo ldap.schema do python-ldap que implementei para o suporte completo a esquemas em web2ldap . Além da herança de classes de objetos, ele também cuida das regras de conteúdo do DIT, o que é muito importante para obter listas de atributos com o MS AD.

Esteja avisado: A implementação de uma solução geral não é trivial! E, dependendo do servidor LDAP usado, você encontrará referências de esquema incompletas e terá que implementar o tratamento de retorno aqui e ali.

Eu só sei exatamente o um cliente LDAPv3 que implementa o suporte do esquema LDAP completo . ; -)

    
por 16.07.2018 / 23:41
0

Se você preferir uma solução GUI, baixe um navegador LDAP como o JXplorer . Uma vez conectado ao LDAP, ele permite que você navegue (e edite) todos os objetos e seus atributos.

    
por 15.06.2018 / 14:49

Tags