1 votes

Ldapsearch affiche les entrées des membres sans CN

Je utilise ldapsearch sur une boîte Debian 9 Linux pour interroger un MS Active Directory. Je voudrais interroger/trouver tous les utilisateurs dans mon groupe "nomdemongroupe". La commande

ldapsearch -o ldif-wrap=no -xWLLL -D "moncompte" -h mondomaine -b "ou=utilisateur,dc=mondc,dc=com" "cn=nomdemongroupe" membre

a la sortie suivante:

dn: CN=nomdemongroupe,OU=utilisateur,DC=mondc,DC=com
membre: CN=Paula Normal,OU=nimportequoi,OU=...,OU=...,OU=...,DC=mondc,DC=com
membre:: Q049QmV0dGluYSBUw7Zs...................9nbmUsT1U9RGV1dHNjwdGEsREM9Y29t
membre: CN=Peter Testman,OU=nimportequoi2,OU=...,OU=...,OU=...,DC=mondc,DC=com
...

J'ai comparé la sortie avec l'interface graphique AD. La deuxième entrée devrait être un autre utilisateur valide, mais la sortie est inattendue et illisible. Les informations CN,OU,DC manquent. J'ai découvert que les entrées étranges sont valides, mais sont codées en base64.

Où est la faute? Y a-t-il une corruption dans l'AD? Ma commande de requête est-elle incorrecte? Pourquoi certaines entrées sont-elles codées en base64? Comment obtenir la bonne sortie?

1 votes

Pourrait être un membre hérité. Essayez de comparer la sortie de repadmin /showobmeta DCNAME "DNOfGroup"

0 votes

Avec repadmin /showobjmeta localhost "cn=mygroupname,ou....." Je vois des entrées avec legacy, "présente" et avec "non présente" marquée. (showobjmeta not showobmeta). Cependant je ne peux pas encore vous suivre. Qu'est-ce que cela signifie?

0 votes

Est-ce que le membre illisible est un membre hérité? Hérité signifie qu'il était membre avant Windows Server 2003 lorsque la réplication de valeurs liées a été introduite. Enlever / réajouter le membre le convertit d'un membre hérité à un membre normal.

0voto

Michael Ströder Points 909

Votre commande en ligne

ldapsearch -o ldif-wrap=no -xWLLL -D "moncompte" -h mondomaine -b "ou=user,dc=mydc,dc=com" "cn=nomdemongroupe" membre

limite explicitement les attributs demandés dans la recherche à membre.

Essayez simplement d'ajouter les noms d'attributs souhaités en tant qu'arguments de ligne de commande supplémentaires :

ldapsearch -o ldif-wrap=no -xWLLL -D "moncompte" -h mondomaine -b "ou=user,dc=mydc,dc=com" "cn=nomdemongroupe" cn ou o membre

Voir également : ldapsearch(1)

De plus, vous devriez apprendre la syntaxe LDIF (voir RFC 2849) qui est censée être propre à l'ASCII. Les deux doubles-points après le nom du type d'attribut signifient que la valeur a été codée en base, par exemple en raison de caractères NON-ASCII dans un nom. Utilisez un module LDIF décent pour décoder la sortie de ldapsearch ou utilisez plutôt un module LDAP pour votre langage de script préféré.

0 votes

Non, cela ne change pas les entrées de membres étranges. Je suppose que cela doit être lié au commentaire de Greg.

0 votes

Vous avez deux problèmes. J'ai édité ma réponse pour également aborder le 2ème.

0 votes

Le premier point n'est pas un problème. La sortie est correcte, mais le deuxième point explique la sortie étrange et indique une solution.

0voto

Norbert Weuster Points 171

La raison de la sortie inattendue est un caractère NON-ASCII dans le nom cn. La ligne commençant par "membre:: " indique une valeur encodée en base64, qui peut être décodée (par exemple avec echo "$value" | base64 -d -)

Les résultats de la recherche ldapsearch sont affichés en utilisant une version étendue de LDIF.

La syntaxe LDIF (voir RFC 2849) est censée être propre à l'ASCII.

Un contournement rapide pour obtenir une sortie lisible pourrait être réalisé en utilisant un wrapper comme

myldapsearch() { ldapsearch $* | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print'; }  

Vue dans cette question.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X