صلاحيات الملفات في Linux: فهم chmod وchown بالممارسة

صلاحيات الملفات في Linux: فهم chmod و chown بالممارسة

دليل عملي أصيل لفهم صلاحيات الملفات في Linux عبر أداتي chmod و chown، يشرح قراءة مخرجات ls -l، والصيغ الرمزية والرقمية، والصلاحيات الخاصة، و umask، مع سيناريوهات واقعية وأخطاء شائعة وحلولها لتأمين نظامك بثقة.

دليل عملي

دليل عملي أصيل لفهم صلاحيات الملفات في Linux عبر أداتي chmod وchown، يشرح قراءة مخرجات ls -l، والصيغ الرمزية والرقمية، والصلاحيات الخاصة، وumask، مع سيناريوهات واقعية وأخطاء شائعة وحلولها لتأمين نظامك بثقة.

تظهر رسالة Permission denied في اللحظة الأكثر إزعاجًا: عند تشغيل سكربت، أو رفع ملف إلى مجلد ويب، أو قراءة مفتاح SSH. كثير من المستخدمين الجدد يعالجون المشكلة بأمر عشوائي مثل chmod 777، فينجح العمل مؤقتًا ثم يُفتح ثغرة أمنية دائمة. السبب أنهم لم يبنوا صورة ذهنية واضحة عن نموذج الصلاحيات في Linux. هذا المقال يقصد موضوعًا محددًا: كيف تقرأ الصلاحيات الحالية، ثم تعدّلها بوعي باستخدام chmod لتغيير نمط الوصول، و chown لتغيير الملكية والمجموعة. سنمشي خطوة بخطوة من مخرجات ls -l، إلى الصيغ الرمزية والرقمية، مرورًا بالصلاحيات الخاصة و umask، ثم سيناريوهات عملية وأخطاء شائعة يمكنك تشخيصها بنفسك. الهدف ليس حفظ أوامر، بل اتخاذ قرار أمني مدروس لكل ملف.

أساسيات نموذج الصلاحيات: المالك والمجموعة والآخرون

في Linux لا يوجد ملف بلا مالك؛ فالنظام يربط كل عنصر في نظام الملفات بمستخدم مالك ومجموعة مالك، ثم يحدد ما يمكن لثلاث فئات فعله. الفئات هي المالك، وأعضاء المجموعة، وبقية المستخدمين. أما الأفعال فهي القراءة r والكتابة w والتنفيذ x. هذه البنية الثلاثية ضمن ثلاث فئات هي جوهر كل ما تفعله لاحقًا بأداتي chmod و chown، وفهمها مبكرًا يمنع كثيرًا من أخطاء الوصول المتكررة التي يقع فيها المبتدئون.

المستخدم الجذر root يتجاوز هذه القيود عمليًا، لكنه ليس مالكًا ضمنيًا لكل ملف بالمعنى الدقيق. عند إنشاء ملف جديد يصبح المستخدم الذي أنشأه هو المالك، وتُضبط المجموعة وفق مجموعته الأساسية أو وفق دليل أب يحمل صلاحية setgid. للتحقق السريع من هويتك الفعلية ومعرّفاتك استخدم الأوامر id و whoami و groups، ثم اقرأ مخرجات ls -l بتمعّن قبل أن تغيّر أي إعداد على الملف.

قراءة مخرجات ls -l سطرًا بسطر

عند تشغيل ls -l تحصل على سطر يشبه -rw-r--r-- 1 ahmed devs 4096 ... name. الحرف الأول يصف نوع العنصر: شرطة للملف العادي، و d للمجلد، و l للرابط الرمزي. ثم تأتي تسعة أحرف مقسّمة ثلاث مجموعات: الأولى للمالك، والثانية للمجموعة، والثالثة للآخرين. بعدها عدد الروابط، فاسم المالك، فاسم المجموعة، فالحجم، فتاريخ آخر تعديل، وأخيرًا اسم العنصر. قراءة هذا السطر صحيحة هي نصف التشخيص.

