معرفي، نصب و راه اندازي LDAP

معرفي، نصب و راه اندازي LDAP

1. دايرکتوري
دايرکتوري يک فهرست از اشياء است که اطلاعات مربوط به آنها بر اساس يک ترتيبِ خاص مرتب شده*اند. اطلاعات تلفنهاي يک شهر، مثال خوبي از يک دايرکتوري است که بر حسب نام افراد، طبقه بندي شده*اند. در اين تلفن دايرکتوري، اشياء، افراد هستند که بر حسب نام، مرتب شده*اند و اطلاعات مربوطه به هر فرد، آدرس و شماره تلفن آن فرد است.

مثالهاي ديگري که مي*توان در اين مورد از آنها نام برد کاتالوگها، در يک کتابخانه است يا دايرکتوري کاربران، که به شما اين اجازه را مي*دهد تا آدرس پست الکترونيک يا شماره فاکس کاربران را پيدا کنيد. در واقع دايرکتوريها مانند پايگاه داده*ها هستند با اين تفاوت که دايرکتوري*ها، براي منظور خاصي تعبيه شده*اند:

• بيشتر براي خوانده شدن طراحي شده*اند، تا نوشتن و ايجاد تغييرات در آنها.
• يک نماي ثابت از اطلاعات را به نمايش مي*گذارند.
• تغييرات در آنها ساده است و معمولا تراکنش را پشتيباني نمي*کنند.
• براي دسترسي به دايرکتوري از يک پروتکل شبکه استفاده مي*شود.
1.1 دايرکتوري کارساز و کارخواه (Client و Server)



شکل۱ : ارتباط بين کارساز و کارخواه

درخواستها با نام دايرکتوري کاربر و کارسازها با نام دايرکتوري کارساز شناخته مي*شوند. دايرکتوريها معمولاً با مدل دسترسي کارخواه-کارساز قابل استفاده هستند. برنامه کاربردي که بخواهد اطلاعاتي را در دايرکتوري بخواند و يا بنويسد در واقع دسترسي مستقيمي به آن ندارد. به جاي آن تابع و يا واسط برنامه نويسي واسطي (API) را فراخواني مي کند. پروسه فراخواني شده به نيابت از برنامه کاربردي متقاضي به اطلاعات دسترسي خواهد داشت، و نتايج خواندن و نوشتنها به برنامه کاربردي ارائه خواهد شد. تقاضايي که توسط دايرکتوري کارخواه نمايش داده مي*شود و روند نگهداري و جستجوي اطلاعات در يک دايرکتوري، دايرکتوري کارساز ناميده مي*شود. در بعضي مواقع، کارساز هم کارخواه کارساز ديگري است تا بتواند از کارسازهاي ديگر اطلاعات لازم براي پاسخگويي به تقاضاي مشتري را فراهم کند.

برخي از دايرکتوريهاي سرويسهاي معروف عبارتند از:
• File Servers

• Mail Servers

• Print Servers

• Web Severs
2.1 انواع دايرکتوري
انواع دايرکتوري عبارتند از:
• محلي (Local)
• سراسري (Global)
• متمرکز (Centralized)
• توزيع شده (Distributed)

موارد بالا دو به دو در مقابل همديگر هستند. معناي هرکدام تا حدودي در ذهن آشنا است. براي مثال در مورد دايرکتوري اطلاعات افراد يک شرکت، دايرکتوري Local، شامل اطلاعات افراد در يک تيم يا واحد باشند و دايرکتوري Global شامل اطلاعات کل شرکت است.
در صورتي که اطلاعات در روي يک دستگاه و در يک مکان متمرکز قرار گرفته باشد، تمرکز يافته و در صورتي که به صورت توزيع شده و در چند مکان نگهداري شود، توزيع يافته گفته مي شود (به طور مشخص اطلاعات در حالت دوم به صورت تقسيم شده در چند مکان قرار خواهد داشت). Active Directory به عنوان يکي از مهمترين بخشهاي ويندوز بر پايه LDAP پياده سازي شده است. Active Directory به دغدغه*هاي کاربران براي پيدا کردن منابع و سرويسها پايان مي*دهد و بي*ترديد مي*توان آن را مهمترين خصوصيت افزوده شده به ويندوزهاي سري 2000 دانست.

.2 LDAP چيست؟
LDAP مجموعه اي از پروتکلها و متدها، براي دسترسي به اطلاعات شاخه*هاي توزيع شده است. بسياري از برنامه*هاي دايرکتوري متمرکز براي استفاده کاربران به منظور دسترسي به چند کامپيوتر با استفاده از تنها يک رمز عبور توسعه يافتند. NIS از ابتدايي*ترينهاي اين دسته بود، اما در حين نقل و انتقال رمز عبور را کدگذاري نمي کرد. اين برنامه همچنين از portmapper daemon، از محدوده غير قابل پيش*بيني پورتهاي TCP استفاده مي*کرد که براي ديوارهاي آتش قابل رديابي نبود. LDAP کار خود را بر پايه استانداردX.500 بنا نهاده است.

استانداردX.500 تعيين مي*کند که چطور افراد در دايرکتوري مرجع وسيع تري بايستي سازمان دهي شوند. دايرکتوريهاي X.500 تحت يک ريشه عمومي در ساختار سلسله مراتبي درختي با سطوح مختلف براي هر عنوان اطلاعاتي مثل: کشور، ناحيه، سازمان و يا افراد سازمان دهي مي*شوند. به عنوان طراحي براي پياده سازي مستحکم و ساده*تر X.500 ،LDAP اصل کاربردي بود که به عنوان ستون فقرات سرويس Active Directory مايکروسافت و سرويس ناول دايرکتوري ارائه شد. در عين حالLDAP مي*تواند با ديگر برنامه*هاي Login از قبيل سرويس کاربري شناسايي و دسترسي از راه دور (RADIUS) که تجهيزات شبکه بسياري ازISP ها براي مديريت دسترسي به اينترنت به صورت dialup استفاده مي*نمايند، فعاليت نمايد. بعدها مشخص شد که LDAP خصوصياتي دارد که مي*تواند آن را به عنوان جايگزيني براي NIS در بعضي طرحها مطلوب نمايد. براي مثال، تنها از يک پورت TCP(389) براي ارتباطات منظم و براي تعاملات کدگذاري از پورت ديگري (636) استفاده مي*کند. همچنين LDAP مي تواند با بسياري ديگر از برنامه هاي شناسايي، accounting خارجي به سيستمهاي لينوکس و يونيکس کار کند.

LDAP روش استانداردي براي دسترسي و به روزرساني دايرکتوريهاي توزيع يافته ارائه مي*دهد. تكنولوژي LDAP يك نقطه مشخص براي مديريت شبكه*ها به دست مي*دهد و به شما اجازه افزودن، حذف كردن و جابجائي كاربران و منابع را با سهولت فراوان اعطا مي*كند.

متدهايي که در LDAP در اختيار داريد به شما اين امکان را مي‏دهد تا از اطلاعاتي که در درخت اطلاعات شاخه ها قرار دارد استفاده کنيد. براي مثال در يک شبکه، اين درخت شامل اطلاعاتي از اشياء موجود در شبکه مانند کاربران، پرينترها، برنامه*ها و ... است. عموماً دايرکتوريها از تراکنشهاي پيچيده يا roll−back schemes found که در سيستمهاي مديريت پايگاه داده*ها براي به روزرسانيهاي پيچيده حجيم است، پشتيباني نمي*کند. به روزرساني دايرکتوريها معمولاً به صورت همه يا هيچ تغيير است. دايرکتوري بيشتر تمايل دارند که قادر به پاسخگويي سريع در حجمهاي بالا وعمليات جستجو باشند.

LDAP از استانداردهاي موجود در X.500 پيروي مي*کند. استاندارد X.500 يک استاندارد جامع تر براي تعريف، نگهداري و مديريت دايرکتوريهاي عمومي است. اين استاندارد براي نگهداري اطلاعات عمومي (جهاني) استفاده مي*شود مانند آنچه در DNS استفاده شده است. اما LDAP از آن ساده*تر و عملي*تر است و برخلاف X.500، TCP/IP را نيز پشتيباني مي*کند که براي استفاده در اينترنت مفيد است. LDAP سبک*تر از X.500 است و به همين دليل گاهي به آن X.500 Lite نيز گفته مي*شود.

اما X.500 يک مدل کلي براي سرويسهاي مرتبط با دايرکتوريها، در OSI است. اين مدل شامل چارچوبهاي کلي و پروتکلهايي براي به روز نگه داشتن شاخه و پرس و جو (query) از آن است. پروتکل اصلي موجود در LDAP ،X.500 است که ساختار کامل و توابع بسيار زيادي دارد. همين عامل باعث پيچيدگي در آن شده است و استفاده از X.500 را مشکل کرده است. برخلاف X.500 ،LDAP از مقبوليت خوبي برخوردار است و به يک فناوري استراتژيک تبديل شده است که اکثر توليدکنندگان نرم*افزار از آن پشتيباني مي*کنند.

LDAP، پروتکل مبتني بر پيام را، بين کارساز و کارخواه، برقرار مي*کند. پيامهاي متفاوتي بين کارساز و کارخواه ممکن است رد و بدل گردد. کارساز و کارخواه مي*توانند هر کدام با انتخاب روشهاي معمول، به شيوه دلخواه پياده*سازي شوند (اين از مزاياي LDAP است) و مي*توانند از دو تکنيک جداگانه استفاده کنند، بدون اينکه مشکلي در ارتباط با يکديگر داشته باشند.


شکل ۲ :ارتباط با کارساز LDAP


LDAP پروتکل ارتباطي مشخص مي*کند که در آن، يک پيام از کارخواه، براي استفاده و دسترسي به اطلاعات يک دايرکتوري X.500، به کارساز ارسال مي*گردد. اکثر کارسازهاي LDAP از نسخه 3.0 آن استفاده مي*کنند. دايرکتوريها اغلب با يک مدل ارتباطي کارساز-کارخواه قابل دسترسي هستند. همانطور که توضيح داده شد، برنامه*اي که درخواست خواندن، يا ايجاد تغيير در دايرکتوري را دارد، به طور مستقيم نمي*تواند چنين کاري را انجام بدهد بلکه با استفاده از يک سرويس مياني قادر به انجام اين کار خواهد بود، به اين صورت که يک API فراخواني مي*شود و آن API، پيامي به يک فرآيند ديگر مي*فرستد و آن فرآيند با استفاده از TCP/IP به اطلاعات دسترسي خواهد داشت. پورت استاندارد براي ارتباط امن، پورت 636 و براي حالت عادي 389 است.

تلاش براي استفاده از XML در LDAP و استفاده در وب سرويسها، منجر به زباني به نام DSML شد که اين زبان به استفاده*کنندگان از دايرکتوريها اين امکان را مي*داد، که بدون نوشتن واسط براي کار با API هاي مربوطه، به دايرکتوريها دسترسي داشته، بتوانند با آنها کار کنند.

1.2. ساختار سلسله مراتبي
اطلاعات در يک دايرکتوري در يک ساختار مانند درخت1 ذخيره مي*شوند که به آن درخت اطلاعاتي دايرکتوري گفته مي*شود و هر شي ء با يک مشخصه شناخته مي*شود که به آن نام متمايز DN گفته مي*شود. شما مي*توانيد متناسب نياز خود اين ساختار را پيکربندي کنيد. هر نام متمايز يک عنصر در درخت را مشخص مي*کند. در واقع، مدل اطلاعاتي LDAP بر اساس موجوديتها است. هر موجوديت شامل مجموعه خصوصيتهايي است که نامي متمايز و يکتا دارد. هر نام متمايز مي*تواند از چند نام متمايز مرتبط ( RDN) تشکيل شده باشد. براي مثال، يک نام متمايز آورده شده است که نامهاي متمايز مرتبط آن با کاما از هم جدا شده اند:

cn=thomas,ou=itso,o=ibm

هر يک از خصوصيات موجود شامل يک نوع و يک يا چند مقدار است. نوع معمولاً خلاصه شبه جمله*اي با معناي خاص است، که در جدول زير فهرستي از اين علائم اختصاري را مشاهده مي*کنيد:

جدول ۱: نامهاي متمايز معتبر(RDN)





شکل ۳: نمونه درخت اطلاعاتي دايرکتوري (DIT)

همانطور که در تصوير بالا مشخص است ساختار درختي شامل يک نقطه Top و يا همان ريشه (Root) است. اين ساختار کمک مي*کند تا آسانتر بتوان شي*هاي ديگر را دسته*بندي کرد. در عين حال، اين درخت مي*تواند بر اساس نامهاي دامنه اينترنت مرتب شود. اين رهيافت نام*گذاري در حال گسترش و عموميت است به نحوي که به کارسازهاي دايرکتوري امکان استفاده از DNS ها را نيز مي*دهد. تصوير زير مي*تواند مثالي در اين زمينه باشد:


شکل ۴: نمودار درختي

LDAP به شما امکان کنترل خصوصيات موجوديت هايي را که لازم است و اجازه دسترسي ( که به آنها ObjectClass مي گوييم) دارند را مي دهد. مقادير ObjectClass به قوانيني که موجوديت بايستي از آنها تبعيت کند، دارد.

2.2 اشيا
هر شي، ليستي از خصوصيات است که مختص آن شي است. هنگامي که شئي را اضافه و يا حذف مي*کنيد، در واقع در رابطه با يک شي تقاضايي داشته*ايد. حتي با هر تغييري در خصوصيات شي در واقع تمام عمليات با پروتکل هاي LDAP انجام مي*شود. در واقع، LDAP آماده است تا داده*هاي مرتبط با اشيا را نگهداري و استخراج کند.

دسترسي به هر موجوديتي از طريق DN آن امکان*پذير است، که خود از طريق نام موجوديت خود (به آن RDN گفته مي شود) و سلسله مراتب اجداد خود (عناوين بالاتر در ساختار درختي) ساخته مي*شود. براي مثال، موجوديتي با نام Barbara که در تصوير بالا RDN اي از uid=babs و DNاي از uid=babs,ou=People,dc=example,dc=com دارد.

3.2 کنترل اجازه*هاي دسترسي
بعضي از سرويسهاي دايرکتوري اين امنيت را مهيا نمي*کنند.LDAP يا سيستمي براي شناسايي کارخواه مهيا مي*کند و يا سيستم دسترسي خود را به صورت يک کارساز دايرکتوري ارائه مي*کند. همچنين LDAP از سرويسهاي امنيت داده (اعتبار و رمزداربودن) نيز پشتيباني مي*کند.

