الملفات والصلاحيات
درس 3 من 11
3الملفات والصلاحيات
ماذا تشاهد في الرسم: تسعة أحرف تتبدّل مع كل أمر chmod: ثلاثة للمالك، ثلاثة للمجموعة، ثلاثة للآخرين.
من يقرأ rwxr-xr-x بطلاقة يقفز إلى التمارين. والباقي يبدأ من الرسم.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
تخيّل دفترًا عليه ثلاث لافتات: واحدة لصاحبه، وواحدة لأفراد عائلته، وواحدة للزوّار. كل لافتة تقول: هل تستطيع أن تقرأ؟ أن تكتب؟ أن تستعمله؟ حين يقول لك الحاسوب «مرفوض»، فهو يقرأ اللافتة التي تخصّك ويجد أن المربّع المطلوب فارغ.
لكل ملف مالك user ومجموعة group والبقية others، ولكل فئة ثلاث صلاحيات: r قراءة وw كتابة وx تنفيذ. تُكتب رقميًا بجمع 4 و2 و1، فـchmod 755 يعني rwxr-xr-x. وchown يغيّر المالك، والسكربت لا يعمل بـ./script.sh بلا صلاحية x.
قبل أن تبدأ
📟درس الشل
تعرف cd وls وtouch.
👥فكرة المستخدم
كل من يدخل الجهاز له اسم مستخدم، وهو ما يملك الملفات التي ينشئها.
الفكرة الجوهرية
1ثلاث فئات وثلاثة أفعال
لكل ملف مالك واحد، ومجموعة مستخدمين، والباقون هم «الآخرون». ولكل فئة ثلاثة أفعال: قراءة r، كتابة w، تنفيذ x.
تابع الرسم ثم شغّل الكود: stat -c %A يطبع الأحرف التسعة. ملف جديد يأتي عادةً rw-r--r--: المالك يقرأ ويكتب، والباقون يقرؤون فقط.
chmod 600 جعله للمالك وحده، وchmod u+x أضاف التنفيذ للمالك فقط. الشرطة تعني «لا».
touch note.txt stat -c "%A" note.txt chmod 600 note.txt stat -c "%A" note.txt chmod u+x note.txt stat -c "%A" note.txt
الناتج:
-rw-r--r-- -rw------- -rwx------
2الأرقام: r=4 وw=2 وx=1
كل فئة رقم واحد هو مجموع ما تملكه: 7 يعني rwx، و6 يعني rw-، و5 يعني r-x، و4 يعني r-- فقط. ثلاثة أرقام للفئات الثلاث.
644 هو الملف العادي: المالك يقرأ ويكتب، والبقية يقرؤون. 755 هو البرنامج: الكل يشغّل، والمالك وحده يعدّل. 600 للأسرار.
تستطيع أيضًا الكتابة بالأحرف: u للمالك وg للمجموعة وo للآخرين، مع + أو -. الأرقام أسرع، والأحرف أوضح للتعديل الصغير.
3لماذا ملفك لا يعمل
ملف نصي فيه أوامر لا يصير برنامجًا حتى يحمل صلاحية التنفيذ. بدونها يرفضه النظام بـPermission denied حتى لو كان صحيحًا تمامًا.
test -x يسأل: هل أستطيع تشغيله؟ شغّل الكود وراقب الجواب يتغيّر بعد chmod u+x. هذا أول ما تفحصه عندما «لا يعمل» سكربت.
printf '#!/bin/bash\necho "it runs"\n' > run.sh test -x run.sh && echo "executable" || echo "not executable yet" chmod u+x run.sh test -x run.sh && echo "executable" || echo "not executable yet" ./run.sh
الناتج:
not executable yet executable it runs
4الحماية تعمل في الاتجاهين
اسحب صلاحية القراءة من ملفك أنت، فلن تستطيع قراءته حتى تعيدها. الصلاحية قاعدة يطبّقها النظام على الجميع بمن فيهم المالك.
ولهذا الرسائل من نوع Permission denied ليست أعطالًا: هي النظام يفعل ما طُلب منه. اقرأ الصلاحيات أولًا قبل أن تفترض خطأ آخر.
mkdir locked touch locked/secret.txt chmod 000 locked/secret.txt cat locked/secret.txt chmod 400 locked/secret.txt cat locked/secret.txt && echo "(empty file, readable again)"
الناتج:
cat: locked/secret.txt: Permission denied (empty file, readable again)
كيف يعمل، خطوة بخطوة: ماذا يحدث عندما تفتح ملفًا
يرسل البرنامج طلب فتح إلى النواة، ومعه ما يريد: قراءة أو كتابة.
تنظر النواة من أنت: المالك أم من المجموعة أم من الآخرين.
تقارن طلبك بالأحرف الثلاثة الخاصة بفئتك.
تسمح أو ترفض بـPermission denied. لا استثناءات إلا للمدير الجذر root.
مثال محلول
backup.sh وتريد أن تشغّله أنت وزملاؤك في المجموعة، ولا يعدّله أحد غيرك، ولا يقرؤه الغرباء أصلًا. الجواب: chmod 750 backup.sh، أي rwx للمالك، r-x للمجموعة، ولا شيء للآخرين.خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| الصلاحيات للخوادم فقط. | كل ملف على جهازك يحملها الآن، وهي سبب أغلب رسائل الرفض التي ستراها أثناء التعلّم. |
| chmod 777 يحلّ أي مشكلة. | يحلّها بفتح الملف للجميع قراءةً وكتابةً وتنفيذًا، وهذا يخلق مشكلة أمنية أكبر. أعطِ أقل ما يلزم. |
| المالك يفعل ما يشاء دائمًا. | المالك يستطيع تغيير الصلاحيات، لكنه يخضع لها ما دامت كما هي. اسحب القراءة من نفسك ولن تقرأ. |
جرّب بنفسك
ملف صلاحياته rw-r-----. من يستطيع قراءته؟
الثلاثة الأولى rw- للمالك: يقرأ ويكتب. الثلاثة الوسطى r-- للمجموعة: تقرأ فقط. الأخيرة --- للآخرين: لا شيء. بالأرقام هذا 640.
بطاقات مراجعة سريعة
rwx؟chmod u+x يحلّها.تحقق من فهمك
ما الفرق بين chmod 644 وchmod 755؟
الثاني يضيف التنفيذ للفئات الثلاث؛ الأول للملفات العادية والثاني للبرامج والسكربتات.
لماذا 600 هو الخيار الصحيح لملف فيه كلمة مرور؟
لأنه يمنع المجموعة والآخرين من القراءة تمامًا، فلا يراه إلا المالك.
هل تكفي صلاحية التنفيذ على سكربت ليعمل؟
تكفي للسماح، لكن السكربت يحتاج أيضًا سطرًا أول يقول أي برنامج يشغّله، وستراه في درس السكربت.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.