إدارة الصلاحيات والملكية (Chmod, Chown, Sudo)


أهلاً يا شباب! بصفتي مهندس أنظمة لينكس، موضوع الصلاحيات والملكية هو خبزنا اليومي. فهمك له بيخليك محترف حقيقي وبتبعد عن مشاكل أمنية وسخافات "Permission Denied". يلا ندخل بالموضوع مباشرة.

إدارة الصلاحيات (Chmod)

أول شيء، كل ملف ومجلد في لينكس له صلاحيات محددة بتحدد مين يقدر يسوي إيش عليه. الصلاحيات الأساسية هي:

  • r (Read): قراءة المحتوى.
  • w (Write): تعديل أو حذف المحتوى.
  • x (Execute): تشغيل الملف (إذا كان برنامج) أو الدخول للمجلد (إذا كان مجلد).

وهذي الصلاحيات بنعطيها لثلاث فئات من المستخدمين:

  • u (User): مالك الملف.
  • g (Group): المجموعة اللي ينتمي لها الملف.
  • o (Others): أي أحد ثاني (العالم كله).
  • a (All): كل الفئات اللي فوق (u, g, o).

الوضع الرمزي (Symbolic Mode)

هنا بنستخدم + للإضافة، - للإزالة، و= للتعيين المطلق.

مثال: أعطي مالك الملف صلاحية التشغيل:


chmod u+x script.sh

مثال: اسحب صلاحية الكتابة والقراءة من المجموعة والآخرين:


chmod go-rw important_file.txt

مثال: اجعل المالك يقرأ ويكتب ويشغل، والمجموعة تقرأ فقط، والآخرين لا شيء:


chmod u=rwx,g=r,o= script.sh

الوضع الرقمي (Octal Mode)

هذا الوضع أكثر شيوعاً بين المحترفين. كل صلاحية لها قيمة رقمية:

  • r (Read) = 4
  • w (Write) = 2
  • x (Execute) = 1
  • لا صلاحية = 0

بنجمع هذي الأرقام عشان نحدد الصلاحية لكل فئة (u, g, o). مثلاً، rwx بتكون 4+2+1=7، وrw- بتكون 4+2+0=6، وr-x بتكون 4+0+1=5.

مثال: أعطي المالك صلاحيات كاملة (rwx)، والمجموعة صلاحية القراءة والتشغيل (rx)، والآخرين صلاحية القراءة فقط (r).


chmod 754 file_name.txt

توضيح 754:

  • 7 (للمالك): rwx (4+2+1)
  • 5 (للمجموعة): r-x (4+0+1)
  • 4 (للآخرين): r-- (4+0+0)

ملاحظة سريعة: لما تنشئ ملف أو مجلد جديد، في صلاحيات افتراضية بتطبق عليه بناءً على قيمة الـ umask. تقدر تشوفها بالأمر umask وتغيرها لو حبيت.

إدارة الملكية (Chown)

الأمر chown بيخليك تغير مالك الملف أو المجلد، وممكن كمان تغير المجموعة اللي ينتمي لها.

مثال: اجعل المستخدم john هو مالك الملف my_document.txt:


chown john my_document.txt

مثال: اجعل المستخدم jane هو المالك والمجموعة devs هي المجموعة للملف project_report.pdf:


chown jane:devs project_report.pdf

لو حبيت تغير المجموعة بس، ممكن تستخدم chgrp، بس chown بتسوي الشغلتين.

مثال: تغيير مالك ومجموعة مجلد بكل محتوياته بشكل متكرر (recursive):


chown -R admin:webusers /var/www/html

تنبيه مهم: عشان تستخدم chown، لازم تكون بصلاحيات الـ root أو تستخدم sudo، لأنك بتغير ملكية ملفات.

تشغيل الأوامر بصلاحيات مرتفعة (Sudo)

الـ sudo اختصار لـ "SuperUser Do". هو طريقة آمنة لتشغيل الأوامر بصلاحيات مستخدم آخر (عادةً root) بدون ما تسجل دخول كـ root مباشرة. وهذا مهم جداً للأمان.

مثال: تحديث قائمة الحزم في نظام دبيان/أوبونتو:


sudo apt update

لما تستخدم sudo، النظام بيطلب منك كلمة مرور المستخدم الحالي (مو كلمة مرور root). إذا كنت مضاف في ملف sudoers (وهو ملف بيحدد مين يقدر يستخدم sudo وإيش الأوامر اللي مسموح له يشغلها)، الأمر بيتنفذ بصلاحيات الـ root.

للتعديل على ملف sudoers، دائماً استخدم visudo. هذا الأمر بيفتح الملف في محرر آمن وبيتأكد من صحة التنسيق قبل الحفظ عشان ما تخرب النظام.


sudo visudo

نصيحة ذهبية: استخدم sudo فقط لما تحتاجها. لا تشغل كل شيء بصلاحيات root بشكل دائم. مبدأ "أقل صلاحية" (Principle of Least Privilege) مهم جداً للأمان.

هذا كل شيء بخصوص الأساسيات! فهمك واستخدامك الصحيح لـ chmod، chown، وsudo بيخليك مهندس لينكس أقوى وأكثر أماناً. طبقها وبتشوف الفرق بنفسك. بالتوفيق!