Novell Directory Service (eDirectory)
Besonderheiten
Bei der Verwendung von Novell's eDirectory stösst man relativ schnell auf einige Besonderheiten, die bei anderen Verzeichnissen nicht vorgesehen sind.
Schema-Erweiterungen
Eine Schema-Erweiterung ist beim eDirectory während des laufenden Betriebs möglich. Einige Schema-Erweiterungen werden bereits mitgeliefert und liegen (auf einen Linux-System) unter /usr/lib/nds-schema/. Die Erweiterungen mit der Endung .sch kann man einfach mit Hilfe des Programms ndssch einspielen (dazu braucht man natürlich Rechte um die Schemata der NDS zu ändern - im folgenden Beispiel der Manager-Account):
linux ~# ndssch Manager.mydomain.de rfc2307-usergroup.sch
Password:
Logging into the tree as "Manager.mydomain.de". Please Wait ...
Extending schema, For more details view schema extension logfile: /var/nds/schema.log
NDS schema extension complete.
Solle eine Schema-Erweiterung inkompatibel zu einer vorigen sein, so kann man in der ConsoleOne im Schema-Manager die entsprechenden Objekt-Klassen löschen und anschließend mit ndssch wieder einspielen. Damit das Entfernen einer Klasse erlaubt wird, dürfen im Baum allerdings keine Instanzen dieses Objektes mehr vorhanden sein!
Container
Ein weiterer Unterschied sind die strengeren Container-Beziehungen in der NDS. Während man unter OpenLDAP beliebige Objekte in Containern ablegen kann, gibt es in den Novell Schemata strenge Vorgaben. Obwohl es das Anlegen von Objekten im Baum etwas erschwert hat dieses Vorgehen auch Vorteile: So bekommt der Baum automatisch eine gewisse Struktur - und beim Anlegen eines Objektes in einem speziellen Container bietet die ConsoleOne z.B. nur die zugelassenen Objekte an.
Im folenden Beispiel kann ein Objekt nisObject nur in Containern der Klasse Organization oder Organizational Unit angelegt werden (wie man der Zeile mit ContainedBy entnehmen kann.
...
"nisObject" OBJECT-CLASS ::=
{
Operation ADD,
Flags { DS_EFFECTIVE_CLASS },
SubClassOf { "TOP" },
ContainedBy { "Organization" , "Organizational Unit" },
NamedBy { "CN", "nisMapName" },
MustContain { "CN", "nisMapEntry", "nisMapName" },
MayContain { "Description" },
ASN1ObjID {1 3 6 1 1 1 2 10}
}
...
Indices anlegen
Um die Performance zu steigern, kann man auch in der NDS Indices für spezielle Attribute Indices einführen. Im iManager unter eDirectory-Wartung - Indexverwaltung kann man diese verwalten. Für welche Attribute dieses Vorgehen sinnvoll ist lässt sich mittels Debugging oder Analyse der Client-Protokolle ermitteln
Debuggen der NDS
Auch das Debuggen von LDAP-Anfragen in der NDS gestaltet sich etwas schwierig, da man (um eine brauchbare Ausgabe zu erhalten) an mehreren Stellen eingreifen muss. Zuerst sollte man die LDAP-Tracing Optionen kontrollieren:
linux ~# ldapconfig get -a Manager.mydomain.de -w MyPassword | grep Level LDAP Screen Level: Operation| Connection| BerDecode| Config| Extensions| Error| Critical| DataConnection
Alternativ kann das auch über das Web-Interface erfolgen. Dort kann man unter iManager - LDAP - LDAP-Optionen - LDAP Server anzeigen auch die LDAP-Debug-Optionen (de)aktivieren (Menupunkt Tracing im Pull-Down-Menu).
Anschließend kann man ndstrace aufrufen und mit folgenden Eingaben die Debug-Optionen auf LDAP einschränken
set DSTRACE=NONE set DSTRACE=+LDAP
Auch hier ist alternativ die Nutzung eines Web-Tools vorgesehen. Das Web-Interface von DSTRACE erreicht man auf dem LDAP-Server über die Ports 8028 (http) und 8030 (https). Nach erfolgreicher Anmeldung kann man unter Trace Configuration die Option LDAP anwählen und den Trace starten. Genauere Vorgaben welche Ereignisse mitprotokolliert werden sollen kann man unter dem Punkt Event Configuration selektieren. Eine gute Basis-Auswahl sind hier Search sowie alle Punkte, die Attribute oder Objekte betreffen.
Migration von Accounts
Die Migration von Accounts aus anderen Quellen (NIS, OpenLDAP, etc.) birgt einige Schwierigkeiten. Da das Attribut userPassword beim Einfügen in die NDS eine Sonderbehandlung erfährt, ist es nicht ohne weiteres möglich bereits gehashte Passwörter in die NDS zu übernehmen.
Um das dennoch zu bewerkstelligen müssen einige Vorarbeiten geleistet werden: Im Baum muss unter Security - Autheticated Login Methods ein neues Objekt vom Typ SAS: NMAS Login Method angelegt werden:
linux ~# nmasinst -addmethod Manager.my-domain.de MY-TREE /opt/novell/nmas/nmasmthd/SimplePassword/config.txt Password: NMAS Method installation was successful
Mit Hilfe von LDIF-Dateien lassen sich auch bereits gehashte Passwörter in die NDS übernehmen:
version: 1
dn: uid=aaa,ou=People,o=mydomain,c=de
control: 2.16.840.1.113719.1.27.101.5 false: 1
changetype: modify
add: userpassword
userpassword: {CRYPT}XXq2wKiyI43A2
Um zu Überprüfen ob die LDAP Kontrollen auch unterstützt werden, kann man folgende LDAP-Suche verwenden:
linux ~# ldapsearch -x -D cn=Manager,o=mydomain,c=de -H ldaps://myserver.mydomain.de:636 -w Password -s base objectclass="*" supportedcontrol ... dn: supportedControl: 2.16.840.1.113719.1.27.101.6 supportedControl: 2.16.840.1.113719.1.27.101.5 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113719.1.27.103.7 ...



