يشرح هذا الدرس دمج سامبا مع LDAP.
دور خادوم سامبا هو أن يكون خادومًا قائمًا بحد ذاته، ويوفر دليل LDAP بطاقة الاستيثاق بالإضافة إلى احتواء معلومات حساب المستخدم والمجموعة والجهاز التي يتطلبها سامبا لكي يعمل (في أيٍّ من أدواره الممكنة)؛ المتطلب المسبق هو خادوم OpenLDAP مضبوط مع دليل يمكن استخدامه لطلبيات الاستيثاق؛ راجع الدرس «الإدارة عن بعد – OpenSSH» لمزيدٍ من المعلومات حول تحقيق هذا المتطلب؛ وبعد إكمال هذا الدرس، عليك تحديد ماذا تريد من سامبا أن يفعل لك، وتضبطه وفقًا لذلك.
تثبيت البرمجيات
هنالك ثلاث حزم مطلوبة لدمج سامبا مع LDAP: حزمة samba ،samba-doc و smbldap-tools.
وإذا أردنا الدقة، فإن حزمة smbldap-tools ليست مطلوبة، لكن ما لم يكن لديك طريقة أخرى لإدارة قيود سامبا المختلفة (المستخدمين والمجموعات والحواسيب) في LDAP، فعليك تثبيتها.
ثبِّت هذه الحزم الآن:
sudo apt-get install samba samba-doc smbldap-tools
ضبط LDAP
سنضبط الآن خادوم LDAP لكي يلائم بيانات سامبا، إذ أننا سنجري ثلاث مهمات في هذا القسم:
- استيراد مخطط (schema).
- فهرسة بعض القيود.
- إضافة كائنات (objects).
مخطط سامبا
لكي يُستخدَم OpenLDAP كسند خلفي (backend) لسامبا؛ فمنطقيًا يجب أن تَستخدم شجرة معلومات الدليل خاصياتٍ تستطيع وصف بيانات سامبا وصفًا سليمًا؛ و يمكن الحصول على مثل هذه الخاصيات باستخدام مخطط سامبا في LDAP؛ لنفعل ذلك الآن.
ملاحظة: لمزيد من المعلومات حول المخططات وتثبيتهم، راجع القسم «تعديل قاعدة بيانات ضبط slapd» في الدرس السابق.
يمكن العثور على المخطط في حزمة samba-doc التي ثبتناها الآن، لكنها تحتاج إلى أن يُفَكَّ ضغطها وتُنسَخ إلى مجلد /etc/ldap/schema:
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema sudo gzip -d /etc/ldap/schema/samba.schema.gz
احصل على ملف الضبط schema_convert.conf الذي يحتوي على الأسطر الآتية:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/ldapns.schema include /etc/ldap/schema/pmi.schema include /etc/ldap/schema/samba.schema
احصل على مجلد ldif_output لكي يُبقي على المخرجات.
حدد فهرس المخطط:
slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,cn=schema dn: cn={14}samba,cn=schema,cn=config
حوِّل المخطط إلى صيغة LDIF:
slapcat -f schema_convert.conf -F ldif_output -n0 -H \ ldap:///cn={14}samba,cn=schema,cn=config -l cn=samba.ldif
عدِّل ملف cn=samba.ldif المولَّد بحذف معلومات الفهرس حتى تصل إلى:
dn: cn=samba,cn=schema,cn=config ... cn: samba
احذف الأسطر في الأسفل:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
ستختلف قيم خاصياتك.
أضف المخطط الجديد:
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif
ولطلب وإظهار المخطط الجديد:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config \ 'cn=*samba*'
فهارس سامبا
يعرف الآن slapd عن خاصيات سامبا، لنضبط الآن بعض الفهارس (indices) بناءً عليها؛ فهرسة المدخلات هي طريقة لزيادة الأداء عندما يُجرِي العميل بحثًا مُرشَّحًا على شجرة معلومات الدليل.
أنشِئ الملف samba_indices.ldif بالمحتويات الآتية:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub
استخدم الأداة ldapmodify لتحميل الفهارس الجديدة:
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif
إذا جرى كل شيء على ما يرام، فيجب أن تشاهد الفهارس الجديدة باستخدام ldapsearch:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H \ ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex
إضافة كائنات LDAP لسامبا
تاليًا، اضبط حزمة smbldap-tools لمطابقة بيئتك؛ تأتي هذه الحزمة مع ملف ضبط سيسأل بعض الأسئلة عن الخيارات الضرورية (اسمه smbldap-config.pl، وكان اسمه فيما مضى configure.pl)؛ لكن هنالك علِّة1 ليست مثبتة لكنه موجودة في الكود المصدري (apt-get source smbldap-tools).
لضبط الحزمة يدويًا، عليك إنشاء وتعديل ملفَيّ /etc/smbldap-tools/smbldap.conf و /etc/smbldap-tools/smbldap_bind.conf.
سيضيف سكربت smbldap-populate كائنات LDAP اللازمة لعمل سامبا؛ من الجيد عادةً أن تأخذ نسخةً احتياطيةً من كامل الدليل باستخدام slapcat:
sudo slapcat -l backup.ldif
أكمل بإملاء الدليل بعد أخذك لنسخةٍ احتياطيةٍ منه:
sudo smbldap-populate
تستطيع إنشاء ملف LDIF يحتوي كائنات سامبا الجديدة بتنفيذ الأمر:
sudo smbldap-populate -e samba.ldif
وهذا سيسمح لك بمعاينة التعديلات والتأكد من أن كل شيء صحيح؛ ثم نفِّذ السكربت لكن بدون الخيار -e؛ أو تستطيع أخذ ملف LDIF واستيراد بياناته كالمعتاد.
يجب أن يملك دليل LDAP الآن المعلومات الضرورية للاستيثاق من مستخدمي سامبا.
ضبط سامبا
هنالك عدّة طرق لضبط سامبا، التي سنشرحها في هذه السلسلة لاحقًا؛ لتضبط سامبا ليستخدم LDAP، فعدِّل الملف /etc/samba/smb.conf وأزل التعليق قبل معامل passdb backend وأضف بعض معاملات ldap:
# passdb backend = tdbsam # LDAP Settings passdb backend = ldapsam:ldap://hostname ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=example,dc=com ldap ssl = start tls ldap passwd sync = yes ... add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
عدِّل القيم لتطابق بيئتك.
أعد تشغيل خدمة samba لتفعيل الإعدادات الجديدة:
sudo restart smbd sudo restart nmbd
أخبر سامبا الآن عن كلمة مرور rootDN (تلك التي ضُبِطَت أثناء تثبيت حزمة slapd):
sudo smbpasswd -w password
إذا كان لديك مستخدم LDAP موجود مسبقًا، وأردت تضمينه في سامبا، فستحتاج لإضافة بعض الخاصيات؛ تَفعَل أداة smbpasswd هذا أيضًا (يجب أن يقدر المضيف على رؤية [أو سرد] هؤلاء المستخدمين عبر NSS؛ ثَبِّت واضبط إما libnss-ldapd أو libnss-ldap):
sudo smbpasswd -a username
سيُطلَب منك إدخال كلمة المرور، وستُعتبَر هي كلمة المرور الجديدة لهذا المستخدم.
لإدارة حسابات المستخدم والمجموعة والجهاز، فاستخدم الأدوات الموفرة من حزمة smbldap-tools؛ هذه بعض الأمثلة:
إضافة مستخدم جديد:
sudo smbldap-useradd -a -P username
يضيف الخيار -a خاصيات سامبا، ويستدعي الخيار -P الأداة smbldap-passwd بعد إنشاء المستخدم مما يسمح لك بإدخال كلمة مرور لذاك المستخدم.
لإزالة مستخدم:
sudo smbldap-userdel username
استُخدِم الخيار -r في الأمر السابق لحذف مجلد المنزل للمستخدم المحدد.
- لإضافة مجموعة:
sudo smbldap-groupadd -a groupname
وكما في الأمر smbldap-useradd، يضيف الخيار -a خاصيات سامبا.
- لإنشاء مستخدم جديد ويكون عضوًا في مجموعة:
sudo smbldap-groupmod -m username groupname
يمكن أن يضيف الخيار -m أكثر من مستخدم في نفس الوقت بسردهم مفصولًا بينهم بفاصلة.
- لحذف مستخدم من مجموعة:
sudo smbldap-groupmod -x username groupname
- لإضافة حساب جهاز في سامبا:
sudo smbldap-useradd -t 0 -w username
استبدل username باسم محطة العمل (workstation)، يُنشِئ الخيار -t 0 حساب جهاز بدون تأخير، بينما يحدد الخيار -w الحساب كحساب جهاز؛ لاحظ أيضًا أن معامل add machine script في /etc/samba/smb.conf قد غُيِّر لكي يستخدم smbldap-useradd.
هذه هي الأدوات في حزمة smbldap-tools التي لم نشرحها هنا:
- smbldap-groupadd
- smbldap-groupdel
- smbldap-groupmod
- smbldap-groupshow
- smbldap-passwd
- smbldap-populate
- smbldap-useradd
- smbldap-userdel
- smbldap-userinfo
- smbldap-userlist
- smbldap-usermod
- smbldap-usershow
مصادر
- هنالك عدّة أماكن وثِّق فيها LDAP مع سامبا في «Samba HOWTO Collection».
- على الرغم من أن هذه الصفحة قديمة (2007) لكن صفحة «Linux Samba-OpenLDAP HOWTO» تحتوي ملاحظات مهمة.
- الصفحة الرئيسية «Samba Ubuntu community documentation» فيها مجموعة من الوصلات للمقالات المفيدة.
ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Samba and LDAP.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.