4.2 چگونگي فعاليت LDAP
سرويس دايرکتوريLDAP بر پايه مدل کارساز-کارخواه است. يک يا چند کارساز LDAP درخت اطلاعاتي دايرکتوري را مي*سازند (DIT). APIاي که در LDAP در اختيار شما قرار مي*گيرد، سازوکاري فراهم مي*کند تا در يک دايرکتوري (که به طور عام، يک اينترنت دايرکتوري است) کارهاي معمول مانند وصل شدن، جستجو و تغييرات را انجام دهيد. برخلاف بقيه پروتکلهاي اينترنت، LDAP داراي يک API مشخص است که نوشتن يک سرويس مرتبط با يک دايرکتوري اينترنت را ساده مي*کند.
استفاده کردن از يک کارساز LDAP شامل ۴ بخش اصلي است:
• ايجاد و شروع يک جلسه (Session): وقتي يک جلسه ايجاد مي**کنيد، اين جلسه، مقادير پيش فرض را، به خود مي*گيرد. اطلاعاتي که در اين جلسه نگهداري مي*شود عبارتند از وضعيت کنوني جلسه، مدت اتصال، شماره نسخه در حال استفاده و برخي ملاحظات امنيتي. پس از ايجاد (Initialize) کردن جلسه شما يک handle خواهيد داشت که با استفاده از آن مي*توانيد برخي مقادير پيش*فرض را تغيير دهيد.

• مقداردهي اوليه (اختياري): تغيير برخي مقادير پيش فرض
• اتصال به کارساز (اختياري)
• Bind شدن به کارساز. در اين مرحله کارساز، کاربر را اعتبارسنجي مي*کند. در صورت تأييد اعتبار کاربر، در حد اختيارات خود اجازه دسترسي به توابع کارساز را دارا خواهد بود. اگر شما اين کار را انجام ندهيد به عنوان کاربر anounymous به کارساز معرفي خواهيد شد و در حد کاربر ميهمان به امکانات کارساز دسترسي خواهيد داشت.

پاسخي که کارساز به درخواستها مي*دهد معمولاً همراه اشاره*گري است که کاربر را براي دريافت اطلاعات بيشتر راهنمايي مي*کند. اهميت ندارد که کاربر به کدام کارساز LDAP متصل شده است، اين همان ديدگاهي است که بايد به دايرکتوريها داشته باشيد. نامي که يک کارساز LDAP ارائه مي*کند همان نامي است که کارساز LDAP ديگر تهيه خواهد کرد. اين همان خصوصيت مهم يک دايرکتوري جهاني مانندLDAP است.

از نمونه LDAP هايي که به عنوان کارساز پياده*سازي شده*اند، مي*توان به موارد زير اشاره کرد:
• Fedora Directory Server

• Microsoft Active Directory

• Sun Directory Server

• OpenLDAP

• Novell 6.5 NetWareeDirectory
OpenLDAP .3
در اينجا مقدمه*اي خواهيم داشت بر نرم*افزار سرويس دايرکتوري OpenLDAP که پايه*هاي اصلي آن بر نرم*افزار LDAP دانشگاه Michigan بنا نهاده شده است. همچنين توضيح خواهيم داد که چگونه slapd1 را نصب و پيکربندي نماييم.

نرم*افزار سرويس دايرکتوري OpenLDAP شامل بخشهاي کاربردي زيادي است:
• Ldapsearch: سوال از کارساز LDAP
Ldapadd, ldapmodify, ldapselete :اضافه، تغيير و حذف اشياء و خصوصيات LDAP (معمولاً در فايل LDIF
)
Ldapmodrdn : تغيير يک RDN (که به ندرت استفاده مي شود)

• Ldappasswd : تغيير رمز عبور ورودي LDAP

• Slapd

• slurpd
• slappasswd :ايجاد رمز عبور کدگذاري شده

از بخشهاي زير هنگامي که slapd اجرا نمي*شود استفاده نماييد:

• slapcat : نوشتن محتواي دايرکتوري در LDIF
• Slapadd: خواندن محتواي دايرکتوري از LDIF
• Slapindex : بازتوليد شاخصها ( که به ندرت استفاده مي*شود)

Slapd در واقعLDAP اي است که مي*تواند به پورتهاي شبکه گوش داده و به ارتباطات LDAP پاسخ دهد. دايرکتوري شما مي*تواند شامل تمام مواردي باشد که به آنها نياز داريد، و حتي مي*توانيد آن را به يک دايرکتوري جهاني متصل کنيد. بعضي از slapd ها قابليتهاي جالبي دارند:

LDAPv3 :slapd نسخه سوم LDAP را اجرا مي*کند. Slapd ،LDAP را در هر دو نوع IPv4 و IPv6 و همچنين Unix IPC پشتيباني مي*کند.

Authentication ساده و لايه امنيتي: slapd ،certificate−based authentication و سرويسهاي امنيت داده را با استفاده از TLS (و يا SSL) پشتيباني مي*کند.

کنترل توپولوژي: slapd را مي*توان براي محدود کردن دسترسي به سوکتهاي لايه*هاي مختلف در اطلاعات توپولوژي شبکه پيکربندي کرد.

کنترل دسترسي: slapd امکان کنترل دسترسي قوي و کاملي ارائه مي*کند. شما مي*توانيد دسترسي به موجوديتها را بر اساس آدرس IP، نام دامنه و ديگر مشخصه*ها کنترل کنيد. Slapd از هر دو روش اطلاعات کنترل دسترسي پويا و ايستا پشتيباني مي*کند.

انتخاب يک خادم پايگاه داده: Slapd امکان انتخاب بين Backend هاي مختلف پايگاه داده را دارد. که از آن جمله مي*توان به BDB، خادم پايگاه داده تراکنشي با قابليت اجراي بالا و يا HDB، خادم تراکنشي سلسله مراتبي، LDBM، خادم بر پايه سبکي DBM و يا SHELL ، اشاره نمود.

. طرح
در اينجا با مثالي توضيحات خود را ادامه مي*دهيم تا درک مفاهيم ساده*تر شود، فرضيه ما پيرامون سازمان کوچکي به نام example.com خواهد بود. اين سازمان خواستار سيستم کلي براي يکپارچه سازي، ساده و امن بر الگوي login است. از دومين1example.com ،LDAP، براي پايگاه داده LDAP استفاده نمايند که يکي ازاجزاء دامنه (DC) آنها example و ديگري com باشد. اين پايگاه يک واحد براي سازمان دهي دارد که مي*توان افراد (people) ناميد که پيش فرض LDAP است.
هر فردي خصوصياتي از قبيل نام کاربري(User ID ياUID)، رمز عبور، دايرکتوري home و پوسته login خواهد داشت.کارساز لينوکس Fedora که به آن bigboy خواهيم گفت با آدرس ,IP 192.168.1.100 به عنوان کارساز LDAP عمل مي*کند که شامل پايگاه داده خواهد بود. کارساز لينوکس Fedora که به آنsmallfry خواهيم گفت به عنوان کارخواه با آدرس IP،192.168.1.102 براي تست سيستم استفاده خواهد شد. کارساز bigboy حساب کاربري خاصي به نام ldapuser دارد که براي login به LDAP استفاده خواهد شد.

1.4 دانلود و نصب نرم*افزارهاي جانبي
بيشتر نرم افزارهاي Fedora و RedHat قالب بسته بنديRPM دارند. در هنگام جستجو براي فايلي به ياد داشته باشيد که نام فايلهاي FreeRADIUS RPM معمولاً با openldap و به دنبال آن شماره نسخه شروع مي*شوند، مثلاً openldap-servers-2.1.22-8.i386.rpm.

2.4پيش نيازها
ابتدا بايد بررسي نماييد که تمام پيش نيازهاي لازم براي کارساز LDAP در سيستم شما نصب شده است. براي اين کار از دستور مقابل استفاده نماييد:

#rpm –qa | grep "ldap"
1.2.4بسته*هاي RPM مورد نياز
فرمان ذکر شده بايستي ليستي مشابه آنچه مي*بينيد براي شما نمايش دهد در غير اين صورت هر يک از مواردي که موجود نيست را دريافت و نصب نماييد:

