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ó.
Telepítés
A telepítéshez találtam egy jó kis dokumentációt az ubuntu oldalán:
http://sugo.ubuntu.hu/9.04/html/serverguide/hu/openldap-server.html
Adjuk ki a következő parancsot:
sudo apt-get install slapd ldap-utils
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/bash ldapadd -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 ] do echo "insert password for user admin:" read -es pass echo "repeat password for user admin:" read -es passControl echo $pass echo $passControl if [ $pass = $passControl ];then passChecked=1 else echo "passwords don't match" fi done echo "################################################# ########## # DATABASE SETUP ################################################## ######### # Load modules for database type dn: cn=module{0},cn=config objectClass: olcModuleList cn: module{0} olcModulePath: /usr/lib/ldap olcModuleLoad: {0}back_hdb # Create directory database dn: olcDatabase={1}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcDbDirectory: /var/lib/ldap olcSuffix: $domain olcRootDN: cn=admin,$domain olcRootPW: $pass olcAccess: {0}to attrs=userPassword,shadowLastChange by dn=\"cn=admin,$domain\" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn=\"cn=admin,$domain\" write by * read olcLastMod: TRUE olcDbCheckpoint: 512 30 olcDbConfig: {0}set_cachesize 0 2097152 0 olcDbConfig: {1}set_lk_max_objects 1500 olcDbConfig: {2}set_lk_max_locks 1500 olcDbConfig: {3}set_lk_max_lockers 1500 olcDbIndex: uid pres,eq olcDbIndex: cn,sn,mail pres,eq,approx,sub olcDbIndex: 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=config changetype: modify delete: olcAuthzRegexp dn: olcDatabase={-1}frontend,cn=config changetype: modify delete: olcAccess dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: `slappasswd -s $pass` dn: olcDatabase={0}config,cn=config changetype: modify delete: olcAccess" > conf.ldif echo ldapadd -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 root dn: $domain objectClass: dcObject objectclass: organization o: ${domainarray[0]}.${domainarray[1]} dc: ${domainarray[0]} description: Tree root # LDAP admin dn: cn=admin,$domain objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin userPassword: $pass description: 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.
A következő kliens programot használtam hozzá:
http://sourceforge.net/projects/jxplorer/





Friss hozzászólások
23 hét 2 óra
24 hét 2 nap
1 év 15 hét
1 év 15 hét
1 év 27 hét
1 év 27 hét
1 év 33 hét
1 év 36 hét
3 év 15 hét
3 év 16 hét