Contents

3. Az LDAP szerver konfigurálása

Ha a programot telepítetted és lefordítottad, elkezdheted konfigurálni. Az slapd futásidejû konfigurálása az slapd.conf fileon keresztül végezhetõ, amit a konfigurációs könyvtárban találsz, amelyet a konfigurációs sript állít be, alapértelmezés szerint a /usr/local/etc/openldap. (Ha csomagból telepíted, akkor valószínûleg a /etc/openldap könyvtárban találod - a fordító)

Ebben a könyvtárban az slapd.oc.conf és slapd.at.conf file-okat, amiket az slapd.conf file foglal magába.(az include opciókat a 3.2 fejezetben találod) és egyenként tartalmazza az objektumosztályok és jellemzõk definícicióit  az LDAP adatbázis-háttér részére. Most a konfigurációs file formátumának általános leírása következik, az egyes lehetõségek részletes leírásával.

3.1 Konfigurációs file formátuma

Az slapd.conf file az általános lehetõségek sorozatát tartalmazza, amelyeket az slapd egészére vonatkoznak (beleírtve az egész adatbázis-hátteret), amelyet a háttér adatbázis definíciók követhetnek, amik az adatbázisban  elõfordulhatnak.

Az általános opciók késõbb felülbírálhatók (azoknak az opcióknak, amik egynél többször szerepelnek az slapd.conf-ban,  utolsó megjelenésük lesz érvényes). Az üres sorok és a #-el kezdõdõ sorok figyelmen kívül maradnak. Ha white space-el kezdõdik a sor, akkor a következõ sor folytatásaként érvényesül. Az slapd.conf általános formálya a következõ:

    # megjegyzés - ezek az opcíók az egész adatbázisra érvényesek
    <globális konfigurációs lehetõségek>
    # elsõ adatbázis definíciók és konifugrációs lehetõségek
    database <backend 1 type>
    <backend 1 sepcifikus beállítások>
    # második adatbázis definíciók és konfigurálási lehetõségek
    database <backend 2 type>
    <backend 2 specifikus beállítások>
    # további adatbázis definíciók és konfigurálási lehetõségek
    ...
A konfigurációs paramétereket white space-ek választják el. ha a paraméter white space-t tartalmaz, az paramétereket zárójelbe kell tenni, "mint ezt". Ha az argumentum zárójelet vagy backslash-t tartalmaz, akor backslash karakternek kell megelõznie.(pl "\\d").

A  disztribúció tartalmaz példa konfigurációt, amit a konfigurációs könyvtárban találsz. Szintén tartalmazza az slapd.at.conf file-t, ami sok általánosan használt jellemzõt definiál, es az slapd.oc.conf, amely az általánosan használt objektumosztályok definicíóját tartalmazza.

3.2 Általános lehetõségek

Ebben a fejezetben leírt lehetõségek valamennyi adatbázista  érvényesek, amíg specifikusan felül nem írja õket az adatbázis-háttér definíciói. Az argumentumok aktuális értkét a <kapcsok> közé kell beírni.
 
access to <what> [ by <who> <accesslevel> ]

      Ez opció biztosítja az <accesslevel> által meghatározott módon a <what> által meghatározott bejegyzésekhez és
      tulajdonságokhoz a <who> által meghatározott kérelmezõk hozzáférését. Részleteket az 3.5 részben olvashatsz.
attribute <name> [<name2>] { bin | ces | cis | tel | dn }
Ez az opció a jellemzõk nevéhez rendeli hozzá a szintaxist. Az alapértelmezés szerint az attribútumok tipusa cis.
Az attribútumoknak más típusuk is lehet. Ezek a következõk:

bin : binary (bináris)
ces : case exact string (kis/nagybetünek meg kell egyeznie az összehasonlítás során)
cis : case ignore string (kis/nagybetünek nem kell egyeznie az összehasonlítás során)
tel : telephone number string (olyan, mint a cis, de feldolgozáskor <space> és <-> kihagyásával)
dn : distinguished name (megkülönböztetõ név)
defaultaccess { none | compare | search | read | write }
Ez az opció meghatározza az alapértelmezett hozzáférést azoknak a kérelmezõknek, akik nem szerepelnek semelyik
másik sorban (Részleteket az 3.5 részben olvashatsz). A hozzáfárási szint magában foglalja az összes alatta levõ
szintet is(pl. a write magában foglalja a read, search and compare jogokat).

