Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| centos:ldap_c7:data [16.07.2015 20:55. ] – [Datenmigration] django | centos:ldap_c7:data [22.07.2019 15:03. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 4: | Zeile 4: | ||
| Nachdem wir die [[centos: | Nachdem wir die [[centos: | ||
| - | Wir werden im ersten Schritt unseren OpenLDAP-Verzeichnisdienst mit Schemen befüllen, die wir im späteren Betrieb benötigen werden. Für die Befüllung mit Nutzdaten, die aus Distinguished Names (DN) und einem eindeutigen Objektnamen bestehen, müssen hierzu in den **Directory Information Tree** (**DIT**), einer hierarchischen Baumstruktur eingefügt werden. | + | Wir werden im ersten Schritt unseren OpenLDAP-Verzeichnisdienst mit Schemen befüllen, die wir im späteren Betrieb benötigen werden. Für die Befüllung mit Nutzdaten, die aus **Distinguished Names** (**DN**) und einem eindeutigen Objektnamen bestehen, müssen hierzu in den **Directory Information Tree** (**DIT**), einer hierarchischen Baumstruktur eingefügt werden. |
| ===== Schemata ===== | ===== Schemata ===== | ||
| Zeile 3567: | Zeile 3567: | ||
| Wir erstellen also nun die beiden .ldif-Dateien. | Wir erstellen also nun die beiden .ldif-Dateien. | ||
| - | # / | + | # / |
| # / | # / | ||
| + | Aus der Datei // | ||
| + | michael: | ||
| + | inge: | ||
| + | rebekka: | ||
| + | jakob: | ||
| + | ruben: | ||
| + | leah: | ||
| + | markus: | ||
| + | gertraud: | ||
| + | johann: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: django | ||
| + | userPassword: | ||
| + | gidNumber: 1000 | ||
| + | memberUid: 1000 | ||
| + | |||
| + | dn: cn=michael, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: michael | ||
| + | userPassword: | ||
| + | gidNumber: 1001 | ||
| + | memberUid: 1001 | ||
| + | |||
| + | dn: cn=inge, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: inge | ||
| + | userPassword: | ||
| + | gidNumber: 1002 | ||
| + | memberUid: 1002 | ||
| + | |||
| + | dn: cn=rebekka, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: rebekka | ||
| + | userPassword: | ||
| + | gidNumber: 1003 | ||
| + | memberUid: 1003 | ||
| + | |||
| + | dn: cn=jakob, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: jakob | ||
| + | userPassword: | ||
| + | gidNumber: 1004 | ||
| + | memberUid: 1004 | ||
| + | |||
| + | dn: cn=ruben, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: ruben | ||
| + | userPassword: | ||
| + | gidNumber: 1005 | ||
| + | memberUid: 1005 | ||
| + | |||
| + | dn: cn=leah, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: leah | ||
| + | userPassword: | ||
| + | gidNumber: 1006 | ||
| + | memberUid: 1006 | ||
| + | |||
| + | dn: cn=markus, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: markus | ||
| + | userPassword: | ||
| + | gidNumber: 1007 | ||
| + | memberUid: 1007 | ||
| + | |||
| + | dn: cn=gertraud, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: gertraud | ||
| + | userPassword: | ||
| + | gidNumber: 1008 | ||
| + | memberUid: 1008 | ||
| + | |||
| + | dn: cn=johann, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: johann | ||
| + | userPassword: | ||
| + | gidNumber: 1009 | ||
| + | memberUid: 1009</ | ||
| + | |||
| + | Aus der Datei // | ||
| + | michael: | ||
| + | inge: | ||
| + | rebekka: | ||
| + | jakob: | ||
| + | ruben: | ||
| + | leah: | ||
| + | markus: | ||
| + | gertraud: | ||
| + | johann: | ||
| + | uid: django | ||
| + | cn: django | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | shadowLastChange: | ||
| + | shadowMin: 0 | ||
| + | shadowMax: 99999 | ||
| + | shadowWarning: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1000 | ||
| + | gidNumber: 1000 | ||
| + | homeDirectory: | ||
| + | gecos: django | ||
| + | |||
| + | dn: uid=michael, | ||
| + | uid: michael | ||
| + | cn: michael | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1001 | ||
| + | gidNumber: 1001 | ||
| + | homeDirectory: | ||
| + | gecos: michael | ||
| + | |||
| + | dn: uid=inge, | ||
| + | uid: inge | ||
| + | cn: inge | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1002 | ||
| + | gidNumber: 1002 | ||
| + | homeDirectory: | ||
| + | gecos: inge | ||
| + | |||
| + | dn: uid=rebekka, | ||
| + | uid: rebekka | ||
| + | cn: rebekka | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1003 | ||
| + | gidNumber: 1003 | ||
| + | homeDirectory: | ||
| + | gecos: rebekka | ||
| + | |||
| + | dn: uid=jakob, | ||
| + | uid: jakob | ||
| + | cn: jakob | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1004 | ||
| + | gidNumber: 1004 | ||
| + | homeDirectory: | ||
| + | gecos: jakob | ||
| + | |||
| + | dn: uid=ruben, | ||
| + | uid: ruben | ||
| + | cn: ruben | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1005 | ||
| + | gidNumber: 1005 | ||
| + | homeDirectory: | ||
| + | gecos: ruben | ||
| + | |||
| + | dn: uid=leah, | ||
| + | uid: leah | ||
| + | cn: leah | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1006 | ||
| + | gidNumber: 1006 | ||
| + | homeDirectory: | ||
| + | gecos: leah | ||
| + | |||
| + | dn: uid=markus, | ||
| + | uid: markus | ||
| + | cn: markus | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1007 | ||
| + | gidNumber: 1007 | ||
| + | homeDirectory: | ||
| + | gecos: markus | ||
| + | |||
| + | dn: uid=gertraud, | ||
| + | uid: gertraud | ||
| + | cn: gertraud | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1008 | ||
| + | gidNumber: 1008 | ||
| + | homeDirectory: | ||
| + | gecos: gertraud | ||
| + | |||
| + | dn: uid=johann, | ||
| + | uid: johann | ||
| + | cn: johann | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1009 | ||
| + | gidNumber: 1009 | ||
| + | homeDirectory: | ||
| + | gecos: johann | ||
| + | </ | ||
| + | |||
| + | === Datenübernahme in den DIT === | ||
| + | Nachdem wir die Nutzerdaten aus dem/einem System migriert haben, werden wir nun mit dem Befehl **ldapadd** die gerade generierten LDIF-Dateien in den DIT importieren. | ||
| + | |||
| + | Als erstes importieren wir den **DN**((**D**istinguished **N**ame)) Group. | ||
| + | # ldapadd -W -x -D cn=Manager, | ||
| + | |||
| + | Enter LDAP Password: | ||
| + | < | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | </ | ||
| + | |||
| + | Anschließend importieren wir den **DN** People. | ||
| + | # ldapadd -W -x -D cn=Manager, | ||
| + | |||
| + | Enter LDAP Password: | ||
| + | < | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== abschließender Test ==== | ||
| + | Für den abschliessenden Test, ob die Datenmigration aus den filebasierenden Dateien in den DIT unseres OpenLADP-Servers geklappt hat, befragen wir unseren LDAP-Server nach den Daten zum **User** // | ||
| + | # ldapsearch -W -x -D cn=config -b " | ||
| + | |||
| + | Enter LDAP Password: | ||
| + | < | ||
| + | uid: django | ||
| + | cn: django | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | userPassword:: | ||
| + | | ||
| + | | ||
| + | shadowLastChange: | ||
| + | shadowMin: 0 | ||
| + | shadowMax: 99999 | ||
| + | shadowWarning: | ||
| + | loginShell: /bin/bash | ||
| + | uidNumber: 1000 | ||
| + | gidNumber: 1000 | ||
| + | homeDirectory: | ||
| + | gecos: django</ | ||
| + | |||
| + | Unsere erfolgreiche Abfrage erzeugt einen entsprechendnen Eintrag im Logfile des slapd-Daemon. | ||
| + | # less / | ||
| + | |||
| + | < | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | Jul 16 23:26:21 vml000037 slapd[14264]: | ||
| + | </ | ||
| + | |||
| + | Zu guter letzt befragen wir nun noch unseren LDAP-Server nach den Daten der **Gruppe** // | ||
| + | # ldapsearch -x -b " | ||
| + | |||
| + | < | ||
| + | # | ||
| + | # LDAPv3 | ||
| + | # base < | ||
| + | # filter: (objectclass=*) | ||
| + | # requesting: ALL | ||
| + | # | ||
| + | |||
| + | # django, Group, nausch.org | ||
| + | dn: cn=django, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: django | ||
| + | userPassword:: | ||
| + | gidNumber: 1000 | ||
| + | memberUid: 1000 | ||
| + | |||
| + | # search result | ||
| + | search: 2 | ||
| + | result: 0 Success | ||
| + | |||
| + | # numResponses: | ||
| + | # numEntries: 1</ | ||
| + | |||
| + | Natürlich wurde auch hier unsere Abfrage im LDAP-Log dokumentiert. | ||
| + | # less / | ||
| + | |||
| + | < | ||
| + | Jul 16 23:40:26 vml000037 slapd[14264]: | ||
| + | Jul 16 23:40:26 vml000037 slapd[14264]: | ||
| + | Jul 16 23:40:26 vml000037 slapd[14264]: | ||
| + | Jul 16 23:40:26 vml000037 slapd[14264]: | ||
| + | Jul 16 23:40:26 vml000037 slapd[14264]: | ||
| + | Jul 16 23:40:26 vml000037 slapd[14264]: | ||
| + | |||
| + | ===== DIT Indizes ===== | ||
| + | ==== Abfrage der Indizes ==== | ||
| + | Wollen wir später einzelne Index Felder im **DIT** anpassen, müssen wir natürlich wissen wie die derzeitigen Felder indiziert wurden. Hierzu lassen wir uns die existierende Indizierung der Felder anzeigen. | ||
| + | |||
| + | Hierzu nutzen wir nun folgenden Befehlsaufruf. | ||
| + | # | ||
| + | |||
| + | Enter LDAP Password: | ||
| + | < | ||
| + | # | ||
| + | # LDAPv3 | ||
| + | # base < | ||
| + | # filter: (objectclass=*) | ||
| + | # requesting: ALL | ||
| + | # | ||
| + | |||
| + | # {2}hdb, config | ||
| + | dn: olcDatabase={2}hdb, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | olcDatabase: | ||
| + | olcDbDirectory: | ||
| + | olcSuffix: dc=nausch, | ||
| + | olcRootDN: cn=Manager, | ||
| + | olcRootPW: {SSHA}lfeku/ | ||
| + | olcDbIndex: objectClass eq,pres | ||
| + | olcDbIndex: ou, | ||
| + | |||
| + | # search result | ||
| + | search: 2 | ||
| + | result: 0 Success | ||
| + | |||
| + | # numResponses: | ||
| + | # numEntries: 1</ | ||
| + | |||
| + | Für die Felder **objectClass** und **ou, | ||
| + | |||
| + | * **olcDbIndex: | ||
| + | * **olcDbIndex: | ||
| + | |||
| + | Dies entspricht nachfolgender Tabelle. | ||
| + | ^ **Felder** | ||
| + | | ::: ^ // | ||
| + | | **objectClass** | ||
| + | | **ou** | ||
| + | | **cn** | ||
| + | | **mail** | ||
| + | | **surname** | ||
| + | | **givenname** | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Erfolgt ein Zugriff auf ein Fled im OpenLDAP-Verzeichnisbaum bei dem kein Index definiert wurde, wird dazu im LDAP-Log // | ||
| + | Jul 17 12:32:53 vml000037 slapd[14264]: | ||
| + | |||
| + | ==== Setzen der Indizes (LDIF) ==== | ||
| + | Für die Felder in der folgenden Tabelle wollen wir nun noch Indizes erstellen. | ||
| + | |||
| + | ^ **Felder** | ||
| + | | ::: | ||
| + | | **uidNumber** | ||
| + | | **gidNumber** | ||
| + | | **loginShell** | ||
| + | | **uid** | ||
| + | | **memberUid** | ||
| + | | **nisMapName** | ||
| + | | **nisMapEntry** | ||
| + | | **uniqueMember** | ||
| + | |||
| + | Zu dieser Tabelle erstellen wir uns nun eine passende LDIF-Datei. | ||
| + | # vim / | ||
| + | |||
| + | <file ldif / | ||
| + | # Erstellen von zusätzlichen Indizes für Felder im DIT | ||
| + | # https:// | ||
| + | |||
| + | dn: olcDatabase={2}hdb, | ||
| + | changetype: modify | ||
| + | add: olcDbIndex | ||
| + | olcDbIndex: uidNumber, | ||
| + | olcDbIndex: uid, | ||
| + | olcDbIndex: nisMapName, | ||
| + | olcDbIndex: uniqueMember eq,pres | ||
| + | </ | ||
| + | |||
| + | Anschließend importieren wir diese Daten in unseren **DIT**. | ||
| + | # ldapmodify -Y EXTERNAL -H ldapi:/// -f / | ||
| + | |||
| + | SASL/ | ||
| + | SASL username: gidNumber=0+uidNumber=0, | ||
| + | SASL SSF: 0 | ||
| + | modifying entry " | ||
| + | |||
| + | |||
| + | ==== Überprüfen der gesetzten Indizes ==== | ||
| + | Zu guter letzt lassen wir uns erneut anzeigen für welche Felder im **DIT** Indizies gesetzt sind. Dazu verwenden wir folgenden Befehl. | ||
| + | # | ||
| + | |||
| + | Enter LDAP Password: | ||
| + | < | ||
| + | # | ||
| + | # LDAPv3 | ||
| + | # base < | ||
| + | # filter: (objectclass=*) | ||
| + | # requesting: ALL | ||
| + | # | ||
| + | |||
| + | # {2}hdb, config | ||
| + | dn: olcDatabase={2}hdb, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | olcDatabase: | ||
| + | olcDbDirectory: | ||
| + | olcSuffix: dc=nausch, | ||
| + | olcRootDN: cn=Manager, | ||
| + | olcRootPW: {SSHA}lfeku/ | ||
| + | olcDbIndex: objectClass eq,pres | ||
| + | olcDbIndex: ou, | ||
| + | olcDbIndex: uidNumber, | ||
| + | olcDbIndex: uid, | ||
| + | olcDbIndex: nisMapName, | ||
| + | olcDbIndex: uniqueMember eq,pres | ||
| + | |||
| + | # search result | ||
| + | search: 2 | ||
| + | result: 0 Success | ||
| + | |||
| + | # numResponses: | ||
| + | # numEntries: 1</ | ||
| + | |||
| + | ====== Links ====== | ||
| + | * **⇐ [[centos: | ||
| + | * **⇒ [[centos: | ||
| + | * **[[centos: | ||
| + | * **[[wiki: | ||
| + | * **[[http:// | ||
| - | FIXME | ||