شرح كيفية مشاركة الملفات في نظام لينكس


واحد من بين أهم الأسباب التي تجعل مستخدمين الويندوز لا يريدون الإنتقال إلى نظام لينكس كنظام أساسي هي مشاركة الملفات بإعتبارها أمر معقد للغاية و حتى بعض مستخدمي نظام لينكس المبتدئين ربما يكون لا دراية لهم عنها ولا كيفية عمل مشاركة الملفات ، في هذا الموضوع سوف أحاول تبسيط الأمر بقدر المستطاع، سوف أشرح أشهر طريقتين لمشاركة الملفات على نظام Linux عن طريق بروتوكولات NFS و SMB/CIFS.
الجزء الأول : مشاركة الملفات عن طريق بروتكول NFS (هذة الطريقة تصلح بين أنظمة لينكس فقط)

أولاً ماهو ال NFS ؟

هو إختصار لجملة Network File Server أو Network File Sharing "نظام ملفات الشبكة" و هو برتوكول تم تطويره من قبل شركة Sun Microsystems في عام 1984 و هو يسمح للمستخدم بالوصول لملفات الأجهزة الآخرى المشاركة لملفات معينة مثل الوصول لأقراص التخزين الداخلية.

تنصيب ال NFS-Server على Linux :

لتوزيعات Debian/Ubuntu/Mint/Kali Linux قم بفتح التيرمنال و اكتب الأمر التالي :
apt-get install nfs-kernel-server nfs-common
بالنسبة لتوزيعات RHEL/CentOS قم بفتح التيرمنال الأمر سيكون كالتالي :
yum install nfs-utils
لتوزيعة Fedora الأمر التالي :
dnf install nfs-kernel-server nfs-common

بعد تنصيب الخدمة، نقوم بعمل تفعيل لها في بدء التشغيل عن طريق الأمر التالي :
systemctl enable nfs-server
الأن نقوم بضبط ملف الإعدادات، قم بفتح الملف الأتي بأي محرر نصوص من إختيارك، أنا سأقوم بفتحه عن طريق ال vim
vim /etc/exports
قم بالنزول إلى آخر سطر في الملف، ثم إضغط enter و الأن قم بكتابة أولاً مسار المجلد الذي تريد مشاركته، في هذا المثال لنفرض إني سأشارك مجلد بإسم sharing_Test الموجود على الديسكتوب، ثم أخذ مسافة عن طريق Tab و كتابة رينج IP محدد لمشاركة الملفات معهم ، مثال 192.168.1.1/24 ثم نفتح قوس ونكتب الصلاحيات التي نريد أن يأخذها المستخدمين لهذا المجلد أو الملف ، ro إختصاراً ل read only أي قراءة فقط، rw إختصاراً ل read and write و تعني قراءة و تعديل ، ثم فاصلة ونضيف كلمة sync و هي إختصاراً لكلمة "synchronization" و تعني تزامن ، هذة الخاصية تقوم بعمل مزامنة سريعة جداً للملفات في أجزاء أقل من الثانية ، ثم أغلق القوس و قم بحفظ الملف.