Alapértelmezett:
defaultaccess read
include <filename>
Ez az opcíó meghatározza azokat a konfigurációs állományokat, amelyeket az slapd végigolvas, mielõtt folytatja a következõ sorral a file feldolgozását. A beemelt file-nak követnie kell az slapd konfigurációs formátumát. Ezt a lehetõség az adatbázis-háttér objektumosztályainak és attribútumainak definícióit tartalmazó filok beemelésére  használható. Az LDAP csdomagban megtalálod az slapd.oc.conf and slapd.at.conf file-okat.

Megjegyzés: óvatosan kezelendõ ez az opció - Semmi nem korlátozza az egymásba ágyazott include-ok számát, és nincs hurokellenõrzés sem.

loglevel <integer>
Ez az opció specifikálja, hogy milyen hibaelhárító és üzemi statisztikák keüljenek az syslog-ba (jelenleg a syslogd-n keresztül LOCAL4 jellemzõvel). Ennek mûködéséhez DLDAP_DEBUG kapcsolóval kell fordítani az slapd-t, kivéve a két stat szintet, amelyek mindig mûködnek.A loglevel értékei összeadódnak. Annak megjelenítéséhez, melyik érték milyen üzeneteket eredményez, az slapd-t -? paraméterrel kell meghívni, és megtalálhatóak az alábbi táblázatban. A lehetséges értékek:

1 trace function calls
2 debug packet handling
4 heavy trace debugging
8 connection management
16 print out packets sent and received
32 search filter processing
64 configuration file processing
128 access control list processing
256 stats log connections/operations/results
512 stats log entries sent
1024 print communication with shell backends
2048 print entry parsing debugging

Példul:

loglevel 255

Ez nagyon sok üzenetet eredményez a syslog-ban.

Default:

loglevel 256

objectclass <name> [ requires <attrs> ] [ allows <attrs> ]
Ez az opció definiálja a séma szabályokat az adott objektum-osztályokhoz. A schemackeck opcióval együtt használható.
referral <url>
Ez specifikája, hova küldje az slapd a kérést, ha nem talál információt a kérés megválaszolásához a helyi adatbázisban.
Például: 

referral ldap://ldap.nns.hu
Ez átirányítja a nem lokális kéréseket a University of Michigan LDAP szerverének. Az ügyes LDAP kliensek újra felteszi a kérdéseket ennél a szervernél, de a legtöbb kliens csak arra képes, hogy egyszerû LDAP url-eket kezeljen, amik csak host részbõl és esetleg distinguished name-bõl áll.
schemacheck { on | off }
Ez az opció kapcsolja be és ki a séma ellenõrzést. Ha bekapcsolod, a bejegyzések hozzáadását és módosítását ellenõrzi a szerver, hogy biztosan megfelejen az objektum-osztályaik definícióinak. Ha kikapcsolod, akkor az ellenõrzést nem végzi el.

Alapértelmezett:

schemacheck off

sizelimit <integer>
Ez az lehetõség maximalja a keresésre adott válasz sorainak számát.

Alapértelmezett:

sizelimit 500

srvtab <filename>
Ez az opció meghatározza az srvtab file-t, amiben az slapd megtalálja a kerberos kulcsokat, amelyek a kerberos kliensek azonosításához szükséges. Ennek csak akkor van jelentõssége, ha kerberos-t használsz a felhasználok aznosításához, amit a Make-common file megfelelõ definíciójával engedályezhetsz, még a fordítást idején.

Alapértelmezett:

srvtab /etc/srvtab

timelimit <integer>
Ez specifikálja a másodpercek számát (valós idõben), amit az slapd eltölt az kérés megválaszolásával. Ha a kérést ez idõ alatt nem sikerül megválaszülni, a eredmény az idõlimit túllépésével tér vissza.

Alapértelmezett:

timelimit 3600

3.3 Általános háttér opciók

Ezek az opciók csak azokra az adatbázis-hátterekre érvényesek, amelyekben szerepenek. Valamennyi háttértípusnál alkalmazhatók.

database <databasetype>

Ez az opció jelzi az új adatbázis definíció kezdetét. A <databasetype> lehet: ldbm, shell, vagy passwd lehet, annak függvényében milyen háttérrel fogsz adatbázist szolgáltatni.

Például:

database ldbm
Ez egy új LDBM típusú adatbázis definíció kezdetét jelzi.
lastmod { on | off }
Ez szabályozza, hogy az slapd automatikusan karbantartsa-e a bejegyzések modifiersName, modifyTimestamp, creatorsName, es createTimestamp jellemzõit.
Alapértelmezett: 

lastmod off
readonly { on | off }
Ez az opció az adatbázist csak olvasható módba kapcsolja.Az adatbázis módosításának kisérlete az "unwilling to perform" hibaüzenetet adja.
Alapértelmezett: 

readonly off
replica host=<hostname>[:<port>] "binddn=<DN>" bindmethod={ simple | kerberos } [credentials=<password>] [srvtab=<filename>]
Ez az opció határozza meg az adatbázis replikációs szerverét. A host= paraméter meghatározza a szervert és opcionálisana port-ot, ahol a szolga slapd található. Domain név és IP cím egyuaránt megadható a <hostname>. Ha a <port> nem szerepel, az sztenderd LDAP portot(389) használja. A binddn paraméter adja meg a firssítéshez szüskéges csatlakozás DN-ét. Ennek a DN-nek irás/olvasás joggal kell rendelkeznie a szolga szerver adatbázisán, tipikusan a "rootdn" bejegyzés a szolga konfigurációs file-jában. Ennek meg kell egyeznie az updatedn opcióval a szolga konfigurációjában. Amióta a DN-ek szóközöket is tartalmazhatnak, az egész "binddn=<DN> sztringet idézõjelek közé kell tenni. Bindmethod egyaránt lehet simple és kerberos, annak függvényében, hogy egyszerû jelszó alapû azonosítást vagy pedig kerberos alapú azonosítást szükséges az szolga szerverhez történõ csatlakozáshoz. A jelszó alapú azonosításhoz érvényes password, a kerberos azonosításhoz érvényes srvtab file szükséges.A credentials paraméter, amely csak akkor szükséges, ha egyszerû azonosítást használsz, a szolga szervernek a binddn szonosításához szükséges jelszót tartalmazza. Az srvtab paraméter, amely csak kerberos használatához szükséges, specifikálja, hogy melyik file tartalmazza a kulcsokat. Az alapértelmezett érték a /etc/srvtab.
replogfile <filename>
Ez az opció állítja be az replikációs log file-t, ahol az slapd rögziti a változásokat. A replikációs log-ot tipikusan az slapd írja és a slurpd olvassa. Rendszerint ezt a lehetõséget csak a slurpd használja az adaybázis replikációjára. Mindamellett arra is használható, hogy tranzakciós naplót készíts, ha a slurpd nem fut. Ebben az esetben ne felejtsd el rendszeresen darabolni a file-t, különben meghatározhatatlam méretûre nõ.
rootdn <dn>
Ez az opció specifikálja azt a DN-t, akire nem vonatkozik a hozzáférés szabályozás és az adminisztrációs korlátozások az adatbázismûveletk során.
Például:
rootdn "cn=root, o=Nns, c=Hu"
rootkrbname <kerberosname>
Ez specifikálja a fent leírt DN kerberos nevet,attól függetlenül, hogy a megadott DN létezik-e, vagy van-e krbName attribútuma. Ez az lehetõség adatbázisok létrehozásakor vagy replikációs szolgáltatások nyújtásakor hasznos.
Például:
rootkrbname admin@nns.hu
rootpw <password>
Ez az opció állítja be a fent leírt DN jelszavát, attól függetlenül, hogy a megadott DN létezik-e, vagy van-e jelszava.Ez az lehetõség adatbázisok létrehozásakor vagy replikációs szolgáltatások nyújtásakor hasznos. Mindenképpen kerülendõ a kódolatlan jelszavak használata. A legkevesebb a /etc/password file-ban található crypt kódolású jelszó használata. Az slapd számos más típusú kódolást támogat.
Például:
rootpw secret 
rootpw {crypto}a_kódolt_password
suffix <dn suffix>
A suffix opció specifikálja a kérések DN toldalékát, ami átkerül a háttér-adatbázishoz. Több suffix sort megadható, és legalább egy szükséges minden adatbázis definícióhoz.
Például:
suffix "o=Nns, c=Hu"
A kérések DN-je "o=Nns, c=Hu" toldalékkal kerülnek az adatbázisba. Figyelem: amikor az adatbázis-háttér visszaadja a kíválasztott eredményt, az slapd tekintetbe veszi a suffix sor(oka)t minden adatbázis definíciónál abban a sorrendben, ahogy a file-ban elõfordulnak. Így, ha az egyik adatbázis toldaléka egy másiknak elõtagja, akkor ennek meg kell jelennie a konfigurációs file-ban is.
updatedn <dn>
Ez az opció csak a szolga slapd-n értelmezhetõ, és maghatározza az replika megváltoztatására jogosult DN-t (tipikusan ezzel a DN-nel csatlakozik a slurpd a repklikálás során).

