OpenLDAP: Zentrale Verwaltung von Benutzern und Gruppen

Oktober 16, 2023

Ich möchte zeigen, wie ich bei Hostsharing einen LDAP Server einrichten kann, und dort Gruppen und Benutzer verwalten kann.

Hier ist das Video:

Hier sind ein paar Abschnitte im Video verlinkt:

  • 0:00 Erklärung des Problems
  • 0:45 Ansible Skript zum Installieren bei Hostsharing
  • 1:01 Arbeiten mit phpLDAPadmin: Benutzer verwalten, Gruppen verwalten
  • 3:52 Arbeiten auf der Kommandozeile: Benutzer verwalten, Gruppen verwalten
  • 5:44 Ausblick

LDAP/OpenLDAP

Erstmal kurz zum Thema, was ein LDAP Server ist, und wozu er gut ist:

Ein LDAP Server speichert Benutzerdaten, also grob gesagt den Benutzernamen und das Passwort, und noch weitere Eigenschaften. Benutzer lassen sich in verschiedenen Gruppen oder Teams zuteilen.

Hostsharing

Ich hoste meine Anwendungen alle bei Hostsharing, das ist eine Genossenschaft.

Die Administratoren passen auf, dass die Server zuverlässig laufen und gesichert werden.

Als Mitglied habe ich sehr viele Freiheiten, auch komplexe Anwendungen zu verwenden.

Ansible Skript

Mit Ansible richte ich einen LDAP Dienst ein, und die Admin Oberfläche phpLDAPadmin.

Zusätzlich installiere ich Skripte, um Benutzer oder Gruppen zu verwalten. Das zeige ich gleich, wie das zum Einsatz kommt.

Arbeiten mit phpLDAPadmin

Bevor ich auf die phpLDAPadmin Seite komme, habe ich eine htpasswd Authentifizierung vorgeschaltet, weil sonst eine anonyme Anmeldung möglich ist und die Benutzernamen und Gruppen sichtbar wären. Jetzt kommt die Anmeldung als Admin, um auch Schreibrechte zu haben.

Anmeldung bei phpLDAPAdmin

Ich sehe hier den Verzeichnisbaum von meiner Organisation, die Gruppen und die Benutzer.

Verzeichnisbaum mit Gruppen und Benutzern

Um einen Benutzer anzulegen:

users, neuen Eintrag erzeugen. Vorlage: Standard. Ich wähle inetOrgPerson.

Benutzer anlegen

Dann müssen diese Attribute gesetzt werden:

  • RDN: uid
  • cn: Vorname Nachname
  • displayName: Vorname Nachname
  • givenName: Vorname
  • sn: Nachname
  • mail: E-Mail Adresse
  • uid: Kürzel
  • userPassword: clear eingeben

Um Gruppe anzulegen:

  • groups, neuen Eintrag erzeugen, Vorlage: Standard. wähle groupOfNames
  • RDN: cn
  • cn: Name der Gruppe
  • member: Benutzer wählen. Es geht nicht ohne einen ersten Benutzer als Mitglied.

Mitglied hinzufügen und entfernen:

  • Gruppe anklicken
  • bei member: “Ändern von Gruppenmitgliedern” anklicken
  • Es erscheint ein Dialog, mit den verfügbaren Benutzern, und den Benutzern, die bereits Mitglied in der Gruppe sind:

Mitglieder hinzufügen und entfernen

Die Änderungen müssen dann gespeichert werden.

Arbeiten mit der Kommandozeile

Das ganze geht auch mit Skripts auf der Kommandozeile

Um Benutzer anzulegen: Da muss ich den Namen und alles angeben, und dann das Passwort für den neuen Benutzer und das Passwort für den LDAP Admin.

tim03-openldap@h13:~$ ./bin/ldapadduser.sh 
usage: ./bin/ldapadduser.sh <username> <email> <firstname> <lastname> <password>
usage: ./bin/ldapadduser.sh <username> <email> <firstname> <lastname>

./bin/ldapadduser.sh klaus klaus@beispielverein.de Klaus Mustermann

Um eine Gruppe anzulegen:

tim03-openldap@h13:~$ ./bin/ldapaddgroup.sh 
usage: ./bin/ldapaddgroup.sh <groupname>

./bin/ldapaddgroup.sh mitarbeiter

Um einen Benutzer einer Gruppe hinzuzufügen:

./bin/ldapaddmember.sh
usage: ./bin/ldapaddmember.sh <groupname> <personuid>

./bin/ldapaddmember.sh mitarbeiter klaus

Um einen Benutzer aus Gruppe zu entfernen:

tim03-openldap@h13:~$ ./bin/ldapdropmember.sh 
usage: ./bin/ldapdropmember.sh <groupname> <personuid>

./bin/ldapdropmember.sh mitarbeiter klaus

Ausblick

Im nächsten Schritt kann ich jetzt die Benutzer in Gitea aus dem LDAP ziehen, inkl Gruppen, oder die Benutzer in Nextcloud aus dem LDAP beziehen. Dazu gibt es weitere Videos.

Ich hoffe, das hat euch geholfen.

Wenn Ihr Fragen habt, oder Anregungen, könnt ihr mich im Fediverse auf der Adresse @tpokorra@hostsharing.coop oder über das Kontaktformular auf meiner Webseite erreichen.