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 
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.