اعداد 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 username2. الان اضف المستخدم الى قاعدة بيانات 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 : قمنا بالسماح بحفظ اصدارات مختلفة من نفس الملف بدل من حفظ اخر اصدار له.
بعد كل هذه الاعداد، كل ما بقي علينا اعادة تشغيل سامبا.
September 15th, 2008 on %I:%M %p
الله الله
شرح واضح يا أخ مسلم ,,
الصراحة استمتعت بالقراءة جداً
بارك الله بك
باقي علينا التنفيذ
September 15th, 2008 on %I:%M %p
شكرا ً على على هذا الشرح الوافي وعلى هذا الأسلوب الهين الذي يتدرج بشكل سلس جدا ً من المبادئ إلى الاحتراف!
September 18th, 2008 on %I:%M %p
شرح أكثر من رائع لملف الإعداد..
September 20th, 2008 on %I:%M %p
و الله شى يثلج الصدر الف شكر ولا تحرمنا
June 11th, 2009 on %I:%M %p
bark allah fek
June 22nd, 2009 on %I:%M %p
الله عليك يا صديقي .. فعلاً شرح مميز جداً والله يوفقك ويوفق الجميع للخير والابتعاد عن ويندوز و احتكاره واستخدام لينوكس بدلاً عنه
August 23rd, 2009 on %I:%M %p
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….
August 23rd, 2009 on %I:%M %p
وانا جدا مبتدئ في لينكس واستخدم نسخة ابينتو 9.4