واحد من بين أهم
الأسباب التي تجعل مستخدمين الويندوز لا يريدون الإنتقال إلى نظام لينكس كنظام
أساسي هي مشاركة الملفات بإعتبارها أمر معقد للغاية و حتى بعض مستخدمي نظام لينكس
المبتدئين ربما يكون لا دراية لهم عنها ولا كيفية عمل مشاركة الملفات ، في هذا الموضوع
سوف أحاول تبسيط الأمر بقدر المستطاع، سوف أشرح أشهر طريقتين لمشاركة الملفات على نظام 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" و تعني تزامن ، هذة الخاصية تقوم بعمل مزامنة سريعة جداً للملفات في أجزاء أقل من الثانية ، ثم أغلق القوس و قم بحفظ الملف.
مثال للسطر كاملاً :
إذا لم يظهر أي أخطاء إذن فكل شئ صحيح، وللتأكد إذا كان تم عمل mount للملفات اكتب الأمر التالي :
الأن في حالة إعادة تشغيل الجهاز ، لن تجد المجلدات/الملفات التي قمت بعمل mount لها ، ولتثبيتها يجب عمل mount لها في ملف ال fstab، و الطريقة هي كالتالي قم بفتح ملف ال fstab بأي محرر نصوص مثل ال gedit أو vim
مثال للسطر كاملاً :
حتى الأن يبدو الأمر جيداً بالنسبة إلى المستخدمين المنزليين و لكن إذا كنت في بيئة العمل كبيرة مثل شركة ولها سيرفر ضخم و عدة مستخدمين لن تفنع فكرة ال mount الدائم و خصوصاً إن خاصية ال sync تستهلك من الشبكة و الإنترنت ، إذن فما الحل؟ توجد خدمة رائعة إسمها autofs تقوم فكرة هذة الخدمة على عمل mount تلقائي وقتما يحتاج المستخدم لمجلد أو ملف معين من السيرفر و بعد مرور زمن 5 دقائق إفتراضياً تقوم الخدمة بعمل umount للملفات ، بحيث لا تستهلك من الشبكة.
لتنصيب خدمة ال autofs على توزيعات Debian/Ubuntu/Mint/Kali Linux قم بكتابة الأمر التالي في التيرمنال :
مثال للسطر كاملاً :
تنصيب ال Samba على لينكس :
لتوزيعات Debian/Ubuntu/Mint/Kali Linux قم بفتح التيرمنال و اكتب الأمر التالي :
لتوزيعات Debian/Ubuntu/Mint/Kali Linux :
مثال للسطر كاملاً :
(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
كان هذا كل شئ بخصوص مشاركة الملفات على نظام لينكس، و لمن واجهته أي صعوبات أو لم يفهم الشرح فقد قمت بشرح كل شئ في الفيديو التالي