openldap
openldap-clients
openldap-devel
nss_ldap
openldap-servers

همچنين سيستم ديگري که مي*خواهد به عنوان کارخواه فعاليت نمايد بايد بسته*هاي زير را نصب شده در سيستم خود داشته باشد:

openldap
openldap-clients
openldap-devel
nss_ldap

و بسته*هاي پيش نياز ديگري که مورد نياز است:

• (Berkeley DB)DB4 از Sleepycat Software که مي*توانيد آن را در اين آدرس بيابيد:

Database 11g | Oracle Database 11g | Oracle

• OpenSSL که اين بسته را نيز مي*توانيد در اين آدرس پيدا کنيد:

OpenSSL: The Open Source toolkit for SSL/TLS

• cyrus-sasl اين بسته هم در اين آدرس موجود است

ftp://ftp.andrew.cmu.edu/pub

2.2.4 Berkeley DB - DB4 (نسخه 4 به بعد توصيه مي شود)
در اينجا به نصب اين بسته که به عنوان backend پايگاه داده است مي*پردازيم. LDAP حوزه وسيعي در پشتيباني از backend هاي پايگاه داده مختلف دارد اما به دلايلي اين مورد را پيشنهاد مي*کنيم. بسته را به دايرکتوري منبع برده، آن را غيرفشرده ساخته و شروع به کامپايل آن با دستورات زير بنماييد:

tar zxvf db-4.1.25.tar.gz
cd db-4.1.25
cd build_unix
../dist/configure
make

make install با حساب ريشه))
به صورت پيش فرض db-tools در مسير /usr/local/BerkeleyDB.4.1/bin/ قرار دارد. البته مي*توان لينکهايي ساخت که اين کدهاي باينري در موقعيت پيش فرض قرار بگيرند:

ln -s /usr/local/BerkeleyDB.4.1/bin/db_archive /usr/local/bin/db_archive
ln -s /usr/local/BerkeleyDB.4.1/bin/db_archive /usr/bin/db_archive

براي تمامي باينريهايي که در مسير /usr/local/BerkeleyDB.4./bin/ قرار دارد، اين کار را تکرار نماييد. اگر که شما از بسته هاي rpm استفاده مي نماييد، لازم است که به صورت دستي کتابخانه ها را تنظيم نماييد:

ln -s /usr/local/BerkeleyDB.4.1/include/db.h /usr/include/db.h
ln -s /usr/local/BerkeleyDB.4.1/include/ /usr/local/include/db4/
ln -s /usr/local/BerkeleyDB.4.1/lib/ /usr/local/lib/db4/

اولين لينک براي فايل db.h است. لينک قديمي را با لينکي جديد جايگزين مي*نمايد. دومي و سومي به اسکريپت پيکربندي LDAP اين امکان را مي*دهد که درست فايلهاي include و کتابخانه*ها را پيدا نمايد. بعد اين ld.so.cache را با ldconfig به روز رساني نماييد.

3.2.4 امنيت لايه انتقال
کارخواه و کارساز OpenLDAP احتياج به نصب کتابخانه*هاي OpenSSL TLS براي تامين سرويس امنيت در لايه انتقال دارند. اگر چه احتمالاً سيستم خود اين کتابخانه*ها را به عنوان يکي از بسته*هاي پايه*اي سيستم و يا جزء نرم*افزارهاي قابل انتخاب دارد، OpenSSL به صورت مجزا نيز احتياج به نصب دارد. اين نرم*افزار با LDAPv3 کاملاً مرتبط نيست مگر آنکه شخصاً در روند اجراي اسکريپت Configure آن را اعمال نماييد. در ادامه به نحوه پياده*سازي آن نيز اشاره*اي خواهيم داشت.

4.2.4 Cyrus-SASL
SASL لايه امنيت و شناسايي ساده است. در ابتدا اين گزينه انتخاب شده نيست، اما راهنماي مديريت OpenLDAP توضيح مي*دهد که سيستم به طورکامل راه*اندازي نخواهد شد مگر آنکه يک Cyrus SASL را بتواند تشخيص دهد.
خوب پس شروع مي*کنيم؛ نصب آن خيلي ساده است:

tar zxvf cyrus-sasl-2.1.14.tar.gz
cd cyrus-sasl-2.1.14
./configure –with-bdb-libdir=/usr/local/BerkeleyDB.4.1/lib
--with-bdb-incdir=/usr/local/BerkeleyDB.4.1/include/
--with-openssl=/usr/local/ssl/
make

make install(با حساب ريشه)
درست مشابه DB4 احتياج به اضافه کردن لينکي براي کتابخانه*ها داريم:

ln -s /usr/local/lib/sasl2/ /usr/lib/sasl2

مطمئن شويد که usr/local/include/sasl/ توسط همگان قابل خواندن است.

5.2.4 بسته بندي TCP
Slapd از بسته*بندي TCP (فيلتر کنترل دسترسي در سطح IP) در صورتي که از قبل نصب شده باشد، پشتيباني مي*کند. استفاده از بسته*بندي TCP و يا فيلترينگ کنترل دسترسي در سطح IP (که بعضي از ديوارهاي آتش در سطح IP ارائه مي*دهند) براي کارسازهايي که اطلاعاتي براي عموم ندارند توصيه مي*شود.

3.4 نصب نرم*افزار
1.3.4 دانلود نرم*افزار

جديدترين نسخه OpenLDAP ، متناسب با سيستم خود را از اين آدرس دريافت نماييد:

2.3.4 بسته دريافتي را باز کنيد
مسيري را براي نصب انتخاب کنيد و بسته مورد نظر را در آنجا باز کنيد:

gunzip −c openldap−VERSION.tgz | tar xvfB

و به فايل بازشده برويد:

cd openldap−VERSION

(به جاي کلمه version شماره نسخه خود را قرار دهيد.)

3.3.4 مطالعه مستندات
مستندات فايل را به دقت مطالعه نماييد: COPYRIGHT, LICENSE, README و INSTALL.مخصوصاً اگر مي*خواهيد از آخرين اطلاعات مرتبط با نرم*افزار خود مطلع شويد. فايل README و INSTALL را مطالعه نماييد تا از تمام پيش*نيازها نيز مطمئن شويد.

4.3.4 اجراي configure
در اينجا بايد شروع به کامپايل نرم*افزار نماييد. با اجراي اسکريپت configure شما توزيع مورد نظر خود را در سيستمتان خواهيد ساخت. اين اسکريپت پارامترهاي زيادي دارد که مي*توان آنها را فعال يا غيرفعال نمود. در حالت معمولي همه پاسخ + دارند و شما مي*توانيد با دستور مقابل آنها را مرور کرده و در صورت نياز تغيير دهيد: همچنين اين اسکريپت در روند نصب متغيرهاي زيادي را در محيط بررسي مي*نمايد، که مي*توانند شامل اين موارد باشد:


با توجه به اين نکات مي*توانيد فرمان را با قالب*بندي زير اجرا نماييد:

[[env] settings] ./configure [options]

به عنوان مثال، فرض کنيد مي*خواهيم OpenLDAP را با BDB به عنوانBack-End و پشتيباني از بسته بنديTCP، نصب نماييم. به صورت پيش فرض، مورد اول فعال و دومي غير فعال است. پس در اينجا با افزودن --with-wrappers تقاضاي دوم را هم اجرا مي*نماييم. اگر چه در صورت نصب نبودن نرم*افزارهاي مورد نياز اين دستور fail خواهد شد. به عنوان نمونه، اگر که Header هاي بسته*بندي TCP در /usr/local/include و /usr/local/lib قرار داشته باشد، اسکريپت را بايد بدين صورت اجرا نماييم:

