Ldap'i õpiobjekt: Difference between revisions
No edit summary |
|||
(34 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= Õpijuhis = | |||
Õpiobjekti eesmärk on kataloogiteenuse teoreetiliste teadmiste ja praktiliste oskuste arendamine. Teadmiste arenguks on õpiobjekti osaks õppematerjalid, ning praktiliste oskuste arendamiseks on õppekeskkonna eksportfail, mida on võimalik kasutada Oracle VM VirtualBox programmiga'''(EIK kasutab õppekeskonda)'''. Õppekeskkonnana kasutatakse Ubuntu 11.04 Server operatsioonisüsteemi. | Õpiobjekti eesmärk on kataloogiteenuse teoreetiliste teadmiste ja praktiliste oskuste arendamine. Teadmiste arenguks on õpiobjekti osaks õppematerjalid, ning praktiliste oskuste arendamiseks on õppekeskkonna eksportfail, mida on võimalik kasutada Oracle VM VirtualBox programmiga'''(EIK kasutab ... õppekeskonda)'''. Õppekeskkonnana kasutatakse Ubuntu 11.04 Server operatsioonisüsteemi. | ||
Õpiobjektiga töötamise eeltingimused: | Õpiobjektiga töötamise eeltingimused: | ||
Line 13: | Line 13: | ||
*õpijuhis- õpiobjekti üldine sissejuhatav tekst; | *õpijuhis- õpiobjekti üldine sissejuhatav tekst; | ||
*õpetaja kasutusjuhend- juhend õpetajale või auditoorset/e-õpet korraldavale isikule, mis sisaldab teavet keskkonna ettevalmistamise kohta; | *õpetaja kasutusjuhend- juhend õpetajale või auditoorset/e-õpet korraldavale isikule, mis sisaldab teavet keskkonna ettevalmistamise kohta; | ||
*õpilase kasutusjuhend- juhend õpilasele, mis sisaldab täpsemaid tegevusjuhendeid õppetöö läbijale; | *[https://wiki.itcollege.ee/index.php/Ldap%27i_%C3%B5piobjekt#.C3.95piobjekti_kasutusjuhend õpilase kasutusjuhend]- juhend õpilasele, mis sisaldab täpsemaid tegevusjuhendeid õppetöö läbijale; | ||
*õpikeskkonna loomise ja seadistamise juhend(sh. õpikeskkond ise)- juhend, mis õpetab õpiobjekti osaks olevat virtuaalkeskkonda looma ja seadistama Oracle VM VirtualBox programmi kasutades; | *[https://wiki.itcollege.ee/index.php?title=Ldap%27i_%C3%B5piobjekt&action=submit#.C3.95pikeskkonna_loomine_ja_seadistamine õpikeskkonna loomise ja seadistamise juhend](sh. õpikeskkond ise)- juhend, mis õpetab õpiobjekti osaks olevat virtuaalkeskkonda looma ja seadistama Oracle VM VirtualBox programmi kasutades; | ||
*õppematerjal(id)- teoreetiline ja praktiline õppematerjal, kus õpilane saab teadmised ja oskused; | *õppematerjal(id)- [https://wiki.itcollege.ee/images/2/23/LDAP_teadmiste_omandamise_6ppematerjal.pdf teoreetiline] ja [https://wiki.itcollege.ee/index.php?title=Ldap%27i_%C3%B5piobjekt&action=submit#Praktiline_.C3.B5ppematerjal praktiline] õppematerjal, kus õpilane saab teadmised ja oskused; | ||
*personaalse ülesande loomise ja kontrolli skript- bash skript, mis koostab õppija eesnime, perenime ja koodi alusel tema personaalsete andmetega laboriülesande ja teine skript, mis kontrollib laboriülesande sooritust. | *personaalse ülesande loomise ja kontrolli skript- bash skript, mis koostab õppija eesnime, perenime ja koodi alusel tema personaalsete andmetega laboriülesande ja teine skript, mis kontrollib laboriülesande sooritust. | ||
= Õpiobjekti kasutusjuhend = | |||
Käesolev õpilase kasutusjuhend on loodud teejuhiks õpiobjekti kasutamisel. | Käesolev õpilase kasutusjuhend on loodud teejuhiks õpiobjekti kasutamisel. | ||
Line 26: | Line 26: | ||
1. Loe läbi terve õpilase kasutajajuhend, et teada saada, mida ja millises järjekorras sa tegema pead, selleks et õpiobjekti teadmised ja oskused kinnistuksid parimal võimalikul viisil. | 1. Loe läbi terve õpilase kasutajajuhend, et teada saada, mida ja millises järjekorras sa tegema pead, selleks et õpiobjekti teadmised ja oskused kinnistuksid parimal võimalikul viisil. | ||
2. Kontrolli, et sinu kasutada oleks kõik õpiobjekti komponendid | 2. Kontrolli, et sinu kasutada oleks kõik [https://wiki.itcollege.ee/index.php?title=Ldap%27i_%C3%B5piobjekt&action=submit#.C3.95piobjekti_komponendid õpiobjekti komponendid] . | ||
3. Loe läbi ja püüa mõista | 3. Loe läbi ja püüa mõista [https://wiki.itcollege.ee/index.php/File:LDAP_teadmiste_omandamise_6ppematerjal.pdf Teoreetilise õppematerjali] sisu. On väga oluline, et saaksid aru ja oskaksid oma sõnadega selgitada „Teoreetilises õppematerjalis“ esindatud mõisteid ja kokkuvõtvalt rääkida seal olevatest peatükkidest. Kui oled veendunud, et oled „Teoreetilise õppematerjali“ sisu omandanud asu siinse tegevusloetelu järgmise punkti juurde. | ||
4. Kui Sinu jaoks on õpikeskkond loodud ja sa tead kus see asub, ning kuidas sellele ligi pääseb siis jätka järgmise punktiga! Kui pead endale õpikeskkonna ise looma siis järgi „Virtuaalmasina importimise ja esmase seadistamise juhendit“, et luua endale virtuaalne õpikeskkond Ubuntu 11.04 Server operatsioonisüsteemil, mis on vajalik praktiliste laboriülesannete lahendamiseks. Olles mainitud juhendi läbinud, ning sellega endale virtuaalkeskkonna loonud ning kontrollinud ja veendunud selle töökorrasolekus asu järgmise tegevusloetelu punkti juurde. '''EIK tudengitel on õpikeskkond ette loodud!''' | 4. Kui Sinu jaoks on õpikeskkond loodud ja sa tead kus see asub, ning kuidas sellele ligi pääseb siis jätka järgmise punktiga! Kui pead endale õpikeskkonna ise looma siis järgi „Virtuaalmasina importimise ja esmase seadistamise juhendit“, et luua endale virtuaalne õpikeskkond Ubuntu 11.04 Server operatsioonisüsteemil, mis on vajalik praktiliste laboriülesannete lahendamiseks. Olles mainitud juhendi läbinud, ning sellega endale virtuaalkeskkonna loonud ning kontrollinud ja veendunud selle töökorrasolekus asu järgmise tegevusloetelu punkti juurde. '''EIK tudengitel on õpikeskkond ette loodud!''' | ||
5. Loe läbi ja püüa mõista | 5. Loe läbi ja püüa mõista [https://wiki.itcollege.ee/index.php?title=Ldap%27i_%C3%B5piobjekt&action=submit#Praktiline_.C3.B5ppematerjal Praktilise õppematerjali] sisu. On oluline, et saaksid aru, miks ja millal mingit käsku on vaja kasutada ja mis selle käsu tulemusel juhtub. Käskude pähe õppimine ei ole eesmärk! | ||
6. Kasuta virtuaalset õpikeskkonda, et lahendada laboriülesanded. Selleks sisene virtuaalkeskkonda ,kus kodukataloogis käivita „loo_ylesanne.sh“ skript, mille tulemusel luuakse õpilase personaalsete andmete (eesnimi, perenimi ja üliõpilaskood) alusel laboriülesanded, mida saab hiljem uuesti lugeda failist „ylesanded.txt“. Laboriülesannete läbimist ja õiget sooritust on võimalik kontrollida käivitades faili „kontrollskript.sh“. Kontrollskripti käivitamiste arv ei ole piiratud! Kui saad kõik ülesanded lahendatud ja seda kinnitab ka kontrollskript, anna sellest teada õppejõule, kes lahenduse üle kontrollib ja mõnda „Teoreetilise õppematerjali“ sisu mõistet küsib. | 6. Kasuta virtuaalset õpikeskkonda, et lahendada laboriülesanded. Selleks sisene virtuaalkeskkonda ,kus kodukataloogis käivita „loo_ylesanne.sh“ skript, mille tulemusel luuakse õpilase personaalsete andmete (eesnimi, perenimi ja üliõpilaskood) alusel laboriülesanded, mida saab hiljem uuesti lugeda failist „ylesanded.txt“. Laboriülesannete läbimist ja õiget sooritust on võimalik kontrollida käivitades faili „kontrollskript.sh“. Kontrollskripti käivitamiste arv ei ole piiratud! Kui saad kõik ülesanded lahendatud ja seda kinnitab ka kontrollskript, anna sellest teada õppejõule, kes lahenduse üle kontrollib ja mõnda „Teoreetilise õppematerjali“ sisu mõistet küsib. | ||
Line 38: | Line 38: | ||
== Õpikeskkonna loomine ja seadistamine == | == Õpikeskkonna loomine ja seadistamine == | ||
Õpilasele on ettevalmistatud virtuaalkeskkonnast tehtud eksportfailid Ubuntu Server 11.04 operatsioonisüsteemiga, et vähendada keskkonna installeerimiseks kuluvat aega. Virtuaalmasina failid tuleb laadida enda arvutisse ja importida läbi vastava viisardi. Täpsemad juhised virtuaalmasina ettevalmistamiseks Oracle VM VirtualBox 3.2 ja 4.0 tarbeks on õpiobjekti üheks osaks olevas [ | Õpilasele on ettevalmistatud virtuaalkeskkonnast tehtud eksportfailid Ubuntu Server 11.04 operatsioonisüsteemiga, et vähendada keskkonna installeerimiseks kuluvat aega. Virtuaalmasina failid tuleb laadida enda arvutisse ja importida läbi vastava viisardi. Täpsemad juhised virtuaalmasina ettevalmistamiseks Oracle VM VirtualBox 3.2 ja 4.0 tarbeks on õpiobjekti üheks osaks olevas [https://wiki.itcollege.ee/images/f/f3/Virtuaalmasina_importimise_ja_esmase_seadistamise_juhend.pdf juhendis]. | ||
---- | |||
= Praktiline õppematerjal = | |||
---- | |||
== OpenLDAP serveri ja klienditööristade paigaldamine == | |||
Kõigepealt paigalda OpenLDAP server, paketi nimeks Ubuntu paketihalduris 'slapd', klienditööriistad asuvad paketis 'ldap-utils', need on vajalikud, et kasutada klienditööriistu nagu näiteks: ldapsearch, ldapadd jne. Pakid paigaldatakse järgmise käsuga: | |||
apt-get install slapd ldap-utils | |||
Paigaldamise ajal küsitakse seadistamiseks erinevaid küsimusi, mille vastamisega peab õppija iseseisvalt hakkama saama, kasutades õpitud teadmisi. | |||
Kui paigaldamise käigus küsiti vaid administraatori parooli või soovid ennast parandada on abiks käsk: | |||
dpkg-reconfigure slapd | |||
Paigaldamise lõpuks tuleks üle kontrollida kas serveri seadistufailis /etc/ldap/slap.d/cn=config/olcDatabase{0}configure.ldif ja samas kataloogis asuv olcDatabase{1}hdb.ldif või olcDatabase{1}bdb.ldif sisaldavad paigaldamisel sisestatud andmeid, sest õppematerjali loomise käigus tuvastati korduvalt, et need andmed ei ühtinud. Vajadusel paranda erinevused! | |||
LDAP serveri ja klienditööriistade seadistamine | |||
LDAP klienditööriistu seadistatakse /etc/ldap/ldap.conf failist. Serveri seadistamiseks on alates 2005-nda aasta juunist kaks võimalust: | |||
* /etc/ldap/slapd.conf seadistusfail (kasutati kuni versioonini 2.4) või | |||
* kataloogis /etc/ldap/slapd.d/cn=config olevad failid (võimalik kasutada alates versioonini 2.3). Viimast seadistusvõimalust tuntakse kui Configuration Backend, mida kasutab ka käesolev õppematerjal. Antud töös piirdutakse kataloogis etc/ldap/slapd.d/cn=config olevate olcDatabase={0}config.ldif ja olcDatabase={1}bdb.ldif failidega, kuna laboris peab õpilane vaid neid serveri seadistufaile muutma. | |||
Kahe erineva seadistuse põhiline vahe seisneb selles, et vanas (slapd.conf) seadistusfailis on kogu seadistus koondatud ühte faili (slapd.conf) ja seadistuste kehtestamiseks serveris on tarvis teha (LDAP) serverile taaskäivitus. Uues seadistusviisis on konfiguratsioon andmebaasis ja failisüsteemis on vaid viide andmebaasile, ning seadistusemuudatused ei eelda enam (LDAP) serveri restartimist. | |||
'''Alates Ubuntu versioonist 8.10 on vaikeväärtusena kasutusel andmebaasis seadistuse hoidmise variant''', kuid kasutajale on jäetud võimalus kasutada ka slapd.conf varianti, selleks tuleb teha muudatused /etc/default/slapd failis.[https://help.ubuntu.com/community/OpenLDAPServer] | |||
==== Testime ==== | |||
Järgmiseks testi, kas saad tehtule ligi: | |||
ldapsearch -x -D 'cn=<rootDN>,cn=config' -W | |||
Võtmed: x- lihtne autentimine(ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli | |||
Vastus võiks olla selline: | |||
<source lang="bash"> | |||
# search result | |||
search: 2 | |||
result: 0 Success või | |||
result: 32 No such object | |||
ldap_sasl_bind(SIMPLE): Cant contact LDAP server (-1) | |||
</source> | |||
*result: 0 Success- tähendab, et päring LDAP andmebaasi jõudis kohale ja sealt saadi vastus. | |||
*result: 32 No such object- tähendab, et LDAP serveriga saadi ühendust, kuid andmebaasis ei olnud päritud objekti. | |||
Tuleks kontrollida, kas klienditööriista seaded on õiged ja kas tehtud päring oli õige. | |||
*ldap_sasl_bind(SIMPLE): Cant contact LDAP server (-1)- ilmslt LDAP server seisab või ei saada baseDN-iga ühendust, vaata kas porti(389) kuulatakse, | |||
selleks sisesta terminali: | |||
netstat -anp|grep 389 | |||
vajadusel restardi teenus: | |||
/etc/init.d/slapd restart | |||
ja kontrolli, kas päringu vastus muutus, kui mitte siis põhjuse leiad ''/var/log/syslog'' failist. | |||
== LDAP serveri andmebaasi kirjete laadimine == | |||
Sisu laadimiseks on kaks peamist võimalust: kasutada mõnd veebipõhist administreerimisliidest (näiteks phpLDAPadmin) või konsoolilt kasutades kliendi- või serveri utiliite (näiteks ldapadd või slapadd). Esmalt vaatame konsoolilt andmete laadimist, selleks on 2 võimalust: slapadd (serveri utiliit) ja ldapadd (kliendi utiliit). Peamine vahe on selles, et kliendi tööriistu kasutades peab LDAP server töötama, serveri tööriistu kasutades aga seisma, lisaks on erinev suvandite (options) kasutus! | |||
Soovitav on kasutada kliendi tööriistu, kuna siis ei pea serverit seiskama ja ei tekitata andmebaasi failide omanikuks root kasutajat, mis tuleks openldap kasutaja omandisse tagasi muuta. Seepärast on selles juhendmaterjalis kõik laadimised tehtud ldapadd käsuga, näiteks: | |||
ldapadd -x -D "<kasutaja DN>" -w <parool> -f <fail> | |||
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja DN; w- sisestatakse parool kohe; f- imporditav fail. | |||
== Veebipõhise LDAP haldusliidese paigaldamine ja seadistamine == | |||
Et saada paremat üldpilti ja paremini mõista, millega tegeletakse, on soovitav paigaldada ja seadistada veebipõhine LDAP-i administreerimise liides [http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page phpLDAPadmin]. Seadistamise hõlbustamiseks on õpiobjektiga kaasas fail config.php, kus tuleb asendada | |||
cn=root,dc=naide,dc=vot enda konfiguratsioonile vastavaks, asendus tuleb teha reas: | |||
$servers->setValue('login','bind_id','cn=root,dc=naide,dc=vot'); | |||
Administreerimisliidesele ligipääsuks minna hostmasinas aadressile http://ldapserveri_ip/phpldapadmin. Sissepääsuks valida kõigepealt vasakpoolsest paneelist oma serveri nimi ja seejärel login. Login DN väli peab sisaldama nii administraatori kasutaja nime, kui ka base DN väärtust. Veebiliidese kasutamine on soovituslik ja võrdlemisi lihtne, seepärast ei peatuta sellel siinkohal pikemalt. | |||
[[Image:PhpLDAPadmin.jpg]] | |||
== Kirjete otsimine ja muutmine LDAP-is == | |||
Põhineb OpenLDAP tööriista ldapsearch juhendil [http://www.openldap.org/software/man.cgi?query=ldapsearch&apropos=0&sektion=0&manpath=OpenLDAP+2.4-Release&format=html man ldapsearch]. <br> | |||
Päringute tegemiseks on OpenLDAP kliendi tööriistana paigaldatud ldapsearch, mis võimaldab ühenduda LDAP serveriga ja sealt otsida andmeid. Näiteks kirje otsimise käsk: | |||
ldapsearch -x -D 'cn=<kasutaja DN>' -W <filtreeriv tingimus> <väljastatavad atribuudid> <br> | |||
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli; <br> | |||
<filtreeriv tingimus>- võimaldab otsingut piirata; <väljastatavad atribuudid>- võimaldab pärigu tulemuses näha vaid soovitud atribuutide infot-eraldajaks tühik. | |||
Vaata ka teisi võtmeid ja nende tähendust õpikeskkonnas kirjutades käsureale: | |||
man ldapsearch | |||
== Kirjete muutmine LDAP-is == | |||
Põhineb OpenLDAP tööriista ldapmodify juhendil [http://www.openldap.org/software/man.cgi?query=ldapmodify&apropos=0&sektion=0&manpath=OpenLDAP+2.4-Release&format=html man LDAPModify]. | |||
Kirjetesse muudatuste tegemiseks on paigaldatud OpenLDAP kliendi tööriist ldapmodify, mille abil saab andmebaasi uusi andmeid lisada või seal olemasolevaid muuta/täiendada/kustutada. Muudatusi saab sisestada käsurealt või (LDIF) failist: | |||
ldapmod -x -D 'cn=<rootDN>' -W -f <faili asukoht> | |||
ldapmod -x -D 'cn=<rootDN>' -W | |||
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli; -f sisendfaili asukoht. | |||
'''Tabeli 2''' vasakpoolset veergu tuleks vaadata kui muudatuse tegemise faili sisu ning parempoolset veergu kui seletust, mida antud rida failis tähendab. Vasakpoolses veerus olev rida ''changetype'' tähendab, et ühe muudatuskorral failis võib kuuluda vaid üks valik (''add, delete, modrdn, moddn, newrdn'' või ''newsuperior''). | |||
{| class="wikitable" border="1" | |||
|- | |||
! Faili sisu | |||
! Seletus ja näide faili sisu kohta | |||
|- | |||
| #kommentaar | |||
| #(trellid) rea alguses võimaldab kommentaari lisada, programmid #alustatud rida ei loe! | |||
|- | |||
| dn: <kirjenimetus (''distinguished name'')> | |||
| dn: cn=Bjorn Jensen,dc=example,dc=com „dn:..“ näitab kirje asukohta puus. | |||
|- | |||
| Changetype: Add | |||
| Kirje lisamiseks | |||
|- | |||
| Changetype: Delete | |||
| Kirje kustutamiseks | |||
|- | |||
| Changetype: Modrdn <nowiki>|</nowiki> moddn {reavahetus} <br> [newrdn: <rdn> {reavahetus}<br> deleteoldrdn: [0<nowiki>|</nowiki>1] newsuperior: <dn>] | |||
| Kirje DN ja RDN muutmiseks. <br><br> Suvand Newrdn võimaldab kirje RDN'i muuta. Newrdn kasutamisel tuleb ka deleteoldrdn suvandit kasutada valides väärtuseks: 0-vana rdn jäetakse alles; 1- vana RDN kustutatakse. <br> Newsuperior võimaldab kirje liigutada uue kataloogi alluvusse. | |||
|- | |||
| Changetype: Modify {reavahetus} <br> [add: <atribuut<nowiki>|</nowiki> objektiklass> <br> | |||
<nowiki>|</nowiki> delete:<atribuut<nowiki>|</nowiki> objektiklass> <br> <nowiki>|</nowiki> replace:<atribuut<nowiki>|</nowiki> objektiklass>]{reavahetus} <br> <atribuut<nowiki>|</nowiki> objektiklass>: <uus väärtus | |||
| Võimaldab atribuuti, objektiklassi või mõnd muud kirje osa lisada(''add''), kustutada(''delete''), vahtada(''replace''). <br> '''NB! Oluline on, et reavahetused oleks õigetes kohtades!''' | |||
|- | |||
| <nowiki>-</nowiki> | |||
| Tähistab, et sama dn ja changetype'i kasutatakse ka järgmise muudatuse puhul. | |||
|} | |||
Näited[RFC 2849]: | |||
'''# muudetakse RDN ja tõstetakse kogu sisu uue kataloogi alluvusse.''' | |||
dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com | |||
changetype: modrdn | |||
newrdn: ou=Product Development Accountants | |||
deleteoldrdn: 0 | |||
newsuperior: ou=Accounting, dc=airius, dc=com | |||
<br> | |||
'''# lisatakse 'postaddress'; kustutatakse 'description'; asendatakse olemasolev(ad) 'telephonenumber' kahe uuega;''' | |||
'''# kustutatakse see facsimiletelephonenumber mille väärtus on „+1 408 555 9876“.''' | |||
dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com | |||
changetype: modify | |||
add: postaddress | |||
postaddress: 123 Anystreet $ Sunnyvale, CA $ 94086 | |||
<nowiki>-</nowiki> | |||
delete: description | |||
<nowiki>-</nowiki> | |||
replace: telephonenumber | |||
telephonenumber: +1 408 555 1234 | |||
telephonenumber: +1 408 555 5678 | |||
<nowiki>-</nowiki> | |||
delete: facsimiletelephonenumber | |||
facsimiletelephonenumber: +1 408 555 9876 | |||
== Skeemifaili koostamine ja LDAP andmebaasi laadimine == | |||
==== Skeemifaili koostamine ==== | |||
LDAP-is on võimalik hoida ja sealt pärida ükskõik millist seal sisalduvat infot, vajadusel saab alati infovälju – objektiklasse/atribuute ka juurde lisada. Selle tarbeks on valmis hulk erinevaid skeemifaile (kataloogis /etc/ldap/schema/) ja kui neist ei piisa on võimalik ka ise neid juurde luua, võttes eeskujuks olemasolevad näidisfailid. Tähelepanu tuleks pöörata skeemifailide sisse kirjutatud sõltuvus viidetele, st kui on öeldud: „Depends upon core.ldif and cosine.ldif“ siis peab enne selle skeemi laadimist olema laetud core.ldif ja cosine.ldif, kuna nende skeemide atribuute või objektiklasse kasutab laetav skeemifail. | |||
'''#Lihtsa telefoniraamatu skeemi näide''' | |||
attributetype ( 1.1.2.1.1 NAME ( 'eesnimi' ) | |||
DESC ' eesnimi' | |||
SUP name ) | |||
attributetype ( 1.1.2.1.2 NAME ( 'perenimi' ) | |||
DESC ' perekonna nimi' | |||
SUP name ) | |||
attributetype ( 1.1.2.1.3 NAME ( 'telefoninumber' ) | |||
DESC ' telefoninumber' | |||
EQUALITY telephoneNumberMatch | |||
SUBSTR telephoneNumberSubstringsMatch | |||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} ) | |||
attributetype ( 1.1.2.1.4 NAME ( 'mailiaadress' ) | |||
DESC 'Mailbox' | |||
EQUALITY caseIgnoreIA5Match | |||
SUBSTR caseIgnoreIA5SubstringsMatch | |||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) | |||
attributetype ( 1.1.2.1.5 NAME ( 'kirjeldus' ) | |||
DESC 'Lisainfo' | |||
EQUALITY caseIgnoreMatch | |||
SUBSTR caseIgnoreSubstringsMatch | |||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} ) | |||
objectclass ( 1.1.2.2.1 NAME ( 'telraamat' ) | |||
DESC 'Telefoniraamat' | |||
SUP top STRUCTURAL | |||
MUST ( eesnimi $ perenimi $ telefoninumber ) | |||
MAY ( mailiaadress $ kirjeldus ) ) | |||
Eelnev on näidis lihtsa telefoniraamatu skeemi sisust, mis on koostatud autori poolt võttes aluseks core.schema skeemifaili ja ingliskeelse [http://www.openldap.org/doc/admin24/schema.html skeemide loomise õpetuse]. Seda materjali soovitab autor lugeda ka õpilastel täiendava teadmise omandamiseks. <br> | |||
Vajalik on teada, et OID (Object Identifier) ehk numbriline osa atribuudi ja objektklassi järel, ei tohi kattuda teiste atribuutide/objektklasside OID-iga. Omavalmistatud atribuutidele on eraldatud OID algusega 1.1.2.1.1 ja objektklassile 1.1.2.2.1, ning omavalmistatud atribuutide ja objektiklasside nimed peaksid algama "x-" liitega. | |||
Trükkitähtedes olevad tähised tähendavad: <br> | |||
NAME- atribuudi/objektklassi nimi; | |||
DESC (Description)- kirjeldus; | |||
SUP (Superior ObjectClass)- ülem objektklass, mille piiranguid atribuut/objektiklass kasutatab; | |||
EQUALITY- reegel, mis kontrollib, et sisestatakse just seda tüüpi andmeid; | |||
SUBSTR (SubString)- reegel, mis kontrollib, et sisestatav alamstring sisaldab määratud tüüpi andmeid; | |||
SYNTAX- täidetava välja stringi numbriline väärtus, mis sisaldab välja süntaksi koodi; | |||
MUST- täitmiseks kohustuslike atribuutide nimistu; | |||
MAY- täitmiseks vabatahtlike atribuutide nimistu. | |||
Ebaselguse korral loe täiendavalt [http://www.openldap.org/doc/admin24/schema.html OpenLDAP-i administraatori teejuhti]. | |||
<br> | |||
==== LDAP andmebaasi täiendavate andmeskeemide (schema) laadimine ==== | |||
Skeemiandmete laadimise juures on esmalt vaja veenduda, et andmed on õiges formaadis. Kuni OpenLDAP versioonini 2.4 hoiti skeemifaile .schema-failides. Alates versioonist 2.4 hoitakse ldif-failides. Lisaks nimele muutus ka sisu, mistõttu ei pääse failinime muutmisega vaid tuleb .schema-fail ümber konverteerida ldif-failiks, selleks tuleb järgida järgmist [http://www.linuxquestions.org/questions/linux-server-73/how-to-add-a-new-schema-to-openldap-2-4-11-a-700452/ juhendit]:<br> | |||
1.luua fail skeemi_konverteerimine.conf, mis sisaldab viidet kõigile neile skeemifailidele, mida LDAP server kasutab. Näiteks: | |||
include /etc/ldap/schema/core.schema | |||
include /etc/ldap/schema/cosine.schema | |||
loetelu järgneb<br> | |||
2.loo kataloog, kuhu ajutiselt konverteeritud skeemifailid pannakse: | |||
mkdir /tmp/konverteeritud | |||
3.kasutades slaptest tööriista konverteeri .schema failid ldif failideks käsuga: | |||
slaptest -f skeemi_konverteerimine.conf -F /tmp/konverteeritud | |||
4.järgmiseks on vaja skeem andmebaasi laadida, selleks on kaks võimalust: | |||
*1.laadida skeemifailid sarnaselt muudele ldif failidele ldapadd tööriistaga. Selleks tuleb eelnevalt muuta konverteeritud ldif-faili selliseks, et faili esimesel ja kolmandal real ei oleks enam skeemi järjenumbrit({number}), ning faili lõpust tuleb kustutada kõik read peale „structuralObjectClass“ atribuuti (kaasa arvatud). Seejärel laadida fail käsuga: | |||
ldapadd -x -D <administraatoriCN>,cn=config -W -f <faili asukoht> | |||
*2.kopeerida skeemi ldif-fail cn=config/cn=schema kataloogi, kus need peale serveri restarti kasutusele võetakse. | |||
---- | |||
== LDAP-i õiguste mudel ja õiguste jagamine == | |||
Õppematerjal põhineb [http://www.openldap.org/doc/admin24/guide.html#Access%20Control OpenLDAP administraatori teejuhi] refereeringul.<br> | |||
Kataloogiteenus võib sisaldada erineva tundlikusega (sensitivity) informatsiooni, mistõttu võibolla vajalik, et mingile osale informatsioonist peavad kõik piiranguteta ligi saama, seevastu teine osa informatsiooni peab olema nähtav väga väiksele osale kasutajatest. | |||
OpenLDAP-il on veidi erinev ligipääsu seadistusmeetod vana (e. seadustusfailist) ja uue (e. andmebaasist) seadistamise jaoks, seda lähtuvalt seadistuse asukohast (kirjutamisest seadistusfail vs. andmebaasi importimisest). Õiguse andmise sisuline osa on peaaegu sama, erinevus vaid andmebaasi importimisel vajalik lisarida faili alguses,mida seadistusfaili puhul ei kirjutata: | |||
{| class="wikitable" border="1" | |||
|<ligipääsu direktiivi nimetus> ::= access to <ligipääsuobjekt- vt Tabel 3> | |||
[by <ligipääsusubjekt- vt Tabel 4> [<ligipääsutase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+ | |||
|} | |||
*Valem 1- Ligipääsuõiguse reguleerimine konfiguratsioonifailist seadistamisel <br><br> | |||
{| class="wikitable" border="1" | |||
|olcAccess: <ligipääsu direktiivi nimetus> | |||
<ligipääsu direktiivi nimetus> ::= to <ligipääsu objekt- vt Tabel 3> | |||
[by <ligipääsu subjekt- vt Tabel 4> [<ligipääsu tase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+ | |||
|} | |||
*Valem 2- Ligipääsuõiguse reguleerimine andmebaasi seadistust kasutades <br> | |||
Eelpool kirjeldatud valemid (Valem 1 ja 2) koosnevad neljast komponendist: | |||
ligipääsuobjekt - Tabelisse 3 on kogutud kõik võimalused, millega määratakse käsitletavat kirjet või atribuuti- ehk mille ligipääsu reguleeritakse; | |||
ligipääsusubjekti- Tabelis 4 on kirjeldatud võimalikud varjandid, kuidas määrata kasutajat/kasutajagruppi, kellele ligipääsu muudetakse; | |||
ligipääsutase- Tabelis 5 on loetletud erinevad ligipääsuõiguse liigid; | |||
erinev kontrolli võimalu- Tabelis 6 on loetletud täiendavad. | |||
Tabel 3 Ligipääsuobjekti määramise viisid | |||
{| class="wikitable" border="1" | |||
|Tähis | |||
|Tähendus | |||
|- | |||
|* | |||
|Kehtib kõigi kirjete kohta | |||
|- | |||
|dn.regex=<regex> | |||
|DN piiratakse kasutades regulaaravaldisi | |||
|- | |||
|dn.exact=<regex> | |||
|DN piiratakse täpse DN'ga kasutades regulaaravaldisi- vaata näiteid! | |||
|- | |||
|käsitlusala: base=<DN> | |||
|Base ühitub ainult näidatud DN-i kirjega | |||
|- | |||
|käsitlusala: one=<DN> | |||
|One ühitub ainult kirjetega, mille DN on nendest hierarhiliselt kõrgemal | |||
|- | |||
|käsitlusala: subtree=<DN> | |||
|Subtree ühitub kõigi alampuu kirjetega, mille kõrgeimal hierarhjal paiknev kataloog (juurkataloog) on antud DN | |||
|- | |||
|käsitlusala: children=<DN> | |||
|children ühitub kõigi DN all olevate kirjetega (aga mitte DN-i poolt nimetatud kirjega) | |||
|- | |||
|[filter=<ldapfilter>] | |||
|Kirjed valitakse LDAP filtriga, sarnaselt ldapsearch tööriista filtri kasutamisele | |||
|- | |||
|[attrs=<attrlist>] | |||
|Konkreetsete atribuutide loetelu, atribuudid eraldatakse üksteisest komaga | |||
|} | |||
Ligipääsuobjekti saab valida kas DN-i või LDAP filtrit kasutades. seejuures saab ühe diretkiivi piires olla vaid üks ligipääsuobjekt, millega võib olla seotud mitmeid subjekte, kellest igaühele on omistatud 1 ligipääsutase.<br> | |||
Tabel 4 Ligipääsusubjekti määramise viisid | |||
{| class="wikitable" border="1" | |||
|Tähis | |||
|Tähendus | |||
|- | |||
|* | |||
|Kõigile kaasaarvatud anonüümsed ja autentidud kasutajad | |||
|- | |||
|anonymous | |||
|Autentimata kasutajad | |||
|- | |||
|users | |||
|Autentitud kasutajad | |||
|- | |||
|self | |||
|Kasutaja, mis on seotud kirjega | |||
|- | |||
|dn[.exact | .regex]=<regex> | |||
|Kasutajate määramine kasutades regulaaravaldisi | |||
|- | |||
|dn.<base | one | subtree | children>=<DN> | |||
|Kasutajate määramine käsitlusalaga (vt.Tabel 3 käsitlusalade juhiseid) | |||
|- | |||
|[dnattr=<attrname>] | |||
|Kasutaja määramine atribuudi olemasolust lähtuvalt | |||
|- | |||
|<nowiki>[</nowiki>group[/<objectclass>[/<attrname>] [.exact | .regex]]=<regex>] | |||
|Kasutaja määramine kasutajagruppi kuulumise alusel | |||
|- | |||
|<nowiki>[</nowiki>peername[.exact | .regex]=<regex>] | |||
|Võrguaadressipõhine ligipääs | |||
|- | |||
|<nowiki>[</nowiki>domain[.exact | .regex]=<regex>] | |||
|Domeenipõhine ligipääs | |||
|- | |||
|<nowiki>[</nowiki>sockname[.exact | .regex]=<regex>]<br> | |||
[sockurl[.exact | .regex]=<regex>] <br> | |||
[set=<setspec>] <br> | |||
[aci=<attrname>]<br> | |||
|- | |||
|} | |||
Ligipääsu on võimalik anda taseme nimetusega (näiteks write) või privileegi nimetusega. Seda on oluline teada, sest andes write taseme, antakse automaatselt ka kõik madalama taseme õigused (read, search, compare, auth ja disclose). Kuid on võimalik anda ka vaid üksikuid privileege(vt. Tabel 5). | |||
'''Tabel 5 Ligipääsutasemed''' | |||
'''Tabel 6 Kontroll''' | |||
Ligipääsuõiguseid saab anda kas globaalselt üle kõigi LDAP andmebaaside või iga andmebaasi kohta eraldi. Ligipääsuõiguseid otsitakse kõigepealt andmebaasist, kus kirje paikneb. | |||
Ligipääsuõiguste andmisel on väga oluline direktiivide kirjapaneku järjekord, sest õiguste kontrollimisel käiakse nimekiri samas järjekorras läbi ja peatutakse esimesel võimalusel, kui ligipääsubjekti vaste leitakse. | |||
Kui ligipääsuõiguste seas ei ole ligipääsuobjektile vastavat direktiivi siis vaikesätetest antakse kirje lugemise õigus. Selleks et infole saaks ligi vaid need kellele see on mõeldud, soovitatakse viimaseks direktiiviks „access to * by * none“ | |||
Järgnevalt on toodud näiteid ligipääsuõiguse andmise kohta, kommentaarimärgi(#) taga on lühike seletus antud õiguse kohta. Soovitus on püüda ära arvata, mis õiguseid muudetakse ja milliseks, ning seejärel kontrollida kommentaarimärgi tagant! | |||
olcAccess: to * | |||
by self write | |||
by anonymous auth | |||
by * read | |||
#muudetakse kõigi kirjete õigusi järgnevaks: 1)kasutaja saab endaga seotud kirjeid muuta; 2)autentimata kasutajad peavad ennast autentima(sisse logima); 3)kõik saavad lugeda- kuna oluline on subjektide järjekord, siis direktiivi piires on objekti(antudjuhul kõigi kirjete) lugemiseks vaja ennast autentida! Ehk selle direktiivi piires on viimane rida sama mis „by users read“ tulenevalt punktist 2! | |||
olcAccess: to attr=userPassword | |||
by self =xw | |||
by anonymous auth | |||
by * none | |||
#Piiratakse ligipääsu atribuudi 'userPassword' järgmiselt: 1)kasutaja saab oma parooli uuendada (kuid mitte lugeda); 2)autentimata kasutajad peavad ennast autentima(sisse logima); 3)kõikidel teistel puudub ligipääs. | |||
Käsitlusala (scope) kasutamise näide, erinevuse väljatoomiseks: | |||
olcAccess: to dn.children="dc=example,dc=com" | |||
by * search | |||
olcAccess: to dn.children="dc=com" | |||
by * read | |||
#Lugemisõigus antakse dc=com alampuule, välja arvatud dc=example,dc=com alampuule, millele antakse otsingu õigus. Kuna kumbki direktiiv ei sobi dc=com jaoks, siis sellele õiguseid ei anta. Selleks, et saaks alampuudest otsida, peab olema lugemisõigus „dc=com“ kirjetele | |||
Kui direktiivide järjekord on oluline: | |||
olcAccess: to dn.subtree="dc=example,dc=com" attrs=homePhone | |||
by self write | |||
by dn.children=dc=example,dc=com" search | |||
by peername.regex=IP:10\..+ read | |||
olcAccess: to dn.subtree="dc=example,dc=com" | |||
by self write | |||
by dn.children="dc=example,dc=com" search | |||
by anonymous auth | |||
#näide kehtib „dc=example,dc=com“ alampuus olevate kirjete kohta. Kõikidel atribuutidel välja arvatud „homePhone“ lubatakse enda kirjet muuta „dc=example,dc=com“ alampuus. | |||
Gruppide õiguste piiramine: | |||
Võtame aluseks, et on olemas grupp (administrators), mille defineerib järgmine LDIF vormingus sissekanne: | |||
dn: cn=administrators,dc=example,dc=com | |||
cn: administrators of this region | |||
objectclass: groupOfNames | |||
#eelmine rida on oluline grupi ligipääsu andmisel | |||
member: cn=fred blogs,dc=example,dc=com | |||
member: cn=somebody else,dc=example,dc=com | |||
Üks võimalus gruppi liikmetele ligipääsu anda on kasutada klauslit by group: | |||
olcAccess: to dn.children="dc=example,dc=com" | |||
by group.exact="cn=administrators,dc=example,dc=com" write | |||
Või sama asi objektiklassi ja atribuuti kasutades: | |||
olcAccess: to dn.children="dc=example,dc=com" | |||
by group/groupOfNames/member="cn=administrators,dc=example,dc=com" write | |||
#Sellistel kujudel saavad kirjutamisõiguse grupi liikmed, kuid kui „cn=somebody else,dc=example,dc=com“ on omakorda grupi nimi, siis selle grupi liikmetele õigused ei laiene! Alamgrupi liikmeid on võimalik kaasata järgnevalt: | |||
olcAccess: to dn.children="dc=example,dc=com" | |||
by set="[cn=administrators,dc=example,dc=com]/member* & user" write | |||
#“/member*“ tähendab, et kontrollitakse member atribuuti ja * tähendab, et kontrollitakse rekursiivselt (st. ka gruppide liikmeid), seejärel kontrollitakse, kas autentitud kasutaja DN vastab mõnele eelnenud päringu käigus saadud DN väärtusele. Kui vastab antakse kirjutamise õigus. | |||
Loe lisaks originaalmaterjali OpenLDAP-i administraatori teejuhist[LDAP Access Control]. | |||
== Linux operatsioonisüsteemides LDAP-ga autentimise seadistamine == | |||
Juhend põhineb [http://kuutorvaja.eenet.ee/wiki/OpenLDAP_kasutamine_Debianiga kuutõrvaja wikil], mida on mõnevõrra kohandatud Ubuntu-ga kasutamiseks.<br> | |||
Paigaldada tuleb paketid: <br> | |||
libnss-ldap, libpam-ldap ja ldap-auth-config. | |||
Paigaldamise käigus küsitakse järgmisi küsimusi, kooloni järel on '''soovitav vastus''' (tumedal taustal) ja sulgudes põhjendus:<br> | |||
*OpenLDAP serveri IP aadressi või masina nimi: '''ldap://localhost''' või '''ldap://127.0.0.1''' (OpenLDAP server asub samas virtuaalmasinas);<br> | |||
*distinguished name (DN): '''dc=naide,dc=ee''' ( näiteülesande DN on selline);<br> | |||
*LDAP versioon: '''3''' (uuem versioon);<br> | |||
*kohaliku masina root kasutajale LDAP andmebaasi administraatori õigus: '''ei''' (seab ohtu kogu LDAP andmebaasi turvalisuse, kuna pääsedes ükskõik millise masina root kasutajaks on võimalik ka kohene ligipääs LDAP andmebaasile administraatori õiguses);<br> | |||
*kas LDAP andmebaasile ligipääs nõuab sisselogimist: '''ei''' (antud õppematerjalis on andmebaasile ühendumine ilma autentimiseta);<br> | |||
Eelpool olevate vastuste põhjal luuakse ''/etc/ldap.conf'' fail. LDAP kasutaja saab nüüd süsteemi sisse logida, kuid tal ei ole kodukataloogi, seega peaks kõigile kasutajatele kodukataloogid tegema või lisama järgmise rea ''/etc/pam.d/common-session'' faili lõppu, et süsteem ise puuduolevad kodukataloogid looks:<br> | |||
session required pam_mkhomedir.so skel=/etc/skel/ umask=0066 | |||
Lisaks on '''kohustuslikud''' Linuxisse logivatel kasutajatel '''atribuudid''' (uid, cn, loginshell, uidnumber, gidnumber, homedirectory, userpassword) ja '''objektiklassid''' (account, posixaccount ja top)[http://quark.humbug.org.au/publications/ldap/ldap_tut.html] | |||
== Linux ja UNIX operatsioonisüsteemide kasutajate migreerimine == | |||
Juhend põhineb [https://wiki.itcollege.ee/index.php/OpenLDAP-i_seadistamine Wiki artiklil] ja [http://enos.itcollege.ee/~aandreim/linux/advanced_latest/6_Kerberos_ja_LDAP.pdf Antti Andreimann LDAP-i õppematerjalil]. | |||
Kasutajate ülekandmine lokaalsest kasutajate hoidlast OpenLDAPi Paigaldame migrationtools paketi. | |||
apt-get install migrationtools | |||
Järgnevalt peame veidi muutma migrationtools-i seadistusfaili: | |||
/usr/share/perl5/migrate_common.ph | |||
Kus tuleb asendada järgmised parameetrid enda LDAPi seadistusele vastavaks:<br> | |||
$DEFAULT_MAIL_DOMAIN = "naide.ee"; | |||
$DEFAULT_BASE = "dc=naide,dc=ee"; | |||
Kopeeri lokaalse masina kasutajaandmete andmed ajutisele pinnale, et neid saaks korrastada edaspidise tegevuse jaoks: | |||
cp /etc/passwd /tmp/ | |||
cp /etc/group /tmp/ | |||
Redikeeri kopeeritud faile nii, et sinna jääks ainult nende kasutajate andmed, kes reaalselt võiksid soovida arvutisse sisse logida! | |||
Tekita andmebaasi juurkataloog: | |||
/usr/share/migrationtools/migrate_base.pl > ~/base.ldif | |||
Redikeeri faili ~/group.ldif nii, et sinna jääks alles ainult root, ou=People, ou=Groups ja ou=Aliases ! | |||
Seejärel ekspordi uued väärtused käskudega: | |||
/usr/share/migrationtools/migrate_group.pl /tmp/group ~/group.ldif | |||
/usr/share/migrationtools/migrate_passwd.pl /tmp/passwd ~/passwd.ldif | |||
Nüüd on meil kasutajad ja grupid konverditud LDAP ldif formaati. Need omakorda tuleb importida LDAP-i databaasi kasutades järgmisi käske: | |||
ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/base.ldif | |||
ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/group.ldif | |||
ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/passwd.ldif | |||
== Varundamine ja taastamine == | |||
==== Teenuse varundamine ==== | |||
Reeglina tehakse varukoopiaid eraldi seadistusfailidest ja andmetest. Neid hoitakse teis(t)el andmekandja(te)l ja teisaldatakse suuremates infosüsteemides automaatprotseduuridega.<br> | |||
Õpiobjekti raames kajastatakse varundamist vaid varundamist vajavate andmete kontekstis: seadistamisfailid ja andmebaas. <br> | |||
Põhineb [https://wiki.itcollege.ee/index.php/OpenLDAP-i_seadistamine EIK vikil]. <br> | |||
Varukoopiate hoidmiseks loome kataloogid /var/backup/ldap/db ja /var/backup/ldap/db kataloogi järgmise käsuga: | |||
mkdir -p /var/backups/ldap/db/ /var/backups/ldap/konf | |||
Järgmiseks tuleks luua varukoopia andmebaasist, selleks kasutatakse tööriista slapcat, mis väljastab kogu andmebaasi sisu, selle suuname faili, mille saab kohe ka kokku pakkida. Vajalik käsk selleks on järgmine: | |||
slapcat | gzip > /var/backups/ldap/db/backup.`date '+%Y%m%d'`.ldif.gz | |||
Käsu lõpus olev `date '+%Y%m%d` võimaldab automaatselt luua käesoleva päeva andmed formaadis aasta.kuu.päev. | |||
Seadistusfailid asuvad ''/etc/ldap/ kataloogis'', need saab kokku pakitud ja kuupäeva infoga varustatud järgmise käsuga: | |||
tar czvf /var/backups/conf_backup.`date '+%Y%m%d'`.tgz /etc/ldap/* | |||
==== Teenuse taastamine ==== | |||
Põhineb [https://wiki.itcollege.ee/index.php/OpenLDAP-i_seadistamine EIK vikil] <br> | |||
Teenuse taastamise vajaduse tekkides tuleb reageerida vastavalt olukorrale. Õpiobjekti raames kajastatakse teenuse taastamist vaid andmebaasi viimase varundatud andmete laadimise ja seadistusfailidest vigade otsimise kontekstis! | |||
'''Andmebaasi taastamine''' | |||
Pakime viimast andmebaasi varukoopiat sisaldava faili lahti, selleks sobib näiteks käsk: | |||
gunzip -c /var/backups/ldap/backup.<kuupäev>.ldif.gz > /var/backups/ldap/backup.<kuupäev>.ldif | |||
Kuna tavatingimustes, on andmebaasid suured, siis kasutatakse taastamisel andmete importimiseks serveritööriista slapadd. Slapadd nagu ka teised kataloogiteenuse '''serveri tööriistad vajavad töötamiseks baasi ainukasutusõigust, selleks peab slapd'i seisma panema''': | |||
/etc/init.d/slapd stop | |||
slapadd -b <suffix> -l /var/backups/ldap/backup.<kuupäev>.ldif | |||
'''Seadistusfailide taastamine''' | |||
Taastamiseks tuleb viimase seadistusfailide varukoopia fail lahti pakkida ning vastavalt olukorrale taastada vajalikud failid: | |||
tar xvf /var/backups/ldap/etc/conf_backup.<kuupäev>.tar | |||
==Läbikäidud probleemid- õpi teiste vigadest== | |||
'''Kui seadistamise käigus ei küsitud LDAP administraatori parooli''', siis tuleb see ise käsitsi lisada- ka korduval seadistamisel ei esitata seda võimalust. Selleks korrigeeri failides: | |||
/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif | |||
/etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif | |||
ja tekita sinna pärast andmebaasi atribuuti (olcDBDirectory järgi) read: | |||
olcRootDN: cn=admin,cn=config – sellega määratakse ära administraatori nimi ja skeem | |||
olcRootPW: parool – administraatori parool, õppimiseks käib tekstiline parool ka, kuid töökeskkondades tuleks kasutada parooliräsi, selle saad käivitades: | |||
ldappasswd -s <parool> | |||
'''OpenLDAP serveri paigaldamisel ei looda baasiparameetrite''' faili /etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif. | |||
On vaja õpilasel see ise luua. | |||
Kõigepealt loome kataloogi kuhu server salvestab andmebaasi failid: | |||
mkdir /var/lib/ldap/naide | |||
Turvalisuse huvides peab selle kataloogi omanikuks ja grupiks olema „openldap“ kasutaja: | |||
chown openldap:openldap /var/lib/ldap/naide/ | |||
Loo fail, kuhu sisse kirjuta loodava baasi seaded (vaata alla poole), näitefaili nimi koos asukohohaga: | |||
/etc/ldap/slapd.d/cn=config/olcDatabase={1}dbd.ldif | |||
Kui kasutajate baasi konfiguratsioon on loodud peab LDAP serverile tegema taaskäivituse ja peale seda kontrolli kas porti kuulatakse, selleks sisesta terminali: | |||
teenuse restartimiseks: | |||
/etc/init.d/slapd restart | |||
kontrolli, kas porti(389) kuulatakse: | |||
netstat -anp|grep 389 | |||
== LDAP bdb baasi näidis konfiguratsioon == | |||
dn: olcDatabase={1}bdb | |||
objectClass: olcBdbConfig | |||
objectClass: top | |||
olcDatabase: {1}bdb | |||
olcDbDirectory: /var/lib/ldap/naide/ | |||
olcSuffix: dc=naide,dc=ee | |||
olcRootDN: cn=admin,dc=naide,dc=ee | |||
olcRootPW: parool | |||
olcLogLevel: 256 | |||
structuralObjectClass: olcBdbConfig | |||
olcDbCheckpoint: 128 10 | |||
olcDbIDLcacheSize: 1500 | |||
olcDbDNcacheSize: 500 | |||
olcDbConfig: {0}set_cachesize 0 33554432 0 | |||
olcDbConfig: {1}set_lg_bsize 2097512 | |||
olcDbConfig: {2}set_flags DB_LOG_AUTOREMOVE | |||
olcMonitoring: FALSE | |||
olcDbIndex: cn,sn pres,eq,sub | |||
olcDbIndex: entryCSN eq | |||
olcDbCacheFree: 300 | |||
== Skriptid == | |||
Õpiobjekti osaks on ka laboriülesande loomise ja lahenduse kontrollimise skripti esialgne varjant, mida tuleks parandada ja täiendada![http://enos.itcollege.ee/~kkarma/6piobjekti_skriptid.tar.bz2 skriptide pakk] |
Latest revision as of 00:00, 6 December 2011
Õpijuhis
Õpiobjekti eesmärk on kataloogiteenuse teoreetiliste teadmiste ja praktiliste oskuste arendamine. Teadmiste arenguks on õpiobjekti osaks õppematerjalid, ning praktiliste oskuste arendamiseks on õppekeskkonna eksportfail, mida on võimalik kasutada Oracle VM VirtualBox programmiga(EIK kasutab ... õppekeskonda). Õppekeskkonnana kasutatakse Ubuntu 11.04 Server operatsioonisüsteemi.
Õpiobjektiga töötamise eeltingimused:
- õpiobjekti kasutaja oskab kasutada Ubuntu operatsioonisüsteemi käsurealt, sh vähemalt ühte käsurea tekstiredigeerimise programmi. Peaks oskama teenust taaskäivitada, programmiuuendusi paigaldad, oskama faili/kataloogi arvutist üles leida(locate, find), vaadata milliseid porte kuulatakse jne;
- õpiobjekti kasutaja teab arvutivõrkude alusmõisteid;
- virtualiseerimisprogrammist VirtualBox tulenevalt seatakse peremeesarvuti (ingl. host) riistvarale järgmised nõuded: x86 platform; vähemalt 512 MB mälu; vähemalt 1.5GB vaba kõvakettaruumi. Seda eeltingimust ei rakendata, kuna kasutatakse teist õpikeskkonda!
Õpiobjekti komponendid
Õpiobjekti komponendid on:
- õpijuhis- õpiobjekti üldine sissejuhatav tekst;
- õpetaja kasutusjuhend- juhend õpetajale või auditoorset/e-õpet korraldavale isikule, mis sisaldab teavet keskkonna ettevalmistamise kohta;
- õpilase kasutusjuhend- juhend õpilasele, mis sisaldab täpsemaid tegevusjuhendeid õppetöö läbijale;
- õpikeskkonna loomise ja seadistamise juhend(sh. õpikeskkond ise)- juhend, mis õpetab õpiobjekti osaks olevat virtuaalkeskkonda looma ja seadistama Oracle VM VirtualBox programmi kasutades;
- õppematerjal(id)- teoreetiline ja praktiline õppematerjal, kus õpilane saab teadmised ja oskused;
- personaalse ülesande loomise ja kontrolli skript- bash skript, mis koostab õppija eesnime, perenime ja koodi alusel tema personaalsete andmetega laboriülesande ja teine skript, mis kontrollib laboriülesande sooritust.
Õpiobjekti kasutusjuhend
Käesolev õpilase kasutusjuhend on loodud teejuhiks õpiobjekti kasutamisel.
Õpilase tegevuste loetelu nende õiges järjekorras:
1. Loe läbi terve õpilase kasutajajuhend, et teada saada, mida ja millises järjekorras sa tegema pead, selleks et õpiobjekti teadmised ja oskused kinnistuksid parimal võimalikul viisil.
2. Kontrolli, et sinu kasutada oleks kõik õpiobjekti komponendid .
3. Loe läbi ja püüa mõista Teoreetilise õppematerjali sisu. On väga oluline, et saaksid aru ja oskaksid oma sõnadega selgitada „Teoreetilises õppematerjalis“ esindatud mõisteid ja kokkuvõtvalt rääkida seal olevatest peatükkidest. Kui oled veendunud, et oled „Teoreetilise õppematerjali“ sisu omandanud asu siinse tegevusloetelu järgmise punkti juurde.
4. Kui Sinu jaoks on õpikeskkond loodud ja sa tead kus see asub, ning kuidas sellele ligi pääseb siis jätka järgmise punktiga! Kui pead endale õpikeskkonna ise looma siis järgi „Virtuaalmasina importimise ja esmase seadistamise juhendit“, et luua endale virtuaalne õpikeskkond Ubuntu 11.04 Server operatsioonisüsteemil, mis on vajalik praktiliste laboriülesannete lahendamiseks. Olles mainitud juhendi läbinud, ning sellega endale virtuaalkeskkonna loonud ning kontrollinud ja veendunud selle töökorrasolekus asu järgmise tegevusloetelu punkti juurde. EIK tudengitel on õpikeskkond ette loodud!
5. Loe läbi ja püüa mõista Praktilise õppematerjali sisu. On oluline, et saaksid aru, miks ja millal mingit käsku on vaja kasutada ja mis selle käsu tulemusel juhtub. Käskude pähe õppimine ei ole eesmärk!
6. Kasuta virtuaalset õpikeskkonda, et lahendada laboriülesanded. Selleks sisene virtuaalkeskkonda ,kus kodukataloogis käivita „loo_ylesanne.sh“ skript, mille tulemusel luuakse õpilase personaalsete andmete (eesnimi, perenimi ja üliõpilaskood) alusel laboriülesanded, mida saab hiljem uuesti lugeda failist „ylesanded.txt“. Laboriülesannete läbimist ja õiget sooritust on võimalik kontrollida käivitades faili „kontrollskript.sh“. Kontrollskripti käivitamiste arv ei ole piiratud! Kui saad kõik ülesanded lahendatud ja seda kinnitab ka kontrollskript, anna sellest teada õppejõule, kes lahenduse üle kontrollib ja mõnda „Teoreetilise õppematerjali“ sisu mõistet küsib.
Õpikeskkonna loomine ja seadistamine
Õpilasele on ettevalmistatud virtuaalkeskkonnast tehtud eksportfailid Ubuntu Server 11.04 operatsioonisüsteemiga, et vähendada keskkonna installeerimiseks kuluvat aega. Virtuaalmasina failid tuleb laadida enda arvutisse ja importida läbi vastava viisardi. Täpsemad juhised virtuaalmasina ettevalmistamiseks Oracle VM VirtualBox 3.2 ja 4.0 tarbeks on õpiobjekti üheks osaks olevas juhendis.
Praktiline õppematerjal
OpenLDAP serveri ja klienditööristade paigaldamine
Kõigepealt paigalda OpenLDAP server, paketi nimeks Ubuntu paketihalduris 'slapd', klienditööriistad asuvad paketis 'ldap-utils', need on vajalikud, et kasutada klienditööriistu nagu näiteks: ldapsearch, ldapadd jne. Pakid paigaldatakse järgmise käsuga:
apt-get install slapd ldap-utils
Paigaldamise ajal küsitakse seadistamiseks erinevaid küsimusi, mille vastamisega peab õppija iseseisvalt hakkama saama, kasutades õpitud teadmisi. Kui paigaldamise käigus küsiti vaid administraatori parooli või soovid ennast parandada on abiks käsk:
dpkg-reconfigure slapd
Paigaldamise lõpuks tuleks üle kontrollida kas serveri seadistufailis /etc/ldap/slap.d/cn=config/olcDatabase{0}configure.ldif ja samas kataloogis asuv olcDatabase{1}hdb.ldif või olcDatabase{1}bdb.ldif sisaldavad paigaldamisel sisestatud andmeid, sest õppematerjali loomise käigus tuvastati korduvalt, et need andmed ei ühtinud. Vajadusel paranda erinevused!
LDAP serveri ja klienditööriistade seadistamine
LDAP klienditööriistu seadistatakse /etc/ldap/ldap.conf failist. Serveri seadistamiseks on alates 2005-nda aasta juunist kaks võimalust:
- /etc/ldap/slapd.conf seadistusfail (kasutati kuni versioonini 2.4) või
- kataloogis /etc/ldap/slapd.d/cn=config olevad failid (võimalik kasutada alates versioonini 2.3). Viimast seadistusvõimalust tuntakse kui Configuration Backend, mida kasutab ka käesolev õppematerjal. Antud töös piirdutakse kataloogis etc/ldap/slapd.d/cn=config olevate olcDatabase={0}config.ldif ja olcDatabase={1}bdb.ldif failidega, kuna laboris peab õpilane vaid neid serveri seadistufaile muutma.
Kahe erineva seadistuse põhiline vahe seisneb selles, et vanas (slapd.conf) seadistusfailis on kogu seadistus koondatud ühte faili (slapd.conf) ja seadistuste kehtestamiseks serveris on tarvis teha (LDAP) serverile taaskäivitus. Uues seadistusviisis on konfiguratsioon andmebaasis ja failisüsteemis on vaid viide andmebaasile, ning seadistusemuudatused ei eelda enam (LDAP) serveri restartimist. Alates Ubuntu versioonist 8.10 on vaikeväärtusena kasutusel andmebaasis seadistuse hoidmise variant, kuid kasutajale on jäetud võimalus kasutada ka slapd.conf varianti, selleks tuleb teha muudatused /etc/default/slapd failis.[1]
Testime
Järgmiseks testi, kas saad tehtule ligi:
ldapsearch -x -D 'cn=<rootDN>,cn=config' -W Võtmed: x- lihtne autentimine(ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli
Vastus võiks olla selline:
# search result
search: 2
result: 0 Success või
result: 32 No such object
ldap_sasl_bind(SIMPLE): Cant contact LDAP server (-1)
- result: 0 Success- tähendab, et päring LDAP andmebaasi jõudis kohale ja sealt saadi vastus.
- result: 32 No such object- tähendab, et LDAP serveriga saadi ühendust, kuid andmebaasis ei olnud päritud objekti.
Tuleks kontrollida, kas klienditööriista seaded on õiged ja kas tehtud päring oli õige.
- ldap_sasl_bind(SIMPLE): Cant contact LDAP server (-1)- ilmslt LDAP server seisab või ei saada baseDN-iga ühendust, vaata kas porti(389) kuulatakse,
selleks sisesta terminali:
netstat -anp|grep 389
vajadusel restardi teenus:
/etc/init.d/slapd restart
ja kontrolli, kas päringu vastus muutus, kui mitte siis põhjuse leiad /var/log/syslog failist.
LDAP serveri andmebaasi kirjete laadimine
Sisu laadimiseks on kaks peamist võimalust: kasutada mõnd veebipõhist administreerimisliidest (näiteks phpLDAPadmin) või konsoolilt kasutades kliendi- või serveri utiliite (näiteks ldapadd või slapadd). Esmalt vaatame konsoolilt andmete laadimist, selleks on 2 võimalust: slapadd (serveri utiliit) ja ldapadd (kliendi utiliit). Peamine vahe on selles, et kliendi tööriistu kasutades peab LDAP server töötama, serveri tööriistu kasutades aga seisma, lisaks on erinev suvandite (options) kasutus!
Soovitav on kasutada kliendi tööriistu, kuna siis ei pea serverit seiskama ja ei tekitata andmebaasi failide omanikuks root kasutajat, mis tuleks openldap kasutaja omandisse tagasi muuta. Seepärast on selles juhendmaterjalis kõik laadimised tehtud ldapadd käsuga, näiteks:
ldapadd -x -D "<kasutaja DN>" -w <parool> -f <fail> Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja DN; w- sisestatakse parool kohe; f- imporditav fail.
Veebipõhise LDAP haldusliidese paigaldamine ja seadistamine
Et saada paremat üldpilti ja paremini mõista, millega tegeletakse, on soovitav paigaldada ja seadistada veebipõhine LDAP-i administreerimise liides phpLDAPadmin. Seadistamise hõlbustamiseks on õpiobjektiga kaasas fail config.php, kus tuleb asendada
cn=root,dc=naide,dc=vot enda konfiguratsioonile vastavaks, asendus tuleb teha reas: $servers->setValue('login','bind_id','cn=root,dc=naide,dc=vot');
Administreerimisliidesele ligipääsuks minna hostmasinas aadressile http://ldapserveri_ip/phpldapadmin. Sissepääsuks valida kõigepealt vasakpoolsest paneelist oma serveri nimi ja seejärel login. Login DN väli peab sisaldama nii administraatori kasutaja nime, kui ka base DN väärtust. Veebiliidese kasutamine on soovituslik ja võrdlemisi lihtne, seepärast ei peatuta sellel siinkohal pikemalt.
Kirjete otsimine ja muutmine LDAP-is
Põhineb OpenLDAP tööriista ldapsearch juhendil man ldapsearch.
Päringute tegemiseks on OpenLDAP kliendi tööriistana paigaldatud ldapsearch, mis võimaldab ühenduda LDAP serveriga ja sealt otsida andmeid. Näiteks kirje otsimise käsk:
ldapsearch -x -D 'cn=<kasutaja DN>' -W <filtreeriv tingimus> <väljastatavad atribuudid>
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli;
<filtreeriv tingimus>- võimaldab otsingut piirata; <väljastatavad atribuudid>- võimaldab pärigu tulemuses näha vaid soovitud atribuutide infot-eraldajaks tühik.
Vaata ka teisi võtmeid ja nende tähendust õpikeskkonnas kirjutades käsureale:
man ldapsearch
Kirjete muutmine LDAP-is
Põhineb OpenLDAP tööriista ldapmodify juhendil man LDAPModify.
Kirjetesse muudatuste tegemiseks on paigaldatud OpenLDAP kliendi tööriist ldapmodify, mille abil saab andmebaasi uusi andmeid lisada või seal olemasolevaid muuta/täiendada/kustutada. Muudatusi saab sisestada käsurealt või (LDIF) failist:
ldapmod -x -D 'cn=<rootDN>' -W -f <faili asukoht> ldapmod -x -D 'cn=<rootDN>' -W Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli; -f sisendfaili asukoht.
Tabeli 2 vasakpoolset veergu tuleks vaadata kui muudatuse tegemise faili sisu ning parempoolset veergu kui seletust, mida antud rida failis tähendab. Vasakpoolses veerus olev rida changetype tähendab, et ühe muudatuskorral failis võib kuuluda vaid üks valik (add, delete, modrdn, moddn, newrdn või newsuperior).
Faili sisu | Seletus ja näide faili sisu kohta |
---|---|
#kommentaar | #(trellid) rea alguses võimaldab kommentaari lisada, programmid #alustatud rida ei loe! |
dn: <kirjenimetus (distinguished name)> | dn: cn=Bjorn Jensen,dc=example,dc=com „dn:..“ näitab kirje asukohta puus. |
Changetype: Add | Kirje lisamiseks |
Changetype: Delete | Kirje kustutamiseks |
Changetype: Modrdn | moddn {reavahetus} [newrdn: <rdn> {reavahetus} deleteoldrdn: [0|1] newsuperior: <dn>] |
Kirje DN ja RDN muutmiseks. Suvand Newrdn võimaldab kirje RDN'i muuta. Newrdn kasutamisel tuleb ka deleteoldrdn suvandit kasutada valides väärtuseks: 0-vana rdn jäetakse alles; 1- vana RDN kustutatakse. Newsuperior võimaldab kirje liigutada uue kataloogi alluvusse. |
Changetype: Modify {reavahetus} [add: <atribuut| objektiklass> | delete:<atribuut| objektiklass> |
Võimaldab atribuuti, objektiklassi või mõnd muud kirje osa lisada(add), kustutada(delete), vahtada(replace). NB! Oluline on, et reavahetused oleks õigetes kohtades! |
- | Tähistab, et sama dn ja changetype'i kasutatakse ka järgmise muudatuse puhul. |
Näited[RFC 2849]:
# muudetakse RDN ja tõstetakse kogu sisu uue kataloogi alluvusse. dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com changetype: modrdn newrdn: ou=Product Development Accountants deleteoldrdn: 0 newsuperior: ou=Accounting, dc=airius, dc=com
# lisatakse 'postaddress'; kustutatakse 'description'; asendatakse olemasolev(ad) 'telephonenumber' kahe uuega; # kustutatakse see facsimiletelephonenumber mille väärtus on „+1 408 555 9876“. dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com changetype: modify add: postaddress postaddress: 123 Anystreet $ Sunnyvale, CA $ 94086 - delete: description - replace: telephonenumber telephonenumber: +1 408 555 1234 telephonenumber: +1 408 555 5678 - delete: facsimiletelephonenumber facsimiletelephonenumber: +1 408 555 9876
Skeemifaili koostamine ja LDAP andmebaasi laadimine
Skeemifaili koostamine
LDAP-is on võimalik hoida ja sealt pärida ükskõik millist seal sisalduvat infot, vajadusel saab alati infovälju – objektiklasse/atribuute ka juurde lisada. Selle tarbeks on valmis hulk erinevaid skeemifaile (kataloogis /etc/ldap/schema/) ja kui neist ei piisa on võimalik ka ise neid juurde luua, võttes eeskujuks olemasolevad näidisfailid. Tähelepanu tuleks pöörata skeemifailide sisse kirjutatud sõltuvus viidetele, st kui on öeldud: „Depends upon core.ldif and cosine.ldif“ siis peab enne selle skeemi laadimist olema laetud core.ldif ja cosine.ldif, kuna nende skeemide atribuute või objektiklasse kasutab laetav skeemifail.
#Lihtsa telefoniraamatu skeemi näide attributetype ( 1.1.2.1.1 NAME ( 'eesnimi' ) DESC ' eesnimi' SUP name ) attributetype ( 1.1.2.1.2 NAME ( 'perenimi' ) DESC ' perekonna nimi' SUP name ) attributetype ( 1.1.2.1.3 NAME ( 'telefoninumber' ) DESC ' telefoninumber' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} ) attributetype ( 1.1.2.1.4 NAME ( 'mailiaadress' ) DESC 'Mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) attributetype ( 1.1.2.1.5 NAME ( 'kirjeldus' ) DESC 'Lisainfo' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} ) objectclass ( 1.1.2.2.1 NAME ( 'telraamat' ) DESC 'Telefoniraamat' SUP top STRUCTURAL MUST ( eesnimi $ perenimi $ telefoninumber ) MAY ( mailiaadress $ kirjeldus ) )
Eelnev on näidis lihtsa telefoniraamatu skeemi sisust, mis on koostatud autori poolt võttes aluseks core.schema skeemifaili ja ingliskeelse skeemide loomise õpetuse. Seda materjali soovitab autor lugeda ka õpilastel täiendava teadmise omandamiseks.
Vajalik on teada, et OID (Object Identifier) ehk numbriline osa atribuudi ja objektklassi järel, ei tohi kattuda teiste atribuutide/objektklasside OID-iga. Omavalmistatud atribuutidele on eraldatud OID algusega 1.1.2.1.1 ja objektklassile 1.1.2.2.1, ning omavalmistatud atribuutide ja objektiklasside nimed peaksid algama "x-" liitega.
Trükkitähtedes olevad tähised tähendavad:
NAME- atribuudi/objektklassi nimi; DESC (Description)- kirjeldus; SUP (Superior ObjectClass)- ülem objektklass, mille piiranguid atribuut/objektiklass kasutatab; EQUALITY- reegel, mis kontrollib, et sisestatakse just seda tüüpi andmeid; SUBSTR (SubString)- reegel, mis kontrollib, et sisestatav alamstring sisaldab määratud tüüpi andmeid; SYNTAX- täidetava välja stringi numbriline väärtus, mis sisaldab välja süntaksi koodi; MUST- täitmiseks kohustuslike atribuutide nimistu; MAY- täitmiseks vabatahtlike atribuutide nimistu.
Ebaselguse korral loe täiendavalt OpenLDAP-i administraatori teejuhti.
LDAP andmebaasi täiendavate andmeskeemide (schema) laadimine
Skeemiandmete laadimise juures on esmalt vaja veenduda, et andmed on õiges formaadis. Kuni OpenLDAP versioonini 2.4 hoiti skeemifaile .schema-failides. Alates versioonist 2.4 hoitakse ldif-failides. Lisaks nimele muutus ka sisu, mistõttu ei pääse failinime muutmisega vaid tuleb .schema-fail ümber konverteerida ldif-failiks, selleks tuleb järgida järgmist juhendit:
1.luua fail skeemi_konverteerimine.conf, mis sisaldab viidet kõigile neile skeemifailidele, mida LDAP server kasutab. Näiteks:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema loetelu järgneb
2.loo kataloog, kuhu ajutiselt konverteeritud skeemifailid pannakse:
mkdir /tmp/konverteeritud
3.kasutades slaptest tööriista konverteeri .schema failid ldif failideks käsuga:
slaptest -f skeemi_konverteerimine.conf -F /tmp/konverteeritud
4.järgmiseks on vaja skeem andmebaasi laadida, selleks on kaks võimalust:
- 1.laadida skeemifailid sarnaselt muudele ldif failidele ldapadd tööriistaga. Selleks tuleb eelnevalt muuta konverteeritud ldif-faili selliseks, et faili esimesel ja kolmandal real ei oleks enam skeemi järjenumbrit({number}), ning faili lõpust tuleb kustutada kõik read peale „structuralObjectClass“ atribuuti (kaasa arvatud). Seejärel laadida fail käsuga:
ldapadd -x -D <administraatoriCN>,cn=config -W -f <faili asukoht>
- 2.kopeerida skeemi ldif-fail cn=config/cn=schema kataloogi, kus need peale serveri restarti kasutusele võetakse.
LDAP-i õiguste mudel ja õiguste jagamine
Õppematerjal põhineb OpenLDAP administraatori teejuhi refereeringul.
Kataloogiteenus võib sisaldada erineva tundlikusega (sensitivity) informatsiooni, mistõttu võibolla vajalik, et mingile osale informatsioonist peavad kõik piiranguteta ligi saama, seevastu teine osa informatsiooni peab olema nähtav väga väiksele osale kasutajatest.
OpenLDAP-il on veidi erinev ligipääsu seadistusmeetod vana (e. seadustusfailist) ja uue (e. andmebaasist) seadistamise jaoks, seda lähtuvalt seadistuse asukohast (kirjutamisest seadistusfail vs. andmebaasi importimisest). Õiguse andmise sisuline osa on peaaegu sama, erinevus vaid andmebaasi importimisel vajalik lisarida faili alguses,mida seadistusfaili puhul ei kirjutata:
<ligipääsu direktiivi nimetus> ::= access to <ligipääsuobjekt- vt Tabel 3>
[by <ligipääsusubjekt- vt Tabel 4> [<ligipääsutase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+ |
- Valem 1- Ligipääsuõiguse reguleerimine konfiguratsioonifailist seadistamisel
olcAccess: <ligipääsu direktiivi nimetus>
<ligipääsu direktiivi nimetus> ::= to <ligipääsu objekt- vt Tabel 3> [by <ligipääsu subjekt- vt Tabel 4> [<ligipääsu tase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+ |
- Valem 2- Ligipääsuõiguse reguleerimine andmebaasi seadistust kasutades
Eelpool kirjeldatud valemid (Valem 1 ja 2) koosnevad neljast komponendist: ligipääsuobjekt - Tabelisse 3 on kogutud kõik võimalused, millega määratakse käsitletavat kirjet või atribuuti- ehk mille ligipääsu reguleeritakse; ligipääsusubjekti- Tabelis 4 on kirjeldatud võimalikud varjandid, kuidas määrata kasutajat/kasutajagruppi, kellele ligipääsu muudetakse; ligipääsutase- Tabelis 5 on loetletud erinevad ligipääsuõiguse liigid; erinev kontrolli võimalu- Tabelis 6 on loetletud täiendavad.
Tabel 3 Ligipääsuobjekti määramise viisid
Tähis | Tähendus |
* | Kehtib kõigi kirjete kohta |
dn.regex=<regex> | DN piiratakse kasutades regulaaravaldisi |
dn.exact=<regex> | DN piiratakse täpse DN'ga kasutades regulaaravaldisi- vaata näiteid! |
käsitlusala: base=<DN> | Base ühitub ainult näidatud DN-i kirjega |
käsitlusala: one=<DN> | One ühitub ainult kirjetega, mille DN on nendest hierarhiliselt kõrgemal |
käsitlusala: subtree=<DN> | Subtree ühitub kõigi alampuu kirjetega, mille kõrgeimal hierarhjal paiknev kataloog (juurkataloog) on antud DN |
käsitlusala: children=<DN> | children ühitub kõigi DN all olevate kirjetega (aga mitte DN-i poolt nimetatud kirjega) |
[filter=<ldapfilter>] | Kirjed valitakse LDAP filtriga, sarnaselt ldapsearch tööriista filtri kasutamisele |
[attrs=<attrlist>] | Konkreetsete atribuutide loetelu, atribuudid eraldatakse üksteisest komaga |
Ligipääsuobjekti saab valida kas DN-i või LDAP filtrit kasutades. seejuures saab ühe diretkiivi piires olla vaid üks ligipääsuobjekt, millega võib olla seotud mitmeid subjekte, kellest igaühele on omistatud 1 ligipääsutase.
Tabel 4 Ligipääsusubjekti määramise viisid
Tähis | Tähendus |
* | Kõigile kaasaarvatud anonüümsed ja autentidud kasutajad |
anonymous | Autentimata kasutajad |
users | Autentitud kasutajad |
self | Kasutaja, mis on seotud kirjega |
.regex]=<regex> | Kasutajate määramine kasutades regulaaravaldisi |
one | subtree | children>=<DN> | Kasutajate määramine käsitlusalaga (vt.Tabel 3 käsitlusalade juhiseid) |
[dnattr=<attrname>] | Kasutaja määramine atribuudi olemasolust lähtuvalt |
.regex]]=<regex>] | Kasutaja määramine kasutajagruppi kuulumise alusel |
.regex]=<regex>] | Võrguaadressipõhine ligipääs |
.regex]=<regex>] | Domeenipõhine ligipääs |
.regex]=<regex>] [sockurl[.exact | .regex]=<regex>] |
Ligipääsu on võimalik anda taseme nimetusega (näiteks write) või privileegi nimetusega. Seda on oluline teada, sest andes write taseme, antakse automaatselt ka kõik madalama taseme õigused (read, search, compare, auth ja disclose). Kuid on võimalik anda ka vaid üksikuid privileege(vt. Tabel 5).
Tabel 5 Ligipääsutasemed
Tabel 6 Kontroll Ligipääsuõiguseid saab anda kas globaalselt üle kõigi LDAP andmebaaside või iga andmebaasi kohta eraldi. Ligipääsuõiguseid otsitakse kõigepealt andmebaasist, kus kirje paikneb. Ligipääsuõiguste andmisel on väga oluline direktiivide kirjapaneku järjekord, sest õiguste kontrollimisel käiakse nimekiri samas järjekorras läbi ja peatutakse esimesel võimalusel, kui ligipääsubjekti vaste leitakse. Kui ligipääsuõiguste seas ei ole ligipääsuobjektile vastavat direktiivi siis vaikesätetest antakse kirje lugemise õigus. Selleks et infole saaks ligi vaid need kellele see on mõeldud, soovitatakse viimaseks direktiiviks „access to * by * none“
Järgnevalt on toodud näiteid ligipääsuõiguse andmise kohta, kommentaarimärgi(#) taga on lühike seletus antud õiguse kohta. Soovitus on püüda ära arvata, mis õiguseid muudetakse ja milliseks, ning seejärel kontrollida kommentaarimärgi tagant! olcAccess: to * by self write by anonymous auth by * read
- muudetakse kõigi kirjete õigusi järgnevaks: 1)kasutaja saab endaga seotud kirjeid muuta; 2)autentimata kasutajad peavad ennast autentima(sisse logima); 3)kõik saavad lugeda- kuna oluline on subjektide järjekord, siis direktiivi piires on objekti(antudjuhul kõigi kirjete) lugemiseks vaja ennast autentida! Ehk selle direktiivi piires on viimane rida sama mis „by users read“ tulenevalt punktist 2!
olcAccess: to attr=userPassword by self =xw by anonymous auth by * none
- Piiratakse ligipääsu atribuudi 'userPassword' järgmiselt: 1)kasutaja saab oma parooli uuendada (kuid mitte lugeda); 2)autentimata kasutajad peavad ennast autentima(sisse logima); 3)kõikidel teistel puudub ligipääs.
Käsitlusala (scope) kasutamise näide, erinevuse väljatoomiseks: olcAccess: to dn.children="dc=example,dc=com" by * search olcAccess: to dn.children="dc=com" by * read
- Lugemisõigus antakse dc=com alampuule, välja arvatud dc=example,dc=com alampuule, millele antakse otsingu õigus. Kuna kumbki direktiiv ei sobi dc=com jaoks, siis sellele õiguseid ei anta. Selleks, et saaks alampuudest otsida, peab olema lugemisõigus „dc=com“ kirjetele
Kui direktiivide järjekord on oluline: olcAccess: to dn.subtree="dc=example,dc=com" attrs=homePhone by self write by dn.children=dc=example,dc=com" search by peername.regex=IP:10\..+ read olcAccess: to dn.subtree="dc=example,dc=com" by self write by dn.children="dc=example,dc=com" search by anonymous auth
- näide kehtib „dc=example,dc=com“ alampuus olevate kirjete kohta. Kõikidel atribuutidel välja arvatud „homePhone“ lubatakse enda kirjet muuta „dc=example,dc=com“ alampuus.
Gruppide õiguste piiramine: Võtame aluseks, et on olemas grupp (administrators), mille defineerib järgmine LDIF vormingus sissekanne: dn: cn=administrators,dc=example,dc=com cn: administrators of this region objectclass: groupOfNames
- eelmine rida on oluline grupi ligipääsu andmisel
member: cn=fred blogs,dc=example,dc=com member: cn=somebody else,dc=example,dc=com
Üks võimalus gruppi liikmetele ligipääsu anda on kasutada klauslit by group: olcAccess: to dn.children="dc=example,dc=com" by group.exact="cn=administrators,dc=example,dc=com" write
Või sama asi objektiklassi ja atribuuti kasutades: olcAccess: to dn.children="dc=example,dc=com" by group/groupOfNames/member="cn=administrators,dc=example,dc=com" write
- Sellistel kujudel saavad kirjutamisõiguse grupi liikmed, kuid kui „cn=somebody else,dc=example,dc=com“ on omakorda grupi nimi, siis selle grupi liikmetele õigused ei laiene! Alamgrupi liikmeid on võimalik kaasata järgnevalt:
olcAccess: to dn.children="dc=example,dc=com" by set="[cn=administrators,dc=example,dc=com]/member* & user" write
- “/member*“ tähendab, et kontrollitakse member atribuuti ja * tähendab, et kontrollitakse rekursiivselt (st. ka gruppide liikmeid), seejärel kontrollitakse, kas autentitud kasutaja DN vastab mõnele eelnenud päringu käigus saadud DN väärtusele. Kui vastab antakse kirjutamise õigus.
Loe lisaks originaalmaterjali OpenLDAP-i administraatori teejuhist[LDAP Access Control].
Linux operatsioonisüsteemides LDAP-ga autentimise seadistamine
Juhend põhineb kuutõrvaja wikil, mida on mõnevõrra kohandatud Ubuntu-ga kasutamiseks.
Paigaldada tuleb paketid:
libnss-ldap, libpam-ldap ja ldap-auth-config.
Paigaldamise käigus küsitakse järgmisi küsimusi, kooloni järel on soovitav vastus (tumedal taustal) ja sulgudes põhjendus:
- OpenLDAP serveri IP aadressi või masina nimi: ldap://localhost või ldap://127.0.0.1 (OpenLDAP server asub samas virtuaalmasinas);
- distinguished name (DN): dc=naide,dc=ee ( näiteülesande DN on selline);
- LDAP versioon: 3 (uuem versioon);
- kohaliku masina root kasutajale LDAP andmebaasi administraatori õigus: ei (seab ohtu kogu LDAP andmebaasi turvalisuse, kuna pääsedes ükskõik millise masina root kasutajaks on võimalik ka kohene ligipääs LDAP andmebaasile administraatori õiguses);
- kas LDAP andmebaasile ligipääs nõuab sisselogimist: ei (antud õppematerjalis on andmebaasile ühendumine ilma autentimiseta);
Eelpool olevate vastuste põhjal luuakse /etc/ldap.conf fail. LDAP kasutaja saab nüüd süsteemi sisse logida, kuid tal ei ole kodukataloogi, seega peaks kõigile kasutajatele kodukataloogid tegema või lisama järgmise rea /etc/pam.d/common-session faili lõppu, et süsteem ise puuduolevad kodukataloogid looks:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0066
Lisaks on kohustuslikud Linuxisse logivatel kasutajatel atribuudid (uid, cn, loginshell, uidnumber, gidnumber, homedirectory, userpassword) ja objektiklassid (account, posixaccount ja top)[2]
Linux ja UNIX operatsioonisüsteemide kasutajate migreerimine
Juhend põhineb Wiki artiklil ja Antti Andreimann LDAP-i õppematerjalil. Kasutajate ülekandmine lokaalsest kasutajate hoidlast OpenLDAPi Paigaldame migrationtools paketi.
apt-get install migrationtools
Järgnevalt peame veidi muutma migrationtools-i seadistusfaili:
/usr/share/perl5/migrate_common.ph
Kus tuleb asendada järgmised parameetrid enda LDAPi seadistusele vastavaks:
$DEFAULT_MAIL_DOMAIN = "naide.ee"; $DEFAULT_BASE = "dc=naide,dc=ee";
Kopeeri lokaalse masina kasutajaandmete andmed ajutisele pinnale, et neid saaks korrastada edaspidise tegevuse jaoks:
cp /etc/passwd /tmp/ cp /etc/group /tmp/
Redikeeri kopeeritud faile nii, et sinna jääks ainult nende kasutajate andmed, kes reaalselt võiksid soovida arvutisse sisse logida! Tekita andmebaasi juurkataloog:
/usr/share/migrationtools/migrate_base.pl > ~/base.ldif
Redikeeri faili ~/group.ldif nii, et sinna jääks alles ainult root, ou=People, ou=Groups ja ou=Aliases ! Seejärel ekspordi uued väärtused käskudega:
/usr/share/migrationtools/migrate_group.pl /tmp/group ~/group.ldif /usr/share/migrationtools/migrate_passwd.pl /tmp/passwd ~/passwd.ldif
Nüüd on meil kasutajad ja grupid konverditud LDAP ldif formaati. Need omakorda tuleb importida LDAP-i databaasi kasutades järgmisi käske:
ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/base.ldif ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/group.ldif ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/passwd.ldif
Varundamine ja taastamine
Teenuse varundamine
Reeglina tehakse varukoopiaid eraldi seadistusfailidest ja andmetest. Neid hoitakse teis(t)el andmekandja(te)l ja teisaldatakse suuremates infosüsteemides automaatprotseduuridega.
Õpiobjekti raames kajastatakse varundamist vaid varundamist vajavate andmete kontekstis: seadistamisfailid ja andmebaas.
Põhineb EIK vikil.
Varukoopiate hoidmiseks loome kataloogid /var/backup/ldap/db ja /var/backup/ldap/db kataloogi järgmise käsuga:
mkdir -p /var/backups/ldap/db/ /var/backups/ldap/konf
Järgmiseks tuleks luua varukoopia andmebaasist, selleks kasutatakse tööriista slapcat, mis väljastab kogu andmebaasi sisu, selle suuname faili, mille saab kohe ka kokku pakkida. Vajalik käsk selleks on järgmine:
slapcat | gzip > /var/backups/ldap/db/backup.`date '+%Y%m%d'`.ldif.gz Käsu lõpus olev `date '+%Y%m%d` võimaldab automaatselt luua käesoleva päeva andmed formaadis aasta.kuu.päev.
Seadistusfailid asuvad /etc/ldap/ kataloogis, need saab kokku pakitud ja kuupäeva infoga varustatud järgmise käsuga:
tar czvf /var/backups/conf_backup.`date '+%Y%m%d'`.tgz /etc/ldap/*
Teenuse taastamine
Põhineb EIK vikil
Teenuse taastamise vajaduse tekkides tuleb reageerida vastavalt olukorrale. Õpiobjekti raames kajastatakse teenuse taastamist vaid andmebaasi viimase varundatud andmete laadimise ja seadistusfailidest vigade otsimise kontekstis!
Andmebaasi taastamine Pakime viimast andmebaasi varukoopiat sisaldava faili lahti, selleks sobib näiteks käsk:
gunzip -c /var/backups/ldap/backup.<kuupäev>.ldif.gz > /var/backups/ldap/backup.<kuupäev>.ldif
Kuna tavatingimustes, on andmebaasid suured, siis kasutatakse taastamisel andmete importimiseks serveritööriista slapadd. Slapadd nagu ka teised kataloogiteenuse serveri tööriistad vajavad töötamiseks baasi ainukasutusõigust, selleks peab slapd'i seisma panema:
/etc/init.d/slapd stop slapadd -b <suffix> -l /var/backups/ldap/backup.<kuupäev>.ldif
Seadistusfailide taastamine
Taastamiseks tuleb viimase seadistusfailide varukoopia fail lahti pakkida ning vastavalt olukorrale taastada vajalikud failid:
tar xvf /var/backups/ldap/etc/conf_backup.<kuupäev>.tar
Läbikäidud probleemid- õpi teiste vigadest
Kui seadistamise käigus ei küsitud LDAP administraatori parooli, siis tuleb see ise käsitsi lisada- ka korduval seadistamisel ei esitata seda võimalust. Selleks korrigeeri failides:
/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif /etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif
ja tekita sinna pärast andmebaasi atribuuti (olcDBDirectory järgi) read: olcRootDN: cn=admin,cn=config – sellega määratakse ära administraatori nimi ja skeem olcRootPW: parool – administraatori parool, õppimiseks käib tekstiline parool ka, kuid töökeskkondades tuleks kasutada parooliräsi, selle saad käivitades:
ldappasswd -s <parool>
OpenLDAP serveri paigaldamisel ei looda baasiparameetrite faili /etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif.
On vaja õpilasel see ise luua.
Kõigepealt loome kataloogi kuhu server salvestab andmebaasi failid:
mkdir /var/lib/ldap/naide
Turvalisuse huvides peab selle kataloogi omanikuks ja grupiks olema „openldap“ kasutaja:
chown openldap:openldap /var/lib/ldap/naide/
Loo fail, kuhu sisse kirjuta loodava baasi seaded (vaata alla poole), näitefaili nimi koos asukohohaga:
/etc/ldap/slapd.d/cn=config/olcDatabase={1}dbd.ldif
Kui kasutajate baasi konfiguratsioon on loodud peab LDAP serverile tegema taaskäivituse ja peale seda kontrolli kas porti kuulatakse, selleks sisesta terminali: teenuse restartimiseks:
/etc/init.d/slapd restart
kontrolli, kas porti(389) kuulatakse:
netstat -anp|grep 389
LDAP bdb baasi näidis konfiguratsioon
dn: olcDatabase={1}bdb objectClass: olcBdbConfig objectClass: top olcDatabase: {1}bdb olcDbDirectory: /var/lib/ldap/naide/ olcSuffix: dc=naide,dc=ee olcRootDN: cn=admin,dc=naide,dc=ee olcRootPW: parool olcLogLevel: 256 structuralObjectClass: olcBdbConfig olcDbCheckpoint: 128 10 olcDbIDLcacheSize: 1500 olcDbDNcacheSize: 500 olcDbConfig: {0}set_cachesize 0 33554432 0 olcDbConfig: {1}set_lg_bsize 2097512 olcDbConfig: {2}set_flags DB_LOG_AUTOREMOVE olcMonitoring: FALSE olcDbIndex: cn,sn pres,eq,sub olcDbIndex: entryCSN eq olcDbCacheFree: 300
Skriptid
Õpiobjekti osaks on ka laboriülesande loomise ja lahenduse kontrollimise skripti esialgne varjant, mida tuleks parandada ja täiendada!skriptide pakk