Product SiteDocumentation Site

11.5. إعداد مشاركات ويندوز باستخدام سامبا

سامبا هي مجموعة أدوات تدعم بروتوكول SMB (يُعرَف أيضاً باسم ”CIFS“) على لينكس. يستخدم ويندوز هذا البروتوكول لمشاركة الملفات والطابعات على الشبكة.
تستطيع سامبا أيضاً العمل كمتحكم نطاق ويندوز. وهي أداة ممتازة لضمان التكامل السلس بين مخدمات لينكس والحواسيب المكتبية التي لا تزال تعمل بنظام ويندوز.

11.5.1. مخدم سامبا

تحوي الحزمة samba المخدمين الرئيسين لسامبا 3، smbd وnmbd.

11.5.1.1. الإعداد باستخدام debconf

تُعدُّ الحزمة إعداداً مصغراً اعتماداً على إجابات بضعة أسئلة Debconf تطرحها أثناء التثبيت الأولي؛ يمكن تكرار خطوة الإعداد هذه لاحقاً باستخدام dpkg-reconfigure samba-common samba.
المعلومة المطلوبة الأولى هي اسم مجموعة العمل (workgroup) التي سوف ينتمي لها مخدم سامبا (الإجابة في حالتنا هي FALCOTNET). يسأل سؤال ثانٍ عن رغبتك بتشفير كلمات السر. سيكون الرد بالإيجاب، لأن التشفير إلزامي مع عملاء ويندوز الأحدث؛ بالإضافة إلى أنه يزيد الأمن. لكن في المقابل سيفرض هذا إدارة كلمات سر سامبا بشكل مستقل عن كلمات سر يونكس.
كما تقترح الحزمة التعرّف على مخدم WINS من المعلومات التي تقدمها خدمة DHCP. رفض مديرو النظم في شركة فلكوت هذا الخيار، لأنهم ينوون استخدام مخدم سامبا نفسه كمخدم WINS.
السؤال الأخير هو هل يجب تشغيل المخدمات عبر inetd أو كخدمات مستقلة. استخدام inetd مفيدٌ فقط عندما لا يستخدم سامبا إلا نادراً؛ لذلك اختار مديرو النظم في فلكوت خيار الخدمات المستقلة.

11.5.1.2. الإعداد اليدوي

11.5.1.2.1. التعديلات على smb.conf
تتطلب احتياجات شركة فلكوت تعديل خيارات أخرى من الملف /etc/samba/smb.conf. تلخص المقتطفات التالية التعديلات التي أجروها في قسم [global].
[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = FALCOTNET

# server string is the equivalent of the NT Description field
   server string = %h server (Samba %v)

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
   wins support = yes 1

[...]

####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html 
# in the samba-doc package for details.
   security = user 2

# You may wish to use password encryption.  See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
   encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
   passdb backend = tdbsam

[...]

########## Printing ##########

# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
   load printers = yes 3

# lpr(ng) printing. You may wish to override the location of the
# printcap file
;   printing = bsd
;   printcap name = /etc/printcap

# CUPS printing.  See also the cupsaddsmb(8) manpage in the
# cups-client package.
   printing = cups 4
   printcap name = cups

1

يشير إلى ضرورة استخدام سامبا كمخدم أسماء Netbios‏ (WINS) للشبكة المحلية.

2

هذه هي القيمة الافتراضية لهذا المتغير؛ لكن بما أنها مركزية في إعدادات سامبا، فيفضّل إعادة ضبطها صراحة. كل مستخدم يحتاج المصادقة قبل أن يصل لأي مشاركة.

3

يطلب من سامبا مشاركة جميع الطابعات المحلية الموجودة في إعدادات CUPS تلقائياً. لا يزال تقييد الوصول لهذه الطابعات ممكناً، بإضافة أقسام مناسبة.

4

يحدد نوع نظام الطباعة المستخدم؛ وهو CUPS في حالتنا.
11.5.1.2.2. إضافة المستخدمين
يحتاج كل مستخدم سامبا حساباً على المخدم؛ يجب إنشاء حسابات يونكس أولاً، بعدها يجب تسجيل المستخدم في قاعدة بيانات سامبا. خطوة إضافة مستخدم يونكس تتم حسب الطريقة المعتادة (باستخدام adduser مثلاً).
أما لإضافة مستخدم حالي إلى قاعدة بيانات سامبا فيكفي تشغيل الأمر smbpasswd -a user؛ سيطلب هذا الأمر إدخال كلمة السر.
يمكن حذف المستخدم بالأمر smbpasswd -x user. كما يمكن تعطيل حسابات سامبا مؤقتاً (باستخدام smbpasswd -d user) وإعادة تفعيلها لاحقاً (باستخدام smbpasswd -e user).
11.5.1.2.3. التحويل إلى متحكم نطاق
يشرح هذا القسم كيف ذهب مديرو النظم في فلكوت إلى ما هو أبعد من ذلك حتى، إذ حوّلوا مخدم سامبا إلى متحكم نطاق يوفر بروفايلات عائمة (roaming profiles، التي تسمح للمستخدمين بالدخول إلى سطح مكتبهم بغض النظر عن الجهاز الذي يستخدمونه للاتصال).
أضافوا في البداية بضعة تعليمات إضافية في قسم [global] في ملف الإعداد:
domain logons = yes              1
preferred master = yes           
logon path = \\%L\profiles\%U    2
logon script = scripts/logon.bat 3

1

يُفعّل وظيفة متحكم النطاق.

2

يحدد موقع مجلدات بيوت المستخدمين. تُخزّن هذه المجلدات على مشاركة خاصة بها، تسمح بتفعيل خيارات معينة (خصوصاً profile acls المطلوب للتوافق مع ويندوز 2000، و XP و Vista).

3

يحدد الملف الدفعي (غير التفاعلي، batch) الذي سيستدعى على جهاز ويندوز العميل كلما فتحت جلسة عمل جديدة. كان الملف في هذه الحالة /var/lib/samba/netlogon/scripts/logon.bat. يجب كتابة السكربت بصيغة DOS، حيث تُفصل السطور عن بعضها بمحرف carriage-return ومحرف line-feed؛ إذا أنشأت الملف على لينكس، فاستخدم unix2dos لتحويله.
أكثر الأوامر استخداماً في هذه السكربتات إنشاء السواقات الشبكية آلياً ومزامنة ساعة النظام.

مثال 11.27. الملف logon.bat

net time \\ARRAKIS /set /yes
net use H: /home
net use U: \\ARRAKIS\utils
كما أنشئت مشاركتان إضافيتان، والمجلدان المرتبطان بهما:
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

[profiles]
comment = Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
كما يجب إنشاء مجلد بيت لكل واحد من المستخدمين (بالاسم /var/lib/samba/profiles/user)، ويجب أن يملك كل مستخدم المجلد الموافق له.

11.5.2. عميل سامبا

تسمح ميزة العميل في سامبا لأجهزة لينكس بالوصول لمشاركات ويندوز والطابعات المشتركة. تتوفر البرامج المطلوبة في الحزمتين cifs-utils و smbclient.

11.5.2.1. البرنامج smbclient

يستعلم البرنامج smbclient عن مخدمات SMB. وهو يقبل الخيار -U user، للاتصال بالمخدم بالهوية المحددة. يتصل الأمر smbclient //server/share بالمشاركة بطريقة تفاعلية تشابه استخدام عميل FTP نصي. يسرد smbclient -L server جميع المشاركات المتاحة (والمرئية) على المخدم.

11.5.2.2. ربط مشاركات ويندوز

يسمح الأمر mount بربط مشاركة ويندوز مع شجرة نظام ملفات لينكس (بمساعدة الأمر mount.cifs المتوفر في cifs-utils).

مثال 11.28. ربط مشاركات ويندوز

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
صيغة الملف /etc/smb-credentials (الذي يجب ألا تعطى صلاحية قراءته للمستخدمين) كالتالي:
username = user
password = password
يمكن تحديد خيارات أخرى من سطر الأوامر؛ تتوفر قائمة كاملة بهذه الخيارات في صفحة الدليل mount.cifs(1)‎. هناك خيارات بالذات قد يهمانك: uid وgid اللذان يسمحان بفرض مالك ومجموعة للملفات المتاحة على المشاركة، حتى لا تنحصر صلاحيات الوصول بالمستخدم الجذر.
كما يمكن ضبط عملية ربط مشاركة ويندوز في الملف /etc/fstab:
//server/shared /shared cifs credentials=/etc/smb-credentials
أما فك ربط مشاركة SMB/CIFS فعبر أمر umount القياسي.

11.5.2.3. الطباعة على طابعة مشتركة

CUPS هو حل أنيق للطباعة من محطة عمل لينكس على طابعة يشاركها جهاز ويندوز. عند تثبيت الحزمة smbclient، يسمح CUPS بثبيت طابعات ويدوز المشتركة تلقائياً.
إليك الخطوات اللازمة:
  • ادخل إلى واجهة إعداد CUPS: ‏http://localhost:631/admin
  • انقر على ”إضافة طابعة“.
  • اختر الطابعة، انتق ”طابعة ويندوز عبر سامبا“.
  • أدخل عنوان URI للاتصال بالطابعة الشبكية. يجب أن يشبه ما يلي:
    smb://user:password@server/printer.
  • أدخل الاسم الذي سيعرف هذه الطابعة بشكل فريد. بعدها أدخل وصف الطابعة ومكانها. سوف تُعرَض هذه المعلومات للمستخدمين النهائيين لمساعدتهم على تمييز الطابعات.
  • حدد الشركة الصانعة للطابعة وطرازها، أو فوراً قدّم ملف وصف طابعة مناسب (PPD).
تهانينا! الطابعة تعمل!