Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Bu makalenin farklı dillerde bulunduğu adresler: English  Castellano  Deutsch  Francais  Nederlands  Turkce  
[Photo of the Author]
by

About the author:

Atif is a chameleon. Sistem Operetorunden programciya, ogretmenden proje yoneticisine kadar bir isin basarilmasi icin ne gerekiyorsa o role burunur.
Genellikle dizustu bilgisayari ile sinemada film izlerken programlama yapar.
Atif, Linux'a, kaynak kodu topluluguna ve projelere ogrendiklerinden dolayi cok sey borclu oldugunu dusunuyor.
Kendisi hakkinda daha fazla bilgi sayfasinda bulunabilir.

Content:

Linux altinda LDAP'a giris

openLDAP

Ozet:

Bu yazimizda en sevdigimiz OS Linux ile LDAP'i ve onun uygulamalarini ogrenecegiz.

LDAP hakkinda bolca kaynak bulundugundan onlarin tekrarini yapmayacagim. Bununla beraber ileri seviyede LDAP terimlerinden; semalardan, v2 ile v3 arasindaki farklardan bahsetmeyecegim. Zaten bunlar hakkinda cok bilgim yok. Benim yapacagim LDAP'in ne oldugunu, uygulamalarini ve faydalarini kisaca anlatmak olacak.

Ben bir LDAP uzmani degilim. Aslinda bir LDAP acemisiyim. Burada kisaca LDAP ile ne yaptigimi ve nasil yaptigimi yazacagim. Bir zamanlar benim oldugum gibi aklinizi cok karistirmamaya calisacagim.

Soru: Eger bir acemi iseniz niye bu konu hakkinda yazi yaziyorsunuz.
Yakinlarda kolejden bir projede yardima ihtiyacim olmustu. Projenin ana konusu LDAP idi. Bana Perl, mesaj sunuculari vs. de yardimci oldu fakat LDAP hakkinda hicbir sey bilmiyordu. Bu yuzden LDAP'a her girmek istediginde kafasi daha cok karisiyordu.
Proje icin LDAP hakkinda cok az bilgi yeterli olacagindan ona yarim saatilik hizli bir kurs verdim ve hersey yoluna girdi. Kavramlar oldukca basit, hepsi yuzeysel, sadece biraz dikkat veya eglenceli ornekler yeterli.

Bu yazimda aynisi yapacagim.

Kaynaklar kisminda LDAP hakkinda daha fazla bilgiywe ulasabileceginiz adresler var.



 

LDAP nedir?

LDAP'in acilimi "Lightweight Directory Access Protol" dur ve bir klasor servisidir. Aliskin oldugumuz dosya sistemine, telefon numaralarina baktigimiz telefon rehberine, SUN'in NIS'ine (Network Information Service), DNS'e (Domain Name Service) ve komşunuzun bahçesinde gördügünüz agaçlara çok benzer bir yapisi vardir.

LDAP özgün bir veritabnidir. LDAP'in normal bir veritabani programi oldugunu dusunmek yanlistir. LDAP veri okumak icin özellestirilmisdir. Okumalar, LDAP'da yazmadan cok daha fazla kullanilir.

Tüm bu servislerin ortak yani nedir?
Hepsi bir verilen bir kritere gore sorgulama yaparlar.

Örnekler.

Dosyalama sistemi dizinleri
ls /etc
Bu komut, /etc klasorundeki tüm dosyalari ve alt klasörleri verecektir.

ls /etc/p*
Bu, 'p' ile baslayan tüm dosya ve alt klasörleri verecektir.

find /usr/local/apache -name index.html
Bu, "/usr/local/apache" klasoru altindaki index.html isimli tum dosya ve klasorleri arayacaktir.

NIS Klasörü
ypcat passwd
Bu, NIS veritabnindaki tüm kullanici adlarini, parolalari, kullanici numaralarini (id) vs. yi verecektir.

ypmatch atif passwd
Bize password dosyasindan atif kullanicisinin bilgilerini verecektir.

DNS Klasörü
nslookup www.linuxfocus.org
Bize dns veritabanindan www.linuxfocus.org ile ilgili ip adreslerini verecektir.

nslookup -type MX linuxfocus.org
Bize dns veritabanindaki linuxfocus.org ile ilgili sadece MX bilgisini verecektir.

LDAP Klasörü
(Asagida, buna detayli olarak bakacagiz.)

ldapsearch uid=aghaffar
Bize aghaffar kullanicisi ile herkese acik olan tüm bilgiyi verecektir.
Unix'de benzer sekilde find / -uid aghaffar komutu

ldapsearch uid=aghaffar mail
Bu sadece aghaffar kullanicisinin mesajlarini verecektir.

 

Klasör tabani veya kök

Yukarida belirttigimiz her servisin bir baslangic noktasi; taramaya baslayacagi bir yer belirtildi. Bu baslangiç noktasi genellikle"kök" (root) idi. Bu bir hireyarsideki kök'e benzer.
Her agacin bir kök'ü vardir. Daha sonra dallara ayrilir ve daha cok dala ve yapraga ve çiçege vs.

Her kök'ün alt dallari vardir. Dosya sistemi için bunlar diger alt klasörler ve dosyalardir.
Her bir dalin nitelikleri olabilir.
Örnegin dosyalama sisteminin dallarinin (alt klasörlerin ve dosyalarin) takip eden nitelikleri vardir. Asagida dosyalama sistemini gösteren bir sema gösterilmistir. Nitelikler, ls -ld /usr komutunun çiktisini ifade eder. drwxr-xr-x 29 root root 749 Jun 17 23:45 /usr

Simdi LDAP hireyarsini gosteren bir diyagram.

Bu diyagram hakkinda birazdan duracagiz.

 

Ayrilmis Isimler

Gerçek agacin tersine, dosyalama, LDAP ve Telefon Rehberinin Hireyarsisinin her dalinin en az bir tane tek(unique) niteligi vardir. Bu alt dallari birbirinden ayirmamizi saglar.

