Bu makalenin farklı dillerde bulunduğu adresler: English Castellano Deutsch Francais Nederlands Turkce |
by Atif Ghaffar About the author:
Atif is a chameleon. Sistem Operetorunden programciya, ogretmenden proje yoneticisine kadar bir isin basarilmasi icin ne gerekiyorsa o role burunur.
Content:
|
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'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.
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.
drwxr-xr-x 29 root root 749 Jun 17 23:45 /usr
Simdi LDAP hireyarsini gosteren bir diyagram.
Bu diyagram hakkinda birazdan duracagiz.
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.
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 ?
Bu bölümde bir LDAP sunucusunu adim adim yükleyecegiz.
Adimlar:
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.)
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.
##########/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 allSimdi ldap servisini baslatalim
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.
dn: o=linuxfocus.org o: linuxfocus.org objectclass: top objectclass: organization dn: ou=editors, o=linuxfocus.org ou: editors objectclass: organizationalUnit dn: uid=aghaffar, ou=editors, o=linuxfocus.org uid: aghafar cn: Atif Ghaffar sn: Ghaffar givenname: Atif objectclass: person userpassword: {CRYPT}yIvSBWSuLs2N2 mailacceptinggeneralid: [email protected] ou: editors dn: uid=mkempe, ou=editors, o=linuxfocus.org uid: mkempe cn: Magnus Kempe sn: Kempe givenname: Magnus objectclass: person userpassword: clearpass mailacceptinggeneralid: [email protected] maildrop: [email protected] preferredlanguage: fr ou: editorsSimdi bu bilgiyi ldap klasörüne eklemeliyiz. Komut satiri programi ldapadd'i kullanalim.
ldapadd -D "cn=Manager, o=linuxfocus.org" -w secret < linuxfocus.org.ldif
Bu komutla "cn=Manager, o=linuxfocus.org" bilgisi dn (distinguished name) olur.
Bu komut "cn=Manager, o=linuxfocus.org" girdisini dn , 'secret' i
parola olarak alacak ve linuxfocus.org.ldif dosyasindan okuyacagi veriyi ldap
kalasörüne ekleyecek.
Eger hersey yolunda gittiyse artik ldap klasöründe sorgulama yapmaya hazirsiniz
demektir. Eger hersey yolunda gitmediyse benim mesaj kutumu bombalamaya
hazirsiniz demektir ;)
Mesaj sunucularimin iyiligi icin umarim hersey
yolunda gitmistir.
Devam etmeden önce, ldif dosyasini satir satir kontrol edelim.
mkempe kullanicisi ile ilgili tüm veriyi bulalim.
ldapsearch uid=mkempe
Tüm editörler için olan dn'i bulalim.
ldapsearch '(&(objectclass=person)(ou=editors))' dn
Daha fazla örnek için ldap'in man sayfalarina bakin.
LDAP acik bir standarttir. Kullanacaginiz yeni uygulamalar ldap veritabanini sorgulayabilecektir.
Windows 2000 bile kendi kalsör sistemi için LDAP'i kullanir.
Tüm bilgileri merkezilestirmenin faydasi cok büyüktür. Tek yönetici (administration) noktasi, daha az
hata, daha az veri kopyasi ve yedekleme ugrasi.
Compaq için çalistigimi ve ldap pazarladigimi dusunun, sunu söyleyebilirim; Bunu "contacts manager" olarak kullanabilirsiniz. Fakat Compaq için çalismiyorum. Bu yüzden size ldap'in daha ilginç uygulamalarini sunacagim.
SINGLE SOURCE OF SIGN-ON
Tüm kullanicilari merkezi bir yerde.
LDAP hireyarsisini kullanici islemlerinizi yapmak için kullanabilirsiniz; parolalar ve /etc/passwd
dosyasinda tutabileceginizden cok daha fazla bilgi. Bu bilgi Microsoft Windows / Unix / Mac kullanicilari
içinde kullanilabilir.
Fikir Isterseniz /etc/pam.d/login vs. biraz müdahale edip onaylama isleminin shadow veya
nis yerine LDAP'dan yapilmasini saglayabilirsiniz.
Fikir Kücük bir web arayüzü yazip kullanicilarin sisteme girmeden (cünkü parolalar
sistemde degil ldap'da tutuluyor)parolalarini degistirmelerini saglayabilirsiniz. pam_ldap'da adres
kaynaklarina bakiniz.
NOT
Single source of sign-on != single sign-on.
Bircok LDAP yazilimcisi eger LDAP
kullanirsani bir sign-on ununz olacagini soyleyerek satmaya calisirlar.
Aslinda bu yari dogru. Single Sign on aslinda tamamen farkli bir cins, IT
Menejerlerinin agzinda bugunlerde eksik olmayan buyuk bir kelime.
sign on örnegi:
Fikir Sisteminizde kullanicilara mesaj hesabi acabilirsiniz fakat unix hesabi acmaniza gerek yok. Hic problem degil. Ben LDAP+Postfix MailServer+ Cyrus IMAP/POP sunucusu kombinasyonu kullanarak binlerce kullaniciyi idare ediyorum ve hicbirinin sistem hesabi yok.
Fikir Bircok farkli programin ayarlarini merkezilestirebilirsiniz. Mesela, Netscape ayarlari, bookmarks vs LDAP içinde tutulabilir ve kullanici bir makinadan digerine gittigi zaman LDAP sunucusundan ayni ayarlari alarak kullanir. Kullanici Windows NT Netscape'den Linux/Solaris/Macintosh Netscape'e gidebilir ve hala ayni ayarlari kullanabilir. (Özür dilerim Microsoft.....Bu senin için çok kötü biliyorum.)
Senaryo
Bilgilerimi bir daha ve bir daha hem web üzerinde hemde kagida yazmaktan nefret
ederim. Hükümet ofislerinde kendilerine bir kere vermeme ragmen niye yasimi,
dogum tarihimi, adreslerimi bir daha bir daha isterler anlamam. Son sirketimde
, yardim-masasi için cok büyük formlar ayarlamamiz gerekiyordu ve %75'i
ayniydi. (Ön ad, Soy ad, Baslik, Posta adresi, kat, yönetici ismi, bölüm).
Kullanicilarinizi biktirmak ve tanidik gözüken birisi tarafindan gece
karanliginda dövülme riskine girmek yerine kullanicilariniza sadece kullanici
adlarini sorabilirsiniz. Örnegin, birisine sadece kullanici adini sorup
gerisini LDAP sunucusundan alabilirsiniz ve sadece eksik bilgileri istersiniz.
Fikir
Örnegin, telefonum calismiyor, sizin için verecegim tek bilgi "Telefonum
calismiyor".
Kullanici soyle bir intranet ile cok daha az biktirilir :
Umarim bu yazimla size bir sekilde, beyninizi biraz 10011001001001
besleyerek yardimci olabilmisimdir.
Görüyorsunuz ki bildiginiz paylasabilmeniz için o konuda bir uzman olmaniza
gerek yok. Yardimci yazilar yazmak için ne profesör ne de ögretmen olmaya gerek
yok. Kücücük bir bilgi bile kullanicilara yardimci olabilir.
Kisisel olarak, ögrenmek için zaten bildiklerimi birilerine anlatmanin cok
kolay oldugunu anladim. Bu teknigi siz de denemek isteyebilirsiniz.
Bugünlerde bircok insanin Linux hakkinda konustugunu görmek cok güzel.
Bircogununda denemte oldugunu görüyorum. Bazilari hemen birakiyor bazilarida
bir süre daha sans veriyor. Bu kullanicilarin kesinlikle unix komutlari ve
sistemi hakkinda hicbir tecrübeleri var, ve bircogu uzun süre bir probleme
takiliyor olabilirler.
Eger siz bir problemi yeni cözdüyseniz bile daha bir coklari için faydali bir
kaynak olabilirsiniz,
Eger herhangi bir konu hakkinda yazacak malzemeniz olmadigini düsünüyorsaniz ve
hala Linux topluluguna yardimci olmak istiyorsaniz, bu yazilari kendi dilinize
cevirmeye gönüllü olabilirsiniz.
|
Sayfalar LinuxFocus
Editör Takimi Tarafindan Hazirlanmistir. © Atif Ghaffar LinuxFocus.org 2000 LinuxFocus's bir yorum göndermek için veya bir hatayi bildirmek için tiklayin. |
2000-07-07,