أشهر رسالة يقابلها كل مستخدم لينكس جديد:
bash: ./deploy.sh: Permission denied
أو عند محاولة الكتابة:
touch: cannot touch 'app.log': Permission denied
لينكس ليس عنيدًا معك — هو يطبّق نظام صلاحيات صارمًا هو سرّ أمانه. من يفهم هذا النظام مرة واحدة لا يحتاج «حلولًا سحرية» بعدها.
أولًا: اقرأ الوضع قبل أي أمر
ls -l deploy.sh
-rw-r--r-- 1 baraa developers 512 Jul 10 09:00 deploy.sh
فكّ الشيفرة -rw-r--r--:
| الجزء | يخص | معناه هنا |
|---|---|---|
rw- | المالك (baraa) | قراءة + كتابة، بلا تنفيذ |
r-- | المجموعة (developers) | قراءة فقط |
r-- | بقية المستخدمين | قراءة فقط |
المشكلة ظاهرة فورًا: لا أحد يملك x — لذلك رفض النظام تنفيذ السكربت.
الحالات الأربع الأشهر وحلولها
1) سكربت لا يعمل → أعطه إذن التنفيذ
chmod +x deploy.sh # أضف صلاحية التنفيذ
./deploy.sh # ✅ يعمل الآن
هذا حل 70% من حالات Permission denied عند المبتدئين. (بديل سريع دون تغيير
الصلاحيات: bash deploy.sh — تشغّل المفسّر وتمرر له الملف قراءةً.)
2) ملف يملكه مستخدم آخر → صحّح الملكية
يحدث كثيرًا بعد فك أرشيف بـ sudo أو نسخ ملفات من مكان محمي — مجلد مشروعك صار ملكًا لـ root:
ls -l # المالك root? هذه هي المشكلة
sudo chown -R $USER:$USER . # أعد ملكية مجلد المشروع الحالي إليك
القاعدة: ملفات مشروعك يجب أن تكون ملكك أنت — وبعدها لن تحتاج sudo للتعامل معها إطلاقًا.
3) مهمة نظام حقيقية → sudo في محله
sudo apt install nginx # ✅ تثبيت حزم
sudo nano /etc/hosts # ✅ ملفات النظام
sudo systemctl restart nginx # ✅ إدارة خدمات
💡 نسيت sudo؟
sudo !!تعيد تنفيذ الأمر السابق نفسه بصلاحيات مرفوعة.
⚠️ لكن انتبه: sudo pip install وsudo npm install ليسا من هذه
الفئة — راجع حل أخطاء pip لتعرف لماذا
البيئة الافتراضية هي الحل الصحيح.
4) المنافذ الصغيرة (أقل من 1024)
Error: listen EACCES: permission denied 0.0.0.0:80
المنافذ تحت 1024 محجوزة للنظام. للتجربة المحلية استخدم منفذًا عاليًا (3000، 8080) — وهذا يقاطع أحيانًا مع خطأ شقيق EADDRINUSE: المنفذ مستخدم أصلًا.
chmod بالأرقام — للفهم لا للحفظ
كل صلاحية رقم: r=4، w=2، x=1، والمجموع لكل فئة:
chmod 755 deploy.sh # rwx r-x r-x — سكربتات: المالك كامل والبقية تنفيذ
chmod 644 notes.txt # rw- r-- r-- — ملفات عادية: المالك يكتب والبقية تقرأ
هذان الرقمان (755 للتنفيذ، 644 للملفات) يغطيان الحياة اليومية كلها.
وchmod 777 ليس بينهما أبدًا — إنه "افتحوا كل الأبواب للجميع".
قائمة تحقّق سريعة
ls -lأولًا — من المالك؟ وأي صلاحية ناقصة؟- سكربت لا يعمل؟ →
chmod +x. - ملفات مشروعك ملك root؟ →
sudo chown -R $USER:$USER .مرة واحدة. - الأمر يمس النظام نفسه؟ → sudo بثقة. يمس ملفاتك؟ → المشكلة ملكية.
- لا تحل أي شيء بـ 777.
الخلاصة
Permission denied رسالة إخبارية لا عدائية: "الصلاحية الفلانية ناقصة".
اقرأ ls -l، حدد الصلاحية الناقصة والفئة المعنية، وأعطِ أضيق إذن يحل
المشكلة: +x للسكربتات، chown لملكيتك، وsudo لملفات النظام حصرًا.
أكمل أساسيات الطرفية في مسار لينكس بالعربي، وكمّل سلسلة أخطاء البيئة مع حل أخطاء pip install وحل خطأ المنفذ المستخدم EADDRINUSE.