env CPPFLAGS="-I/usr/local/include -I/usr/local/include/ssl -I/usr/local/include/db4"
LDFLAGS="-L/usr/local/ssl/lib -L/usr/local/lib/db4" \
./configure --with-wrappers

env مستقيماً بعضي از متغيرهاي محيطي را تنظيم مي*نمايد که اسکريپت پيکربندي بتواند فايلهاي header و کتابخانه*ها را پيدا کند. به طور معمول تنظيمات براي CPPFLAGS در usr/local/include/ کافي است اما به دلايلي درست کار نمي*کند؛ پس به روش بالا آن را تغيير دهيد.
و اگر به سيستم خود اطمينان کامل داريد، مي*توانيد به اين طريق نيز شروع نماييد:

./configure --with-tls --with-cyrus-sasl --enable-wrappers --enable-crypt --enable-bdb
5.3.4ساخت نرم افزار
مرحله بعدي ساخت نرم*افزار است. اين مرحله شامل دو مرحله است: اول ساخت توابع وابسته و سپس کامپايل نرم*افزار:

make depend
make

6.3.4 تست ساختار
براي اطمينان از کارکرد بايستي دستور زير را اجرا نماييد که ممکن است به تناسب سيستم شما چند دقيقه*اي زمان لازم داشته باشد:

make test

7.3.4 نصب نرم*افزار
حالا سيستم شما آماده نصب است، که دسترسي به آن براي کاربر super-user امکان پذير است:

su root −c 'make install'

حالا همه چيز بايد در شاخه پيش*فرض و يا پيش*فرضي که شما تعيين کرده*ايد (prefix اي که در دستورconfigure مشخص کرده ايد) نصب شود.

8.3.4 پيکربندي OpenLDAP
براي پيکربندي سيستم OpenLDAP خود، سه بخش موجود است: کارساز (slapd.conf)، کارخواه (ldap.conf) و الگوي دايرکتوري (schema). به ترتيب اينها را بررسي خواهيم نمود:

1.8.3.4 کارساز
با نصب و راه*اندازي نرم*افزار، شما امکان اين را خواهيد داشت که Slapd را به تناسب موقعيت خود پيکربندي نماييد. بر خلاف OpenLDAP هاي قبلي، پيکربندي زمان اجراي slapd در نسخه 2.3 ، کاملاً در LDAP فعال است و مي*تواند با داده*هاي LDIF عمليات LDAP استاندارد را مديريت نمايد. موتور پيکربندي LDAP به تمامي گزينه*هاي پيکربندي slapd امکان مي*دهد تا به سادگي و بدون احتياج به راه*اندازي دوباره براي نمايش تاثير تغييرات، تغيير نمايند.

شيوه قديمي فايل slapd.conf همواره پشتيباني مي*شود، اما بايستي که به قالب بندي جديد تبديل شود. تا زماني که پيکربندي شيوه قديمي از يک تک فايل استفاده مي*کند، معمولاً در اين مسير نصب شده است: usr/local/etc/openldap/slapd.conf/ ،شيوه*هاي جديدتر که از يک پايگاه داده slapd backend براي ذخيره پيکربندي استفاده مي*نمايد. پايگاه داده پيکربندي معمولاً در دايرکتوريusr/local/etc/openldap/slapd.d/ قرار مي*گيرد.

پيکربندي اصلي OpenLDAP نيزمربوط به usr/local/etc/openldap/slapd.conf/ است. اين فايل پيکربندي مي*تواند طولاني و پيچيده باشد اما براي هدف ما بسيار ساده است:

include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/officeperson.schema
### SSL-certificates
TLSCACertificateFile /usr/local/ssl/certs/ca.crt
TLSCertificateFile /usr/local/ssl/certs/ldap.crt
TLSCertificateKeyFile /usr/local/ssl/certs/ldap.key
### Database definitions
database bdb
suffix "dc=example, dc=com"
rootdn "dc=example, dc=com"
rootpw secret
directory /usr/local/var/openldap-data
index objectClass eq

چهار خط اول شامل الگويي است که استفاده مي*نماييم. core.schema, cosine.schema وinetorgperson.schema به صورت پيش*فرض توسط OpenLDAP نصب مي*شود. دقت داشته باشيد که نصب الگوهاي زياد خود باعث ايجاد تداخل و در نتيجه مشکلاتي خواهد شد. سه خطي که با TLS آغاز مي*شود تنظيمات گواهيSSL است. با داشتنSSL داده*هاي شما به صورت کدگذاري منتقل خواهد شد. براي اين منظور به روش زير عمل نماييد:

openssl req -new -x509 -nodes -keyout /usr/local/ssl/certs/ldap.key -out /usr/local/ssl/certs/ldap.crt
openssl genrsa -des3 -out /usr/local/ssl/certs/ca.key 1024
openssl rsa -in /usr/local/ssl/certs/ca.key -out /usr/local/ssl/certs/ca.key
openssl req -new -x509 -days 365 -key /usr/local/ssl/certs/ca.key -out /usr/local/ssl/certs/ca.crt

مطمئن شويد که نام سيستمي که وارد مي*نماييد (و يا حداقل FQDN اي که براي آدرس*دهي به دايرکتوري LDAP خود به کار مي*بريد) همان CN باشد. Rootdn مشخص کننده**ي DN اي است که موضوعي در کنترل دسترسيها يا موانع محدوديت مديريت براي کار، بر روي پايگاه داده نيست. DN نيازي به رجوع به يک ورودي در پايگاه داده و حتي در دايرکتوري ندارد. DN ممکن است که به يک هويت SASL مراجعه نمايد.
مثالي از نوع ورودي:

rootdn "cn=Manager,dc=example,dc=com"

مثالي از نوع SASL:

rootdn "uid=root,cn=example.com,cn=digest-md5,cn=auth"

rootpw که مي*توان براي DN براي rootdn رمز عبور مشخص نمود (هنگامي که rootdn براي DN اي در پايگاه داده تنظيم شده است.). مثال:

rootpw secret

در عين حال مي توان رمز را به صورت کد شده در فايل ذخيره نمود:

rootpw {SSHA}ZKKuqbEKJfKSXhUbHG3fG8MDn9j1v4QN

براي اين منظور مي*توانيد به صورت زير عمل نماييد:

slappasswd -s secret.

پيکربندي فايل slapd شامل موارد بسيار زياد ديگري مي*شودکه مي*توانيد با مراجعه به مستندات مربوطه براي پيکربندي حرفه*اي*تر اقدام نماييد.

2.8.3.4 کارخواه
پيکربندي ديگري که OpenLDAP لازم دارد، ldap.conf است:

HOST 192.168.0.5
BASE dc=example,dc=com
URI ldaps://ldap.example.com
TIMELIMIT 25
SIZELIMIT 12
TLS_REQCERT allow

فراموش نکنيد که TLS_REQCERT را اضافه نماييد زيرا در غير اين صورت شما اجازه دسترسي به کارساز LDAP از طريق خط فرمان را نخواهيد داشت.

3.8.3.4 الگوي دايرکتوري
در فايل slapd.conf، آدرس الگو تقريباً در بالاي فايل ليست شده است. در حالت ابتدايي اين فايل شايد تنها شامل يک الگو باشد و شما مي*توانيد خود الگوهاي ديگري نيز اضافه نماييد (دقت داشته باشيد که الگوهاي زياد باعث ايجاد مشکل در سيستم خواهد شد).

include /usr/etc/openldap/schema/core.schema
include /usr/etc/openldap/schema/cosine.schema
include /usr/etc/openldap/schema/inetorgperson.schema
include /usr/etc/openldap/schema/misc.schema

