A feladata egyszerű telepítsünk LDAP szervert, hozzunk létre benne néhány felhasználót és csoportot. Most csak a telepítésről fogok írni, mert nem az olyan simán, mint azt vártam.
A rendszer ubuntu 9.10, amiben 2.4.x verziójú LDAP szerver található.
Minden kérdés nélkül feltelepül az openldap szerver. Ez itt már gyanús volt, nem kért adminisztrátor jelszót. Igaz máshol már olvastam, hogy ezt a konfigurációs állományba kell beírni.
No para, irány az /etc/ldap/ könyvtár és írjuk be a jelszót a slapd.conf állományba. Az első meglepetés itt ért, nincs slapd.conf, csak slapd.d könyvtár. A LDAP szerver 2.4 verziójától kezdve az LDAP szerver konfigurációját is LDAP-ban tárolja. Természetesen lehetőség van a régi konfiguráció szerint is használni a rendszert, de ha itt az új, akkor használjuk azt.
Én vagyok a főnök?
Miután átnéztem a fenti dokumentációt és abban nem találtam a megoldást az adminisztrátor jelszó megadására, még adtam egy esélyt a csomaggal érkező dokumentációnak is, de itt sem volt leírva, hogy leszek én a főnök. Ezután jött a google :), simogattam a lámpást mire a megfelelő oldalt megtalálta nekem íme:
http://ubuntuforums.org/showthread.php?t=1343931
Ezen az oldalon található a következő script amit lefuttatva elkészíti nekünk az adminisztrátor felhasználót és még néhány alapvető sémát is hozzáad a szerverhez, valamint egy kezdő ágat is létrehoz.
A script:
#!/bin/bashldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif;\ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif;\ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
echo'insert your domain name (ex: dc=home,dc=com): 'read -e domain
passChecked=0
while[$passChecked -eq 0 ]doecho"insert password for user admin:"read -es pass
echo"repeat password for user admin:"read -es passControl
echo$passecho$passControlif[$pass=$passControl];thenpassChecked=1
elseecho"passwords don't match"fidoneecho"################################################# ########### DATABASE SETUP################################################## ########## Load modules for database typedn: cn=module{0},cn=configobjectClass: olcModuleListcn: module{0}olcModulePath: /usr/lib/ldapolcModuleLoad: {0}back_hdb# Create directory databasedn: olcDatabase={1}hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: {1}hdbolcDbDirectory: /var/lib/ldapolcSuffix: $domainolcRootDN: cn=admin,$domainolcRootPW: $passolcAccess: {0}to attrs=userPassword,shadowLastChange by dn=\"cn=admin,$domain\" write by anonymous auth by self write by * noneolcAccess: {1}to dn.base="" by * readolcAccess: {2}to * by dn=\"cn=admin,$domain\" write by * readolcLastMod: TRUEolcDbCheckpoint: 512 30olcDbConfig: {0}set_cachesize 0 2097152 0olcDbConfig: {1}set_lk_max_objects 1500olcDbConfig: {2}set_lk_max_locks 1500olcDbConfig: {3}set_lk_max_lockers 1500olcDbIndex: uid pres,eqolcDbIndex: cn,sn,mail pres,eq,approx,subolcDbIndex: objectClass eq################################################## ########## DEFAULTS MODIFICATION################################################## ########## Some of the defaults need to be modified in order to allow# remote access to the LDAP config. Otherwise only root# will have administrative access.dn: cn=configchangetype: modifydelete: olcAuthzRegexpdn: olcDatabase={-1}frontend,cn=configchangetype: modifydelete: olcAccessdn: olcDatabase={0}config,cn=configchangetype: modifyadd: olcRootPWolcRootPW: `slappasswd -s $pass`dn: olcDatabase={0}config,cn=configchangetype: modifydelete: olcAccess" > conf.ldif
echoldapadd -Y EXTERNAL -H ldapi:/// -f conf.ldif
domainmod=(`echo$domain | sed -e "s/\,//g"`)domainmod=(`echo$domainmod | sed -e "s/\dc//g"`)domainarray=(`echo$domainmod | tr '='' '`)echo"# Tree rootdn: $domainobjectClass: dcObjectobjectclass: organizationo: ${domainarray[0]}.${domainarray[1]}dc: ${domainarray[0]}description: Tree root# LDAP admindn: cn=admin,$domainobjectClass: simpleSecurityObjectobjectClass: organizationalRolecn: adminuserPassword: $passdescription: LDAP administrator" > base.ldif
ldapadd -x -D cn=admin,$domain -W -f base.ldif
A kedvenc szövegszerkesztőnk segítségével hozzunk létre egy állományt a fenti tartalommal, majd adjunk rá futtatás jogot és a sudo segítségével futtassuk le.
FIGYELEM! Ezt csak egyszer futtassuk le!
Meg fogja kérdezni tőlünk az adminisztrátor jelszót és azt az ágat amit létre szeretnénk hozni. Adjuk meg az adatokat és már kész is vagyunk. Én itt még csináltam egy LDAP szerver újraindítást a biztonság kedvéért.
A főnök én vagyok!
Most már sikerült belépni admin felhasználóval az LDAP szerverre.
Az örök rejtély számomra, hogy ezt miért nem végzi el helyettem a telepítő, vagy miért nincs a csomag dokumentációjában leírva a kezdőlépéseknél.