3.4 LDBM háttér specifikus lehetõségek

Ebben a kategóriában csak az LDBM típusú adatbázisokra érvényesek. Tehát a "databese ldbm" sort után és minden egyébb database direktíva elõtt szerepelhetnek.

cachesize <integer>

Ez az opció határozza meg az átmenetileg memóriaban tárolt bejegyzések számát, amelyet az LDBM háttér adatbázis kérések tartanak fent.

Alapértelmezett:

cachesize 1000
dbcachesize <integer>
Ez az opció határozza meg a minden egyes nyitott index filehoz rendelt átmeneti memória méretét byteban. Ha nem támogatja az alapját képezõ adatbázis eljárás, ez az opció kommentezés nélkül is figyelmen kívül marad. A felhsznált memória méretének növelése drámaian növeli a teljesítményt, különösen az indexek modósíásakor vagy mozgatásakor.

Alapértelmezett:
dbcachesize 100000

directory <directory>
This option specifies the directory where the LDBM files containing the database and associated indexes live. 
Default: 
directory /usr/tmp
index {<attrlist> | default} [pres,eq,approx,sub,none]
This option specifies the indexes to maintain for the given attribute. If only an <attrlist> is given,
all possible indexes are maintained. 
Example: 
index cn 
index sn,uid eq,sub,approx 
index default none 

This example causes all indexes to be maintained for the cn attribute; equality, substring, and approximate 
indexes for the sn and uid attributes; and no indexes for all other attributes.
mode <integer>
This option specifies the file protection mode that newly created database index files should have. 
Default: 
mode 0600

3.5 Access Control Examples

The access control facility presented on section 3.2 is quite powerful. This section shows some examples of its use. First, some simple examples:
access to * by * read
This access directive grants read access to everyone. If it appears alone it is the same as the following defaultaccess line.
defaultaccess read
The following example shows the use of a regular expression to select the entries by DN in two access directives where ordering is significant.
access to dn=".*, o=U of M, c=US" 
by * search 
access to dn=".*, c=US" 
by * read
Read access is granted to entries under the c=US subtree, except for those entries under the "o=University of Michigan, c=US" subtree, to which search access is granted. If the order of these access directives was reversed, the U-M-specific directive would never be matched, since all U-M entries are also c=US entries.

The next example again shows the importance of ordering, both of the access directives and the "by" clauses. It also shows the use of an attribute selector to grant access to a specific attribute and various <who> selectors.

access to dn=".*, o=U of M, c=US" attr=homePhone 
by self write 
by dn=".*, o=U of M, c=US" search 
by domain=.*\.umich\.edu read 
by * compare 
access to dn=".*, o=U of M, c=US" 
by self write 
by dn=".*, o=U of M, c=US" search 
by * none
This example applies to entries in the "o=U of M, c=US" subtree. To all attributes except homePhone, the entry itself can write them, other U-M entries can search by them, anybody else has no access. The homePhone attribute is writable by the entry, searchable by other U-M entries, readable by clients connecting from somewhere in the umich.edu domain, and comparable by everybody else.

Sometimes it is usefull to permit a particular DN to add or remove itself from an attribute. For example, if you would like to create a group and allow people too add and remove only their own DN from the member attribute, you could accomplish it with an access directive like this:

access to attr=member,entry 
by dnattr=member selfwrite
The dnattr <who> selector says that the access applies to entries listed in the member attribute. The selfwrite access selector says that such members can only add or delete their own DN from the attribute, not other values. The addition of the entry attribute is required because access to the entry is required to access any of the entry's attributes.

Note that the attr=member construct in the <what> clause is a shorthand for the clause "dn=* attr=member" (i.e., it matches the member attribute in all entries).


Contents