وثائق لينوكس العربية

اعداد Samba Server (الجزء الأول)

كتب بواسطة مسلم عادل بتاريخ 2008/09/15

ربما من اكثر الخدمات جدلا حول كيفية اعدادها هو samba. ليس لانه مقعد، ولكن بسبب كثرة خياراته المتاحة وتعدد طرق اعداده.
يكمن سبب تعدد خياراته وطرق اعداده بسبب طبيعة العمل الذي يؤديه، اذ يمكنه ان يعمل 4 وظائف رئيسية وكل وظيفة لديها طريقة اعداد خاصة بها.

على العموم، هذا المقال لن يغطي سوى وظيفة واحدة لـ samba وهي ان يعمل بوضعية Stand Alone Service بحيث يوفر مشاركة الملفات والمجلدات بدون ان تضطر الى الخوض في خياراته الكثيرة.

 

تثبيت SAMBA

 

root@server:~# apt-get install samba

بعد الانتهاء من تثبيت سامبا، لنبدا باعداده، حيث ستجد ملف الاعداد في الدليل /etc/samba/smb.conf

root@server:~# mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
root@server:~# touch /etc/samba/smb.conf

كما ذكرت سابقا، بالرغم من كثرة خيارات وطرق اعداد samba الا اننا في الحقيقة نحتاج الى 3 سطور فقط لجعله يعمل وهذه السطور هي: (اكتبها داخل الملف smb.conf)

[global]
netbios name = alpha
workgroup = mshome

ماذا تعني هذه السطور؟

  • [global] هو القسم العام الذي يندرج اغلب اعداد samba تحته، وهو اجباري، ومن دونه لن يعمل.
  • netbios name هو الاسم الذي سيستخدمه بقية اجهزة الشبكة للاتصال بجهازك.
  • workgroup هو اسم مجموعة العمل (هذا اليخيار ثابت حتى لو كنت تملك مجال “domain” بدل محطة العمل “workgroup”)

شغل او اعد تشغيل samba الان:

root@server:~# /etc/init.d/samba stop
root@server:~# /etc/init.d/samba start

الان يمكنك الذهاب الى اي جهاز عليه ويندوز والدخول الى شبكة الاتصال لتجد جهازك متوفر هناك تحت الاسم alpha

يمكنك دائما التاكد ان ملف الاعداد لا يحتوي على اخطاء باستخدام الامر testparm كالاتي:

root@server:~# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

وفي حال وجود خطأ، فانه سيظهر رسالة مثل:

root@server:~# testparm
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: "wrkgroup"
Ignoring unknown parameter "wrkgroup"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

 

مشاركة مجلد

 

مشاركة مجلد باستخدام سامبا يعتبر ايضا عملية سهلة جدا، كل ما عليك فعله هو اتباع الخطوات التالية:

1. تحديد المجلد الذي تريد مشاركته (كمثال، ساستخدم /media/sda8/shares/samba)

root@server:~# mkdir -p /media/sda8/shares/samba
root@server:~# chmod 777 /media/sda8/shares/samba

لاحظ الصلاحيات، بالرغم ان كل المستخدمين مسموح لهم الكتابة، الا ان سامبا سيحدد من يستطيع الكتابة ومن لا يستطيع بناء على الخيارات التي سنستخدمها.

2. تحديد اسم المشاركة (عندما تفتح المشاركة من الاجهزة التي عليها ويندوز، ستظهر المشاركة بالاسم الذي اخترته) ساختار: test

الان بالعودة الى ملف smb.conf، لنضف اليه بعض السطور الجديدة بحيث يصبح كالاتي:

[global]
netbios name = alpha
workgroup = mshome

[test]
path = /media/sda8/shares/samba/test
comment = A shared folder which will not work!

احفظ الملف واعد تشغيل samba.

من اجهزة ويندوز، ستلاحظ انه ظهر جهاز اسمه alpha وايضا مجلد اسمه test ولكن ستلاحظ انه يطلب منك اسم مستخدم وكلمة مرور ومهما اضفت من اسماء مستخدمين لن تستطيع الدخول.
هذا يحدث لاننا لم نخبر samba من لديه صلاحيات الدخول الى الجهاز.
حتى يستطيع المستخدمون الوصول الى المجلدات المشاركة، علينا اتباع الاتي:

1. اضف مستخدم جديد للنظام باستخدام الامر التالي:

root@server:~# adduser --disabled-login --no-create-home username

2. الان اضف المستخدم الى قاعدة بيانات samba:

root@server:~# smbpasswd -a username

اذهب الان الى اي جهاز ويندوز واستخدم اسم المستخدم وكلمة المرور لتدخل على المجلد.

كما لاحظت، يمكنك دخول المجلد بدون اي مشكلة، ولكن لن تستطيع الكتابة عليه وهذا يحدث لان samba يعطي صلاحيات القراءة فقط لاي مجلد تم مشاركته، علينا اخبار samba اننا نريد الكتابة على هذا المجلد. سننشيء مشاركة جديدة اسمها project لنتبعها كمثال.

root@server:~# mkdir -p /media/sda8/shares/samba/project
root@server:~# chmod 777 /media/sda8/shares/samba/project

في الملف smb.conf اضف التالي:

[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes

لاحظ اننا اضفنا الخيار (writable = yes) الذي يجعل المجلد قابل للكتابة.
لو كنت تريد المستخدم projectadmin فقط من يستطيع الكتابة على المجلد، اضف السطر (valid users = projectadmin) بحيث يصبح الاعداد كالاتي:

[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes
valid users = projectadmin

بهذا، لن يستطيع الكتابة على هذا المجلد سوى المستخدم projectadmin.
ولكن ماذا لو اردت العكس؟ يعني جميع المستخدمين قادرين على الكتابة الا المستخدم joha؟ نضيف خيار معاكس للاول وهو (invalid users = joha):

[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes
invalid users = joha

ايضا يمكنك تحديد الاجهزة التي تستطيع الوصول الى المجلد المشارك وذلك باستخدام الخيار (hosts allow = ip)

[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes
valid users = projectadmin
hosts allow = 172.16.1.23, 172.16.1.24

الان فقط المستخدم projectadmin سيكون قادر على الكتابة على المجلد وايضا سيستطيع الكتابة على المجلد فقط اذا كان يستخدم الجهاز 172.16.1.23 او الجهاز 172.16.1.24

ولكن ماذا لو اردت ان تجعل samba يقبل من الجميع الدخول اليه، سواء كان هناك اسم مستخدم وكلمة مرور او لا؟

لعمل هذا، علينا اضافة 3 سطور اضافية للملف smb.conf كالاتي:

[global]
netbios name = alpha
workgroup = mshome
map to guest = bad user
guest account = smbguest

[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes
valid users = projectadmin
hosts allow = 172.16.1.23, 172.16.1.24
guest ok = yes

ملاحظة: اسم المستخدم smbguest هو مستخدم افتراضي يتم تعيينه لاي شخص يحاول الدخول الى المجلدات المشاركة وليس لديه اسم مستخدم وكلمة مرور.
يمكنك تغيير هذا المستخدم باي واحد اخر تريده مثل anonusers كالاتي:

root@server:~# adduser --disabled-login --no-create-home anonuser
root@server:~# smbpasswd -a anonuser

وتعديل الخيار guest account = smbguest الى guest account = anonuser

 

اضافة سلة نفايات الى المجلدات المشاركة:

 

في بعض الاحيان، يتم حذف ملف عن طريق الخطا، اذا حدث هذا لا يوجد طريقة سهلة لاستعادته، لهذا السبب، يوفر سامبا امكانية اضافة سلة نفايات للمجلدات المشاركة بحيث اي ملف يتم حذفه يذهب الى سلة المحذوفات. نستطيع استخدام هذه الميزة عبر تفعيل module اسمه recycle كالاتي:

[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes
valid users = projectadmin
hosts allow = 172.16.1.23, 172.16.1.24
guest ok = yes
vfs object = recycle
recycle:repository = trash
recycle:keeptree = yes
recycle:versions = yes

شرح الخيارات الجديدة التي تم اضافتها:
vfs object = recycle : قمنا بتفعيل الـ module الخاص بسلة المنفايات عبرئها (recycle)
recycle:repository = trash : قمنا بتغيير اسم سلة النفايات الى trash (الافتراضي هو .recycle)
recycle:keeptree = yes : قمنا بحفظ شجرة المجلدات كما هي (الافتراضي هو مزج كل الملفات في سلة النفايات)
recycle:versions = yes : قمنا بالسماح بحفظ اصدارات مختلفة من نفس الملف بدل من حفظ اخر اصدار له.

بعد كل هذه الاعداد، كل ما بقي علينا اعادة تشغيل سامبا.

, , , , ,

8 تعليقات على هذا الموضوع

  • SYRIAN-HACKER

    الله الله
    شرح واضح يا أخ مسلم ,,

    الصراحة استمتعت بالقراءة جداً

    بارك الله بك

    باقي علينا التنفيذ :)

  • لؤي فرج الله

    شكرا ً على على هذا الشرح الوافي وعلى هذا الأسلوب الهين الذي يتدرج بشكل سلس جدا ً من المبادئ إلى الاحتراف!

  • محمد الشرقاوي

    شرح أكثر من رائع لملف الإعداد..

  • ظل قلب القط

    و الله شى يثلج الصدر الف شكر ولا تحرمنا

  • maged

    bark allah fek

  • shadi

    الله عليك يا صديقي .. فعلاً شرح مميز جداً والله يوفقك ويوفق الجميع للخير والابتعاد عن ويندوز و احتكاره واستخدام لينوكس بدلاً عنه

  • Esam Zain

    I have pc with ubunto and connecting with printer and there server2003 with program great plains…then I accessed to server by terminal server but when I want to print from the great plains any report it does not capture my printer

    I hope find the solving here….

  • Esam Zain

    وانا جدا مبتدئ في لينكس واستخدم نسخة ابينتو 9.4

أكتب تعليق

هل تبحث عن شيء؟

إستخدم النموذج التالي للبحث:

مواقع أنصح بها!

أنصح بزيارة المواقع التالية:

الأرشيف

ستجد هنا أرشيف المقالات السابقة: