E-Mail Adresse im LDAP plötzlich kodiert

Hallo zusammen,

heute habe ich ein paar Benutzer mit sophomorix-add hinzugefügt. Soweit alles ok.
Dann fällt im angebundenen Nextcloud auf, daß die neuen Benutzer keine E-Mail Adressen haben. Können also mit dem in Nextcloud konfigurierten Rainloop keine Mails verschicken/empfangen.

Jetzt durchsuche ich die LDAP Datenbank und muß feststellen, daß das Feld mail welches die E-Mail Adressen beinhaltet, jetzt plötzlich kodiert ist. Also die E-Mail Adressen sind nicht mehr im Klartext in der Datenbank, sondern irgendwie kodiert. Damit kann Nextcloud offenbar nichts anfangen.

Wie kann ich die E-Mail Adressen im Nextcloud wieder im Klartext eintragen lassen, bzw. welcher Prozess hat das geändert?

Danke und viele Grüße
Klaus

Hallo zusammen,

das Problem ist für mich gelöst.
Hier ist der Nextcloud Cronjob nicht gelaufen und hat so die E-Mail Adressen der neuen User nicht angezeigt.

Trotzdem wäre es interessant, wieso bei einer linuxmuster Installation z.B. die LDAP Felder sn und mail kodiert im LDAP sind und bei einer anderen Installation im Klartext. Weiß hier jemand Näheres?

Danke fürs Mitdenken!

Klaus

Hallo Klaus,

die Kodierung macht ldapsearch automatisch (und nur für die Ausgabe),
und zwar dann, wenn in einem Feld Nicht-ASCII-Zeichen vorkommen. Bei den
Namen ist dies oft der Fall, dass bei Dir die Mailadresse so kodiert
sind (genauer: ausgegeben werden) ist schon etwas merkwürdig. Da hat
vielleicht irgend jemand eine Mailadresse mit Umlauten eingegeben.
Eventuell reichen aber auch schon Leerzeichen am Anfang oder am Ende -
die wären bei einer normalen Ausgabe nicht erkennbar.

Du kannst die Ausgabe von ldapsearch durch einen Filter laufen lassen,
der die Base64-Werte dekodiert, das Netz ist voller Beispiele.

Beste Grüße

Jörg

Wie zeigt denn

sophomorix-user -u die Mailadresse an?

LG, Rüdiger

Hallo Jörg,

danke für den Hinweis!
Seltsam ist nur, daß ich dieselbe Version von ldap-utils auf den verglichenen Systemen installiert habe. Bei einem System ist die Ausgabe von ldapsearch base64 codiert, beim andern nicht.

Den Output von ldapsearch in base64 --decode zu pipen liefert nur base64: invalid input. Die Beispiele im Netz mit perl oder python liefern genau diese codierten Zeichen dann als kryptische Zeichen aus.

Seltsam.

Viele Grüße
Klaus

Hallo Rüdiger,

sophomorix-user -i -u zeigt die korrekte Mailadresse. Scheint also wirklich nur eine Sache der Darstellung von ldapsearch zu sein.

Danke und viele Grüße
Klaus

Hallo Klaus,

ich habe eine Datei /usr/local/bin/un64 mit folgendem Inhalt (ausführbar machen nicht vergessen):

awk 'BEGIN{FS=":: ";c="base64 -d"}{if(/\w+:: /) {print $2 |& c; close(c,"to"); c |& getline $2; close(c); printf("%s:: \"%s\"\n", $1, $2); next} print $0 }'

Die Ausgabe von ldapsearch pipe ich durch diesen Befehl, also: ldapsearch ... | un64

Das klappt bei mir wunderbar.

Beste Grüße

Jörg

Hallo Jörg,

vielen Dank dafür.
Das funktioniert gut soweit. Die E-Mail Adresse bekomme ich damit decodiert.

Allerdings sind andere Einträge dann „verstümmelt“. z.B.:

...
name: r16
objectGUID:: "<E6><FE><BC><C0><85>bPA<98><ED>6[<FF>e<B7><A0>"
objectSid:: "^A^E^@^@^@^@^@^E^U^@^@^@<E6>M ^By<A1>Bs<F5>g^D^@^@"
sAMAccountName: r16
...

Ist das bei Dir auch so?

Viele Grüße
Klaus

Hallo Klaus,

das ist bei mir nicht so. Könntest Du mal dieselben Zeilen ohne das un64 posten?

Beste Grüße

Jörg

Hallo Jörg,

danke für’s Nachsehen.

Die codierten Einträge lauten:

...
name: r16
objectGUID:: 5v68wIViUEGY7TZb/2W3oA==
objectSid:: AQUAAAAAAAUVAAAA5k0gAnmhQnP1Z+6ckwQAAA==
sAMAccountName: r16
...

mit base64 --decode kann ich die nicht dekodieren. Deshalb wahrscheinlich auch die verstümmelten Zeichen, wenn ich die ldapsearch Ausgabe mit Deinem Einzeiler filtere.

Das zieht sich durch die komplette Ausgabe von ldapsearch auf das Verzeichnis. Hier sind immer betroffen:

objectGUID::
dnsRecord::
objectSid::

Viele Grüße
Klaus

Hallo Klaus,

das Attribut objectGUID ist einfach ein HEX-String. Wenn Du den auf der Konsole ausgibst, ergibt das Müll. Das Attribut objectSid ist ebenfalls ein HEX-String, der die SID codiert.

Wenn es Dich interessiert, dann kannst Du ja mal das folgende Skript testen.

decode-ldapsearch (1,4 KB)

Nach dem Herunterladen kannst Du die unsinnige .doc-Endung entfernen (ohne die konnte ich es nicht hochladen) und wieder die Ausgabe von ldapsearch durch das Skript pipen.

Bei Deinem Beispiel ergäbe sich:

name: r16
objectGUID:: E6FEBCC08562504198ED365BFF65B7A0
objectSid:: S-1-5-21-35671526-1933746553-2632869877-1171
sAMAccountName: r16

Beste Grüße

Jörg

Hallo Jörg,

vielen Dank für das Skript und fürs Reindenken!

Das Skript funktioniert fast einwandfrei. Es gibt ein paar Fehler, aber das Prinzip habe ich verstanden.

Viele Grüße
Klaus

Hallo Klaus,

wo klemmt es denn noch? vielleicht kann ich ja nachbessern.

Beste Grüße

Jörg

Hallo Jörg,

ja, das wäre evtl. toll, wenn Du das nachbessern könntest!

Ich führe aus:

ldapsearch -H ldaps://server.fzi.lan:636 -D "CN=globalbinduser,OU=Management,OU=GLOBAL,DC=fzi,DC=lan" -x -w `cat /etc/linuxmuster/.secret/global-binduser` -b "dc=fzi,dc=lan" | decode-ldapsearch | less

Wenn ich das wie oben in less pipe, dann gibt es nach kurzer Zeit:

:/usr/local/bin/decode-ldapsearch: line 57: warning: command substitution: ignored null byte in input
/usr/local/bin/decode-ldapsearch: line 57: warning: command substitution: ignored null byte in input
/usr/local/bin/decode-ldapsearch: line 57: warning: command substitution: ignored null byte in input

Hier werden die Backslashes entfernt:

homeDirectory: \serverdefault-schoolstudents2dfkpedersno

Der dnsRecord wird in dem Skript nicht mit abgefangen:

dnsRecord:: ^D^A^E^H<C0>!^D^L

Aber das sind alles Schönheitsfehler für mich. Mir war wichtig, daß ich die E-Mail Adressen dekodiert bekomme und generell habe ich durch Deinen Hinweis gelernt, daß es nur kodiert durch ldapsearch angezeigt wird aber richtig im AD gespeichert ist.

Nochmal danke und viele Grüße
Klaus

Hallo Klaus,

nun habe ich auch die DNS-Einträge und weitere Kleinigkeiten abgefangen sowie den Fehler mit den fehlenden Slashes korrigiert. Bei der Gelegenheit habe ich auch gleich mal ein paar Dinge zu ldapsearch zusammengetragen:

https://wiki.linuxmuster.net/community/anwenderwiki:scripting:ldapsearch

Das Skript ist ganz unten auf der Seite verlinkt.

Beste Grüße

Jörg

2 „Gefällt mir“

Hallo Jörg,

also erstmal herzlichen Dank für das aktualisierte Skript, welches einwandfrei funktioniert und alle codierten Werte decodiert! Ich konnte keine Fehler feststellen. Da hast Du Dir ja richtig Mühe gegeben, auch die Microsoft Docs gelesen, echt Hut ab!

Das auch noch so umfangreich im Wiki dokumentiert, mit vielen Beispielen - Klasse! Ich bin begeistert :slight_smile:

Viele Grüße und nochmals danke
Klaus

EDIT: @jeffbeck Das Skript zusammen mit einem ldapsearch als linuxmuster-ldapsearch in sophomorix4 aufzunehmen wäre vielleicht eine Bereicherung.