Dosyalama sisteminde bu nitelik tam adresiyle beraber dosyanin (veya klasörün) adidir. Örnegin
/etc/passwd Burada passwd dosyasi adresiyle beraber dosyalama sisteminde tektir. Tabiy ki baska klasörlerde (/usr/passwd, /opt/passwd) ayni dosya bulunabilir, fakat tam adresiyle beraber herbiri sistemde tektir.
DNS sistemindeki FQDN (Fully Qualified Domain Name) de benzer sekilde tek (unique) giris vardir. ( Tabiyki ayni FQDN'e bir cok ip atayabilirsiniz. )

LDAP'da girdileri farkli kilan isin "dn" ayrilmis isimdir(Distinquished Name). Bu isim bir klasörde her zaman farklidir. Örnegin, benim dn'im "uid=aghaffar, ou=People, o=developer.ch"
Tabiyki ayni uid'li bir dn bulunabilir fakat ancak su sekilde olabilir "uid=aghaffar, ou=Administrators, o=developer.ch"
Bu dosyalama sistemindeki /etc/passwd ve /usr/passwd iliskisine benzer.
Bunalrin hireyarsisinde tek olan nitelik "ou=Administrators, o=developer.ch" ve yine tek nitelik olan uid bulunmaktadir, "ou=People, o=developer.ch".
Bunlar çakismaz.

 

LDAP Sunuculari

Bugün merketlerden bircok LDAP sunucusu temin edebilirsiniz ve bunlarin bircogu Linux üzerinde calisacaktir.
Bu yazida icin openLDAP'i kullanacagiz.

Niçin openLDAP'i sectim ? Nicin openLDAP'i secmelisiniz ?

open LDAP'i http://www.openldap.org adresinden temin edebilirsiniz. Kaynak paketini indirip kendiniz kurabilirsiniz veya zaten kullanmakta oldugunuz Linux dagitiminda bulundugunu görebilirsiniz. Eger bulunuyorsa bos zamaninizi ayirip derlenmis halini yukleyebilirsiniz.
Ben openLDAP'i SuSe6.x ve RedHat6.x üzerinde test ettim.

 

LDAP klasörünün olusturulmasi

Bu bölümde bir LDAP sunucusunu adim adim yükleyecegiz.
Adimlar:

 

openLDAP'i indirip kurma

Daha önce belirtildigi gibi, ister kaynak kodlari www.openldap.com dan indirip dokümanlarina göre bilgisayariniza yükleyin ister derlenmis paketi yükleyin. ( paketleri yükleme ve kaynak kodun nasil derlenecegi bu yazinin konusu disidir.)

 

LDAP sunucusunu ayarlama

Bu örnekte, linusfocus.org için bir LDAP klasörü olusturacagim.
Kendisiteniz için isimleri ve diger gerekli bilgileri degistirin. Ana Sunucuyu ayarlamak için slapd.conf ve ldap.conf dosyalarini en sevdiginiz editörle açmalisiniz.
Benim sunucumda bu dosyalar /etc/openldap içinde. Sizinkiler /usr/local/etc/openldap içinde olabilir. Dosyalarin yeri Linux dagitiminiza göre veya eger kendiniz derlediyseniz kurulum sirasindaki ayarlariniza göre degisebilir.

        
######### /etc/openldap/slapd.conf ###################################
# Asagidakiler benim SuSe 6.4 ümde öntanimli idiler.
# Bunlar üzerinde bölüm II ve bölüm III de daha fazla durulacaktir.
# Muhtemelen ancak o zaman ne olduklarini anlayabilecegiz. :)

include         /etc/openldap/slapd.at.conf
include         /etc/openldap/slapd.oc.conf
schemacheck     off

pidfile         /var/run/slapd.pid
argsfile        /var/run/slapd.args

#######################################################################
# ldbm database definitions
#######################################################################

# Bu hangi cins veeritabanini kullanacagimizi belirtir. Ön tanimli ldbm olarak kalsin.
database        ldbm

# Son ek veya kök klasör. Bu LDAP klasörünüzdeki en üst seviye.
suffix          "o=linuxfocus.org"

# ldap lbs'nin nerede tutulacagini belirtir.
directory       /var/lib/ldap

# Klasör yöneticisinin ayrilmis ismi.
rootdn          "cn=Manager, o=linuxfocus.org"

# ldap yöneticisinin sifresini düz yazi olarak bulundurmak kötü olabilir fakat
# baslangicta LDAP'a alismak icin bu sekilde kullanacagiz.
rootpw          secret


# Simdilik hepsi bu.

Editörünüzle /etc/openldap/ldap.conf dosyasini açin.
Bu dosya ldap istemcisinde bulunur ( Ayni makinayi hem sunucu hemde istemci olarak kullanacagiz. Bunlar ayni veya ayrik olabilirler.)
Bu dosya genellikle ldap uygulamalari tarafindan okunur. Örnegin ldapdelete, ldapadd, vs.

##########/etc/openldap/ldap.conf#########
#
# LDAP Öntanimli Ayarlari
#

# Datayli bilgi için ldap.conf(5)
# Bu dosya herkes tarafindan okunabilmeli.

# ldap sunucusunu belirtir. Makina adi veya ip kullanabilirsiniz.
host 127.0.0.1

# Bu bizim aramaya baslanmasini istedigimiz kök klasör
# we will use the top node in our configuration
# it need not be the top level node in the directory, for example
# we can use base = ou=users, o=linuxfocus.ch
# if we do that then all our searched will start from that branch of the tree
base  o=linuxfocus.org
# thats all
Simdi ldap servisini baslatalim
Eger SuSe'den yüklediginiz derlenmis paketi kullaniyorsaniz, su sekilde baslatabilirsiniz
/etc/rc.d/ldap start
RedHat'da sanirim söyle
/etc/rc.d/init.d/ldap start
Eger kaynak kodu kendiniz derleyerek kurduysaniz ve ön tanimli ayarlari kullandiysaniz, su sekilde baslatabilirsiniz
/usr/local/libexec/slapd & veya nereye kurduysaniz oradan. slapd'yi bulup calistirin.

 

Yeni yüklenmis LDAP sunucusuna veri ekleme

Su andan itibaren calisan bir LDAP sunucunuz var ve veri ile doldurulmaya hazir.
ldap sunucusunu veri ile doldurmanin standart yolu bir LDIF (LDAP Directory Interchange Format)* dosyasi olusturmaktir. Daha fazla bilgi için ldif'in man sayfalarina bakabilirsiniz.
Basitçe, ldif, ldap girdilerinin salt yazisal bir temsilidir. Bu girdiler insan tarafindan okunabilir ve farkli üreticilerin sunuculari tarafindan veya farkli isletim sistemlerindeki sunucular tarafindan ortak kullanilabilir.
* Evet, artik baska bir format. Neden LDIF yerine XML kullanilmadigini merak ediyorum.

So without further ado lets create this ldif file. Biraz hatirlatma.

  • ldif dosyasindaki her girdi/kayir bir bosluk karakteri ile ayrilir.