Doku direkt bei nextcloud → https://docs.nextcloud.com/server/12/admin_manual/configuration_user/user_auth_ldap.html
Szenario: Die NextCloud (Version 12.04, Jan'2018) befindet sich auf einem Ubuntu-Server im grünen Netz und ist mit ihrer IP (hier 10.16.1.9) in den Workstations aufgenommen.
Zuerst an der Weboberfläche als NextCloud-Administrator anmelden und das LDAP-Modul aktivieren:
→ Apps → deaktivierte Apps → LDAP user and group backend → aktivieren
Am linuxmuster.net-Server muss der anonyme LDAP-Zugriff von der IP des vorliegenden Ubuntu-Servers (hier z.B. 10.16.1.9) zugelassen werden.
Am linuxmuster.net-Server in der Datei /etc/ldap/slapd.conf
eine Zeile mit der IP des NextCloud-Servers ergänzen:
... #Limits Access: access to .......... by anonymous peername.ip=10.16.1.9 auth ...
Dann am linuxmuster.net-Server den ldap-Dienst neu starten:
# service slapd restart
Im Web-Browser als NextCloud-Administrator das LDAP-Modul aufrufen unter:
→ Verwaltung → LDAP / AD Integration
Die ersten vier Konfigurations-Reiter mit dem Button „Fortsetzen“ bis zum Reiter „Gruppen“ durcharbeiten, beginnend mit den Einstellungen zum „1. Server“ :
Abmelden und als ein Lehrer oder ein Schüler an der NextCloud anmelden.
Zunächst das Server-Zertifikat in den Nextcloud-Server kopieren. Trotz abschaltbarer Zertifikatsprüfung war das notwendig.
Dazu am Ubuntu-Server, der die NextCloud enthält, an der Konsole als root anmelden und das Zertifikat kopieren:
# scp 10.16.1.1:/etc/ssl/private/server.crt /etc/ssl/certs/server.crt
Im Web-Browser als NextCloud-Administrator das LDAP-Modul aufrufen unter:
→ Verwaltung → LDAP / AD Integration
Ggf. eine alte Konfiguration löschen und eine neue anlegen. Die Konfigurations-Reiter mit dem Button „Fortsetzen“ bis zum Reiter „Gruppen“ durcharbeiten, ebenso den Reiter „Fortgeschritten“.
Ein Eintrag des NextCloud-Server in der slapd.conf
am linuxmuster.net-Server ist nicht nötig. In der Datei wird durch die Zeile
„by anonymous ssf=56 auth“
jede Anfrage per LDAPS zugelassen (ssf=Security-Strength-Factor mit Keylänge 56).
Abmelden und als ein Lehrer oder ein Schüler an der NextCloud anmelden.
Der bisherige LDAP-Dienst von linuxmuster.net unterstützt leider nicht die Option „member-of-overlay“, so dass man eine Gruppenfilterung manuell eingeben muss.
Im Web-Browser als NextCloud-Administrator das LDAP-Modul aufrufen unter:
→ Verwaltung → LDAP / AD Integration
und dann die manuelle Eingabe aktivieren:
Nun bei den Anmelde-Attributen den Filter/LDAP-Abfrage bearbeiten wie folgt. Die Gruppe Lehrer hat die gidNumber 10000.
Weiterklicken bis zum Reiter Gruppen. Nun testen, ob sich nur Lehrer anmelden können. Beim Anmelden eines Schülers erscheint die Fehlermeldung: „Falsches Passwort, soll es zurückgesetzt werden?“
Wie im letzten Abschnitt, aber man muss beim Reiter „Benutzer“ die LDAP-Abfrage so anpassen:
(&(objectClass=posixAccount)(!(|(cn=Computer)(cn=ExamAccount))))
Ebenso im Reiter „Anmelde-Attribute“ die LDAP-Abfrage anpassen:
(&(objectClass=posixAccount)(!(|(cn=Computer)(cn=ExamAccount)))(uid=%uid))
was so viel bedeutet wie: ist die Objektklasse ein Posixaccount UND ist die uid=%uid UND ist WEDER der cn=Computer noch der cn=ExamAccount.
Es geht aber noch einfacher. Zumindest bis zur 6.x funktioniert folgender Trick: Alle Administratoren, Computerkonten und Klassenarbeitskonten haben den LDAP-Wert sophomorix-status: P. Daher sollte genauso funktionieren bei „Benutzer“:
(&(objectClass=posixAccount)(!(sophomorixstatus=P)))
und dementsprechend:
(&(objectClass=posixAccount)(!(sophomorixstatus=P))(uid=%uid))
Dafür muss man im Reiter „Gruppen“ folgende LDAP-Abfrage einstellen:
(&(objectclass=posixGroup)(|(cn=p_*)(cn=teachers)(cn=5*)(cn=6*)(cn=7*)(cn=8*)(cn=9*)(cn=1*)(cn=k*)))
was so viel bedeutet wie: die Objektklasse ist eine posixGruppe UND der cn beginnt ENTWEDER mit p_* ODER ist gleich „teachers“ ODER mit 5 ODER mit 6 ODER mit 7 ODER mit 8 ODER mit 9 ODER mit 1 ODER mit „k“. Bei uns gibt es eben Klassen mit 5-11 und k1 und k2 als Gruppen.
Es gibt da immernoch Gruppen, die man eventuell nicht drin haben will, wie z.B. „p_wifi“ aber wenn ich den Suchfilter ergänzt habe, die auszunehmen (zusätzliche Blacklist), dann ist mein PHP abgestürzt…