تعلم ربط كل موضع بمعناه يوفّر عليك وقتًا كبيرًا. ففي -rwxr-xr-- المالك يقرأ ويكتب وينفّذ، والمجموعة تقرأ وتنفّذ، والآخرون يقرؤون فقط. لاحظ أن الشرطة تعني غياب الصلاحية، وليست خطأ. في المجلدات يكتسب الحرف x معنى خاصًا مهمًا: فهو صلاحية العبور والدخول إلى المجلد والسير داخله، وليس تشغيل برنامج. لهذا قد تقرأ مجلدًا بصلاحية r دون أن تستطيع الدخول إليه فعليًا إذا غاب الحرف x.

الصيغة الرمزية ل ـ chmod: من ugoa إلى علامات الجمع والطرح

تتيح لك الصيغة الرمزية في chmod تعديل بت واحد أو أكثر دون لمس الباقي. الحروف u و g و o تشير إلى المالك والمجموعة والآخرين، و a تعني الجميع. والعلامات + و- و= تضيف الصلاحية أو تسحبها أو تضبطها بدقة. فأمر chmod u+x script يجعل المالك قادرًا على التنفيذ فقط، وأمر chmod g-w file يسحب الكتابة من المجموعة، وأمر chmod a+r file يمنح القراءة للجميع.

الفائدة الكبرى في الصيغة الرمزية أنها تقليلية، أي لا تعيد كتابة الصلاحيات كلها. هذا مثالي عندما تريد إضافة تنفيذ لك دون تغيير قراءة المجموعة أو كتابة الآخرين. ويمكن دمج أكثر من تعديل في أمر واحد كما في chmod u=rw,g=r,o= file حيث تضبط كل فئة بقيمة صريحة. استخدم = عندما تحتاج نتيجة محددة تمامًا، واستخدم + أو - عندما تريد تعديلًا موضعيًا يحافظ على بقية النمط دون تغيير.

الصيغة الرقمية ل ـ chmod: من 644 إلى 755 و 600

في الصيغة الرقمية تُقسم الصلاحيات إلى ثلاث خانات، كل خانة رقم من صفر إلى سبعة. القيمة تُحسب جمعًا: القراءة أربعة، والكتابة اثنان، والتنفيذ واحد. فيصبح rwx سبعة، و rw- ستة، و r-- أربعة، و--- صفرًا. لذا فإن chmod 644 يعني أن المالك يقرأ ويكتب، والمجموعة والآخرون يقرؤون فقط، وهو النمط الشائع للملفات العادية والمستندات.

أما chmod 755 فيمنح المالك كل الصلاحيات، والمجموعة والآخرين القراءة والتنفيذ، وهو مناسب للسكربتات والمجلدات العامة التي يجب أن يعبرها الجميع دون أن يكتبوا فيها. و chmod 600 يمنح المالك القراءة والكتابة فقط ويحجب الجميع، وهو الخيار الآمن للملفات الحساسة مثل مفاتيح SSH وملفات الإعداد التي تحمل أسرارًا. احذر من 777 لأنه يمنح الكتابة والتنفيذ للجميع ويُعد خطرًا أمنيًا حقيقيًا.

chown و chgrp: تغيير المالك والمجموعة بأمان

يتخصص الأمر chown بتغيير مالك الملف ومجموعته معًا، بينما يكتفي chgrp بتغيير المجموعة. الصيغة العامة chown user file تنقل الملكية إلى مستخدم محدد، و chown user:group file تضبط الاثنين، و chown :group file تغيّر المجموعة فقط. يحتاج هذا الأمر عادة إلى صلاحيات الجذر sudo لأن نقل الملكية ليس عملية عادية يملكها أي مستخدم على ملفات الآخرين دون سبب إداري.

مع المجلدات تكمن القوة والخطورة في خيار -R الذي يطبّق التغيير على المحتوى بالكامل. فقبل تشغيل chown -R user:group directory تأكد من مسار الدليل، لأن خطأ مطبعيًا واحدًا قد يغيّر ملكية مجلد نظامي بالكامل. بعد التنفيذ تحقق فورًا عبر ls -l للتأكد من المالك والمجموعة الفعليين، ولا تعتمد على انطباعك بأن الأمر نجح دون تحقق مرئي.

الصلاحيات الخاصة: setuid و setgid و sticky bit

توجد ثلاث بتات خاصة تُكتب يسار النمط الرقمي: setuid بقيمة أربعة آلاف، و setgid بألفين، و sticky بألف. فعند رؤية s بدل x في خانة المالك يكون setuid مفعّلًا، ومعناه أن البرنامج يُنفَّذ بصلاحيات مالكه لا بصلاحيات من شغّله، وهذا شائع في أدوات إدارة كلمة المرور. أما setgid على مجلد فيجعل الملفات الجديدة ترث مجموعة المجلد، وهو مفيد لمجلدات الفرق المشتركة.

أما sticky bit فيُكتب عادة على المجلدات العامة، ولعل أشهر مثال هو المجلد المؤقت /tmp، حيث يسمح للجميع بالكتابة لكنه يمنع أي مستخدم من حذف ملفات غيره. يمكنك البحث عن الملفات ذات setuid أو setgid بأمر find مع الخيار -perm، لكن احترم حدوده ولا تُعدّل صلاحيات ملفات النظام لأن ذلك قد يكسر أدوات إدارية حساسة أو يفتح بابًا للتصعيد.

umask: لماذا تُولد الملفات بصلاحيات افتراضية

عندما تُنشئ ملفًا أو مجلدًا، لا تختار صلاحياته من الصفر؛ بل يحددها ما يُسمى umask، وهو قناع يطرح صلاحيات من القيمة الافتراضية. القيمة الأساسية نظريًا هي 666 للملفات و 777 للمجلدات، ثم يُطرح قناع umask منها. فمع القناع الشائع 022 تحصل على 644 للملفات و 755 للمجلدات، وهو ما يفسّر النمط الذي تراه بعد أي إنشاء عادي.

لتغيير السلوك مؤقتًا نفّذ umask 027 في الجلسة الحالية، فتختفي صلاحيات الكتابة للمجموعة والصلاحيات الكاملة للآخرين. أما التعديل الدائم فيوضع في ملفات الإعداد مثل bashrc أو profile حسب الصدفة التي تستخدمها. القيمة 027 مناسبة للبيئات التي تعمل فيها فرق على نفس النظام وتريد حماية الملفات من الآخرين مع إتاحة القراءة لأعضاء المجموعة.

سيناريو عملي: صلاحيات مفتاح SSH ومدير الموقع

من أشهر الحالات العملية إعداد مفتاح SSH، حيث يرفض العميل الاتصال إذا كانت الصلاحيات متساهلة. المطلوب عادة أن يكون مجلد ssh. داخل مجلد المستخدم بصلاحية 700، وأن تكون صلاحية الملفات الداخلية zoals id_rsa و authorized_keys على 600. هذه القيم تمنع أي مستخدم آخر من قراءة المفتاح الخاص، وتحمي جلسات الاتصال البعيد من استغلال غير مقصود لملفات حساسة.

وفي استضافة موقع ويب يظهر الخطأ نفسه من جهة أخرى: المجلدات تحتاج عادة 755 لكي يعبرها خادم الويب، والملفات 644 لكي يقرأها دون أن يكتب فيها. الرد السريع على خطأ الكتابة ب ـ chmod 777 هو الحل الخاطئ، لأنه يفتح الملفات للجميع. البديل الصحيح هو تقدير الفئة المحتاجة فعلًا، ثم منحها أقل صلاحية تكفي، وهذا مبدأ أقل امتياز المطبّق في الأمن.

أخطاء شائعة وحلولها: Permission denied و 777 و ACL

عندما تصادف Permission denied لا تُسرع بتشغيل 777؛ ابدأ بالتشخيص. نفّذ ls -l على الملف والدليل الأب، وتأكد من هويتك ب ـ id، وافحص صلاحية x على المجلدات في المسار. في كثير من الحالات يكون العائق مجلدًا أبًا بلا صلاحية عبور، لا الملف نفسه. وإذا استمر النقص فتحقق من أنك تعمل على نظام الملفات الصحيح دون قيود إضافية من نظام ملفات الشبكة.

أحيانًا لا تكفي الفئات الثلاث التقليدية، خصوصًا حين تحتاج منح صلاحية لمستخدم بعينه دون بقية المجموعة. هنا تظهر قوائم التحكم بالوصول ACL عبر getfacl للعرض و setfacl للإضافة، مثل منح مستخدم قراءة وكتابة على مجلد مشترك. تعامل مع هذه الأدوات كطبقة دقيقة فوق النموذج الأساسي، ووثّق أي استثناء تضيفه لتفهمه لاحقًا.

روتين آمن لتعديل الصلاحيات من البداية للنهاية

بناء عادة عمل واضحة يحميك من المطبات. ابدأ دائمًا بفحص الحالة ب ـ ls -l، ثم حدّد الفئة المحتاجة والصلاحية الدنيا التي تكفيها، ثم استخدم الصيغة الرمزية أو الرقمية المناسبة. بعد التنفيذ، أعد الفحص لتتأكد من النتيجة، ووثّق أي تغيير على مجلدات حساسة في ملاحظاتك الخاصة بالخادم.

على المدى الطويل، فضّل ضبط المجموعات umask بدل تسهيل الصلاحيات، واجعل ملفات الأسرار 600 والمجلدات الخاصة 700، وامنع 777 من قائمتك تمامًا. وتذكّر أن chown يحتاج تحققًا مزدوجًا قبل خيار -R، وأن النسخ الاحتياطي قبل أي تعديل واسع النطاق إجراء حكيم. هذه الخطوات الصغيرة تحوّل إدارة الصلاحيات من قلق إلى روتين واثق.

أسئلة شائعة

ما الفرق العملي بين chmod و chown؟

يتعامل chmod مع نمط الصلاحيات، أي من يقرأ ومن يكتب ومن ينفّذ للمالك والمجموعة والآخرين. أما chown فيغيّر مالك الملف ومجموعته معًا، و chgrp يغيّر المجموعة وحدها. القاعدة العملية: إن كانت المشكلة في نوع الوصول استخدم chmod، وإن كانت في هوية الفئة المخوّلة فاستخدم chown أو chgrp، وغالبًا مع صلاحيات sudo. افصل بين القرارين دائمًا.

ماذا يعني chmod 755 و chmod 644 بالأرقام؟

كل خانة رقمها مجموع قيم القراءة أربعة والكتابة اثنان والتنفيذ واحد. النمط 755 يعني أن المالك يقرأ ويكتب وينفّذ، والمجموعة والآخرون يقرؤون وينفّذون دون كتابة، وهو مناسب للمجلدات والسكربتات العامة. والنمط 644 يعني أن المالك يقرأ ويكتب بينما يقرأ الآخرون فقط، وهو مناسب للملفات العادية. احتفظ ب ـ600 للملفات الحساسة.

لماذا أرى Permission denied رغم أنني مالك الملف؟

الملكية وحدها لا تكفي؛ فقد يكون الحرف x غائبًا على أحد المجلدات في المسار، أو تكون الصلاحية منزوعة من فئة المالك نفسها. افحص ls -l على الملف وكل مجلد أب، وتأكد من هويتك بالأمر id، وتحقق من أن نظام الملفات لا يفرض قيودًا إضافية. حل شائع هو إضافة تنفيذ للمالك على السكربت أو صلاحية عبور على المجلد.

كيف أغيّر صلاحيات مجلد وكل محتوياته بأمان؟

استخدم chmod -R أو chown -R لتطبيق التغيير على المحتوى بالكامل، لكن بعد التأكد من المسار مرتين لأن الخطأ يشمل الجميع. ويفضّل خيار عاقل مثل chmod -R u=rwX,go=rX الذي يمنح التنفيذ للمجلدات دون تشغيل الملفات العادية بشكل غير مقصود. خذ نسخة احتياطية قبل التعديلات الواسعة وراجع النتيجة ب ـ ls -l.

هل تريد الاحتفاظ بالمقال أو إعادة استخدامه؟
مجتمع إيجي تاجعن المجتمع

شارك في تقييم ونقاش المقال

رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.

تفاعل مع المقالاختر التفاعل المناسب، ويمكنك تغيير رأيك لاحقًا.
قيّم جودة المقاللا توجد تقييمات بعد — كن أول من يقيّم.

نقاش القراء

النقاش

جارٍ تحميل التعليقات…

بعد هذه المادة

تابع القراءة

كل مواد أنظمة التشغيل
من نفس القسم04
  1. 02
  2. 03
  3. 04
اختيار القراء

الأكثر قراءة

الترتيب الكامل
  1. 01
يتجدد مع النشر

أحدث المواد

  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06