{{tag> owncloud}} ====== Benutzerdaten für ownCloud aus LDAP holen ====== zur -> [[.:start|Übersicht von OwnCloud]] Diese Vorgehensweise sollte auch für paedML5/openML5 funktionieren. Seit Version 6 ownCloud ist die LDAP Anbindung erneuert worden: http://www.arthur-schiwon.de/owncloud-6-community-edition-beta-1-ships-collaborative-editing-and-new-wizard-ldap-settings ===== Benötigtes Paket installieren ===== (Paket ist auf linuxmusternet 6 schon installiert) aptitude install php5-ldap Das installierte Modul von apache nachladen lassen: service apache2 force-reload Liegt die OwnCloud nicht auf dem Server, muss man noch in der Datei **/etc/ldap/slapd.conf** by anonymous peername.ip= auth und danach der slapd neu gestartet werden service slapd restart ===== Konfiguration im WEB-GUI ===== Nach Anmeldung am WebGUI von ownCloud als ownCloud-Administrator (''root'' in dieser Anleitung): ==== LDAP Backend aktivieren ==== * Zusätzliche App zur LDAP-Anbindung installieren: * Auf ''+'' links unten im WebGUI * ''LDAP user and group backend'' aktvieren. * Im Menü rechts oben --> Administrator finden sich die Einstellungen für dieses Backend ==== Konfiguration des LDAP Backends ==== === Reiter ''Server'' === Dieser Reiter muss korrekt konfiguriert sein, damit die weiteren Reiter funktionieren. * Host: IP des Schulservers angeben (IP evtl. anpassen)10.16.1.1 * In die Zeile darunter klicken (Benutzer-DN): Port wird automatisch gesucht --> ''389'' * Benutzer-DN: bleibt leer, trotzdem reinklicken * Passwort: bleibt leer, trotzdem reinklicken * BaseDN wird nicht automatisch detektiert, also manuell eintragen (anpassen): dc=example,dc=com (bekommt man auf dem Server mit "grep BASE /etc/ldap/ldap.conf") * Klick auf ''Fortsetzen''. Es wird der nächste Reiter ''User Filter'' angezeigt. === Reiter ''User Filter'' === Welcher User dürfen sich in ownCloud anmelden? * nix machen und abwarten (ownCloud kontaktiert den LDAP Server und sucht nach usern) * Als Objekt-Klasse wird gefunden: inetOrgPerson * Umstellen auf: ''posixAccount'' * ''Nur von diesen Gruppen'' ist ausgegraut, wenn der Server das ''member-of'' overlay nicht unterstützt (wie bei openml,paedml5/linuxmusternet6). Leider ist es dadurch nicht möglich nur einer Gruppe den Login zu erlauben. * Es sollten n>0 Benutzer gefunden werden * Klick auf ''Fortsetzen''. Es wird der nächste Reiter ''Login Filter'' angezeigt. * Evtl. nochmal ''Zurück'' um zu sehen, ob ''posixAccount'' nun tatsächlich verwendet wird === Reiter ''Login Filter'' === Welches Attribut ist als Login zulässig? * Haken bei LDAP-Benutzername * Klick auf ''Fortsetzen''. Es wird der nächste Reiter ''Group Filter'' angezeigt. === Reiter ''Group Filter'' === Welche Gruppen soll ownCloud kennen? * Nur diese Objekt-Klassen: ''posixGroup'' * sonst nix ändern === Reiter ''Advanced'' === Die meisten Angaben werden automatisch richtig gesetzt * Bereich ''Verbindungseinstellungen'' * Haken bei ''Konfiguration aktiv'' * ''Speichere Time to live zwischen'' runterdrehen auf z.B. ''5'' (Sekunden) * sonst alles leer * Bereich ''Ordnereinstellungen'' (Mit ''Ordner'' ist der LDAP-''Verzeichnis''-Baum gemeint) * Assoziation zwischen Gruppe und Benutzer: ''memberUID''. (Damit ist der User in ownCloud in der primären posix gruppe (Klasse) * Bereich ''Spezielle Eigenschaften'' * nix ändern === Reiter ''Expert'' === * vorerst nix machen * alles leer * Nach Klick auf Knopf Testkonfiguration sollte erscheinen: Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden! === Benutzer mit ihrem Loginnamen verwenden statt UUID === Diese Umstellung kann man nur ohne Probleme machen, solange sich noch kein LDAP-Benutzer angemeldet hat. OwnCloud kann Benutzer aus mehreren LDAP-Server nutzen. Da sich dabei Doppelungen im Benutzernamen ergeben können, wird für jeden ownCloud-Benutzer-Account eine eindeutige UUID erzeugt, die allerdings wenig aussagekräftig ist wie z.B.: c886ef6e-16fe-1033-83aa-8f19b87fd5fc Die Daten dieses Users würden dann in folgendem Verzeichnis gespeichert: /home/owncloud/c886ef6e-16fe-1033-83aa-8f19b87fd5fc Wird nur an einen einzigen LDAP-Server angebunden (der linuxmuster.net Schulserver), kann ownCloud dessen eindeutige Loginnamen (uid) ohne Gefahr von Doppelungen als Identifikation nutzen. Zur Umstelung von UUID auf Loginnamen geht man so vor: * ''LDAP user and group backend'', Reiter ''Expert'' * Bisher erzeugte Loginnamen/Gruppennamen entfernen * Lösche LDAP-Benutzernamenzuordnung * Lösche LDAP-Gruppennamenzuordnung * Interner Benutzername: ''uid'' * UUID-Attribute für Benutzer: ''uid'' * UUID-Attribute für Gruppen ''gidNumber'' * Klick auf speichern Nach erfolgreicher Konfiguration sieht die Benutzerliste von ownCloud z.B. so aus: {{ .:users-owncloud.png |}} Zur Kontrolle sollte man prüfen: * Als Benutzername erscheint der Loginname/Benutzername des Schulservers * Vollständiger Name ist: ''Vorname Nachname'' * Als Gruppen erscheinen ALLE Gruppen, in denen der jeweilige User ist. * Testweise einen Benutzer anmelden * Ist er in der richtigen Gruppe () ==== Optimieren des LDAP Backends ==== === LDAP-Abfragen beschleunigen === Reiter ''Advanced'', Bereich ''Ordnereinstellungen'' * Basis-Benutzerbaum: ''ou=accounts,dc=linuxmuster-net,dc=lokal'' (Das vorangestellte ''ou=accounts,'' beschleunigt die LDAP Suche) * Basis-Gruppenbaum: ''ou=groups,dc=linuxmuster-net,dc=lokal'' (Das vorangestellte ''ou=groups,'' beschleunigt die LDAP Suche) === LDAP-Abfrage Cache verlängern === Reiter ''Advanced'', Bereich ''Verbindungseinstellungen'' * ''Speichere Time to live zwischen'' wieder hochstellen ''600'' (Sekunden) === Umstellen auf ldaps im Reiter ''User Filter'' === Bei Bedarf kann im Reiter ''User Filter'' auf ldaps umgestellt werden: ldaps://10.16.1.1 und der Port entweder selbst suchen lassen oder auf ''636'' umstellen. === Nochmal von vorne beginnen === Hat man sich vergeigt, beginnt man so am besten von vorne: - Alle Verbindungen beenden, User ausloggen - Bisher erzeugte Loginnamen/Gruppennamen entfernen * Lösche LDAP-Benutzernamenzuordnung * Lösche LDAP-Gruppennamenzuordnung - Reiter ''Server'': Delete Konfiguration Nun kann man neu loslegen. ==== Anmerkungen ===== * Ist owncloud auf dem linuxmusternet6 Server installiert, so tut auch ldaps vollstängig (Rechner vertraut vollständig sich selbst?) ==== Probleme die noch zu lösen sind==== * Es sollten nur Mitglieder des Projekts ''p_owncloud'' sich einloggen können -> filter anlegen bei user, geht aber nicht, da der LDAP von linuxmuster.net das nicht zulässt. * In der Benutzerauflistung erscheinen NICHT die Gruppe aus dem LDAP Server (sollte aber so sein, um nicht eine weitere Gruppenverwaltung aufzuziehen) * Über ldaps port 636 geht es nicht * Konfigurations-Änderungen werden nicht sofort erkannt (Erst wenn die neuen Werte in mysql stehen) ===== Hinweise zur gesicherten Verbindung mit SSL ===== Damit das klappen kann, muss man jedoch den LDAP-Server so konfigurieren, dass er das Zertifikat des Schulserver nicht prüft, das passiert in der Datei ''/etc/ldap/ldap.conf'': root@owncloud:~# cat /etc/ldap/ldap.conf # # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. #BASE dc=example,dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS certificates (needed for GnuTLS) # AUSKOMMENTIEREN! #TLS_CACERT /etc/ssl/certs/ca-certificates.crt # # REINSCHREIBEN! PORT 636 TLS_REQCERT never Prüfen kann man das mit dem folgenden Kommando auf der Kommandozeile: ldapsearch -x -H ldaps://5.xxx.xxx.99:636 -b "dc=qg-xxxxx,dc=de" "objectClass=*" dabei muss die Nutzerliste des Servers ausgegeben werden. Solange das nicht geht, muss man die OC gar nicht weiter konfigurieren. Es ist unbedingt empfehlenswert, die Verbindung zum LDAP Server zu verschlüsseln, dabei sollten die Einstellungen folgendermaßen aussehen: {{ .:auswahl_012.png |}} ===== Wenns nicht tut ===== ====BASEDN ermitteln==== Ermitteln Sie auf dem Schulserver die basedn wie folgt: # grep basedn /var/lib/linuxmuster/network.settings ====Auf dem ownCloud-Server den LDAP Zugriff mit Konsolentools prüfen==== # aptitude install ldap-utils Dann unverschlüsselten Zugriff testen (IP und DN anpassen): # ldapsearch -x -H ldap://10.16.1.1:389 -b 'dc=linuxmuster-net,dc=lokal' Dann sollte der komplette LDAP-Baum durch die Konsole rauschen. Danach Zugang verschlüsselt OHNE Zertifikat testen: # LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://10.16.1.1:636 -b 'dc=linuxmuster-net,dc=lokal' Denselben Effekt wie das vorangestellte ''LDAPTLS_REQCERT=never'' hat der Eintrag von ''TLS_REQCERT never'' inder Datei ''/etc/ldap/ldap.conf'' Und schließlich verschlüsselter Zugang MIT Zertifikat testen: # ldapsearch -x -H ldaps://10.16.1.1:636 -b 'dc=linuxmuster-net,dc=lokal' ====== Technische Anmerkungen ====== ===== LDAP Suchfilter ===== In den Reitern ''User Filter'', ''Login Filter'' und ''Group Filter'' können auch ganz spezielle Filter angegeben werden. Beispiel eines ''User Filter'': (&(objectclass=posixAccount) (|(uid=foxal) (uid=beckje) (uid=gal))) Dieser Filter beschränkt den Zugriff auf ownCloud auf die 3 User ''foxal'' ''beckje'' und ''gal''. ===== Speicherung der LDAP Anbindung ===== Die LDAP-Anbindungsdaten werden in der mysql-Datenbank gespeichert: Sie können abgerufen werden mit: use owncloud; mysql> select * from oc_appconfig where appid='user_ldap'; oder gedumped werden mit (muster mit Passwort für ''root'' ersetzen): mysqldump --extended-insert=0 -u root -pmuster owncloud --tables oc_appconfig --where="appid='user_ldap'" Wiedereingespielt werden kann der Dump mit dem Befehl (ungetestet): mysql -u root -pserver owncloud < working_config Log der Datenbankänderungen: [[.:mysql-ldap-log|Datenbankänderungen]]