LDAP-Anbindung einrichten#

Warnung

Für die Einrichtung der LDAP-Anbindung benötigen Sie derzeit root-Zugriff auf Ihren Server. Die Nutzung dieser Anleitung setzt grundlegende Kenntnisse über Begrifflichkeiten von LDAP voraus. Sollten Sie Unterstützung benötigen, wenden Sie sich bitte an unseren Kundendienst.

Um eigenen Diensten die Nutzung von LDAP zu erlauben, müssen Sie die Konfigurationsdatei /etc/iserv/ldapusers bearbeiten.

Warnung

Die Konfigurationsdatei wird von iconf verwaltet. Nach jeglichen Änderungen müssen Sie iconf save /etc/iserv/ldapusers ausführen, da eigene Einträge ansonsten bei der nächsten Ausführung von iservchk im Rahmen einer Systemprüfung überschrieben werden.

Format der Konfigurationsdatei#

Hinweis

Weitere Hinweise zum Format der Konfigurationsdatei finden Sie im einleitenden Kommentar am Anfang.

Die Einträge in der Datei müssen einem der folgenden Formate entsprechen:

{username}:+{fieldName}:{client-ip-address}
{username}::{client-ip-address}
{username}:+{fieldName}
{username}

Alle Angaben in den geschweiften Klammern stellen Platzhalter dar und müssen durch passende Werte ersetzt werden.

Dabei entspricht {username} dem Common Name (CN) des Root-Distinguished-Names (Root-DN) der Zugangsdaten des Bind-Benutzers für den externen Dienst. Hier können Sie einen beliebigen Wert wählen. Benutzen Sie hier etwas, dass das System beschreibt, welches die LDAP-Datenbank des IServ nutzen soll. Zum Beispiel nas-sekretariat für ein NAS-Gerät.

Hinweis

Bitte beachten Sie, dass der Bind-Benutzer nur Lesezugriff auf das LDAP-Verzeichnis erhält. Das Editieren der Einträge, zum Beispiel für das Hinterlegen von Konfigurationseinstellungen, ist mit den Zugangsdaten nicht möglich.

Mit +{fieldName} können Sie bei Bedarf den Zugriff auf zusätzliche Attribute der Einträge im LDAP gestatten, die standardmäßig nicht freigegeben sind. Zum Beispiel können Sie durch die Angabe von +userPassword zusätzlich Zugriff auf den Passwort-Hash der IServ-Benutzer zulassen. Dies ist zum Beispiel notwendig, falls der Dienst, den Sie anbinden möchten, das Passwort des Benutzers selbst überprüft und deshalb Zugriff auf das Attribut benötigt. Mehrere zusätzliche Attribute können mit einem Komma getrennt angegeben werden. Wird diese Angabe weggelassen, erhält der Bind-Benutzer nur Zugriff auf allgemeine Informationen wie den Anzeigennamen (siehe Abschnitt „Verfügbare LDAP-Attribute“ unten).

Mit {client-ip-address} geben Sie die IP-Adressbereiche an, über die der angelegte Benutzer auf das LDAP-Verzeichnis zugreifen kann. An dieser Stelle werden IPv4- und IPv6-Adressen unterstützt. Wenn dieser Wert weggelassen wird, ist der LDAP-Benutzer nur lokal auf dem Portalserver und nicht über das Netzwerk nutzbar. Hier können entweder einzelne IP-Adressen wie 10.0.0.10 und 2001:db8:85a3:8d3::1 (empfohlen) oder auch bei Bedarf auch ganze IP-Adressbereiche im CIDR-Format (beispielsweise 10.0.0.0/8 und 2001:db8:85a3:8d3::/64) angegeben werden. Mehrere Werte werden mit einem Komma getrennt.

Verwenden Sie beispielsweise folgenden Eintrag, um den Benutzer nas-sekretariat anzulegen, ihm den Zugriff auf die Passwort-Hashes der IServ-Benutzer zu gestatten und den Zugriff von der IP-Adresse 10.0.0.10 zu erlauben:

