اذهب إلى المحتوى

الاستيثاق الشبكي – استخدام سامبا مع LDAP على أوبنتو


عبد اللطيف ايمش

يشرح هذا الدرس دمج سامبا مع LDAP.

ubuntu-server-samba-ldap.thumb.png.ef059

دور خادوم سامبا هو أن يكون خادومًا قائمًا بحد ذاته، ويوفر دليل LDAP بطاقة الاستيثاق بالإضافة إلى احتواء معلومات حساب المستخدم والمجموعة والجهاز التي يتطلبها سامبا لكي يعمل (في أيٍّ من أدواره الممكنة)؛ المتطلب المسبق هو خادوم OpenLDAP مضبوط مع دليل يمكن استخدامه لطلبيات الاستيثاق؛ راجع الدرس «الإدارة عن بعد – OpenSSH» لمزيدٍ من المعلومات حول تحقيق هذا المتطلب؛ وبعد إكمال هذا الدرس، عليك تحديد ماذا تريد من سامبا أن يفعل لك، وتضبطه وفقًا لذلك.

تثبيت البرمجيات

هنالك ثلاث حزم مطلوبة لدمج سامبا مع LDAP: حزمة samba ،samba-doc و smbldap-tools.

وإذا أردنا الدقة، فإن حزمة smbldap-tools ليست مطلوبة، لكن ما لم يكن لديك طريقة أخرى لإدارة قيود سامبا المختلفة (المستخدمين والمجموعات والحواسيب) في LDAP، فعليك تثبيتها.

ثبِّت هذه الحزم الآن:

sudo apt-get install samba samba-doc smbldap-tools

ضبط LDAP

سنضبط الآن خادوم LDAP لكي يلائم بيانات سامبا، إذ أننا سنجري ثلاث مهمات في هذا القسم:

  1. استيراد مخطط (schema).
  2. فهرسة بعض القيود.
  3. إضافة كائنات (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

مصادر

ترجمة -وبتصرف- للمقال Ubuntu Server Guide: Samba and LDAP.


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...