المقدمة: لماذا نحتاج لبروتوكولات التخزين الشبكي؟
مرحباً يا جماعة! كمهندس أنظمة لينكس، تعرفون أن مشاركة الملفات عبر الشبكة هي أساس أي بنية تحتية محترمة. اليوم، راح نغوص في عالم بروتوكولات التخزين الشبكي ونركز على اثنين من الأبطال: NFS (Network File System) و Samba. كل واحد له استخداماته ومميزاته، وراح نشوف كيف نجهزهم خطوة بخطوة.
1. بروتوكول NFS (Network File System)
NFS هو بروتوكول أصيل في عالم يونكس/لينكس، ممتاز لمشاركة الملفات بين أنظمة لينكس ويونكس الأخرى. بسيط، فعال، وموثوق.
1.1. إعداد خادم NFS (NFS Server)
أولاً، نحتاج تثبيت الحزم اللازمة على الخادم اللي راح يشارك الملفات.
التثبيت (على CentOS/RHEL):
sudo dnf install nfs-utils -y
sudo systemctl enable --now nfs-server rpcbind
sudo systemctl start nfs-server rpcbind
التثبيت (على Debian/Ubuntu):
sudo apt update
sudo apt install nfs-kernel-server -y
sudo systemctl enable --now nfs-server
sudo systemctl start nfs-server
بعد التثبيت، لازم نحدد المجلدات اللي نبي نشاركها. هذا يتم عن طريق ملف exports/etc/.
تكوين المشاركات (Exports):
افتح الملف:
sudo nano /etc/exports
أضف السطر التالي لمشاركة مجلد مثلاً /srv/nfs_share:
/srv/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check)
ملاحظة سريعة:
192.168.1.0/24: الشبكة أو المضيفين المسموح لهم بالوصول. تقدر تستخدم IP واحد، نطاق IP، أو حتى اسم مضيف.rw: قراءة وكتابة.sync: الكتابة على القرص تتم بشكل متزامن.no_subtree_check: يحسن الأداء في بعض الحالات، لكن ممكن يكون له آثار أمنية بسيطة في بيئات معينة.
لا تنسى إنشاء المجلد وتغيير صلاحياته:
sudo mkdir -p /srv/nfs_share
sudo chown nobody:nogroup /srv/nfs_share
sudo chmod 777 /srv/nfs_share
بعد التعديل على exports/etc/، لازم تحدث قائمة المشاركات وتفعلها:
sudo exportfs -a
sudo systemctl restart nfs-server
وتأكد من فتح المنافذ اللازمة في جدار الحماية:
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload
ملاحظة: إذا كنت تستخدم UFW على Ubuntu/Debian، الأوامر راح تكون مختلفة، مثلاً
sudo ufw allow nfs.
1.2. إعداد عميل NFS (NFS Client)
الآن، على الجهاز العميل اللي يبي يوصل للمشاركة.
التثبيت (على CentOS/RHEL):
sudo dnf install nfs-utils -y
التثبيت (على Debian/Ubuntu):
sudo apt update
sudo apt install nfs-common -y
تركيب المشاركة (Mounting the Share):
أول شيء، أنشئ نقطة تحميل (mount point):
sudo mkdir -p /mnt/nfs_share
بعدين، ركب المشاركة:
sudo mount 192.168.1.100:/srv/nfs_share /mnt/nfs_share
ملاحظة: استبدل
192.168.1.100بعنوان IP لخادم NFS.
للتحقق من التركيب:
df -h /mnt/nfs_share
التركيب التلقائي عند الإقلاع (Automounting):
عشان المشاركة تركب تلقائياً كل مرة يشتغل فيها الجهاز، أضف السطر التالي لملف fstab/etc/:
192.168.1.100:/srv/nfs_share /mnt/nfs_share nfs defaults 0 0
بعد التعديل، تقدر تجرب تركب كل شيء في fstab يدوياً للتأكد:
sudo mount -a
2. بروتوكول Samba (SMB/CIFS)
Samba هو تطبيق مفتوح المصدر لبروتوكول SMB/CIFS، اللي هو بروتوكول مشاركة الملفات الأساسي في أنظمة ويندوز. هذا يخليه الخيار الأمثل لمشاركة الملفات بين أنظمة لينكس وويندوز.
2.1. إعداد خادم Samba (Samba Server)
نفس الشيء، نبدأ بالتثبيت.
التثبيت (على CentOS/RHEL):
sudo dnf install samba samba-client samba-common -y
sudo systemctl enable --now smb nmb
sudo systemctl start smb nmb
التثبيت (على Debian/Ubuntu):
sudo apt update
sudo apt install samba samba-client -y
sudo systemctl enable --now smbd nmbd
sudo systemctl start smbd nmbd
ملف التكوين الرئيسي لـ Samba هو smb.conf/etc/samba/.
تكوين المشاركات (Shares):
افتح الملف:
sudo nano /etc/samba/smb.conf
أضف قسم جديد في نهاية الملف لمشاركة مجلد مثلاً /srv/samba_share:
[PublicShare]
comment = Public Samba Share
path = /srv/samba_share
browsable = yes
writable = yes
guest ok = yes
read only = no
ملاحظة سريعة:
[PublicShare]: اسم المشاركة اللي راح تظهر للمستخدمين.path: المسار الفعلي للمجلد على الخادم.browsable = yes: تظهر المشاركة في قائمة الشبكة.writable = yes: تسمح بالكتابة.guest ok = yes: تسمح بالوصول كضيف بدون كلمة مرور (غير آمن للبيانات الحساسة).
لا تنسى إنشاء المجلد وتعيين الصلاحيات المناسبة:
sudo mkdir -p /srv/samba_share
sudo chmod -R 0777 /srv/samba_share
sudo chown -R nobody:nogroup /srv/samba_share
ولو كنت تستخدم SELinux (على CentOS/RHEL)، لازم تعدل السياق الأمني للمجلد:
sudo semanage fcontext -a -t samba_share_t "/srv/samba_share(/.*)?"
sudo restorecon -Rv /srv/samba_share
إضافة مستخدمين لـ Samba:
إذا ما تبي وصول ضيف، تقدر تحدد مستخدمين معينين. أول شيء، لازم يكون المستخدم موجود في نظام لينكس، بعدين تضيفه لـ Samba.
sudo adduser sambauser
sudo smbpasswd -a sambauser
راح يطلب منك كلمة مرور للمستخدم في Samba. بعدين، ممكن تحتاج تعدل إعدادات المشاركة في smb.conf عشان تسمح لهذا المستخدم فقط:
[PrivateShare]
comment = Private Samba Share
path = /srv/private_samba_share
valid users = sambauser
writable = yes
browsable = no
بعد أي تعديل على smb.conf، لازم تعيد تشغيل خدمات Samba:
sudo systemctl restart smb nmb # RHEL/CentOS
sudo systemctl restart smbd nmbd # Debian/Ubuntu
وتأكد من فتح المنافذ في جدار الحماية:
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
2.2. إعداد عميل Samba (Linux Client)
على جهاز لينكس العميل، نحتاج حزم samba-client أو cifs-utils.
التثبيت (على CentOS/RHEL):
sudo dnf install samba-client cifs-utils -y
التثبيت (على Debian/Ubuntu):
sudo apt update
sudo apt install samba-client cifs-utils -y
تركيب المشاركة (Mounting the Share):
أنشئ نقطة تحميل:
sudo mkdir -p /mnt/samba_share
بعدين، ركب المشاركة. إذا كانت مشاركة ضيف (guest share):
sudo mount -t cifs //192.168.1.100/PublicShare /mnt/samba_share -o guest
إذا كانت مشاركة تتطلب مستخدم وكلمة مرور:
sudo mount -t cifs //192.168.1.100/PrivateShare /mnt/samba_share -o username=sambauser,password=YourPassword
ملاحظة: استبدل
192.168.1.100بعنوان IP لخادم Samba، وYourPasswordبكلمة المرور الفعلية. يفضل استخدام ملف credentials لتجنب كشف كلمة المرور في سطر الأوامر أوfstab.
التركيب التلقائي عند الإقلاع (Automounting):
أضف السطر التالي لملف fstab/etc/. لمشاركة ضيف:
//192.168.1.100/PublicShare /mnt/samba_share cifs guest,uid=1000,gid=1000 0 0
لمشاركة تتطلب مستخدم وكلمة مرور (باستخدام ملف credentials):
أنشئ ملف credentials (مثلاً /etc/samba/credentials/private.cred) واملأه كالتالي:
username=sambauser
password=YourPassword
تأكد من تأمين ملف الـ credentials:
sudo chmod 600 /etc/samba/credentials/private.cred
ثم أضف السطر التالي لـ fstab/etc/:
//192.168.1.100/PrivateShare /mnt/samba_share cifs credentials=/etc/samba/credentials/private.cred,uid=1000,gid=1000 0 0
جرب التركيب اليدوي للتأكد:
sudo mount -a
2.3. الوصول إلى مشاركة Samba من Windows
على جهاز ويندوز، ببساطة افتح مستكشف الملفات واكتب مسار الشبكة في شريط العنوان:
\\192.168.1.100\PublicShare
أو
\\192.168.1.100\PrivateShare
راح يطلب منك اسم المستخدم وكلمة المرور إذا كانت المشاركة خاصة.
الخاتمة
وهكذا يا رفاق، نكون غطينا أساسيات إعداد NFS و Samba. NFS هو نجمك للمشاركات بين أنظمة لينكس، بينما Samba هو جسرك الذهبي لعالم ويندوز. تذكر دائمًا أهمية الأمان وتكوين الصلاحيات بشكل صحيح. استمتعوا بمشاركة الملفات!