Das installierte System enthält unter
/etc/openldap/slapd.conf eine vollständige
Konfigurationsdatei für den LDAP-Server. Die einzelnen Einträge und die
erforderlichen Anpassungen werden hier kurz beschrieben. Einträge, denen ein
Rautenzeichen (#) vorangestellt wurde, sind nicht aktiv.
Dieses Kommentarzeichen muss entfernt werden, um sie zu aktivieren.
Beispiel 45.2. slapd.conf: Include-Direktive für Schemata
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema
Diese erste in Beispiel 45.2, „slapd.conf: Include-Direktive für Schemata“ dargestellte
Direktive in slapd.conf gibt das Schema an, anhand
dessen das LDAP-Verzeichnis organisiert wird. Der Eintrag
core.schema ist zwingend erforderlich. Dieser
Direktive werden zusätzlich benötigte Schemata angefügt. Die
entsprechenden Informationen finden Sie in der vorhandenen Dokumentation zu
OpenLDAP.
Beispiel 45.3. slapd.conf: pidfile und argsfile
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
Diese beiden Dateien enthalten die PID (Prozess-ID) und einige Argumente, mit denen der slapd-Prozess gestartet wird. Hier müssen keine Änderungen vorgenommen werden.
Beispiel 45.4. slapd.conf: Zugriffskontrolle
# Sample Access Control # Allow read access of root DSE # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # access to dn="" by * read access to * by self write by users read by anonymous auth # # if no access controls are present, the default is: # Allow read by all # # rootdn can always write!
In Beispiel 45.4, „slapd.conf: Zugriffskontrolle“ ist der Ausschnitt der Datei
slapd.conf dargestellt, mit dem die
Zugriffsberechtigungen für das LDAP-Verzeichnis auf dem Server gesteuert
werden. Die hier im globalen Abschnitt von slapd.conf
vorgenommenen Einträge sind gültig, sofern keine benutzerdefinierten
Zugriffsregeln im datenbankspezifischen Abschnitt festgelegt werden. Durch
diese Regeln würden die globalen Deklarationen außer Kraft gesetzt. Wie
hier dargestellt, verfügen alle Benutzer über Lesezugriff auf das
Verzeichnis, nur der Administrator (rootdn) hat jedoch
Schreibberechtigung für dieses Verzeichnis. Die Zugriffskontrolle in LDAP
ist ein hochkomplexer Prozess. Folgende Tipps dienen als
Anhaltspunkte:
Jede Zugriffsregel weist folgende Struktur auf:
access to <what> by <who> <access>
what ist ein Platzhalter für das Objekt
oder Attribut, auf das Zugriff gewährt wird. Einzelne Verzweigungen des
Verzeichnisses können explizit mit separaten Regeln geschützt werden.
Darüber hinaus besteht die Möglichkeit, Bereiche des Verzeichnisbaums mit
einer Regel durch die Verwendung regulärer Ausdrücke zu verarbeiten.
slapd wertet alle Regeln in der Reihenfolge aus, in
der sie in der Konfigurationsdatei angegeben sind. Allgemeine Regeln
sollten nach den spezifischeren Regeln angegeben werden – die erste von
slapd als gültig eingestufte Regel wird bewertet und
alle folgenden Einträge werden ignoriert.
Mit who wird festgelegt, wer Zugriff auf
die mit what angegebenen Bereich erhalten
soll. Hier können reguläre Ausdrücke verwendet werden. Auch hier bricht
slapd die Bewertung nach der ersten Übereinstimmung
ab, sodass die spezifischeren Regeln vor den allgemeineren Regeln
angegeben werden sollten. Die in Tabelle 45.2, „Benutzergruppen und ihre Zugriffsberechtigungen“
dargestellten Einträge sind möglich.
Mit access wird der Zugriffstyp
angegeben. Verwenden Sie die in Tabelle 45.3, „Zugriffstypen“
angegebenen Optionen.
Tabelle 45.3. Zugriffstypen
Tag | Umfang des Zugriffs |
|---|---|
| Kein Zugriff |
| Für die Verbindung zum Server |
| Für Objekt für Vergleichszugriff |
| Für den Einsatz von Suchfiltern |
| Lesezugriff |
| Schreibzugriff |
slapd vergleicht das vom Client angeforderte
Zugriffsrecht mit den in slapd.conf gewährten
Rechten. Dem Client wird Zugriff gewährt, wenn in den Regeln ein höheres
als das angeforderte Recht oder gleichwertiges Recht festgelegt ist. Wenn
der Client ein höheres Recht als die in den Regeln deklarierten Rechte
anfordert, wird ihm der Zugriff verweigert.
In Beispiel 45.5, „slapd.conf: Beispiel für die Zugriffskontrolle“ ist ein Beispiel einer einfachen Zugriffskontrolle dargestellt, die mithilfe von regulären Ausdrücken beliebig entwickelt werden kann.
Beispiel 45.5. slapd.conf: Beispiel für die Zugriffskontrolle
access to dn.regex="ou=([^,]+),dc=suse,dc=de" by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write by user read by * none
Mit dieser Regel wird festgelegt, dass nur der jeweilige Administrator
Schreibzugriff auf einen einzelnen ou-Eintrag erhält.
Alle anderen authentifizierten Benutzer verfügen über Lesezugriff und alle
sonstigen Benutzer haben kein Zugriffsrecht.
![]() | Festlegen von Zugriffsregeln |
|---|---|
Falls keine | |
Detaillierte Informationen hierzu und eine Beispielkonfiguration für
LDAP-Zugriffsrechte finden Sie in der Online-Dokumentation zum
installierten openldap2-Paket.
Neben der Möglichkeit, Zugriffsberechtigungen über die zentrale
Serverkonfigurationsdatei (slapd.conf) zu verwalten,
stehen ACIs (Access Control Information) zur Verfügung. Mit ACIs können
Zugriffinformationen für einzelne Objekte innerhalb des LDAP-Baums
gespeichert werden. Diese Art der Zugriffskontrolle wird noch selten
verwendet und von Entwicklern als experimentell betrachtet. Weitere
Informationen hierzu erhalten Sie unter http://www.openldap.org/faq/data/cache/758.html.
Beispiel 45.6. slapd.conf: Datenbankspezifische Direktiven
database bdb checkpoint 1024 5 cachesize 10000 suffix "dc=suse,dc=de" rootdn "cn=admin,dc=suse,dc=de" # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd/tools. Mode 700 recommended. directory /var/lib/ldap # Indices to maintain index objectClass eq
Der Datenbanktyp, in diesem Fall eine Berkeley-Datenbank, wird in der
ersten Zeile dieses Abschnitts festgelegt (siehe Beispiel 45.6, „slapd.conf: Datenbankspezifische Direktiven“). Mit checkpoint wird
die Datenmenge (in kb) festgelegt, die im Transaction Log gespeichert
wird, bevor die Daten in die tatsächliche Datenbank geschrieben werden.
Hiermit wird auch die Zeit (in Minuten) bestimmt, die zwischen zwei
Schreibvorgängen vergeht. Mit cachesize wird die Anzahl
der im Zwischenspeicher der Datenbank gespeicherten Objekte festgelegt. Mit
suffix wird angegeben, für welchen Teil des LDAP-Baums
dieser Server verantwortlich sein soll. Mit dem darauf folgenden
rootdn wird festgelegt, wer für diesen Server über
Administratorrechte verfügt. Der hier angegebene Benutzer muss nicht über
einen LDAP-Eintrag verfügen und nicht als regulärer Benutzer vorhanden
sein. Das Administratorpasswort wird mit rootpw
festgelegt. Anstelle von secret kann hier auch der mit
slappasswd erstellte Hash-Wert des
Administratorpassworts eingegeben werden. Die
directory-Direktive gibt das Verzeichnis (im
Dateisystem) an, in dem die Datenbankverzeichnisse auf dem Server
gespeichert sind. Die letzte Direktive, index objectClass
eq veranlasst die Wartung eines Indizes aller Objektklassen.
Attribute, nach denen die Benutzer am häufigsten suchen, können hier je
nach Erfahrung hinzugefügt werden. Die an dieser Stelle für die Datenbank
festgelegten benutzerdefinierten Regeln für Access
können anstelle der globalen Access-Regeln verwendet
werden.
Nachdem der LDAP-Server vollständig konfiguriert und alle gewünschten
Einträge gemäß dem in Abschnitt 45.4, „Datenbehandlung im LDAP-Verzeichnis“ beschriebenen Muster
vorgenommen wurden, starten Sie den LDAP-Server als root, indem Sie den Befehl rcldap
start eingeben. Durch Eingabe des Befehls
rcldap stop können Sie den Server
manuell anhalten. Den Status des laufenden LDAP-Servers fragen Sie mit
rcldap status ab.
Mit dem in Abschnitt 28.2.3, „Konfigurieren von Systemdiensten (Runlevel) mit YaST“ beschriebenen Runlevel-Editor von YaST kann der Server automatisch beim Booten und Anhalten des Systems gestartet und angehalten werden. Darüber hinaus besteht die Möglichkeit, wie in Abschnitt 28.2.2, „Init-Skripts“ beschrieben, die entsprechenden Verknüpfungen zu den Start- und Anhaltsskripts mit dem Befehl insserv über die Befehlszeile zu erstellen.