السلام عليكم
رابط الفيديو وملف الشرح
ملاحظة: الفيديو صامت لذلك لا غنى لك عن الشرح.
أولا الــLDAP إختصار لـ Lightweight Directory Access Protocol
المهمة الرئيسية لبروتوكول الــLDAP هي جعل عملية التوثيق (Authentication) من حسابات المستخدمين عند الدخول logon لأي جهاز بالشبكة مركزية. بعبارة أخرى هناك قاعدة بيانات مركزية لحسابات المستخدمين مخزنة بالخادم (LDAP server) ومن خلالها يتم التحقق من صحة المعلومات المدخلة عند كل عملية دخول لأي جهاز مرتبط بالشبكة، وذلك يعطي النظام ومدير النظام root عدة مزايا وأهمها:
-- توفير الوقت والجهد فبدلا من التنقل بين الأجهزة لإنشاء الحسابات وعمل إعدادات لها فإن هناك قاعدة بيانات مركزية ولا حاجة لي لحمل فنجان القهوة الكبير والإنتقال من كرسي لكرسي.
-- يستطيع المستخدم user الدخول Login لحسابه من أي جهاز مرتبط بالشبكة.
-- هناك مكان واحد لتخزين بيانات المستخدمين وذلك يجعل عملية الــBackup أسهل وأسرع وأضمن.
طبعا هذا غيض من فيض لأهمية هذا البروتوكول، الآن فالنضع الكلام النظري جانبا ونبدأ العمل:
السيناريو :
لدينا شبكة محلية LAN كالتالي : Subnet: 192.168.0.0/24 و اسم الـdomain هو example.com
عنوان الخادم server بالشبكة هو 192.168.0.1 واسمه ahmed
وللتجربة نحتاج لجهاز آخر to act as a client اسمه Station1 وعنوانه 192.168.0.100
قبل كل شيء يجب عليك تنصيب رزمة Package الــ (openldap-*) كاملة للـserver والتي تتكون من:
أول شيء يجب صنعه بعد التنصيب هو إنشاء كلمة سر لـ LDAP root user وذلك بإستخدام:
أكتب أي كلمة سر تريدها وليس بالضروري أن تشابه كلمة سر الـroot user وبعد ذلك لا تنس نسخ الأحرف المتتالية ( السطر الرابع بداية من { وإنتهاء بـ s ) والإحتفاظ بها لأننا سنستخدمها فيما بعد. إن كنت تستخدم الكدي أو الجنوم فمن السهل عليك نسخها ولصقها في أي مكان تريده أما إن لم يكن لديك أو كنت تعمل من runlevel 3 أو ما شابه فإرجع إلى الفيديو رقم 3.
ملف الإعداد الرئيسي لهذه الخدمة هو /etc/openldap/slapd.conf
قم بفتحه وتعديل الأسطر التالية لتصبح :
-- بروتوكول الـLDAP يتعامل مع حسابات المستخدمين accounts أو الأجهزة مثل الطابعات كـObjects ومهمة السطر الرابع هي أن يقول للـopenLdap أن هذا التعريف لـحساب مستخدم.
[
رابط الفيديو وملف الشرح
ملاحظة: الفيديو صامت لذلك لا غنى لك عن الشرح.
أولا الــLDAP إختصار لـ Lightweight Directory Access Protocol
المهمة الرئيسية لبروتوكول الــLDAP هي جعل عملية التوثيق (Authentication) من حسابات المستخدمين عند الدخول logon لأي جهاز بالشبكة مركزية. بعبارة أخرى هناك قاعدة بيانات مركزية لحسابات المستخدمين مخزنة بالخادم (LDAP server) ومن خلالها يتم التحقق من صحة المعلومات المدخلة عند كل عملية دخول لأي جهاز مرتبط بالشبكة، وذلك يعطي النظام ومدير النظام root عدة مزايا وأهمها:
-- توفير الوقت والجهد فبدلا من التنقل بين الأجهزة لإنشاء الحسابات وعمل إعدادات لها فإن هناك قاعدة بيانات مركزية ولا حاجة لي لحمل فنجان القهوة الكبير والإنتقال من كرسي لكرسي.
-- يستطيع المستخدم user الدخول Login لحسابه من أي جهاز مرتبط بالشبكة.
-- هناك مكان واحد لتخزين بيانات المستخدمين وذلك يجعل عملية الــBackup أسهل وأسرع وأضمن.
طبعا هذا غيض من فيض لأهمية هذا البروتوكول، الآن فالنضع الكلام النظري جانبا ونبدأ العمل:
السيناريو :
لدينا شبكة محلية LAN كالتالي : Subnet: 192.168.0.0/24 و اسم الـdomain هو example.com
عنوان الخادم server بالشبكة هو 192.168.0.1 واسمه ahmed
وللتجربة نحتاج لجهاز آخر to act as a client اسمه Station1 وعنوانه 192.168.0.100
قبل كل شيء يجب عليك تنصيب رزمة Package الــ (openldap-*) كاملة للـserver والتي تتكون من:
openldap-2.2.23-5
openldap-devel-2.2.23-5
nss_ldap-234-4
openldap-clients-2.2.23-5
openldap-servers-2.2.23-5
openldap-devel-2.2.23-5
nss_ldap-234-4
openldap-clients-2.2.23-5
openldap-servers-2.2.23-5
أول شيء يجب صنعه بعد التنصيب هو إنشاء كلمة سر لـ LDAP root user وذلك بإستخدام:
كود:
[LEFT][[email protected] ~]# slappasswd[/LEFT] [LEFT]New password: Re-enter new password: {SSHA}5WcnZW3lXJXf72pyS5NT2z3sjgVrpq2s [[email protected] ~]#[/LEFT]
أكتب أي كلمة سر تريدها وليس بالضروري أن تشابه كلمة سر الـroot user وبعد ذلك لا تنس نسخ الأحرف المتتالية ( السطر الرابع بداية من { وإنتهاء بـ s ) والإحتفاظ بها لأننا سنستخدمها فيما بعد. إن كنت تستخدم الكدي أو الجنوم فمن السهل عليك نسخها ولصقها في أي مكان تريده أما إن لم يكن لديك أو كنت تعمل من runlevel 3 أو ما شابه فإرجع إلى الفيديو رقم 3.
ملف الإعداد الرئيسي لهذه الخدمة هو /etc/openldap/slapd.conf
قم بفتحه وتعديل الأسطر التالية لتصبح :
كود:
[LEFT]database bdb suffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" rootpw {SSHA}5WcnZW3lXJXf72pyS5NT2z3sjgVrpq2s[/LEFT]
بعد التعديل قم بتشغيل الخدمة عن طريق أي من:
كود:
[LEFT]service ldap start /etc/init.d/ldap start[/LEFT]
وبهذا نكون قد إنتهينا من إعدادات الخدمة بشكل عام والآن سنرى كيفية إضافة حسابات المستخدمين Users accounts:
تذكر أن كل حساب تريد أن تضيفه إلى الـOpenldap يجب أن يتم إنشاءه بشكل أولي على السيرفر يعني بالعربي مستخدم محلي وبالإنجليزيlocal user
كمثال سنضيف مستخدم واحد (user1):
كود:
[LEFT][[email protected] ~]# useradd user1 [[email protected] ~]# passwd user1 new password: Retype password:[/LEFT]
هنا سأوضح بعض الأمور:
لكي يستطيع الـopenLdap التعامل مع المستخدمين على مستوى الشبكة يجب أن يكون لكل مستخدم تعريفه الخاص (صيغة معينة للبروتوكول) مخزنة بملف بإمتداد .ldif في /etc/openldap/ , مثلا التعريف الخاص بالمستخدم user1 سيكون:
كود:
[LEFT]dn: uid=user1,ou=People,dc=example,dc=com uid: user1 cn: user1 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}$1$crGdBSdr$njuf6chsGxWJsgxJ3cP9k0 shadowLastChange: 14806 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 500 gidNumber: 500 homeDirectory: /home/user1[/LEFT]
قبل أن أسترسل بالشرح أريد أن أطمئنك أننا لن نكتب هذه الأسطر بأيدينا، ولكن لا بد من شرح المهم منها:
-- مهمة السطر الأول هو أن يقول للـopenLdap أن هناك مستخدم اسمه user1 وينتمي للـdomain الذي اسمه example.com ويقع بالوحدة التنظيمية People داخل الـLDAP Hierarchy
-- السطر الثالث يعتبر كـID على مستوى المستخدمين داخل الـopenLdap.
-- السطر الثالث يعتبر كـID على مستوى المستخدمين داخل الـopenLdap.
-- بروتوكول الـLDAP يتعامل مع حسابات المستخدمين accounts أو الأجهزة مثل الطابعات كـObjects ومهمة السطر الرابع هي أن يقول للـopenLdap أن هذا التعريف لـحساب مستخدم.
طبعا بإمكانك إنشاء ملف .ldif مثلا /etc/openldap/users.lidf من ثم كتابة الصيغة التعريفية لكل مستخدم يدويا (يجوز أن يحتوي الملف على أكثر من مستخدم على أن يفصل بينهم بسطر فارغ) أو أن نستخدم script جاهز يأتي مع الـopenldap package ، وهذا ما سأشرحه الآن:
كما نعلم أن كل مستخدم محلي له سطر خاص به داخل /etc/passwd، ما سنفعله الآن هو نسخ هذا السطر ولصقه بملف آخر ثم إستخدام الـscript التالي لعملية التحويل:
/usr/share/openldap/migration/migrate_passwd.pl
لنسخ معلومات الحسابات سأستخدم الأمر grep متبوعا بــِ<بالمرة الأولى وبـ << للباقي:
كود:
[LEFT][[email protected] ~]# grep user1 /etc/passwd > /etc/openldap/users.passwd[/LEFT]
ما فعلته أنني نسخت المعلومات الخاصة بـِ user1 ووضعتها داخل الملف /etc/openldap/users.passwd والذي أنشأ بشكل تلقائي بعملية الـRedirection.
وبنفس الطريقة نقوم بنسخ باقي المستخدمين, على سبيل المثال:
كود:
[LEFT][[email protected] ~]# grep ali /etc/passwd >>/etc/openldap/users.passwd [[email protected] ~]# grep farah /etc/passwd >> /etc/openldap/users.passwd [[email protected] ~]# grep fai /etc/passwd >> /etc/openldap/users.passwd[/LEFT]
لاحظ أنني بعد المرة الأولى صرت إستخدم << وذلك لأني أريد أعمل Appending وليس overwrite !
بعد أن تقوم بنسخ جميع المستخدمين الذين تريدهم قم بتنفيذ التالي (على نفس السطر):
[
كود:
[LEFT][email protected] ~]# usr/share/openldap/migration/migrate_passwd.pl /etc/openldap/users.passwd /etc/openldap/users.ldif[/LEFT]
يعني بشكل عام صيغة التحويل يجب أن تأخذ هذا الشكل:
كود:
[LEFT][B][FONT=Arial][B][FONT=Arial][[email protected] ~]# <script_file> <source file> <destination file .ldif>[/FONT][/B][/FONT][/B][/LEFT]
وبذلك يصبح لدينا ملف يحتوي على جميع المستخدمين المختارين وبصيغة البروتوكول، الآن قم بفتح الملف بإستخدام أي محرر نصوص مثلا:
كود:
[LEFT][B][FONT=Arial][[email protected] ~]# vim /etc/openldap/users.ldif[/FONT][/B][/LEFT]
وقم بتغيير سطر الـdn (Distinguished Name) يعني السطر الأول لكل مستخدم ليتناسب مع السيناريو الخاص بنا بعبارة أخرى بدلا من dc=padl إجعلها dc=example
وبذلك يصبح لدينا ملف خاص بالمستخدمين والآن نحن بحاجة لملف آخر للدومين ككل بحيث يحتوي على وصف لـexample.com وللوحدة التنظيمية People (ou إختصار لــ Organizational Unit وتعني وحدة تنظيمية):
قم بإنشاء ملف .ldif آخر وسمه example.com.lidfكالتالي:
[email protected] ~]# vim /etc/openldap/example.com.ldif
وأضف له المعلومات التالية:
كود:
[LEFT]d[B][FONT=Courier New]n: dc=example,dc=com[/FONT][/B] [B][FONT=Courier New]dc: example[/FONT][/B] [B][FONT=Courier New]description: Root LDAP entry for example.com[/FONT][/B] [B][FONT=Courier New]objectClass: dcObject[/FONT][/B] [B][FONT=Courier New]objectClass: organizationalUnit[/FONT][/B] [B][FONT=Courier New]ou: rootobject[/FONT][/B][/LEFT] [LEFT] [B][FONT=Courier New]dn: ou=People,dc=example,dc=com[/FONT][/B] [B][FONT=Courier New]ou: People[/FONT][/B] [B][FONT=Courier New]description: All people in organisation[/FONT][/B] o[B][FONT=Courier New]bjectClass: organizationalUnit[/FONT][/B][/LEFT]
لاحظ وجود سطر فارغ بين كل تعريف للـdn يجب أن لا تنس وضع هذا السطر وإلا سيظهر لك الـerror التالي:
كود:
[LEFT][B][FONT=Arial]adding new entry "dc=example,dc=com"[/FONT][/B][/LEFT] [LEFT][B][FONT=Arial]ldap_add: Type or value exists (20)[/FONT][/B][/LEFT] [LEFT][B][FONT=Arial]additional info: objectClass: value #1 provided more than once[/FONT][/B][/LEFT]
الخطوة الأخيرة المتبقية هي إنشاء قاعدة البيانات للـLDAP ونبدأ أولا بـexample.com.ldif :
كود:
[LEFT][B][FONT=Arial][[email protected] ~]# ldapadd -xW -D "cn=Manager,dc=example,dc=com" -f /etc/openldap/example.com.ldif[/FONT][/B][/LEFT] [LEFT][FONT=Arial]Enter LDAP Password:[/FONT][/LEFT] [LEFT][FONT=Arial]adding new entry "dc=example,dc=com"[/FONT][/LEFT] [LEFT][FONT=Arial]adding new entry "ou=People, dc=example,dc=com"[/FONT][/LEFT] [LEFT][B][FONT=Arial][[email protected] ~]#[/FONT][/B][/LEFT]
وبنفس الطريقة نقوم بإضافة المستخدمين كالآتي:
كود:
[LEFT][[email protected]~]# ldapadd -xW -D "cn=Manager,dc=example,dc=com" -f /etc/openldap/users.ldif[/LEFT] [LEFT]Enter LDAP Password:[/LEFT] [LEFT]adding new entry "uid=user1,ou=People,dc=example,dc=com"[/LEFT] [LEFT]adding new entry "uid=farah,ou=People,dc=example,dc=com"[/LEFT] [LEFT]adding new entry "uid=ali,ou=People,dc=example,dc=com"[/LEFT] [LEFT]……………[/LEFT] [LEFT][[email protected]~]#[/LEFT]
وبذلك نكون قد إنتهينا من إعداد السيرفر، والآن سنقوم بإعداد الـclient
كما ذكرت سابقا أن الـclient اسمه Station1 وعنوانه 192.168.0.100
طبعا لا تنس تنصيب الحزم التالية عليه:
openldap-2.2.23-5
nss_ldap-234-4
openldap-clients-2.2.23-5
nss_ldap-234-4
openldap-clients-2.2.23-5
ملف الإعداد الرئيسي للـclient هو /etc/openldap/ldap.conf ولكن بدلا من تحريره بشكل مباشر سوف نستخدم الأمر التالي(نحن الآن على الـClient machine):
كود:
[LEFT][[email protected]~]# authconfig <options> --update[/LEFT]
والأمر ينفذ كالتالي (طبعا على سطر واحد):
كود:
[LEFT][[email protected]~]# authconfig --enableldap --enableldapauth -- ldapserver=192.168.0.1 --ldapbasedn="dc=example,dc=com" -- enablemd5 --enableshadow --update[/LEFT]
لطرق أخرى إرجع إلى الفيديو رقم 6.
وبذلك نكون قد إنتهينا من إعداد الـclient وأصبحت خدمة الـLDAP جاهزة للإختبار:
تأكد أن الخدمة في وضع running على السيرفر.
على Station1 قم بالخروج exit ثم حاول الدخول بإستخدام اسم مستخدم مركزي مثل user1.
لاحظ أن الــHome للمستخدم هو / يعني قمنا بعملية الـAuthentication ولم نقم بعملية إستيراد الـ Home directory الخاص بالمستخدم، وهذا ما سنتعلمه في الدرس القادم إن شاء الله.
تعليق