LDAP poslužitelj OpenLDAP
Hint
Za više informacija proučite službenu dokumentaciju.
OpenLDAP je popularno programsko rješenje otvorenog koda za implementaciju Lightweight Directory Access Protocol (LDAP) servisa.
Do verzije 2.3 OpenLDAP programskog rješenja predefinirane postavke su se nalazile u slapd.conf
datoteci (tekstualni zapis) te su one bile učitavane u radnu memoriju prilikom podizanja LDAP servisa. Loša strana toga je bila ta što se takve informacije nisu mogle dinamički mijenjati nego je za svaku promjenu bilo potrebno ponovno pokrenuti OpenLDAP servis.
Prilikom prelaska na verziju 2.3 OpenLDAP programskog rješenja predstavljen je novi način pohranjivanja predefiniranih postavki. One se sada nalaze u LDAP bazi podataka koja je implementirana putem tekstualnoga zapisa na disku. Ovakav način korištenja predefiniranih postavki omogućuje djelomično mijenjanje istih tijekom rada samog servisa. Predefinirane postavke koje se učitavaju u takvu bazu nalaze se zapisane u obliku LDIF datoteke na disku.
Sam zapis tekstualne baze na disku nalazi se kao struktura direktorija u stablu podirektorija slapd.d
. Prelaskom na novi način pohranjivanja konfiguracije došlo je do promjena načina rada s istom te se umjesto ažuriranja podataka u tekstualnoj datoteci promjene implementiraju koristeći standardne LDAP funkcije, a ručno ažuriranje LDIF datoteka u sustavu podirektorija slapd.d se nikako ne preporuča.
Instalacija
Instalacija paketa OpenLDAP-a vrši se pomoću naredbe:
# apt-get install slapd ldap-utils
te se korisnika prilikom instalacije traži da unese lozinku za administratora u LDAP imeniku.
Konfiguracija
Nakon što se program uspješno instalirao, potrebno ga je konfigurirati. Konfiguraciju pokrećemo naredbom:
# dpkg-reconfigure slapd
te nam se otvara prozor za konfiguriranje paketa.
Prvo pitanje koje nam postavlja je da li želimo da se preskoči konfiguracija servera (da se ne kreira inicijalna konfiguracija baze podataka). Odgovorio sam 'ne', znači želim da se kreira inicijalna konfiguracija baze podataka.
Sljedeće moramo upisati DNS ime domene. Ja sam se odlučio za local
.
Nakon toga moramo upisati ime organizacije (također sam se odlučio za local
) te nas ponovno pita da unesemo lozinku za administratora u LDAP imeniku.
Sljedeće na redu je konfiguracija baze podataka (odabir između BDB i HDB). Savjetuje nas da odaberemo HDB te sam ja to i napravio.
Nakon toga su još tri pitanja: želimo li da se baza podataka ukloni kada se ukloni slapd
(odgovorio sam 'ne') te želimo li omogućiti LDAPv2 protokol (odgovorio sam 'ne').
Nakon što smo postavili početnu konfiguraciju, možemo pretražiti koje podatke za sada imamo u svome imeniku. No, kako bi vidjeli rezultate za ovu domenu koju smo naveli moramo navesti bazu u datoteci /etc/ldap/ldap.conf
. Ime domene se piše s oznakom dc
. Tako se i ime razdvaja ako je odvojeno točkom.
BASE dc=local
URI ldap://localhost
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
Nakon toga možemo pretražiti imenik naredbom
$ ldapsearch -x
te ćemo vidjeti našu organizaciju.
Rad u programu
U imeniku možemo dodavati organizacijske jedinice te sam se ja odlučio nadodati organizacijsku jedinicu grupa i organizacijsku jedinicu ljudi. Kako bi mogli nadodati te organizacijske jedinice, moramo ih prvo zapisati u LDIF datoteci u određenom formatu gdje napišemo kojoj organizaciji ih želimo pridružiti, njezino ime i klasu koja je organizacijska jedinica.
dn: ou=People,dc=local
ou: People
objectClass: organizationalUnit
dn: ou=Group,dc=local
ou: Group
objectClass: organizationalUnit
Kako bi nadodali zapise u LDIF datoteci, moramo pokrenuti naredbu za dodavanje zapisa:
$ ldapadd -x -D "cn=admin,dc=local" -W -f ou.ldif
gdje kažemo koju akciju želimo napraviti (add
), kojoj organiziciji radimo promjene, te koju LDIF datoteku koristimo.
Nakon toga možemo nadodati neku grupu i korisnika, primjerice ovakvom LDIF datotekom:
dn: cn=matko,ou=group,dc=local
cn: matko
gidNumber: 20000
objectClass: top
objectClass: posixGroup
dn: uid=matko,ou=people,dc=local
uid: matko
uidNumber: 20000
gidNumber: 20000
cn: Matko
sn: Matko
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
homeDirectory: /home/matko
Za grupu navodimo njezino ime i id grupe (gidNumber
) između ostaloga, a za korisnika uz ime i id korisnika navodimo i id grupe kojoj pripada kao i kućni direktorij. To su neke osnovne postavke koje se navode za grupu i korisnika.
Također možemo dodati neku grupu (npr. grupu UMS
sa id-om grupe 30000
) te korisnike koji pripadaju toj grupi (navedemo da imaju taj id grupe). Tada naredbom
$ ldapsearch -x gidNumber=30000
možemo pretražiti koji korisnici pripadaju toj grupi te dobiti informacije o tim korisnicima kao i o samoj grupi. Izlaz naredbe ldapsearch
je oblika:
# extended LDIF
#
# LDAPv3
# base <dc=local> (default) with scope subtree
# filter: gidNumber=30000
# requesting: ALL
#
# ums, Group, local
dn: cn=ums,ou=Group,dc=local
cn: ums
gidNumber: 30000
objectClass: top
objectClass: posixGroup
# irena, People, local
dn: uid=irena,ou=People, local
uid: irena
uidNumber: 20002
gidNumber: 30000
cn: Irena Hartmann
sn: Irena Hartmann
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
homeDirectory: /home/irena
# domagoj, People, local
dn: uid=domagoj,ou=People, local
uid: domagoj
uidNumber: 20003
gidNumber: 30000
Također možemo modificirati podatke nekog već dodanog korisnika kako bi ga priključili nekoj drugoj grupi ili mu promjenili neke osobne podatke. Zapis u LDIF datoteci tada je drugačijeg formata. Moramo navesti za kojeg korisnika želimo mijenjati podatke, napisati tip promjene (dodavanje nove karakteristike, brisanje karakteristike ili izmjena postojeće karakteristike) te ovisno o tomu reći za koju karakteristiku to radimo i vrijednost koju želimo upisati.
dn: uid=toni,ou=people,dc=local
changetype: modify
replace: gidNumber
gidNumber: 30000
-
replace: cn
cn: Toni Butkovic
-
replace: sn
sn: Toni Butkovic
Korisnika tada mijenjamo naredbom:
$ ldapmodify -x -D "cn=admin,dc=local" -W -f userToniToUms.ldif
iz čega vidimo da se mijenja samo naziv akcije.
Author: Matko Abramović, Vedran Miletić