لماذا الصلاحيات؟
Linux نظام متعدّد المستخدمين منذ البداية: على نفس الخادم يعمل مستخدمك، وخادم الويب، وقاعدة البيانات، كلٌّ بحسابه. الصلاحيات تحدّد من يقرأ ويعدّل ويشغّل كل ملف. خطأ فيها إمّا يكسر برنامجك ("Permission denied") أو يفتح ثغرة (ملف أسرار يقرؤه الجميع).
قراءة الصلاحيات
ls -l
# -rwxr-xr-- 1 baraa dev 1234 Oct 18 10:00 deploy.sh
أول عمود عشرة رموز:
- rwx r-x r--
│ │ │ └── الآخرون (others): قراءة فقط
│ │ └──────── المجموعة (group): قراءة وتنفيذ
│ └────────────── المالك (user): قراءة وكتابة وتنفيذ
└────────────────── النوع: - ملف، d مجلّد، l رابط رمزي
ثم المالك (baraa) والمجموعة (dev). وحين تحاول الوصول لملف، يفحص النظام: هل أنت المالك؟ إذن تُطبَّق صلاحيات المالك. وإلا هل أنت في المجموعة؟ إذن صلاحيات المجموعة. وإلا صلاحيات الآخرين.
r و w و x: المعنى يختلف للمجلّدات
| للملف | للمجلّد | |
|---|---|---|
r (4) | قراءة المحتوى | عرض أسماء ما بداخله (ls) |
w (2) | تعديل المحتوى | إنشاء وحذف وإعادة تسمية ملفات بداخله |
x (1) | تشغيله كبرنامج | الدخول إليه (cd) والوصول لما بداخله |
نقطتان تفاجئان الجميع:
- حذف ملف تحدّده صلاحية المجلّد لا الملف. تستطيع حذف ملف للقراءة فقط إذا كان لك
wعلى المجلّد الذي يحتويه. - مجلّد بلا
xلا يُستخدم، حتى معr. لهذا المجلّدات تأخذ755عادة لا644.
chmod بالأرقام
كل فئة رقم واحد هو مجموع صلاحياتها: r=4 وw=2 وx=1:
chmod 755 deploy.sh # rwx r-x r-x : المالك كل شيء، والبقية قراءة وتشغيل
chmod 644 notes.txt # rw- r-- r-- : الملفات العادية
chmod 600 .env # rw- --- --- : أسرار يقرؤها المالك فقط
chmod 700 private/ # rwx --- --- : مجلّد خاص
| الرقم | الصلاحيات | الاستخدام المعتاد |
|---|---|---|
755 | rwxr-xr-x | البرامج والسكربتات والمجلّدات |
644 | rw-r--r-- | الملفات العادية |
600 | rw------- | مفاتيح SSH، ملفات .env |
700 | rwx------ | مجلّدات خاصة مثل ~/.ssh |
chmod بالرموز
حين تريد تغيير صلاحية واحدة دون لمس الباقي:
chmod +x script.sh # أضف التنفيذ للجميع
chmod u+x script.sh # للمالك فقط (u=user, g=group, o=others, a=all)
chmod go-w file.txt # اسحب الكتابة من المجموعة والآخرين
chmod -R g+rX shared/ # المجموعة تقرأ كل شيء، و X الكبيرة: تنفيذ للمجلّدات (ولما هو قابل للتشغيل أصلًا)
X الكبيرة حيلة مفيدة مع -R: تضيف x للمجلّدات (لتُفتح) وللملفات التي لها x أصلًا عند أحد، دون جعل الملفات العادية قابلة للتشغيل.
chown: تغيير المالك
sudo chown www-data site/index.html # المالك
sudo chown www-data:www-data -R site/ # المالك والمجموعة لكل المحتوى
تغيير المالك يحتاج sudo عادة، لأن مستخدمًا عاديًا لا يستطيع "إهداء" ملفاته لغيره. مثال واقعي: خادم nginx يعمل كمستخدم www-data، فإذا كانت ملفات الموقع ملكك بصلاحية 600 سيظهر للزائر خطأ 403.
umask: الصلاحيات الافتراضية
umask # غالبًا 0022
touch new.txt && ls -l new.txt # -rw-r--r--
الملفات الجديدة تبدأ من 666 والمجلّدات من 777، ثم يُطرح منها umask. مع 022 تصبح الملفات 644 والمجلّدات 755. لهذا لا يكون أي ملف جديد قابلًا للتشغيل تلقائيًا: تضيف x بنفسك.
sudo
sudo ينفّذ أمرًا واحدًا بصلاحيات المدير (root). التفاصيل في درس المستخدمين والمجموعات.
أخطاء شائعة
chmod 777لحلّ "Permission denied": يعطي أي مستخدم على الجهاز حق تعديل الملف أو استبداله. اكتشف من يحتاج الوصول وأعطه إياه فقط (chownأو مجموعة).chmod -R 644على مجلّد: المجلّدات تفقدxفلا يمكن دخولها. استخدمchmod -R u=rwX,go=rX.- مفتاح SSH بصلاحيات واسعة:
sshيرفض استخدامه ("UNPROTECTED PRIVATE KEY FILE"). اجعله600. - نسيان أن الحذف صلاحية مجلّد: حماية ملف بـ
444لا تمنع حذفه. sudoلكل أمر: ملفات تنشئها بـsudoتصبح ملك root، فتظهر لك "Permission denied" عليها لاحقًا.
🎯 التالي: المستخدمون والمجموعات.