مثال للسطر كاملاً :
(root/Desktop/sharing_Test    192.168.1.1/24(ro,sync/
بعد حفظ الملف، يجب إعادة تشغيل الخدمة عن طريق الأمر التالي:
systemctl restart nfs-server
الأن للتأكد من أن كل شئ على مايرام، يوجد أمر يمكنك من معرفة ما الملفات التي يشاركها جهاز معين، قم بفتح التيرمنال من أي جهاز داخل نطاق الشبكة و اكتب الأمر التالي، مع إستبدال عنوان ال ip بعنوان الخاص بجهازك الذي شاركت منه الملفات
showmount -e 192.168.1.3
من المفترض أن ترى المجدات/الملفات التي شاركتها و هذا يعني نجاح الخطوات السابقة، الأن كل ما عليك فعله هو عمل mount للملفات التي شاركتها على أي جهاز داخل نطاق الشبكة و الرينج الذي حددته سابقاً لمشاركة الملفات معهم، قم بإنشاء مجلد جديد لعمل mount به ثم اكتب الأمر التالي و بالطبع مع إستبدال عنوان ال ip بعنوان جهازك

mount 192.168.1.3:/root/Desktop/sharing_Test     /root/Desktop/client

إذا لم يظهر أي أخطاء إذن فكل شئ صحيح، وللتأكد إذا كان تم عمل mount للملفات اكتب الأمر التالي :
df - h
من المفترض أن ترى جميع ال partations و الأجهزة المتصلة عن طريق ال mount حالياً و من ضمنهم ملفات الشبكة.

الأن في حالة إعادة تشغيل الجهاز ، لن تجد المجلدات/الملفات التي قمت بعمل mount لها ، ولتثبيتها يجب عمل mount لها في ملف ال fstab، و الطريقة هي كالتالي قم بفتح ملف ال fstab بأي محرر نصوص مثل ال gedit أو vim
vim /etc/fstab
من المفترض أن تجد جميع البارتيشنات الخاصة بالنظام مثل ال root,boot, swap و أي بارتشينات آخرى قمت بإضافتها عند تنصيب النظام، قم بالنزول إلى آخر سطر و إضغط enter ثم اكتب الأتي أولاً ip الجهاز المشارك للملفات ثم نقطتين : ثم مسار الملف ثم المسار الذي ستعمل به mount ثم نوع الملف nfs ثم كلمة netdev_ ثم 0 0

مثال للسطر كاملاً :


192.168.1.3:/root/Desktop/sharing_Test    /root/Desktop/client    nfs    _netdev 0 0
بعد كتابة السطر قم بالحفظ و الخروج، وللتأكد من إن كل شئ صحيح ، قم بفتح التيرمنال و اكتب الأمر التالي :
mount -a
 إذا لم يظهر لك أي خطأ إذن فكل شئ صحيح، كل ماعليك الأن هو إعادة تشغيل جهاز العميل وستجد بأن الملفات التي قمت بعمل لها mount موجودة بأماكنها.

حتى الأن يبدو الأمر جيداً بالنسبة إلى المستخدمين المنزليين و لكن إذا كنت في بيئة العمل كبيرة مثل شركة ولها سيرفر ضخم و عدة مستخدمين لن تفنع فكرة ال mount الدائم و خصوصاً إن خاصية ال sync تستهلك من الشبكة و الإنترنت ، إذن فما الحل؟ توجد خدمة رائعة إسمها autofs تقوم فكرة هذة الخدمة على عمل mount تلقائي وقتما يحتاج المستخدم لمجلد أو ملف معين من السيرفر و بعد مرور زمن 5 دقائق إفتراضياً تقوم الخدمة بعمل umount للملفات ، بحيث لا تستهلك من الشبكة.

لتنصيب خدمة ال autofs على توزيعات Debian/Ubuntu/Mint/Kali Linux قم بكتابة الأمر التالي في التيرمنال :
apt-get install autofs
بالنسبة لتوزيعات RHEL/CentOS الأمر سيكون كالتالي :

yum install autofs
بعد تنصيب الخدمة يجب عمل لها تفعيل في بدء التشغيل عن طريق الأمر التالي :
systemctl enable autofs
 الأن لإعداد الخدمة قم بفتح هذا الملف etc/auto.master/ بأي محرر نصوص
vim /etc/auto.master
 بعد فتح الملف تستجد إنه معطيك مثال لكيفية عمل mount لمجلد misc قم بالنزول تحت هذا السطر و قم بكتابة الأتي مسار المجلد الذي ستعمل به mount ثم خذ مسافة ثم مسار ملف سنقوم بإنشاءه لاحقاً  تحت etc/ ويجب أن يبدأ بكلمة auto بأي إمتداد تريده.

مثال للسطر كاملاً :
/root/Desktop/client    /etc/auto.client
الأن قم بحفظ الملف و الخروج ، و بطبيعة الحال سنقوم بإعادة تشغيل الخدمة عن طريق الأمر التالي :
systemctl restart autofs
  بعد إعادة تشغيل الخدمة نقوم بإنشاء الملف الذي كتبناه في ملف تكوين الخدمة
vim /etc/auto.client
 بعد فتح الملف نقوم بكتابة صيغة ال mount كالأتي أولاً الإسم الذي سيظهر به المجلد أو الملف في حالة مثالنا هذا سيكون sharing_Test ثم نأخذ مسافة ثم كتابة الصلاحيات ro- للقراءة فقط، rw- للقراءة و التعديل، ثم مسافة آخرى ثم ip الجهاز المشارك للمجلد أو الملف ثم نقطتين : ثم مسار المجلد الذي نريد عمل mount له من السيرفر، ليصبح السطر كاملاً كالتالي
Sharing_Test    -ro    192.168.1.3:/root/Desktop/sharing_Test
الأن كل ماعليك فعله هو محاولة الدخول للمجلد الذي قمت بإختياره لعمل mount للمجلد المشارك من السيرفر و ستجد أن الخدمة قامت بعمل mount تلقائي للمجلد في حالة عدم إستخدامك للمجلد المشارك لأكثر من 5 دقائق تقوم الخدمة بإلغاء ال mount ، و يمكنك التعديل على الوقت الإفتراضي لإلغاء ال mount في ملف تكوين الخدمة.



الجزء الثاني : مشاركة الملفات عن طريق بروتكول Samba (هذة الطريقة تصلح بين لينكس و جميع الأنظمة الآخرى)

أولاً لنعرف ما هو ال Samba :
هو برنامج حر تم تطويره من قبل الأسترالي Andrew Tridgell في ديسمبر عام 1991 حيث إطلق الإصدار الأول، و هو عبارة عن إعادة تطوير لبرتوكول مشاركة الملفات و يرمز ب "SMB" إختصاراً ل Server Message Block و يتم مشاركة الملفات عن طريق نظام ملفات ال CIFS و هو إختصاراً ل Common Internet File System

تنصيب ال Samba على لينكس :

لتوزيعات Debian/Ubuntu/Mint/Kali Linux قم بفتح التيرمنال و اكتب الأمر التالي :
apt-get install samba samba-common smbclient python-galde2
 بالنسبة لتوزيعات RHEL/CentOS عن طريق الأمر التالي :
yum install samba samba-client 
 لتوزيعة Fedora الأمر التالي :
dnf install samba samba-client
بعد تنصيب السامبا نقوم بعمل تفعيل لها في بدء التشغيل عن طريق الأمر التالي :

لتوزيعات Debian/Ubuntu/Mint/Kali Linux :
systemctl enable smbd nmbd
 لتوزيعات RHEL/CentOS :
systemctl enable smb nmb
بعد تفعيل الخدمة في بدء التشغيل الأن حان وقت ضبط ملف التكوين، قم بفتح الملف الأتي بأي محرر نصوص etc/samba/smb.conf/
vim /etc/samba/smb.conf

بعد فتح الملف قم بالنزول إلى آخره ثم نكتب صيغة المشاركة كالأتي:
[root]
بين هذين القوسن نكتب إسم المجلد أو الملف الذي سنشاركه، مثال أنا سأشارك بارتشين الروت ، ثم إنزل سطر و اكتب الأتي
path = /root
و هو مسار المجلد أو الملف الذي ستشاركه
browsable = yes
للسماح بتصفح الملفات
read only = yes
معروفة بالطبع و هي جعل الملفات للقراءة فقط
writeable = no
تعمل نفس فكرة الأمر السابق و هي عدم السماح بالمستخدمين بالتعديل فب الملفات
public = yes
السماح للمستخدمين برؤية الملفات
hosts allow = 192.168.1.1/24
و هنا اكتب رينج ip محدد لمشاركة الملفات معهم
valid user = mohammed
هنا نكتب مستخدم محدد للسماح بالمستخدمين بالمرور عبره عند الدخول على الملفات المشاركة، و يجب أن يكون المستخدم موجود بالنظام، و أخيراً قم بحفظ الملف و إعادة تشغيل الخدمة عبر الأمر التالي :
systemctl restart smbd nmbd

بالنسبة لتوزيعات ريدهات أو سينتوس الأمر سيكون هكذا :

systemctl restart smb nmb

بعد إعادة تشغيل الخدمة يجب إعطاء اليوزر الذي تم تعيينه كلمة مرور خاصة بالملفات لكي يستطيع المستخدمين المرور عبرها، عن طريق الأمر التالي :

smbpasswd    -a    mohammed

هذا كل شئ بالنسبة للسيرفر أو جهازك الشخصي، الأن لنفرض إنك تريد إختبار الإعدادات من جهاز حقيقي على شبكتك أو وهمي، لمعرفة إذا كان كل شئ تم بشكل صحيح، قم بفتح التيرمنال في أي جهاز وبالطبع يجب أن يكون الجهاز يقع داخل رينج ال ip الذي حددته لمشاركة الملفات معهم ثم اكتب الأمر التالي (مع إستبدال عنوان ال ip بعنوان ip الجهاز المشارك) :

smbclient    -L    192.168.1.3

إذا لم يظهر أي أخطاء و ظهرت معك الملفات التي شاركتها إذا فكل شئ على مايرام، الأن للدخول على الملفات عبر الواجهة الرسومية، توجه إلى Computer ثم أسفل اليسار ستجد جملة Other Location ستجد مستطيل بالأسفل قم بكتابة الأتي مع إستبدال عنوان ال ip بعنوان الجهاز المشارك

smb://192.168.1.3

سيطلب منك إسم مستخدم و كلمة مرور قم بإدخالهم و ستفتح لك الملفات المشاركة، بالنسبة لمستخدمين الويندوز فالطريقة هي عن طريق الضغط على Ctrl + R لفتح مربع run ثم قم بكتابة \\ متبوعة ب ip الجهاز المشارك

مثال :


خطوات عمل mount عن طريق ال Terminal :

يجب أولاً تنصيب حزمة ال CIFS و هو نظام ملفات الشبكات

لتوزيعات Debian/Ubuntu/Mint/Kali Linux قم بفتح التيرمنال و اكتب الأمر التالي :
apt-get install cifs-utils
 لتوزيعات RHEL/CentOS :
yum install cifs-utils
لتوزيعة Fedora :
dnf install cifs-utils
بعد تنصيب ال CIFS أمر ال mount سيكون كالأتي عنوان ال ip ثم مسار المجلد الذي ستعمل به mount مع إستبدال عنوان ip الجهاز بعنوان ip الجهاز المشارك ثم -o وفاصلة وتكتب بعدها إسم المستخدم و كلمة المرور ، و يمكنك كتابة إسم المستخدم فقط و هو سيطلب منك كلمة المرور

mount    //192.168.1.3/root    /root/Desktop/mmlRoot -o,username=mohammed,password=123456

بعد كتابة الأمر من المفترض أن يتم عمل mount للمجلد.

أخيرا عمل mount في ملف ال fstab إذا أردت أن تبقى الملفات بعد إعادة تشغيل الجهاز ، قم بفتح ملف ال fstab بأي محرر نصوص ثم إنزل إلى آخر سطر ثم في سطر جديد تكتب الأتي :
//192.168.1.3/root    /root/Desktop/mmlRoot    cifs    _netdev,username=mohammed,password=123456

بعد ذلك قم بحفظ الملف و الخروج، وللتأكد من إنك كتبت كل شئ صحيح قم بكتابة الأمر التالي في التيرمنال :
mount  -a
إذا لم يظهر لك أي أخطاء إذن فكل شئ صحيح، ولكن هذة الطريقة لا تصلح إذا كنت في بيئة عمل كبيرة حيث أن ملف ال fstab يستطيع أي شخص قراءته وبالتالي يستطيع معرفة إسم المستخدم و كلمة السر الخاصين بالمشاركة و لذلك هناك طريقة آخرى لإخفائهم عن طريق عمل ملف نصي يفضل داخل مجلد ال root، سأقوم بإنشاء ملف بإسم samba

vim /root/samba.txt
ثم كتابة إسم المستخدم و كلمة المرور بهذة الصيغة :
username=mohammed
password=123456
قم بالحفظ و الخروج ثم افتح ملف ال fstab من جديد، والأن سنحذف اسم المستخدم و كلمة المرور و نستبدلهم بكلمة credentials= ثم مسار الملف النصي، في مثالنا هذا سيكون تحت ال root/ ليكون السطر كاملاً كالتالي :

//192.168.1.3/root    /root/Desktop/mmlRoot     _netdev,credentials=/root/samba.txt

و بعد حفظ الملف و الإغلاق كالمعتاد سنختبر إذا كان كل شئ صحيح أم لا عن طريق الأمر
mount  -a
كان هذا كل شئ بخصوص مشاركة الملفات على نظام لينكس، و لمن واجهته أي صعوبات أو لم يفهم الشرح فقد قمت بشرح كل شئ في الفيديو التالي



Mohammed Magdy
بواسطة : Mohammed Magdy
محترفي علوم الكمبيوتر و أمن المعلومات كل مايخص علوم الكمبيوتر وأمن المعلومات من أخبار التقنية ، مقالات، شروحات، مراجعات ، حماية



حجم الخط
+
16
-
تباعد السطور
+
2
-