<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Endersys Blog &#187; OpenLDAP</title>
	<atom:link href="http://blog.endersys.com/tag/openldap/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.endersys.com</link>
	<description>Üst Düzey Çözümler</description>
	<lastBuildDate>Sun, 15 Jan 2012 19:26:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Linux&#8217;da kullanıcıları OpenLDAP üzerinden yetkilendirme</title>
		<link>http://blog.endersys.com/2009/12/linuxda-kullanicilari-openldap-uzerinden-yetkilendirme/</link>
		<comments>http://blog.endersys.com/2009/12/linuxda-kullanicilari-openldap-uzerinden-yetkilendirme/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 19:11:04 +0000</pubDate>
		<dc:creator>ismail.yenigul</dc:creator>
				<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[Endersys Akademi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[nss]]></category>
		<category><![CDATA[OpenLDAP]]></category>
		<category><![CDATA[pam]]></category>

		<guid isPermaLink="false">http://blog.endersys.com/?p=361</guid>
		<description><![CDATA[Daha önceki yazımız genel olarak LDAP ve OpenLDAP yapılandırması üzerineydi. Bu yazıda ise önceki yazıdaki alt yapıya göre Linux kullanıcılarını OpenLDAP üzerinden yetkilendirme anlatılacaktır. Bu yazıyı okumadan önce mutlaka önceki yazıyı okumalısınız. Bu örnekte OpenLDAP sunucusu, OpenLDAP üzerinden yetkilendirme yapacak Linux istemci makinasına üzerine kurulmuştur. Dolayısıyla LDAP sunucu olarak 127.0.0.1 kullanılmıştır. Kullanıcı yetkilendirmek için nss_ldap paketinin [...]
Related posts:<ol>
<li><a href='http://blog.endersys.com/2009/12/openldap-kurulum-ve-yapilandirmasi/' rel='bookmark' title='OpenLDAP Kurulum ve Yapılandırması'>OpenLDAP Kurulum ve Yapılandırması</a></li>
<li><a href='http://blog.endersys.com/2009/12/qmail-from-address-and-smtp-auth-username-check-patch/' rel='bookmark' title='qmail from address and SMTP-AUTH username check patch'>qmail from address and SMTP-AUTH username check patch</a></li>
<li><a href='http://blog.endersys.com/2011/08/downgrading-a-package-at-rhel-6/' rel='bookmark' title='Downgrading a package at RHEL 6'>Downgrading a package at RHEL 6</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Daha <strong><a href="http://blog.endersys.com/2009/12/openldap-kurulum-ve-yapilandirmasi/" target="_blank">önceki yazımız</a></strong> genel olarak LDAP ve OpenLDAP yapılandırması üzerineydi. Bu yazıda ise önceki yazıdaki alt yapıya göre Linux kullanıcılarını OpenLDAP üzerinden yetkilendirme anlatılacaktır.<br />
Bu yazıyı okumadan önce mutlaka önceki yazıyı okumalısınız. Bu örnekte OpenLDAP sunucusu, OpenLDAP üzerinden yetkilendirme yapacak Linux istemci makinasına üzerine kurulmuştur. Dolayısıyla LDAP sunucu olarak 127.0.0.1 kullanılmıştır.</p>
<p>Kullanıcı yetkilendirmek için nss_ldap paketinin kurulması gerekir. Redhat’de bu paket nss_ldap ve pam_ldap modüllerini içerir. nss (Name Service Switch) passwd, group ve host gibi bilgilere nasıl erişileceğini tanımlarken, pam (Pluggable Authentication Modules) ise yetkilendirme işlemini yapar. Aşağıdaki komutla nss_ldap paketi kurulu değilse kurulur.</p>
<pre class="brush: bash; title: ; notranslate">
yum install nss_ldap
</pre>
<p>/etc/ldap.conf dosyasına aşağıdaki satırlar eklenir.</p>
<pre class="brush: plain; title: ; notranslate">
base dc=example,dc=com
rootbinddn cn=root,dc=deneme,dc=com
uri ldap://127.0.0.1/
ssl no
tls_cacertdir /etc/openldap/cacerts
scope one
pam_filter objectclass=posixaccount
pam_login_attribute uid,
pam_member_attribute gid
pam_password md5
nss_base_passwd         ou=People,dc=deneme,dc=com?one
nss_base_shadow         ou=People,dc=deneme,dc=com?one
nss_base_group          ou=Group,dc=deneme,dc=com?one
</pre>
<div id="attachment_363" class="wp-caption aligncenter" style="width: 443px"><img class="size-full wp-image-363 " title="scope" src="http://blog.endersys.com/wp-content/uploads/2009/12/scope.png" alt="scope" width="433" height="180" /><p class="wp-caption-text">LDAP arama seviyeleri (scope)</p></div>
<p>/etc/ldap.secret dosyasına ldap yönetici parolası yazılır. Dosya izni 600 yapılır.</p>
<pre class="brush: bash; title: ; notranslate">
echo secret &gt; /etc/ldap.secret
chmod 600 /etc/ldap.secret
</pre>
<p>/etc/nsswitch.conf dosyasındaki aşağıdaki satırlara ldap parametresi eklenir.</p>
<pre class="brush: plain; title: ; notranslate">
passwd:     files
shadow:     files
group:      files
</pre>
<p>ldap değerlerini ekledikten sonra kayıtlar aşağıdaki gibi gözükmelidir.</p>
<pre class="brush: plain; title: ; notranslate">
passwd:     files ldap
shadow:     files ldap
group:      files ldap
</pre>
<pre class="brush: bash; title: ; notranslate">
cat /etc/pam.d/system-auth
</pre>
<pre class="brush: plain; title: ; notranslate">
#%PAM-1.0
# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid &gt;= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_succeed_if.so uid &lt; 500 quiet
account     sufficient    pam_ldap.so
account     required      pam_ldap.so
#account    [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_first_pass
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022 silent
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so
</pre>
<p>Mevcut kullanıcı ve parola bilgilerini veritabanına atmak için /usr/share/openldap/migration/ altındaki scriptler kullanılabilir.</p>
<pre class="brush: bash; title: ; notranslate">
cd /usr/share/openldap/migration/
vi migrate_common.ph
</pre>
<pre class="brush: plain; title: ; notranslate">
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = &quot;deneme.com&quot;;

# Default base
$DEFAULT_BASE = &quot;dc=deneme,dc=com&quot;;
$EXTENDED_SCHEMA = 1;
</pre>
<pre class="brush: bash; title: ; notranslate">
mkdir -p /root/ldap/migration
./migrate_base.pl &gt;/root/ldap/migration/base.ldif
more /root/ldap/migration/base.ldif
</pre>
<pre class="brush: plain; title: ; notranslate">
dn: dc=deneme,dc=com
dc: deneme
objectClass: top
objectClass: domain
objectClass: domainRelatedObject
associatedDomain: deneme.com

dn: ou=Hosts,dc=deneme,dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: deneme.com
</pre>
<pre class="brush: bash; title: ; notranslate">
./migrate_group.pl /etc/group  &gt;/root/ldap/migration/group.ldif
more /root/ldap/migration/group.ldif
</pre>
<pre class="brush: plain; title: ; notranslate">
dn: cn=root,ou=Group,dc=deneme,dc=com
objectClass: posixGroup
objectClass: top
cn: root
userPassword: {crypt}x
gidNumber: 0
</pre>
<pre class="brush: bash; title: ; notranslate">
ETC_SHADOW=/etc/shadow
./migrate_passwd.pl /etc/passwd &gt; /root/ldap/migration/passwd.ldif
</pre>
<p>Son olarak yukarıda oluşturulan ldiff dosyaları ldapadd komutu ile eklenir.</p>
<p>Related posts:<ol>
<li><a href='http://blog.endersys.com/2009/12/openldap-kurulum-ve-yapilandirmasi/' rel='bookmark' title='OpenLDAP Kurulum ve Yapılandırması'>OpenLDAP Kurulum ve Yapılandırması</a></li>
<li><a href='http://blog.endersys.com/2009/12/qmail-from-address-and-smtp-auth-username-check-patch/' rel='bookmark' title='qmail from address and SMTP-AUTH username check patch'>qmail from address and SMTP-AUTH username check patch</a></li>
<li><a href='http://blog.endersys.com/2011/08/downgrading-a-package-at-rhel-6/' rel='bookmark' title='Downgrading a package at RHEL 6'>Downgrading a package at RHEL 6</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.endersys.com/2009/12/linuxda-kullanicilari-openldap-uzerinden-yetkilendirme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenLDAP Kurulum ve Yapılandırması</title>
		<link>http://blog.endersys.com/2009/12/openldap-kurulum-ve-yapilandirmasi/</link>
		<comments>http://blog.endersys.com/2009/12/openldap-kurulum-ve-yapilandirmasi/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 07:33:17 +0000</pubDate>
		<dc:creator>ismail.yenigul</dc:creator>
				<category><![CDATA[Endersys Akademi]]></category>
		<category><![CDATA[akademi]]></category>
		<category><![CDATA[Endersys]]></category>
		<category><![CDATA[OpenLDAP]]></category>

		<guid isPermaLink="false">http://blog.endersys.com/?p=319</guid>
		<description><![CDATA[Endersys Sistem Ekibi olarak bilgi paylaşımına blog platformumuzda devam ediyoruz. Çok yakın zamanda yeni makaleleri bu sayfa görebilirsiniz. 1         OpenLDAP Sunucu 1.1      LDAP Nedir? LDAP (Lightweight Directory Access Protocol : Hafif Dizin Erişim Protokolü) Dizin ifadesi LDAP&#8217;in yapısı ve içerdigi bilgi itibari ile &#8220;veritabanı&#8221; olarak adlandırılmaktadır.  LDAP’da ana amaç aranan verinin mümkün olan en kısa [...]
Related posts:<ol>
<li><a href='http://blog.endersys.com/2009/12/linuxda-kullanicilari-openldap-uzerinden-yetkilendirme/' rel='bookmark' title='Linux&#8217;da kullanıcıları OpenLDAP üzerinden yetkilendirme'>Linux&#8217;da kullanıcıları OpenLDAP üzerinden yetkilendirme</a></li>
<li><a href='http://blog.endersys.com/2010/04/endersys-ozgur-yazilim-ve-linux-gunlerinde/' rel='bookmark' title='Endersys, Özgür Yazılım ve Linux Günlerinde'>Endersys, Özgür Yazılım ve Linux Günlerinde</a></li>
<li><a href='http://blog.endersys.com/2011/08/downgrading-a-package-at-rhel-6/' rel='bookmark' title='Downgrading a package at RHEL 6'>Downgrading a package at RHEL 6</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Endersys Sistem Ekibi olarak bilgi paylaşımına blog platformumuzda devam ediyoruz. Çok yakın zamanda yeni makaleleri bu sayfa görebilirsiniz.<br />
<span id="more-319"></span></p>
<h3>1         OpenLDAP Sunucu</h3>
<p>1.1      LDAP Nedir?</p>
<p>LDAP (Lightweight Directory Access Protocol : Hafif Dizin Erişim Protokolü)</p>
<p>Dizin ifadesi LDAP&#8217;in yapısı ve içerdigi bilgi itibari ile &#8220;veritabanı&#8221; olarak adlandırılmaktadır.  LDAP’da ana amaç aranan verinin mümkün olan en kısa sürede bulunmasıdır. LDAP’da veriler hiyerarşik nesneler şeklindedir. LDAP nesneleri entry adı verilir. TCP üzerinden X.500 Dizin Servislerine erişmek için tasarlandı.  En güncel LDAP protokol sürümü LDAPv3’dür. 1990’dan itibaren bu sürüm kullanılmaktadır.</p>
<p align="center">
<p align="center">
<p>Klasik bir LDAP ağacı aşağıdaki gibidir.</p>
<p align="center">
<h3>1.2      Niçin LDAP ?</h3>
<ul>
<li>Kullanıcı      bilgileri,Grup bilgileri vb bilgilerin merkezi yönetimi.</li>
<li>Kullanıcıların      aradıkları bilgiye hızlı ve kolay ulaşım.</li>
<li>Dağıtık      mimariye uygun.</li>
<li>Her sistemde      kullanılabilir.</li>
</ul>
<h3>1.3   Nerelerde LDAP Kullanabilirim ?</h3>
<ul>
<li>Sunucu ve      kullanıcı yetkilendirmesinde</li>
<li>Kullanıcı ve      sistem gruplarında</li>
<li>Adres,Telefon      defteri uygulamalarında</li>
<li>Organizasyon      yapısında</li>
<li>Uygulama      bilgilerinin saklanmasında</li>
</ul>
<h3>1.4      LDAP ile Veritabanı Arasındaki Farklar</h3>
<ul>
<li>LDAP özel amaçlı bir veritabanı gibi düşünülebilir.</li>
<li>Veritabanları hem okuma hemde yazmaya karşı optimize      edilmiştir.</li>
<li>LDAP okuma/arama özellikleri yazma özelliklerine      göre çok daha gelişkindir.</li>
<li>Veritabanları komplex işlemleri      (rollback,transaction) destekler.</li>
<li>LDAP komplex veritabanı işlemlerini desteklemez.</li>
<li> LDAP      sunucular göreceli statik bilgiler saklarken, Veritabanı sunucuları      dinamik veriler saklarlar.</li>
<li>LDAP standartlar üzerine kurulmuştur.Bir LDAP      istemcisi tüm LDAP sunuculara erişebilir.</li>
<li>Farklı veritabanı araçları sadece kendi ürünlerine      erişmek için kullanılabilir.</li>
</ul>
<h3>1.5      LDAP Temelleri</h3>
<h3>1.5.1      LDIF  Nedir ?</h3>
<p>LDIF’in açılımı: LDAP Data Interchange Format</p>
<ul>
<li>LDAP kayıtları      düz metin formatında sunulur.</li>
<li>Veri      değişiklerini kolaylaştırır.</li>
<li>Okunabilir bir      formata sahiptir.</li>
<li>Betikler ve      çeşitli araçlar ile hazırlanabilir,aktarılabilir vs..</li>
<li>Yedekleme ve      başka bir sisteme aktarma işlemleri yapılabilir</li>
</ul>
<h3>1.5.2      LDAP Şema(Schema) Nedir?</h3>
<ul>
<li>Dizinde      saklanacak verinin türünü ve yapısını belirten kurallar bütünü.</li>
<li>Veritabanındaki      tablo yapısı benzer denilebilir.</li>
<li>Veri bütünlüğü,      uyumluluk sağlar</li>
<li>Benzer veriler      girilmesini ve kaynak israfını engeller</li>
<li>Uygulamalar      için kolaylık sağlar</li>
<li>Object class      özelliği kaydın uyması,takip etmesi gereken kuralları, şemalar da      objectclass&#8217;ların izlemesi gereken kuralları belirler.</li>
</ul>
<p><strong>Bir şema aşağıdakileri içermelidir:</strong></p>
<ul>
<li>Gerekli özellikler</li>
<li>İzin verilen özellikler</li>
<li>Özellikler nasıl karşılaştırılacak</li>
<li>Özelliğin saklayacağı veri ve veri tipi kısıtlama getirebilir</li>
</ul>
<p>Ön tanımlı Şemalar Aşağıdaki gibidir:</p>
<ul>
<li>corba.schema</li>
<li>cosine.schema</li>
<li>core.schema</li>
<li>openldap.schema</li>
<li>inetorgperson.schema</li>
<li>java.schema</li>
<li>misc.schema</li>
<li>nis.schema</li>
</ul>
<p>Örnek bir şema kaydı(inetorgperson.schema):</p>
<p># displayName</p>
<p># When displaying an entry, especially within a one-line summary list, it</p>
<p># is useful to be able to identify a name to be used.  Since other attri-</p>
<p># bute types such as &#8216;cn&#8217; are multivalued, an additional attribute type is</p>
<p># needed.  Display name is defined for this purpose.</p>
<p>attributetype ( 2.16.840.1.113730.3.1.241</p>
<p>NAME &#8216;displayName&#8217;</p>
<p>DESC &#8216;RFC2798: preferred name to be used when displaying entries&#8217;</p>
<p>EQUALITY caseIgnoreMatch</p>
<p>SUBSTR caseIgnoreSubstringsMatch</p>
<p>SYNTAX 1.3.6.1.4.1.1466.115.121.1.15</p>
<p>SINGLE-VALUE )</p>
<p># employeeNumber</p>
<p># Numeric or alphanumeric identifier assigned to a person, typically based</p>
<p># on order of hire or association with an organization.  Single valued.</p>
<p>attributetype ( 2.16.840.1.113730.3.1.3</p>
<p>NAME &#8216;employeeNumber&#8217;</p>
<p>DESC &#8216;RFC2798: numerically identifies an employee within an organization&#8217;</p>
<p>EQUALITY caseIgnoreMatch</p>
<p>SUBSTR caseIgnoreSubstringsMatch</p>
<p>SYNTAX 1.3.6.1.4.1.1466.115.121.1.15</p>
<p>SINGLE-VALUE )</p>
<p><strong> </strong></p>
<h3>1.5.3      Attributes(Özellikler)</h3>
<p>attributetype ( 2.5.4.6 NAME ( &#8216;c&#8217; &#8216;countryName&#8217; )<br />
DESC &#8216;RFC2256: ISO-3166 country 2-letter code&#8217;<br />
SUP name SINGLE-VALUE )</p>
<p>attributetype ( 2.5.4.29 NAME &#8216;presentationAddress&#8217;<br />
DESC &#8216;RFC2256: presentation address&#8217;<br />
EQUALITY presentationAddressMatch<br />
SYNTAX 1.3.6.1.4.1.1466.115.121.1.43 SINGLE-VALUE )</p>
<p>Bir attr ibute aşağıdaki alanlardan oluşur.<br />
<strong>Name</strong> : Tekildir(unique), büyük-küçük harf duyarlılığı yoktur.<br />
<strong>Object Identifier (OID)</strong> : Aralarında nokta olan sayılar dizisi</p>
<p>Attribute Sentaksı aşağıdaki değerler ve kontroller içerir:</p>
<ul>
<li>Saklanabilecek veri özellikleri</li>
<li>Kontrol ve Karşılaştırmalar nasıl yapılacak</li>
<li>Tekil Değer(Single Value) veya Çoklu Değer(Multiple      Value)</li>
</ul>
<p align="center">
<p align="center"><strong>OID Şeması</strong></p>
<p>Bazı Attribute’lar:</p>
<ul>
<li>uid &#8211; User id</li>
<li>cn &#8211; Common Name</li>
<li>sn &#8211; Surname</li>
<li>mail &#8211; Mail Address</li>
<li>l &#8211; Location</li>
<li>ou &#8211;      Organisational Unit</li>
<li>dc &#8211; Domain      Component</li>
<li>c – Country</li>
</ul>
<h3>1.5.4      ObjectClass</h3>
<p><strong>LDAP : Lightweight Directory 27 Access Protocol</strong></p>
<p>Özelliklerde ne tip bilgiler ve bu bilgilerin hangi formatta olacağını belirler. Her bir objectclass entry’de tutulacak veriler için bir template görevi görür. Entry’de olması gereken zorunlu attributes ve tercihe bağlı attributes’leri tanımlar.<strong> </strong></p>
<p>Bir kayıt icin birden fazla Objectclass olabilir.</p>
<p>Hangi objectclass&#8217;ların kullanılabileceği şemalar (schema) ile belirlenir.</p>
<p>Bazı objectclass’lar:</p>
<ul>
<li><strong>account</strong></li>
<li><strong>posixAccount</strong></li>
<li><strong>posixGroup</strong></li>
<li><strong>shadowAccount</strong></li>
<li><strong>top</strong></li>
<li><strong>organizationalUnit</strong></li>
</ul>
<p><strong>organizationalUnit objectclass’ı (core.schema)</strong></p>
<p>objectclass ( 2.5.6.5 NAME <strong>&#8216;organizationalUnit&#8217;</strong></p>
<p><strong>DESC</strong> &#8216;RFC2256: an organizational unit&#8217;</p>
<p><strong>SUP</strong> top STRUCTURAL</p>
<p><strong>MUST</strong> ou</p>
<p><strong>MAY</strong> ( userPassword $ searchGuide $ seeAlso $ businessCategory $</p>
<p>x121Address $ registeredAddress $ destinationIndicator $</p>
<p>preferredDeliveryMethod $ telexNumber</p>
<p>$ teletexTerminalIdentifier $</p>
<p>telephoneNumber $ internationaliSDNNumber $</p>
<p>facsimileTelephoneNumber $ street $ postOfficeBox</p>
<p>$  postalCode $</p>
<p>postalAddress $ physicalDeliveryOfficeName $ st $ l</p>
<p>$ description ) )</p>
<p>MUST: Zorunlu olan attributelar</p>
<p>MAY: Tercihe bağlı(optional) attribute’lar</p>
<p>SUP: Parent Object</p>
<p>ObjectClass Türleri</p>
<p>Structural Object Class: Person veya organizationalUnit gibi gerçek nesneleri ifade eder.</p>
<p>Auxiliary(Yardımcı) Object Class: Structural Object Class’a bazı karakteristikler ekler. Bunlar tek başlarına kullanılamazlar. Sadece structural object class’ları tamamlar. Örnek: simpleSecurityObject, mailRecipient ve cacheObject</p>
<p>Abstract Object Class:  Yazılım dillerinde olduğu gibi abstract işlevini yapar. Örnek: top</p>
<h3>1.5.5      DN(Distinguished Name)</h3>
<p>Saklanan her bir veriye ait tekil tanımlayıcıya verilen ad. Bir  veritabanı tablosundaki unique  alan olarak düşünülebilir. Örnek bir dn değeri aşağıdaki gibidir:</p>
<p>dn: uid=ismail, ou=system, dc=endersys, dc=com</p>
<h3>1.6      OpenLDAP Kurulumu</h3>
<p>Ön tanımlı olarak tüm Linux dağıtımlarında OpenLDAP gelmektedir. En güncel ve kararlı sürümü şu anda 2.4’dür. Linux kurulumu sırasında paket olarak seçebileceğiniz gibi internet bağlantısı olan bir Linux’te aşağıdaki komutla OpenLDAP’ı kurabilirsiniz.</p>
<p><strong># yum install openldap*</strong></p>
<p>Kurulu OpenLDAP paketlerini ise aşağıdaki komutla görebilirsiniz.</p>
<p><strong># rpm -qa |grep openldap<br />
</strong>openldap-2.3.43-3.el5<strong><br />
</strong>openldap-servers-2.3.43-3.el5<strong><br />
</strong>openldap-servers-sql-2.3.43-3.el5<strong><br />
</strong>openldap-devel-2.3.43-3.el5<strong><br />
</strong>compat-openldap-2.3.43_2.2.29-3.el5<strong><br />
</strong>openldap-clients-2.3.43-3.el5<br />
openldap-servers-overlays-2.3.43-3.el5<strong> </strong></p>
<h3>1.7      Temel Konfigürasyon</h3>
<p>vi /etc/openldap/slapd.conf</p>
<p>#</p>
<p>include         /etc/openldap/schema/core.schema<br />
include         /etc/openldap/schema/cosine.schema<br />
include         /etc/openldap/schema/inetorgperson.schema<br />
include         /etc/openldap/schema/nis.schema<br />
include         /etc/openldap/schema/dnszone.schema<br />
# Allow LDAPv2 client connections.  This is NOT the default.<br />
allow bind_v2<br />
# Do not enable referrals until AFTER you have a working directory</p>
<p># service AND an understanding of referrals.<br />
#referral       ldap://root.openldap.org<br />
loglevel        256<br />
pidfile         /var/run/openldap/slapd.pid<br />
argsfile        /var/run/openldap/slapd.args</p>
<p><strong>database        bdb<br />
suffix          &#8220;dc=deneme,dc=com&#8221;<br />
rootdn          &#8221;cn=root,dc=deneme,dc=com&#8221;</strong><br />
# Cleartext passwords, especially for the rootdn, should<br />
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.<br />
# Use of strong authentication encouraged.</p>
<p><strong>rootpw          secret</strong><br />
# rootpw                {crypt}ijFYNcSNctBYg<br />
<strong>directory       /var/lib/ldap</strong></p>
<p>index objectClass                       eq,pres<br />
index ou,cn,mail,surname,givenname      eq,pres,sub<br />
index uidNumber,gidNumber,loginShell    eq,pres<br />
index uid,memberUid                     eq,pres,sub<br />
index nisMapName,nisMapEntry            eq,pres,sub</p>
<p>#slapd.conf dosyasının sonu</p>
<p><strong>slapd.conf Değişkenleri:</strong></p>
<p><strong>include</strong>:  Dahil edilecek şema dosyalarını belirtir.</p>
<p><strong>loglevel</strong>: Log tutma seviyesini belirtir. Tüm log seviyeleri aşağıdaki gibidir.</p>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<p align="center"><strong>Level</strong></p>
</td>
<td>
<p align="center"><strong>Information   recorded</strong></p>
</td>
</tr>
<tr>
<td>-1</td>
<td>All logging information</td>
</tr>
<tr>
<td>0</td>
<td>No Logging information</td>
</tr>
<tr>
<td>1</td>
<td>Trace function calls</td>
</tr>
<tr>
<td>2</td>
<td>Packet-handling debugging   information</td>
</tr>
<tr>
<td>4</td>
<td>Heavy trace debugging</td>
</tr>
<tr>
<td>8</td>
<td>Connection management</td>
</tr>
<tr>
<td>16</td>
<td>Packets sent and received</td>
</tr>
<tr>
<td>32</td>
<td>Search filter processing</td>
</tr>
<tr>
<td>64</td>
<td>Configuration file processing</td>
</tr>
<tr>
<td>128</td>
<td>Access control list processing</td>
</tr>
<tr>
<td>256</td>
<td>Statistics for connection,   operations, and results</td>
</tr>
<tr>
<td>512</td>
<td>Statistics for results returned   to clients</td>
</tr>
<tr>
<td>1024</td>
<td>Communication with shell   backends</td>
</tr>
<tr>
<td>2048</td>
<td>Print entry parsing debug   information</td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<p><strong>database:</strong> Kullanılacak veritabanı tipini belirtir. Ön tanımlı olarak bdb(Berkeley DB transactional backend) kullanılır.</p>
<p><strong>suffix</strong>:  Hizmet verilecek LDAP ağacını belirler.</p>
<p><strong>rootdn:</strong> UNIX sistemlerindeki superuser gibi tüm LDAP kayıtlarında işlem yetkisine sahip kullanıcıyı ifade etmektedir.</p>
<p>Buradaki <strong>dc</strong> ifadesi “domain context” anlamına gelmektedir.</p>
<p><strong>rootpw:</strong>root parolasını belirler. Yukarıdaki gibi düz metin olduğu gibi parolanın şifrelenmiş halide yazılabilir. Slapasswd komutu ile şifrelenmiş parola üretebilirsiniz.</p>
<p><strong>[root@endersysegitim ~]# slappasswd<br />
</strong>New password:<br />
Re-enter new password:<br />
{SSHA}Ue4ZyZyxQfkrs0CalEHESLnbXelZ6Z82<br />
<strong>[root@endersysegitim ~]# slappasswd -h {CRYPT}<br />
</strong>New password:<br />
Re-enter new password:<br />
{CRYPT}FE2cKmGfb9/zc</p>
<p><strong>directory: </strong>LDAP kayıtlarının tutulacağı dizini belirtir.</p>
<p><strong>index</strong> :slapd servisinin indekslerini belirtir. Veritabanında olduğu gibi burada da indeksler gibi arama performansını artırmak için kullanılır.</p>
<ul>
<li><strong><em>approx</em></strong><strong> (approximate):</strong> Yaklaşık arama</li>
<li><strong><em>eq</em> (equality):</strong> Eşit</li>
<li><strong><em>pres</em></strong><strong> (presence):</strong> Var olup olmamasına göre indeks.</li>
<li><strong><em>sub</em></strong><strong> (substring):</strong> İçeren.</li>
</ul>
<p>LDAP loglarını LOCAL4 öncelik değeri ile syslog üzerinden tutar. LDAP loglarını görmek için aşağıdaki işlemler yapılır.</p>
<ol>
<li>/etc/syslog.conf dosyasına aşağıdaki satır eklenir.local4.* /var/log/ldap.log</li>
<li>/var/log/ldap.log dosyası oluşturulur.</li>
</ol>
<p><strong>[root@endersysegitim ~]# touch /var/log/ldap.log</strong></p>
<p><strong> </strong></p>
<ol>
<li>Syslog ve ldap servisleri restart edilir.</li>
</ol>
<p><strong>[root@endersysegitim ~]# /etc/init.d/syslog restart ; /etc/init.d/ldap restart</strong></p>
<p><strong>[root@endersysegitim ~]# tail -f /var/log/ldap.log<br />
</strong>Oct  8 02:08:46 egitim slapd[11494]: config_build_entry: &#8220;olcDatabase={1}bdb&#8221;<br />
Oct  8 02:08:46 egitim slapd[11494]: backend_startup_one: starting &#8220;dc=deneme,dc=com&#8221;<br />
Oct  8 02:08:46 egitim slapd[11494]: bdb_db_open: dc=deneme,dc=com<br />
Oct  8 02:08:46 egitim slapd[11494]: bdb_db_open: dbenv_open(/var/lib/ldap) Oct  8 02:08:46 egitim slapd[11494]: slapd starting<br />
Oct  8 02:08:46 egitim slapd[11494]: daemon: added 4r listener=(nil) Oct  8 02:08:46 egitim slapd[11494]: daemon: added 7r listener=0x82fb520 Oct  8 02:08:46 egitim slapd[11494]: daemon: added 8r listener=0x82fb5f8 Oct  8 02:08:46 egitim slapd[11494]: daemon: epoll: listen=7 active_threads=0 tvp=NULL<br />
Oct  8 02:08:46 egitim slapd[11494]: daemon: epoll: listen=8 active_threads=0 tvp=NULL</p>
<h3>1.8      OpenLDAP Bileşenleri</h3>
<p><strong> </strong></p>
<p><strong>Sunucu Programları:</strong></p>
<ul>
<li><strong>/usr/sbin/slapd</strong>: LDAP Sunucu programı</li>
<li><strong>/usr/sbin/slurpd</strong>: LDAP Replikasyon yardımcısı</li>
</ul>
<p><strong>İstemci Programları:</strong></p>
<ul>
<li>/usr/bin/ldapadd: LDAP’a kayıt ekleme      programı</li>
<li>/usr/bin/ldapmodify: Kayıt güncelleme      programı</li>
<li>/usr/bin/ldapdelete: LDAP’tan kayıt silme      programı</li>
<li>/usr/bin/ldapsearch: Kayıt arama programı</li>
<li>/usr/sbin/slapadd: LDIFF formatındaki veriyi      doğrudan backend dosyalarına yazar.</li>
<li>/usr/sbin/slapcat: Veritabanından direkt      LDIFF formatında dosya oluşturur.</li>
</ul>
<h3>1.9  OpenLDAP ACL(Access Control List)</h3>
<h3>1.9.1      Bağlantı kuranları ifade eden ACL değişkenleri:</h3>
<ul>
<li><strong>*</strong> : Anonim erişim dahil      tüm bağlantı kuran kullanıcıları ifade eder.</li>
<li><strong>self</strong> : Başarılı bir      şekilde bağlantı kurmuş(yetkilendirilmiş) kullanıcının kendisini ifade      eder.</li>
<li><strong>anonymous</strong>:  Yetkilendirme(authentication) yapılmamış      kullanıcı bağlantıları</li>
<li><strong>users </strong>: Yetkilendirme yapmış      kullanıcı bağlantıları</li>
</ul>
<p><strong> </strong></p>
<h3>1.9.2      Erişim Seviyeleri</h3>
<ul>
<li><strong>write: </strong>Attribute’ı güncelleme      hakkı<strong> </strong></li>
<li><strong>read: </strong>Arama sonuçlarını      okuma hakkı<strong> </strong></li>
<li><strong>search: </strong>Arama hakkı<strong> </strong></li>
<li><strong>compare: </strong>Karşılaştırma hakkı<strong> </strong></li>
<li><strong>auth: </strong>Yetkilendirme hakkı<strong> </strong></li>
<li><strong>none: </strong>Erişim yok.<strong> </strong></li>
</ul>
<p>Örnekler:</p>
<p>Tüm herkese okuma hakkı:</p>
<p><strong>access to * </strong></p>
<p><strong> by * read</strong><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>access to *</strong></p>
<p><strong>by self write </strong>(Kullanıcı kendi bilgilerini güncelleyebilir)</p>
<p><strong>by users read</strong> (Yetkilendirme yapmış kullanıcılar kayıtları okuyabilir)</p>
<p><strong>by * none </strong>(Geri kalan tüm kullanıcılara erişimi engelle,anonymous)</p>
<p><strong> </strong></p>
<p><strong>access to attrs=userPassword</strong></p>
<p><strong>by dn=&#8221;cn=root,dc=deneme,dc=com&#8221; write</strong></p>
<p>(root userPassword alanını değiştirebilir)</p>
<p><strong>by self write</strong> (Kullanıcı kendi parolasını değiştirebilir.)<br />
<strong>by * auth</strong> (Geri kalanlar oturum açmak zorundadır. userPassword bilgisini okuyamaz ve yazamazlar)</p>
<h3>1.10 OpenLDAP’ın Başlatılması</h3>
<p><strong>[root@endersysegitim ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG<br />
[root@endersysegitim ~]# chown ldap /var/lib/ldap/DB_CONFIG</strong></p>
<p><strong>[root@endersysegitim ~]# /etc/init.d/ldap start<br />
</strong>Checking configuration files for slapd:  config file testing succeeded<br />
[  OK  ]<br />
Starting slapd:                                            [  OK  ]</p>
<p><strong><br />
[root@endersysegitim ~]# ldapadd -x -D&#8221;cn=root,dc=deneme,dc=com&#8221; -w secret -f ilk.ldiff<br />
</strong>adding new entry &#8220;dc=deneme, dc=com&#8221;<strong> </strong></p>
<p><strong>[root@endersysegitim ~]# ldapsearch -x -b &#8216;dc=deneme,dc=com&#8217; &#8216;(objectclass=*)&#8217;</strong></p>
<p># extended LDIF<br />
#<br />
# LDAPv3<br />
# base &lt;dc=deneme,dc=com&gt; with scope subtree<br />
# filter: (objectclass=*)<br />
# requesting: ALL<br />
#<br />
# deneme.com<br />
dn: dc=deneme,dc=com<br />
objectClass: dcObject<br />
objectClass: organization<br />
o: deneme ltd<br />
dc: deneme<br />
# search result<br />
search: 2<br />
result: 0 Success<br />
# numResponses: 2<br />
# numEntries: 1</p>
<p>LDAP verileri LDAP servisi çalışmasa bile slapcat komutu ile listelenebilir.</p>
<p><strong>[root@endersysegitim ldap]# slapcat<br />
</strong>dn: dc=deneme,dc=com<br />
objectClass: dcObject<br />
objectClass: organization<br />
o: deneme ltd<br />
dc: deneme<br />
structuralObjectClass: organization<br />
entryUUID: f3f519f4-453f-102e-8283-79f25680c01c<br />
creatorsName: cn=root,dc=deneme,dc=com<br />
createTimestamp: 20091004144258Z<br />
entryCSN: 20091004144258Z#000000#00#000000<br />
modifiersName: cn=root,dc=deneme,dc=com<br />
modifyTimestamp: 20091004144258Z</p>
<p><strong>[root@endersysegitim ldap]# cat ou.ldif</strong><br />
dn: ou=people, dc=deneme, dc=com<br />
ou: people<br />
objectClass: organizationalUnit</p>
<p>dn: ou=users, dc=deneme, dc=com<br />
ou: users<br />
objectClass: organizationalUnit</p>
<p><strong>[root@endersysegitim ldap]# ldapadd -x -D&#8221;cn=root,dc=deneme,dc=com&#8221; -f ou.ldif –W<br />
</strong>Enter LDAP Password:<br />
adding new entry &#8220;ou=people, dc=deneme, dc=com&#8221;<br />
adding new entry &#8220;ou=users, dc=deneme, dc=com&#8221;</p>
<p><strong># cat user.ldiff</strong><br />
dn: cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com<br />
cn: Ismail YENIGUL<br />
sn: YENIGUL<br />
mail: <a href="mailto:ismail.yenigul@endersys.com">ismail.yenigul@endersys.com</a><br />
labeledURI: <a href="http://www.endersys.com/">http://www.endersys.com</a><br />
roomNumber: 123 Golbasi Teknokent<br />
departmentNumber: Engineering<br />
telephoneNumber: 123-555-2345<br />
mobile: 0533-747-3665<br />
objectclass: inetOrgPerson</p>
<p><strong># ldapadd -x -D&#8221;cn=root,dc=deneme,dc=com&#8221; -w secret -f user2.ldiff<br />
</strong>adding new entry &#8220;cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com&#8221;</p>
<p><strong>#ldapsearch -x -b &#8216;dc=deneme,dc=com&#8217; &#8216;(mail=*)&#8217;</strong></p>
<p># Ismail YENIGUL, people, deneme.com</p>
<p>dn: cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com</p>
<p>cn: Ismail YENIGUL</p>
<p>sn: YENIGUL</p>
<p>mail: ismail.yenigul@endersys.com</p>
<p>labeledURI: http://www.endersys.com</p>
<p>roomNumber: 123 Golbasi Teknokent</p>
<p>departmentNumber: Engineering</p>
<p>telephoneNumber: 123-555-2345</p>
<p>mobile: 0533-747-3665</p>
<p>objectClass: inetOrgPerson</p>
<p># Cenk IZANLI, people, deneme.com</p>
<p>dn: cn=Cenk IZANLI,ou=people,dc=deneme,dc=com</p>
<p>cn: Cenk IZANLI</p>
<p>sn: IZANLI</p>
<p>mail: cenk.izanli@endersys.com</p>
<p>labeledURI: http://www.endersys.com</p>
<p>roomNumber: 124 Golbasi Teknokent</p>
<p>departmentNumber: Support Team</p>
<p>telephoneNumber: 123-567-8915</p>
<p>mobile: 0533-747-3666</p>
<p>objectClass: inetOrgPerson</p>
<p><strong># ldapsearch -x -b &#8216;dc=deneme,dc=com&#8217; &#8216;(mail=ismail.yenigul@endersys.com)&#8217;  telephoneNumber mobile</strong></p>
<p># Ismail YENIGUL, people, deneme.com</p>
<p>dn: cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com</p>
<p>telephoneNumber: 123-555-2345</p>
<p>mobile: 0533-747-3665</p>
<p><strong># cat update.ldif </strong></p>
<p>dn: cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com</p>
<p>changetype: modify</p>
<p>delete: mail</p>
<p>mail: ismail.yenigul@endersys.com</p>
<p>-</p>
<p>add: mail</p>
<p>mail: ismail.yenigul@endersys.com.tr</p>
<p><strong># ldapmodify -x -D&#8221;cn=root,dc=deneme,dc=com&#8221; -w secret -v -f update.ldif </strong></p>
<p>ldap_initialize( &lt;DEFAULT&gt; )</p>
<p>delete mail:</p>
<p>ismail.yenigul@endersys.com</p>
<p>add mail:</p>
<p>ismail.yenigul@endersys.com.tr</p>
<p>modifying entry &#8220;cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com&#8221;</p>
<p>modify complete</p>
<p><strong># cat update2.ldif</strong></p>
<p>dn: cn= Ismail YENIGUL,dc=deneme,dc=com</p>
<p>changetype: modify</p>
<p>replace: mail</p>
<p>mail: yenimail@deneme.com</p>
<p>-</p>
<p>add: title</p>
<p>title: Proce Yoneticisi</p>
<p>-</p>
<p>add: jpegPhoto</p>
<p>jpegPhoto:&lt; file:///tmp/afili.jpeg</p>
<p>-</p>
<p>delete: mobile</p>
<p>-</p>
<p><strong># cat delete.ldif </strong></p>
<p>cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com</p>
<p><strong># ldapdelete -x -D&#8221;cn=root,dc=deneme,dc=com&#8221; -w secret -v -f delete.ldif </strong></p>
<p>ldap_initialize( &lt;DEFAULT&gt; )</p>
<p>deleting entry &#8220;cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com&#8221;</p>
<p>Aynı kayıt ldapmodify komutu ile aşağıdaki şekilde silinebilir.</p>
<p><strong># cat delete2.ldiff</strong></p>
<p>dn: cn=Ismail YENIGUL,ou=people,dc=deneme,dc=com</p>
<p>changetype: delete</p>
<p><strong># ldapmodify -x -D&#8221;cn=root,dc=deneme,dc=com&#8221; -w secret -v -f update2.ldif </strong></p>
<h3>1.11 LDAP SSL/TLS</h3>
<p><strong>[root@endersysegitim]</strong><strong>#  cd /etc/pki/tls/certs/<br />
</strong><strong>[root@endersysegitim]</strong><strong>#  mv slapd.pem slapd.pem.yedek<br />
</strong><strong>[root@endersysegitim]</strong><strong># make slapd.pem<br />
# chown ldap:ldap slapd.pem<br />
# vi /etc/openldap/slapd.conf<br />
</strong>TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt<br />
TLSCertificateFile /etc/pki/tls/certs/slapd.pem<br />
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem</p>
<p><strong>[root@endersysegitim]</strong><strong># /etc/init.d/ldap restart<br />
# netstat -na |grep LISTEN</strong><br />
….<br />
tcp        0      0 :::389                      :::*                        LISTEN<br />
tcp        0      0 :::636                      :::*                        LISTEN</p>
<p><strong>[root@endersysegitim]</strong><strong># openssl s_client -connect localhost:636 -showcerts</strong><br />
CONNECTED(00000003)<br />
depth=0 /C=TR/ST=Marmara/L=Ankara/O=My Company Ltd/CN=ldap.server.com<br />
verify error:num=18:self signed certificate</p>
<p>Not: Bu yazı Endersys Sistem Destek ekibi tarafından hazırlanmıştır. Referans gösterilmek şartıyla başka sitelerde yayınlanabilir.</p>
<p><a href="http://www.endersys.com.tr" target="_blank">http://www.endersys.com.tr</a></p>
<p>Faydalanılan Kaynaklar:</p>
<ul>
<li>Addison Wesley, Understanding and Deploying LDAP Directory Services</li>
<li>Oreilly<strong>, <a href="http://oreilly.com/catalog/9781565924918" target="_blank">LDAP System Admistration</a></strong></li>
<li>OpenLDAP 2.4 Admin Guide</li>
<li><cite><a href="http://www.enderunix.org/docs/ldap_fundamentals/">www.enderunix.org/docs/<strong>ldap</strong>_fundamentals/</a></cite><cite></cite></li>
<li><cite><a href="http://www.erhanekici.com/files/LDAP_Protokolu_15052004.pdf">http://www.erhanekici.com/files/LDAP_Protokolu_15052004.pdf</a> </cite></li>
<li><a href="http://www.ahmetorhan.com/openldap.pdf">http://www.ahmetorhan.com/openldap.pdf</a></li>
<li><cite><a href="http://download.cizgi.com.tr/akademi/355/ldap.pdf">http://download.cizgi.com.tr/akademi/355/<strong>ldap</strong>.pdf</a> </cite></li>
</ul>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 11194px; width: 1px; height: 1px;"><!--SafClassName="docMain"--><!--SafTocEntry="Main Page"--><!-- 	.tt1    {font-size: 10pt;} --></p>
<table border="0" cellspacing="0" cellpadding="0" width="469">
<tbody>
<tr valign="top">
<td class="t1" colspan="3" height="20"><strong>LDAP System Administration</strong></td>
</tr>
</tbody>
</table>
</div>
<p>Related posts:<ol>
<li><a href='http://blog.endersys.com/2009/12/linuxda-kullanicilari-openldap-uzerinden-yetkilendirme/' rel='bookmark' title='Linux&#8217;da kullanıcıları OpenLDAP üzerinden yetkilendirme'>Linux&#8217;da kullanıcıları OpenLDAP üzerinden yetkilendirme</a></li>
<li><a href='http://blog.endersys.com/2010/04/endersys-ozgur-yazilim-ve-linux-gunlerinde/' rel='bookmark' title='Endersys, Özgür Yazılım ve Linux Günlerinde'>Endersys, Özgür Yazılım ve Linux Günlerinde</a></li>
<li><a href='http://blog.endersys.com/2011/08/downgrading-a-package-at-rhel-6/' rel='bookmark' title='Downgrading a package at RHEL 6'>Downgrading a package at RHEL 6</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.endersys.com/2009/12/openldap-kurulum-ve-yapilandirmasi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

