Ich habe die Lösung gefunden (obwohl ich nicht sicher bin, ob sie für ldap allgemein oder für MS Active Directory spezifisch ist). Umlaute werden mit ihren punktlosen Gegenstücken als gleichwertig behandelt. Anstelle von "München" kann man also "München" angeben. Dies ist auch der Grund, warum ein Objekt namens München nicht dort erstellt werden kann, wo München bereits existiert.
ldapsearch schlägt mit Umlaut im Basiscontainer fehl
Ich habe einen ou
Namen München
in meinem LDAP (Active Directory, um genau zu sein). Um danach zu suchen, muss ich \C3\BC
natürlich die Umlaute eingeben, aber zumindest ou
existiert das, wie dies beweist:
$ ldapsearch -D $ADMIN -w $ADMINPWD -v -u -h $HOST -b 'ou=Benutzer,dc=[obfuscate]' '(ou=M\C3\BCnchen)' ou ldap_initialize( ldap://[obfuscate] ) filter: (ou=M\C3\BCnchen) requesting: ou # extended LDIF # # LDAPv3 # base <ou=Benutzer,dc=[obfuscate]> with scope subtree # filter: (ou=M\C3\BCnchen) # requesting: ou # # M\C3\BCnchen, Benutzer, [obfuscate] dn:: T1U9TcO8b[obfuscate]== ufn: M\C3\BCnchen, Benutzer, [obfuscate] ou:: TcO8bmNoZW4= # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Allerdings habe ich, während ich suchen für Umlaute (zB Verwendung \C3\BC
in Filtern), kann ich nicht suchen in einem Umlaut ou (dh Einsatz \C3\BC
in der „Basis“ Parameter):
$ ldapsearch -D $ADMIN -w $ADMINPWD -v -u -h $HOST -b 'ou=M\C3\BCnchen,ou=Benutzer,dc=[obfuscate]' ldap_initialize( ldap://[obfuscate] ) filter: (objectclass=*) requesting: All userApplication attributes # extended LDIF # # LDAPv3 # base <ou=M\C3\BCnchen,ou=Benutzer,dc=[obfuscate]> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object matchedDN: OU=Benutzer,DC=[obfuscate] text: 0000208D: NameErr: DSID-031001CD, problem 2001 (NO_OBJECT), data 0, best match of: 'OU=Benutzer,DC=[obfuscate]' # numResponses: 1
Der Fehler behauptet, dass das ou nicht existiert, während wir gerade gesehen haben, dass es existiert. Was ist also falsch an meiner Anfrage? Das heißt: Wie muss ich Umlaute kodieren -b
? Anscheinend unterscheidet sich die Methode von der für Filter verwendeten Kodierung ...
Falls die Informationen benötigt werden: Der LDAP-Server ist ein Microsoft Windows 2003 Active Directory-Server, und ich verwende ldapsearch
ein aktuelles Ubuntu-Präzisions-Pengulin. Und (obwohl dies nicht gelten sollte, da wir sowieso eine Basckslash-Kodierung haben):
$ locale LANG=de_DE.UTF-8 LANGUAGE=de_DE@euro LC_CTYPE="de_DE@euro" LC_NUMERIC="de_DE@euro" LC_TIME="de_DE@euro" LC_COLLATE="de_DE@euro" LC_MONETARY="de_DE@euro" LC_MESSAGES="de_DE@euro" LC_PAPER="de_DE@euro" LC_NAME="de_DE@euro" LC_ADDRESS="de_DE@euro" LC_TELEPHONE="de_DE@euro" LC_MEASUREMENT="de_DE@euro" LC_IDENTIFICATION="de_DE@euro" LC_ALL=de_DE@euro
2 Antworten auf die Frage
Nach RFC2849 muss jede Suche, die UTF-8-Daten enthält, Base64-kodiert sein. Versuchen Sie, den gesamten String (einschließlich der von Ihnen entfernten Informationen) mit Base64 zu codieren und danach zu suchen.
Verwandte Probleme
-
1
Warum ist die US-Version von Bing besser als die Versionen für andere Sprachen?
-
1
Wenn unter Windows oder Windows 7 ein Computer Mitglied der Domäne ist, wird beim Ändern des Benutze...
-
1
"Sprache für Nicht-Unicode-Programme" ändert sich beim Anmelden mit einem servergespeicherten Profil
-
3
Wie kann man die Windows-Workstation sicher von Active Directory trennen?
-
1
Diagnostizieren Sie LDAP-Probleme mit dem Mac OS X-Adressbuch
-
1
Das whenCreated-Attribut eines Computerobjekts in Active Directory wird geändert
-
1
Aktivieren der SMB-Dateifreigabe unter OS X - "Falsches Kennwort"
-
1
Anwenden von Einstellungen von einem Gruppenrichtlinienobjekt auf einen Mac
-
3
Wie kann ich das Akzent-Kombinieren in Windows 7 deaktivieren?
-
6
Wie finde ich im Active Directory-Snap-In die GUID für einen Benutzer?