include /usr/etc/openldap/schema/openldap.schema

4.4 اجراي slapd
Slapd براي فعاليت به عنوان کارسازي مستقل طراحي شده است. اين مورد به کارساز کمک مي*کند که از مزاياي caching، مباحث توافق مديريتي با پايگاه داده*هاي زيرين، و نگهداري از منابع سيستم بهره ببرد.

1.4.4 گزينه*هاي خط فرمان
Slapd از گزينه*هاي زيادي در اجراي خط فرمان پشتيباني مي*کند که ما در اينجا به ذکر چند نکته مي*پردازيم:

-f

اين گزينه فايل پيکربندي را براي slapd تخصيص مي*دهد که به صورت پيش*فرض/usr/local/etc/openldap/slapd.conf است.

-h

اين گزينه موقعيت شنونده (Listener) را پيکربندي مي*کند. پيش*فرض آن ldap:// است که LDAP را بر روي TCP در تمامي واسطها در پورت پيش*فرض LDAP که 389 است، قرار مي*دهد. شما مي*توانيد host و پورت مخصوص يا الگوي پروتکل ديگري (مثل ldaps:// يا ldapi://) تخصيص دهيد. براي مثال، -h "ldaps:// ldap://127.0.0.1:666" که موقعيت شنونده*هاي به درخواست را به صورت زير پيکربندي مي*کند: يکي براي LDAP بر روي SSL بر روي تمامي واسطها به صورت پيش*فرض LDAP/SSL در پورت 636، و يکي LDAP بر روي TCP در واسط localhost(loooback) پورت 666 هاستها ممکن است که از سيستم IPv4 و يا نامهاست استفاده نمايند. مقدارپورت بايستي عددي باشد.

-n

نام سرويس براي login شدن و ديگر اهداف استفاده مي*شود. پيش فرض آن slapd است.

-l

اين مورد را کاربر محلي براي قابليت syslog تخصيص مي*دهد. مقدار آن مي*تواند LOCAL0, LOCAL1, LOCAL2، ...و LOCAL7 باشد. لازم به ذکر است که اين گزينه ممکن است در تمامي سيستمها پشتيباني نشود.

-u user -g group

در اينجا مي*توان کاربر و گروه را مشخص کرد. براي کار با user مي*توان از نام و يا از شماره شناسايي (uid) استفاده نمود. براي گروه نيز گروه و يا شماره شناسايي گروه(gid) .
-r directory

اين گزينه دايرکتوري زمان اجرا را مشخص مي*کند. Slapd ريشه را بعد از باز کردن شنونده*ها و قبل از خواندن هرگونه فايل پيکربندي و يا هيچ خادم ابتدايي به اين دايرکتوري تغيير مي*دهد.

-d

اين گزينه slapd را در سطح اشکال*زدايي معين شده تنظيم مي*کند. هنگامي که به جاي آن از کاراکتر ؟ استفاده نماييم سطوح اشکال زداي مختلفي نمايش داده مي*شود و slapd صرف نظر از گزينه ديگري که به آن داده*ايد، خارج مي*شود. سطوح اشکال*زدايي به صورت زير است:



شما مي*توانيد چند سطحي بودن را با اختصاص گزينه اشکال*زدايي براي هر يک از سطوح خواسته شده فعال سازيد و يا، تا زماني که سطوح حالت افزايشي دارند، شما مي*توانيد خودتان از رياضيات کمک بگيريد. بدين صورت که اگر که شما سطوح 64 و 1 را مي*خواهيد مي*توانيد شماره سطح را جمع آنها قرار دهيد (در اينجا –d 65). يا اينکه، به slapd اجازه دهيد که اين کار را انجام دهد (-d 1 –d 64).
2.4.4 اجرا
به صورت پيش فرض باينريهاي LDAP در /usr/local/libexec قرار مي گيرد.در حالت کلي:

/usr/local/etc/libexec/slapd []*

و براي شروع، شما مي توانيد LDAP daemon را در مد رفع اشکال راه اندازي نماييد:

/usr/local/libexec/slapd -4 -d -1 -f /usr/local/etc/openldap/slapd.conf -h "ldaps:///"

با اين فرمان LDAP daemon با گوش دادن براي IPv4 شروع مي شود، پيغامهاي رفع اشکال را نمايش مي*دهد، از فايل پيکربندي /usr/local/etc/openldap/slapd.conf استفاده مي*نمايد و در مد SSL اجرا مي*شود. و يا براي تست و راه اندازي کارساز به روشي ديگر:

/usr/local/libexec/slapd -d9 -h "ldaps:/// ldaps://:12345"

اين فرمان کارساز را روي پورت هاي 636 و بر روي12345 ،SSL را اجرا مي کند. همچنين سطح debug ،9 خواهد بود که اطلاعات ارتباط SSL را نمايش مي*دهد. اگر که شما در دستور خود از سطح اشکال زدايي 0 نيز استفاده نماييد slapd به طور اتوماتيک چند شاخه شده و خود را کنترل ترمينال جدا ساخته و در پس زمينه اجرا مي شود.

3.4.4 صحت اجرا
اما چطور مطمئن مي*شويد که کارساز به درستي در حال فعاليت است؟ OpenSSL برنامه کاربردي داردکه ارتباطات SSL را تشخيص داده و شما مي*توانيد با اضافه کردن تعدادي موجوديت، آنها را از طرف کارخواه جستجو نماييد:

openssl s_client -connect example.com:636

4.4.4 پايان دادن به کار کارساز:

kill -TERM

که بايد شماره پروسه slapd در سيستم خود آن را اجرا نماييد، و يا:

kill -INT `cat /usr/local/var/slapd.pid`

در حالتي که در هنگام نصب با دستورconfigure مسير را به صورت usr/local/var/ مشخص کرده بوده*ايد. پايان دادن به عملکردslapd به روشهاي موثر و قوي ممکن است که به از دست دادن اطلاعات و يا خرابي پايگاه داده بيانجامد.

قبل آنکه داده*اي وارد نماييد، لازم است تا اشيائي بسازيم که شامل داده*هاي ما باشد. تمام داده*هايي که در دايرکتوري LDAP داريم در قالب فايل ldif خواهد بود، فايل متني که مي*توانيد با ويرايشگر خود آن را ويرايش نماييد:

dn: dc=example, dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: example
dc: example
dn: ou=addressbook, dc=example, dc=com
objectclass: top
objectclass: organizationalUnit
ou: addressbook

دقت داشته باشيد که هيچ فضاي انتهايي اضافي وجود ندارد زيرا که اين مورد ارائه فايل ldif را ناکارآمد مي*نمايد. اجازه بدهيد تا نگاهي دقيق تر داشته باشيم به ساختار اين فايل و ارتباط آن را با آنچه تاکنون آموخته*ايم، بيابيم:

خطي که با dn آغاز شده است نشان دهنده ورودي سطح بالا و در واقع ريشه است.
خطي که با o مشخص شده است اختصار organization است.
خط بعدي objectclass است که در اينجا top است.
با قرار دادن يک خط خالي به سراغ دسته دوم اطلاعات مي*رويم:

Dn براي دفترچه آدرسها (که شاخه*اي براي example است).
و ou که مشخص کننده يکي از خصوصيات است (organization unit)
به عنوان مثال شما به دنبال تمام اطلاعاتي هستيد که addressbook دارند. به راحتي مي*توانيد در جستجوي خود از جمله "show all dn where ou=addressbook" استفاده نماييد. شما مي*توانيد تعاريف خود را به صورت زير به دايرکتوري اضافه نماييد:

ldapadd -x -W -D 'cn=Manager,dc=example, dc=com' -f myfile.ldif -h "ldaps://ldap.example.com"

x به شما اين اجازهauthentication ساده را مي*دهد؛W از شما رمز عبور مي*خواهد؛ D براي بهم پيوستن با FQDN تعيين فايل مورد استفاده و H براي گذر از URI ، LDAP به کارساز LDAP.

5. کنترل دسترسي
دسترسي به موجوديتها و خصايص آنها همگي توسط خصوصيت olcAccess کنترل مي*شود که مقادير آن سلسله*اي از جهات دسترسي است. فرم کلي پيکربندي آن به صورت زير است:

olcAccess: <access directive>
<access directive> ::= to <what>
[by <who> <access> <control>]+
<what> ::= * |
[dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
[filter=<ldapfilter>] [attrs=<attrlist>]
<basic-style> ::= regex | exact
<scope-style> ::= base | one | subtree | children
<attrlist> ::= <attr> [val[.<basic-style>]=<regex>] | <attr> , <attrlist>
<attr> ::= <attrname> | entry | children
<who> ::= * | [anonymous | users | self
| dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
[dnattr=<attrname>]
[group[/<objectclass>[/<attrname>][.<basic-style>]]=<regex>]
[peername[.<basic-style>]=<regex>]
[sockname[.<basic-style>]=<regex>]
[domain[.<basic-style>]=<regex>]
[sockurl[.<basic-style>]=<regex>]
[set=<setspec>]
[aci=<attrname>]
<access> ::= [self]{<level>|<priv>}
<level> ::= none | auth | compare | search | read | write
<priv> ::= {=|+|-}{w|r|s|c|x|0}+
<control> ::= [stop | continue | break]

در توضيح آن مي*توان به موارد زير اشاره*اي داشت:
بخش <what> خصوصيات و/ يا موجوديتهايي را که براي دسترسي درخواست مي*شوند، انتخاب مي*کند.
<who> مشخص مي*کند چه موجوديتهايي اجازه دسترسي دارند، و بخش <access> مشخص*کننده مجوزهاي دسترسي است.

سه جزء <who> <access> <control> از اجازه موجوديتهاي زيادي که اجازه دسترسي به همان مجموعه درست و خصوصيات آنها را داشته باشند، پشتيباني مي نمايد. در ادامه به توضيح بيشتر اين3 بخش خواهيم پرداخت:

1.5 What براي کنترل دسترسي (به)

بخش <what> همان طور که گفته شد خصوصيات و/ يا موجوديتهايي را که براي دسترسي درخواست مي*شوند، انتخاب مي*کند. موجوديتها معمولاً به دو روش انتخاب مي*شوند: به وسيله DN و به وسيله فيلتر. جملات زير موجوديتها را به اساس DN انتخاب مي*کنند:

to *
to dn[.<basic-style>]=<regex>
to dn.<scope-style>=<DN>

اولين مدل براي انتخاب تمام وروديها انتخاب مي*شود. دومي بايستي وروديها را با مقايسه کلمه*بندي معين مقابل به عنوان هدف نرمال*سازي DN انتخاب نمايد. در مدل سوم، وروديهايي انتخاب مي*شوند که در محدوده DN متقاضي وجود داشته باشند. ناحيه مشخص شده مي*تواند base، one، subtree يا children باشد. هنگامي که با base تنظيم شده باشد موجوديتها تنها با DNهاي محيا شده مقايسه مي*شوند. One وروديهايي که رده بالاتر آنها با DN تامين شده است مقايسه مي*شوند. Subtree تمام وروديهاي زير شاخه که ريشه آنها DN است را مقايسه مي*کند و در نهايت children که وروديهاي پايين*تر از DN را مقايسه مي*کند ( اما نه وروديي که با DN نامگذاري شده است).

براي مثال، اگر که دايرکتوري شامل نام وروديهايي اين چنين بود:

0: o=suffix
1: cn=Manager,o=suffix
2: ou=people,o=suffix
3: uid=kdz,ou=people,o=suffix
4: cn=addresses,uid=kdz,ou=people,o=suffix
5: uid=hyc,ou=people,o=suffix

بنابراين هر خط دستوري با سطري از بالا که شماره آن درج شده است مطابقت خواهد يافت:

dn.base="ou=people,o=suffix" با 2;
dn.one="ou=people,o=suffix" با 3و 5;
dn.subtree="ou=people,o=suffix" با 2, 3, 4و 5;
dn.children="ou=people,o=suffix" با 3, 4و 5.

همچنين مي*توان وروديها را با فيلتر انتخاب نمود:

to filter=<ldap filter>

که <ldap fiter> جمله*اي است که به عنوان فيلتر جستجوي LDAP ارائه مي*شود( مطابق آنچه در RFC2254 توضيح داده شده است).براي مثال:

to filter=(objectClass=person)

توجه داشته باشيد که وروديها را مي*توان با DN و فيلتر با گنجاندن آنها در عبارت <what> انتخاب نمود:

to dn.one="ou=people,o=suffix" filter=(objectClass=person)

خصوصيات ورودي با قرار دادن ليستي از نام خصايصي که با کاما جدا شده*اند در انتخاب کننده <what> انتخاب مي شوند:

attrs=<attribute list>

يک مقدار خاص از يک خصوصيت با استفاده از يک نام مجزا و استفاده از مقدار مشخص انتخاب مي*شود:

attrs=<attribute> val[.<style>]=<regex>

دو خصوصيت پيش ساخته entry و children وجود دارد. براي خواندن يک ورودي هدف؛ موضوع بايستي اجازه دسترسي خواندن به خصوصيت ورودي هدف داشته باشد. براي حذف و يا اضافه ورودي، موضوع بايستي اجازه دسترسي نوشتن به خصوصيت ورودي هدف و اجازه دسترسي نوشتن در فرزند والد ورودي داشته باشد.

2.5 Who براي اجازه دسترسي
بخش <who> موجوديتهايي را که اجازه دسترسي دارند مشخص مي*کند. توجه داشته باشيد که اجازه براي موجوديتها و نه وروديها.

جدول ذيل مجموعه تصريح*کننده*هاي موجوديتها است:

موجوديت تصريح کننده

All, including anonymous and authenticated users *
Anonymous (non-authenticated) users anonymous
Authenticated users users
User associated with target entry self
Users matching a regular expression dn[.<basic-style>]=<regex>
Users within scope of a DN dn.<scope-style>=<DN>

3.5 دسترسي به امتيازها(مجوزها)
نوع مجوزها (حقوق) مي*تواند يکي از موارد زير باشد:

توضيح امتيازها سطح

no access =0 none
needed to bind =x auth
needed to compare =cx compare
needed to apply search filters =scx search
needed to read search results =rscx read
needed to modify/rename =wrscx write

هر سطحي برتمام سطوح دسترسي پايين ترخود دلالت دارد. براي مثال، اجازه خواندن سطر آخر به معناي اجازه نوشتن، جستجو، مقايسه و دسترسي auth داشتن است.

4.5 ارزيابي کنترل دسترسي
هنگام ارزيابي درخواستهايي که بايستي به وروديها و/ يا خصوصياتي دستيابي داشته باشند، slapd ورودي و/ يا خصوصيات را با انتخاب کننده <what> که در فايل پيکربندي قرار گرفته است مقايسه مي*کند. براي هر ورودي، کنترل دستيابي که در پايگاه داده*اي که وروديها را نگهداري مي*کند مهيا است، اعمال مي*شود. با وجود اين حق تقدم، دستوردهنده دسترسي به ترتيب در حال بررسي تمهيدات ثبت شده در فايل پيکربندي مي*باشد.

Slapd با يافتن اولين <what> انتخاب کننده که با ورودي و/ يا خصوصيت مورد نظر مطابقت داشته باشد متوقف مي*شود. دستوردهنده دسترسي متناظر از اجزائي است که slapd براي ارزيابي دسترسيها مورد استفاده قرار مي*دهد.

بعد آن slapd دسترسي موجوديت مورد تقاضا را با انتخاب کننده <who> به ترتيبي که منتخبين قرار گرفته*اند بررسي مي*نمايد و با رسيدن به اولين انتخاب مطابق متوقف مي*شود.

در نهايت، slapd مجوزهاي دسترسي را در انتخاب کننده <access> با طريقه دستيابي که کارخواه درخواست کرده است مقايسه مي*کند. اگر که اجازه بزرگتر و يا مساوي تقاضا بود اجازه دسترسي صادر مي*شود، و در غير اين صورت درخواست دسترسي رد مي شود.

ترتيب ارزش*دهيها به روشهاي دسترسي بسيار مهم است. اگر که دستوري مهمتر باشد بايستي که در اولويت بالاتري مطرح شود. اين اصول در مورد چيدمان <who> نيز مصداق دارد. در ادامه با ذکر چند مثال به بررسي بيشتر اين موارد خواهيم پرداخت.

امکان کنترل دسترسي که در بالا تشريح شد بسيار قوي است. با مثالي ساده شروع مي*کنيم:

access to * by * read

اين دستور به همگان اجازه خواندن مي*دهد.

access to *
by self write
by anonymous auth
by * read

در اين مثال، کاربر اجازه دارد که وروديهاي خود را تغيير دهد، anonymous در مقابل اين ورودي تصديق مي*شود و کليه افراد نيز اجازه خواندن دارند. دقت داشته باشيد که تنها اولين عبارت by <who> شرط است که کدام تطابق اعمال شود. بنابراين، کاربران anonymous مجوزتصديق هويت دارند و نه خواندن، اگر که: عبارت آخر by users read تعريف شده باشد.

6. واسط گرافيکي
براي کار با کارساز LDAP مي*توان از واسطهاي گرافيکي که براي همين منظور طراحي شده است استفاده نمود که در اينجا به شرح مختصري پيرامون چند مثال از اين نوع نرم افزار خواهيم پرداخت:
1.6 PHPLdapAdmin يکي از مناسب*ترين و پرکاربردترين نرم*افزارهاي اين دسته است. براي کار با اين نرم*افزار احتياج به کارساز PHP خواهيد داشت که براي اين منظور مي*توانيد از آخرين نسخه Apache و جديدترين نسخه PHP استفاده نماييد.

در عين حال سيستم بايستي شامل پشتيباني از XML باشد. بعد از نصب شما مي*توانيد صفحه اصلي اين نرم*افزار را در آدرس Local سيستم به وسيله مرورگر خود مشاهده نماييد.


شکل 5 : صفحه اصلي

PHPLDAPAdmin
2.6 GQ يک کارخواه LDAP است، و نسخه 1.1.1 آن شامل خصوصيات زير مي باشد:
• مرورگر LDAP
• مرورگر الگوي نسخه شماره 3 LDAP
• قابليت ساخت قالب
• ايجاد بخشي و يا کل اطلاعات کارساز به LDIF
• استفاده از هر تعداد کارساز
• قابليت جستجو به هر دو صورت DN و يا فيلتر
• ويرايش و حذف وروديها
• اضافه کردن ورودي با استفاده از وروديهاي موجود، و يا بر روي پايه قالب شما
• پشتيباني از ترکيبات نحوي و خصوصيات ويژه LDAP با ارائه آنها در سبکي خاص.
در اينجا تصويري از صفحه اصلي اين نرم*افزار را مشاهده مي*نماييد:


شکل6 : صفحه اصلي GQ

در اينجا همانطور که در انتهاي تصوير مشاهده مي*نماييد نرم*افزار مورد نظر يک کارساز که تنها کارساز شبکه است را براي ارتباط پيدا نموده است. و در ادامه کار با اين نرم*افزار مي*توانيد ليست وروديها را بر اساس نياز خود در دسته بنديهاي مختلف مشاهده نماييد:


شکل 7: نمايش اطلاعات

3.6 LBE ( LDAP Browser Editor) کارخواه ديگري است که بر پايه JAVA است و مي*توانيد آن را از آدرس Illinois Institute of Technology دريافت نماييد و با اجراي آن از فايل پيش فرض var/tmp/ldapbrowser/ پارامترهاي آن را مطابق تصوير آماده ويرايش خواهيد ديد.


شکل 8 : برقراري ارتباط

و در ادامه مي*توانيد به موجوديتهاي دايرکتوري دسترسي داشته باشيد:


شکل ۹ : نمايش اطلاعات

از ويژگيهاي نسخه Beta آن مي*توان به اشکالات رفع شده آن، بهبود کيفي آن، پشتيباني آن از UTF-8 ، پشتيباني از ايجاد چند نشست همزمان اشاره نمود.
4.6 نوع ديگري از کارخواه، پيکربندي Outlook Express شرکت مايکروسافت است. براي پيکربندي آن به ترتيب مراحل زير را طي نماييد:

OutlookExpress --> Tools --> Accounts


شکل 10: ايجاد ارتباط

با انتخاب tab ،Directory Service بايستي که سرويس دايرکتوري جديدي اضافه نماييد:


شکل 11 : انتخاب دايرکتوري

پس از اضافه نمودن آن مي*توانيد با انتخاب دکمه Properties (و براي اطلاعات تکميلي تر tab، Advanced آن) خصوصيات سرويس دايرکتوري خود را مشاهده و در صورت نياز تغيير دهيد. پس از آن با انتخاب Find People مي*توانيد به جستجوي وروديهاي آن بپردازيد:


شکل 12 : جستجوي اطلاعات

تهیه و تنظیم: foss.ir


1 - ITU Information and Communication Technology
2 - BSA-IDC [2005]
3 - Dynamic Host Configuration Protocol
4 - Snort :: Home Page
5 - Welcome to The Apache Software Foundation!
6 - Newsnetcraft.com/archives/web-server/survey.html
7 - MySQL :: The world's most popular open source database
8 - PostgreSQL: The world's most advanced open source database
9 - Content Management System(CMS)
10 - About :: PostNuke :: Flexible Content Management System
11 - Plone.org
12 - Linux Terminal Server Project
13 - AbiWord
14 - Extensible Markup Language
15 - GNOME Office / Gnumeric - Welcome to Gnumeric!
16 - Mozilla.org - Home of the Mozilla Project
17 - galeon.sourceforge.net
18 - conqueror.kde.org
19 - GNU Image Manipulation Program-www.gimp.org
20 - Dia a drawing program - Moved
21 - audacity.sourceforge.net
22 - www.mplayerhp.hu
23 - Tux Paint-www.newbreedsoftware.com/tuxpaint
24 - Kig-edu.kde.org/kig
25 - bioinformatics.org/chemical
26 - Open Source Physics
27 - QCAD
28 - scilabsoft.inria.fr
29 - Education Software for Schools: Free Software, Open Source | School Forge
30 - richtech.ca/seul/
31 - organization for Free Software in Education and Teaching
32 - www.ofset.org.freeduc
33 - Total Cost Ownership
34 - phpmylibrary.sourceforge.net
35 - obiblio.sourceforge.net
36 - open knowledge initiative
37 - instructional management system
38 - sharable , content object reference model
39 - advanced distributed learning
40 - www.schooltol.org




موضوعات مشابه: