السلام عليكم ورحمة الله تعالى وبركاته .ربما من اكثر الخدمات جدلا حول كيفية اعدادها هو 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 = zouhir):
[project]
path = /media/sda8/shares/samba/project
comment = This is a writable folder
writable = yes
invalid users = zouhir
ايضا يمكنك تحديد الاجهزة التي تستطيع الوصول الى المجلد المشارك وذلك باستخدام الخيار (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 : قمنا بالسماح بحفظ اصدارات مختلفة من نفس الملف بدل من حفظ اخر اصدار له.
بعد كل هذه الاعداد، كل ما بقي علينا اعادة تشغيل سامبا.
عبر الأمر التالي:
root@server:~# /etc/init.d/samba restart
مع تحياتي لكل من واجهته أية مشكلة أنا في الخدمة لا تنسو الردود أسفل الموضوع ردودكم تشجعنا على المواصلة
ليست هناك تعليقات
إرسال تعليق