nas-sekretariat:+userPassword:10.0.0.10

Hinweise zum Anlegen eigener Einträge in der Konfigurationsdatei#

Fügen Sie Ihre eigenen Einträge ausschließlich hinter dem Block

#
# Please add additional user definitions after this comment and remember to save
# the file with iconf save.
#

ein, um Konflikte mit künftigen Updates von IServ zu vermeiden. Die Einträge über diesem Block werden dynamisch vom System eingetragen und verwaltet. Sie sollten nicht verändert werden.

Übernehmen der Änderungen#

Speichern Sie Ihre Änderungen an der Konfigurationsdatei mit dem Befehl iconf save /etc/iserv/ldapusers. Führen Sie zum Übernehmen der Änderungen den Befehl iservchk ldap ferm aus. Dabei wird, sofern erforderlich, die Konfiguration der Firewall und des LDAP-Servers angepasst und letzterer gegebenenfalls neu gestartet.

Zugangsdaten für die Nutzung des LDAP-Servers#

Hinweis

Exemplarisch finden Sie im folgenden Abschnitt eine Liste der Begriffe und wie Sie die nötigen Werte für diese auslesen. Die Bezeichnungen entstammen einem exemplarischen Test-System. Die Bezeichnung im Konfigurationsdialog der Software, die für die Anbindung an den LDAP-Servers des IServs konfiguriert wird, kann möglicherweise abweichen.

  • LDAP-Server-Hostname: Hier sollte in der Regel die Domain Ihres IServs nutzbar sein, wenn die Software es erfordert, kann aber auch die IP-Adresse des Servers genutzt werden.

  • LDAP-Sicherheit: ldaps (LDAP mit SSL). Die Optionen ldap+tls (LDAP mit StartTLS) und ldap (LDAP ohne Verschlüsselung) werden nicht unterstützt.

  • LDAP-Port: 10636. Bitte beachten Sie: Der Standardport 636 ist momentan IServ-seitig für Active Directory reserviert, daher ist der LDAP-Server über einen alternativen Port erreichbar. Wenn Ihre Software keine Möglichkeit besitzt, einen alternativen Port für LDAP anzugeben, wenden Sie sich bitte an uns.

  • Base-DN: Den vom LDAP-Server auf dem IServ genutzten Base-DN können Sie auf dem IServ aus der Datei /var/lib/iserv/server-openldap/ldapdn auslesen.

  • Root-DN (Bind-Benutzer): Dies ist der Benutzer, mit dem sich die Software gegen das LDAP-Verzeichnis authentifiziert. Der vollständige Root-DN lautet cn={username},ou=ldap,{basedn}. {username} ersetzen Sie mit dem Benutzernamen, den Sie in der Konfigurationsdatei eingetragen haben, den Wert für {basedn} können Sie wie beschrieben aus der Datei /var/lib/iserv/server-openldap/ldapdn auslesen. Bitte prüfen Sie in der Dokumentation Ihrer Software, ob der Base-DN in den Root-DN mit eingetragen werden muss oder ob die Eingabe der ergänzenden Werte genügt.

  • Root-DN-Kennwort (Bind-Kennwort): IServ generiert für jeden Bind-Benutzer, der in der Konfigurationsdatei eingetragen wird, nach einem Aufruf von iservchk ein sicheres Passwort. Dieses wird auf dem Server unter /var/lib/iserv/server-openldap/pwd/{username}.pwd gespeichert, wobei {username} dem Benutzernamen aus der Konfigurationsdatei entspricht.

  • Benutzer-DN: Der vollständige Benutzer-DN lautet ou=users,{basedn}. Bitte prüfen Sie in der Dokumentation Ihrer Software, ob der Base-DN in den Benutzer-DN mit eingetragen werden muss.

  • Gruppen-DN: Der vollständige Gruppen-DN lautet ou=groups,{basedn}. Bitte prüfen Sie in der Dokumentation Ihrer Software, ob der Base-DN in den Benutzer-DN mit eingetragen werden muss.

Verfügbare Objekte#

Die folgenden Objekte und deren Attribute sind über das LDAP-Verzeichnis abrufbar.

Benutzer#

Zu finden sind die Benutzer im LDAP-Verzeichnis unter dem DN ou=users unterhalb des Base-DNs. Zu jedem Benutzer gibt es eine gleichnamige Gruppe unter ou=groups.

Objekt-Klassen:#

  • iservUser

  • inetOrgPerson

  • memberOfGroup

  • organizationalPerson

  • person

  • posixAccount

  • shadowAccount

  • top

  • uuidObject

  • ldapPublicKey

Attribute:#

  • cn: Common Name des Benutzers, entspricht bei IServ dem Unix-Benutzernamen. Aus historischen Gründen ist dies abweichend zu üblichen LDAP-Verzeichnissen, die an dieser Stelle den vollen Namen eines Benutzer enthalten würden.

  • departmentNumber: Das Feld Klasse/Zusätzliche Information aus der Benutzerverwaltung im Sinne einer Schulklasse/Abteilung (außer bei Benutzern mit der Rolle Lehrer, diese erhalten stattdessen das Feld initials).

  • dn: Distinguished Name des LDAP-Objektes (automatisch basierend auf dem Eintrag generiert).

  • employeeNumber: Die Import-ID des Benutzers, sofern vorhanden. Kann händisch in der Benutzerverwaltung eingetragen werden. Wird normalerweise durch das Import-Modul gesetzt.

  • employeeType: Der Import-Typ des Benutzers, sofern vorhanden. Dies stellt ein Freitextfeld dar. Der Wert kann händisch in der Benutzerverwaltung eingetragen werden, wird aber normalerweise ausgehend vom verwendeten Importprofil durch das Import-Modul gesetzt.

  • gecos: Aus Vor- und Nachname zusammengesetzter vollständiger Name des Benutzers.

  • gidNumber: Die primäre Unix-Gruppen-ID des Benutzers.

  • givenName: Vorname des Benutzers.

  • homeDirectory: Unix-Heimatverzeichnis des Benutzers.

  • initials: Das Feld Klasse/Zusätzliche Information aus der Benutzerverwaltung im Sinne eines Lehrerkürzels (nur bei Benutzern mit der Rolle *Lehrer, andere Benutzer erhalten stattdessen das Feld departmentNumber).

  • ldapPublicKey: Die SSH-Schlüssel des Benutzers, ausgelesen aus ~/.ssh/authorized_keys.

  • loginShell: Unix-Shell des Benutzers, derzeit fest /usr/sbin/nologin.

  • mail: Die IServ-E-Mail-Adresse des Benutzers.

  • memberOf: DNs der Gruppen, Rechte und Rollen, in denen der Benutzer Mitglied ist.

  • objectClass: Die Objekt-Klassen des LDAP-Eintrags (siehe vorheriger Abschnitt).

  • shadowExpire: Gibt den Zeitpunkt an, an dem der Benutzerzugang abläuft. Wird nicht von der Weboberfläche ausgewertet.

  • shadowInactive: Gibt an, ob der Benutzer aktiviert oder deaktiviert wurde.

  • shadowLastChange: Letzte Änderung des Benutzer-Passwortes. 0 bedeutet an dieser Stelle, dass das Passwort noch nicht gesetzt wurde.

  • shadowMax: Relativer Zeitraum in Tagen nach einer Passwortänderung, an der das Passwort wieder geändert werden muss (Standardwert ist bei IServ immer 99999). Wird nicht von der Weboberfläche ausgewertet.

  • shadowMin: Relativer Zeitraum in Tagen nach einer Passwortänderung, an der das Passwort wieder geändert werden darf (Standardwert ist bei IServ immer 0). Wird nicht von der Weboberfläche ausgewertet.

  • shadowWarning: Relativer Zeitraum in Tagen vor einer nötigen Passwortänderung, an dem auf diese hingewiesen wird. Wird nicht von der Weboberfläche ausgewertet.

  • sn: Nachname des Benutzers.

  • uid: Unix-Benutzername des Benutzers.

  • uidNumber: Die Unix-Benutzer-ID des Benutzers.

  • userPassword: Das gehashte Unix-Benutzerpasswort des Benutzers.*

  • uuid: Die IServ-UUID des Benutzers.

* Attribut muss explizit in /etc/iserv/ldapusers für den Bind-Benutzer für Lesezugriff freigeschaltet werden (siehe oben).

Beispiel:#

cn=max.mustermann,ou=users,dc=mein-iserv,dc=de
shadowWarning: 7
shadowFlag: 0
mail: max.mustermann@mein-iserv.de
shadowMin: -1
shadowInactive: -1
uuid: 16a8e79d-d889-47b6-a1ff-0380cf587c8c
sn: Mustermann
gidNumber: 1020
uidNumber: 1020
homeDirectory: /home/max.musterman
givenName: Max
shadowMax: 99999
uid: max.mustermann
cn: max.mustermann
loginShell: /usr/sbin/nologin
description: Max Mustermann
shadowLastChange: 19409
departmentNumber: Klasse 12b
gecos: Max Mustermann
shadowExpire: -1
userPassword: {crypt}$6$[...]
sshPublicKey: ssh-rsa [...] max.mustermann@mein-iserv.de
[...]
memberOf: cn=admins,ou=groups,dc=mein-iserv,dc=de
[...]
memberOf: cn=ROLE_ADMIN,ou=roles,dc=mein-iserv,dc=de
[...]
memberOf: cn=mail_ext,ou=privileges,dc=mein-iserv,dc=de
[...]
objectClass: person
objectClass: top
objectClass: iservUser
objectClass: posixAccount
objectClass: memberOfGroup
objectClass: uuidObject
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: ldapPublicKey

Gruppen#

Zu finden sind die Gruppen im LDAP-Verzeichnis unter dem DN ou=groups unterhalb des Base-DNs, sowie die technischen Gruppenbenutzer unter ou=users.

Objekt-Klassen:#

  • groupOfMembers

  • inetOrgPerson

  • iservGroup

  • memberOfGroup

  • organizationalPerson

  • person

  • posixAccount

  • posixGroup

  • shadowAccount

  • top

  • uuidOject

Bemerkung

IServ-Gruppen besitzen auch die Objektklassen für Benutzer, da Gruppen bei IServ auf Systemebene einen gleichnamigen primären Unix-Benutzer besitzen. Sie können die Objektklasse iservGroup und iservUser benutzen, um diese technischen Benutzer und Gruppen auszufiltern.

Attribute der Gruppe:#

Gruppe unterhalb von ou=groups.

  • cn: Common Name der Gruppe, entspricht bei IServ dem Unix-Gruppennamen.

  • description: Anzeigename der Gruppe

  • dn: Distinguished Name des LDAP-Objektes (automatisch basierend auf dem Eintrag generiert).

  • member: Die DNs der Gruppenmitglieder.

  • memberOf: DNs der Gruppenmerkmale, die die Gruppe besitzt.

  • memberUid: Die Unix-Benutzernamen der Gruppenmitglieder.

  • owner: DNs des Gruppeneigentümers.

  • uuid: Die IServ-UUID der Gruppe.

Beispiel:#

cn=admins,ou=groups,dc=mein-iserv,dc=de
uuid: e1238226-4b38-4905-9c17-4a53977f0885
cn: admins
gidNumber: 1001
description: Admins
member: cn=max.mustermann,ou=users,dc=mein-iserv,dc=de
member: cn=erika.musterfrau,ou=users,dc=mein-iserv,dc=de
[...]
memberUid: max.mustermann
memberUid: erika.musterfrau
[...]
owner: cn=max.mustermann,ou=users,dc=mein-iserv,dc=de
objectClass: memberOfGroup
objectClass: iservGroup
objectClass: uuidObject
objectClass: top
objectClass: posixGroup
objectClass: groupOfMembers
memberOf: cn=has_home,ou=group flags,dc=mein-iserv,dc=de
[...]

Attribute des Gruppenbenutzers:#

Primärer Gruppen-Benutzer unterhalb von ou=users.

  • cn: Common Name der Gruppe, entspricht bei IServ dem Unix-Gruppennamen.

  • dn: Distinguished Name des LDAP-Objektes (automatisch basierend auf dem Eintrag generiert).

  • gecos: Name der Gruppe.

  • gidNumber: Die Unix-Gruppen-ID der Gruppe.

  • homeDirectory: Unix-Heimatverzeichnis der Gruppe.

  • loginShell: Unix-Shell des Gruppen-Benutzers, derzeit fest /bin/false.

  • mail: Die IServ-E-Mail-Adresse der Gruppe.

  • shadowExpire: Gibt den Zeitpunkt an, an dem der Zugang des primären Gruppen-Benutzers abläuft.

  • shadowInactive: Gibt an, ob der primäre Gruppen-Benutzer aktiviert oder deaktiviert wurde.

  • shadowLastChange: Letzte Änderung des Passwortes vom primären Gruppen-Benutzer. 0 bedeutet an dieser Stelle, dass das Passwort noch nicht gesetzt wurde.

  • shadowMax: Relativer Zeitraum in Tagen nach einer Passwortänderung, an der das Passwort des primären Gruppen-Benutzers wieder geändert werden muss (Standardwert ist bei IServ immer 99999).

  • shadowMin: Relativer Zeitraum in Tagen nach einer Passwortänderung, an der das Passwort des primären Gruppen-Benutzers wieder geändert werden darf (Standardwert ist bei IServ immer 0).

  • shadowWarning: Relativer Zeitraum in Tagen vor einer nötigen Passwortänderung, an dem auf diese hingewiesen wird.

  • sn: Name der Gruppe (sekundäres Attribut).

  • uid: Unix-Benutzername der Gruppe

  • uidNumber: Die Unix-Benutzer-ID des Gruppen-Benutzers.

  • userPassword: Das gehashte Unix-Gruppenpasswort der Gruppe. Wird nicht verwendet und von IServ nicht gesetzt.*

  • uuid: Die IServ-UUID der Gruppe

* Attribut muss explizit in /etc/iserv/ldapusers für den Bind-Benutzer für Lesezugriff freigeschaltet werden (siehe oben).

Beispiel:#

cn=admins,ou=users,dc=mein-iserv,dc=de
shadowLastChange: 0
sn: Admins
shadowInactive: -1
shadowMin: -1
shadowExpire: -1
shadowWarning: 7
shadowFlag: 0
mail: admins@mein-iserv.de
userPassword: {crypt}!
loginShell: /bin/false
cn: admins
homeDirectory: /group/admins
uidNumber: 1001
uid: admins
shadowMax: 99999
gecos: Admins
gidNumber: 1001
description: Admins
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: memberOfGroup

Rollen#

Zu finden sind die Rollen im LDAP-Verzeichnis unter dem DN ou=roles unterhalb des Base-DNs.

Objekt-Klassen:#

  • iservRole

  • organizationalRole

  • top

  • uuidObject

Bemerkung

Die Rollen sind eine IServ-spezifische Ergänzung, die von weitverbreiteten Standard-LDAP-Verzeichnisstrukturen etwas abweichen. Für die Filterung im LDAP-Verzeichnis können sie über das memberOf-Attribut bei den Benutzern entsprechend zu Gruppen als Filterkriterium verwendet werden.

Attribute:#

  • cn: IServ-interner Bezeichner der Rolle (Präfix ROLE_ zuzüglich des normalisierten Anzeigenamens).

  • description: Anzeigename der Rolle

  • dn: Distinguished Name des LDAP-Objektes (automatisch basierend auf dem Eintrag generiert).

  • roleOccupant: Die DNs der Benutzer, denen diese Rolle zugewiesen ist.

  • uuid: Die IServ-UUID der Rolle

Beispiel:#

cn=ROLE_ADMIN,ou=roles,dc=mein-iserv,dc=de
cn: ROLE_ADMIN
uuid: f66aee04-c335-4299-9cfe-ca7176cc0213
description: Administrator
roleOccupant: cn=max.mustermann,ou=users,dc=mein-iserv,dc=de
roleOccupant: cn=erika.musterfrau,ou=users,dc=mein-iserv,dc=de
[...]
objectClass: top
objectClass: organizationalRole
objectClass: uuidObject
objectClass: iservRole

Rechte#

Zu finden sind die Rechte im LDAP-Verzeichnis unter dem DN ou=privileges unterhalb des Base-DNs.

Objekt-Klassen:#

  • groupOfMembers

  • iservPrivilege

  • top

  • uuidObject

Attribute:#

  • cn: IServ-interner Bezeichner des Rechtes.

  • description: Anzeigename des Rechtes.

  • dn: Distinguished Name des LDAP-Objektes (automatisch basierend auf dem Eintrag generiert).

  • member: Die DNs der Benutzer, denen dieses Recht zugewiesen ist.

  • uuid: Die IServ-UUID des Rechtes.

Beispiel:#

cn=knowledgebase,ou=privileges,dc=mein-iserv,dc=de
cn: knowledgebase
uuid: e99c46c7-7ca2-464c-a29f-622dfe4680ac
objectClass: uuidObject
objectClass: iservPrivilege
objectClass: top
objectClass: groupOfMembers
member: cn=max.mustermann,ou=users,dc=mein-iserv,dc=de
member: cn=erika.musterfrau,ou=users,dc=mein-iserv,dc=de
[...]
description: Knowledge Base: Access to the Knowledge Base

Gruppenmerkmake#

Zu finden sind die Gruppenmerkmale im LDAP-Verzeichnis unter dem DN ou=group flags unterhalb des Base-DNs.

Objekt-Klassen:#

  • groupOfMembers

  • iservGroupFlag

  • top

  • uuidObject

Attribute:#

  • cn: IServ-interner Bezeichner des Gruppenmerkmal.

  • description: Anzeigename des Gruppenmerkmals

  • dn: Distinguished Name des LDAP-Objektes (automatisch basierend auf dem Eintrag generiert).

  • member: Die DNs der Gruppen, denen dieses Gruppenmerkmal zugewiesen ist.

  • uuid: Die IServ-UUID des Gruppenmerkmals

Beispiel:#

cn=has_home,ou=group flags,dc=mein-iserv,dc=de
description: Files: Remove this flag from groups that are not supposed to share files on IServ. [...]
cn: has_home
objectClass: groupOfMembers
objectClass: top
objectClass: uuidObject
objectClass: iservGroupFlag
uuid: 949997a0-a7ca-4e87-9dc3-8219d6fd0043
member: cn=admins,ou=groups,dc=mein-iserv,dc=de
member: cn=lehrer,ou=groups,dc=mein-iserv,dc=de
[...]

Anbindung für einen Bind-Benutzer testen#

Der Bind-Benutzer kann wie folgt getestet werden:

Dabei sind folgende Variablen zu ersetzen:

BINDUSER="Bind-User aus /etc/iserv/ldapusers"
LDAPDN=$(cat /var/lib/iserv/server-openldap/ldapdn)
BINDPASSWORD=$(cat /var/lib/iserv/server-openldap/pwd/${BINDUSER}.pwd)

Beispiel:

BINDUSER="nas-sekretariat"
LDAPDN="dc=mein-iserv,dc=de"
BINDPASSWORD="TY14QGIEtbQKNWacC8wev1dXSk0TrfA1eLvSXKqFrpCtrwXpXaAT2UKtco73gd2x"

Die Daten, die dem Bind-Benutzer zur Verfügung gestellt werden, können mit folgenden Befehl direkt geprüft werden:

ldapsearch -o ldif-wrap=no -H ldaps://mein-iserv.de:10636  \
     -D "cn=${BINDUSER},ou=ldap,${LDAPDN}" \
     -w ${BINDPASSWORD} \
     -b "cn=${iservuser},ou=users,${LDAPDN}"

${iservuser} ist durch den Accountnamen eines beliebigen IServ-Benutzers zu ersetzen, dessen Daten exemplarisch angezeigt werden sollen.

Um die Daten für eine Gruppe exemplarisch auszugeben, kann folgender Befehl genutzt werden:

ldapsearch -o ldif-wrap=no -H ldaps://mein-iserv.de:10636 \
     -D "cn=${BINDUSER},ou=ldap,${LDAPDN}" \
     -w ${BINDPASSWORD} \
     -b "cn=${iservgroup},ou=groups,${LDAPDN}"

Dabei gelten dieselben Ersetzungen, wie beim vorherigen Befehl: Statt ${iservuser} muss hier allerdings ${iservgroup} durch den Accountnamen der IServ-Gruppe ersetzt werden.

Beispielausgaben#

mein-iserv.de ~ # ldapsearch -o ldif-wrap=no -H ldaps://mein-iserv.de:10636 \
     -D "cn=binduser,ou=ldap,$(cat /var/lib/iserv/server-openldap/ldapdn)" \
     -w $(cat /var/lib/iserv/server-openldap/pwd/binduser.pwd) \
     -b "cn=example.user,ou=users,$(cat /var/lib/iserv/server-openldap/ldapdn)"
# extended LDIF
#
# LDAPv3
# base <cn=example.user,ou=users,dc=mein-iserv,dc=de> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.user, users, mein-iserv.de
dn: cn=example.user,ou=users,dc=mein-iserv,dc=de
sn: User
uid: example.user
shadowInactive: -1
shadowMin: -1
shadowWarning: 7
shadowMax: 99999
homeDirectory: /home/example.user
givenName: Example
loginShell: /usr/sbin/nologin
uuid: 9152e072-c3c1-49d4-bcd6-e3ea50dae81d
shadowExpire: -1
shadowLastChange: 0
cn: example.user
gidNumber: 11453
userPassword:: e2NyeXB0fSE=
shadowFlag: 0
uidNumber: 11453
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: memberOfGroup
objectClass: uuidObject
objectClass: shadowAccount
gecos: Example User
mail: example.user@mein-iserv.de
memberOf: cn=examplegroup,ou=groups,dc=mein-iserv,dc=de

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
mein-iserv.de ~ # ldapsearch -o ldif-wrap=no -H ldaps://mein-iserv.de:10636 \
     -D "cn=binduser,ou=ldap,$(cat /var/lib/iserv/server-openldap/ldapdn)" \
     -w $(cat /var/lib/iserv/server-openldap/pwd/binduser.pwd) \
     -b "cn=examplegroup,ou=groups,$(cat /var/lib/iserv/server-openldap/ldapdn)"
# extended LDIF
#
# LDAPv3
# base <cn=examplegroup,ou=groups,dc=mein-iserv,dc=de> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# examplegroup, groups, mein-iserv.de
dn: cn=examplegroup,ou=groups,dc=mein-iserv,dc=de
objectClass: posixGroup
objectClass: top
objectClass: groupOfMembers
objectClass: uuidObject
cn: examplegroup
gidNumber: 1001
uuid: 30827b4f-db4c-4195-bbfb-8a3e392bb5b0
memberUid: example.user
member: cn=example.user,ou=users,dc=mein-iserv,dc=de

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1