مقدمة إلى أذونات لينكس Linux Permissions


محمد هاني صباغ

لينكس هو نظام تشغيلٍ متعدد المستخدمين مبني على مفاهيم يونكس (Unix) لملكيّة الملفّّات والأذونات (permissions) بهدفِ توفير حمايةٍ أفضل. إذا كنتَ تخطط لتحسين مهاراتك بلينكس فيجب عليك أن تمتلك فهمًا جيدًا لكيفية عمل ملكية الملفّّات والأذونات في لينكس. هناك العديد من التعقيدات عند التعامل مع ملكية الملفّّات والأذونات، لكننا سنحاول جهدنا لاستخلاص المفاهيم الأساسية المهمّة لفهم كيفية عملها

سنتطرّق إلى كيفية عرض وفهم ملكية الملفّّات والأذونات في لينكس. إذا كنتَ تبحث عن دليلٍ حول كيفية تعديل الأذونات، فاطّلع على هذا الدّرس: مبادئ أذونات الملفات (File permissions) على لينكس.

المتطلبات

تأكّد من أنّك تفهم المفاهيم التي تم تغطيتها بالدروس السابقة في هذه السلسلة:

حول المستخدمين

كما ذكرنا في المقدّمة، لينكس هو نظام متعدد المستخدمين. يجب علينا أن نفهم أساسيات مستخدمي ومجموعات نظام لينكس قبل الحديث عن ملكية الملفّّات والأذونات، لأنهما الكيانان اللذان ينطبق عليهما ملكية الملفّّات والأذونات. فلنبدأ بالحديث عن أساسيات ماهيّة المستخدمين أولًا.

في لينكس، هناك نوعان من المستخدمين: مستخدمو النظام (system users) والمستخدمون العاديون (regular users)، بشكلٍ عام، مستخدمو النظام يتم استخدامهم لتشغيل العمليات غير التفاعلية (non-interactive processes) والعمليات التي تعمل بالخلفية (background processes) على النظام، بينما يتم استخدام المستخدمين العاديين لتسجيل الدخول إلى النظام وتشغيل العمليات التفاعلية. عندما تقوم بالولوج لأول مرّة إلى أيّ نظام لينكس، قد تلاحظ أن النظام يبدأ مع عدّة مستخدمين للنظام حيث يقوم هؤلاء المستخدمون بتشغيل الخدمات التي يعتمد عليها نظام التشغيل، وهذا الأمر طبيعي تمامًا.

من الطرق السهلة لعرض جميع المستخدمين المتوفّرين على النظام هي عرض محتويات ملفّّ etc/passwd/. كلّ سطر في هذا الملفّّ يحتوي معلوماتٍ حول مستخدمٍ واحد، بدءً باسم المستخدم الخاص به (الاسم قبل إشارة ":” الأولى). يمكنك طباعة محتويات ملفّّ passwd عن طريق الأمر التالي:

cat /etc/passwd

المستخدم الجذر

بالإضافة إلى النوعين السابقين للمستخدمين، هناك "المستخدم الجذر" أو ما يعرف بـSuperuser أو root user، وهو يمتلك القدرة على الكتابة فوق أي تقييدات لأذونات ملكية الملفّّات أو تعديلها. بشكلٍ آخر، هذا يعني أن المستخدم الجذر يمتلك القدرة على الوصول إلى أيّ شيءٍ على خادومه الخاص. حيث يتم استخدام هذا المستخدم لتطبيق التغييرات المتعلقة بالنظام بأكمله، ويجب إبقاء هذا المستخدم آمنًا.

من الممكن أيضًا أن يتم إعداد حسابات مستخدمين آخرين تمتلك صلاحيات "المستخدم الجذر". في الواقع، من أفضل التدربيات الممكن القيام بها هو إنشاء مستخدمٍ عادي يمتلك صلاحيات sudo لإدارة مهام النظام.

حول المجموعات

المجموعات هي تجميعات لـ0 مستخدمين أو أكثر. ينتمي المستخدم عادةً إلى المجموعة الافتراضية ويمكن أيضًا أن يكون عضوًا في أيٍّ من المجموعات الأخرى على الخادوم.

من الطرق السهلة لعرض جميع المجموعات المتوفّرة على الخادوم والأعضاء بداخلها هي الاطّلاع على ملفّّ etc/group/. لن نغطّي أساسيات إدارة المجموعات في هذا المقال، ولكن يمكنك تطبيق هذا الأمر في حال كنتَ فضوليًا عن مجموعاتك:

cat /etc/group

الآن صرتَ تعرف ماهيةَ المستخدمين والمجموعات، فلنتحدّث عن ملكية الملفّّات والأذونات.

عرض ملكية الملفات والأذونات

في لينكس، كلّ الملفّّات تعتبر مملوكة من طرف مستخدمٍ واحد ومجموعةٍ واحدة، وكلّ ملفٍّّ يمتلك أذونات الوصول الخاصة به. فلنأخذ لمحة على كيفية عرض أذونات الملفّّات وملكيّتها.

الطريقة الأكثر شيوعًا لعرض أذونات ملفٍّّ ما هي باستخدام الأمر ls مع خيار السرد الطويل (long listing option)، كمثال: ls -l myfile . إذا كنتَ تريد عرض أذونات جميع الملفّّات الموجودة في مسارك الحالي، فقم باستخدام الأمر بدون أيّ معامِلات مثل:

ls -l

تلميح: إذا كنتَ في مسار المنزل الخاص بك وكان فارغًا، ولم تقم بإنشاء أي ملفّّات لعرضها بعد، فيمكنك متابعة العملية عن طريق سرد محتويات المسار etc/ باستخدام هذا الأمر: ls -l /etc

بالأسفل تجدُ مثالًا على لقطة شاشة لِمَا يُمكن للخرج أن يكون، مع تسميات كلِّ عمودٍ من الخرج:

ls-l_001.png

لاحظ أنّه يتم سرد وضع كلّ ملفّّ، المالك، المجموعة والاسم الخاصّين به. باستثناء عمود وضع الملفّّ (file's mode) فإنّه من السهل فهم جميع أجزاء الخرج. للمساعدة في شرح جميع هذه الحروف والرموز، فلنقم بتقسيم عمود الوضع (Mode column) إلى مكوناته الأساسية.

فهم وضع الملفات

للمساعدة في فهم ما تعنيه تلك الحروف والرموز، ألقِ نظرة على هذه الصورة التوضيحية التي تشرح ماهية "الوضع" أو الـ"mode” الخاص بأول ملفٍّّ من المثال أعلاه:

mode_002.png

نوع الملفات

في لينكس، هناك نوعان أساسيان من الملفّّات: عادي وخاص. يتم تحديد نوع الملفّّ عن طريق أول حرفٍ من الوضع الخاص به. في هذا الدليل سنشير إلى هذا عن طريق استخدام مصطلح "حقل نوع الملفّّ".

يُمكن أن يتم التعرف على الملفّّات العادية عن طريق شَرْطَة hyphen ( - ) في حقل نوع الملفّّ الخاص بها. الملفَّّات العادية هي مجرد ملفَّّات صرّفَة تحتوي على بيانات. يتم تسميتها بالملفّّات "العادية" لتمييزها عن الملفّّات الخاصة.

الملفّاّت الخاصّة هي الملفّات التي تمتلك محرف غير شَرْطَي (non-hyphen character) مثل الحروف العادية في حقل نوع الملفّ الخاصة بها، ويتم معاملتها من جانب نظام التشغيل بطريقةٍ مختلفة عن الملفّاّت المحلّية. المحرف الذي يظهر في حقل نوع الملفّ يحدّد نوع الملفّ الخاص. مثل المجلّدات (folders)، وهي الملفّاّت الخاصة الأكثر شيوعًا من بين الملفّاّت الخاصّة. يتم التعرّف على المجلّدات عن طريق محرف d الذي يظهر في حقل نوع الملفّ الخاصّ بالمجلّد (مثل لقطة الشاشة السابقة). هناك أنواعٌ أخرى من الملفّاّت الخاصّة ولكنّها ليست أساسية لِمَا سنتعلّمه هنا.

أصناف الأذونات

نعلمُ من الرسم البياني السابق أنّ عمود الوضع يحدد نوع الملفّّ، متبوعًا بثلاثة أصناف (classes) من الأذونات: المستخدم (المالك)، المجموعة والآخرون. ترتيب هذه الأصناف ثابت على جميع توزيعات لينكس.

فلنلقِ نظرة على الأصناف التي ينتمي إليها كلّ نوعٍ من المستخدمين:

  • المستخدم (User): مالك الملفّ (owner) ينتمي إلى هذا الصنف.
  • المجموعة (Group): أعضاء مجموعة الملفّ ينتمون إلى هذا الصنف.
  • الآخرون (Other): أيُّ مستخدمين آخرين ليسوا جزءًا من صنفيّ المستخدم أو المجموعة فهم ينتمون إلى هذا الصنف.

قراءة الأذونات الرمزية

الشيء التالي الذي من الواجب الاهتمام به هو تشكيلة المحارف الثلاثة الخاصّة بوضع الملفّ، لأنها هي التي تقوم بتحديد الأذونات الخاصّة بالملفّ، بشكلٍ رمزي (symbolic) يمتلكها كل ملفّ.

يتم تمثيل أذونات الكتابة، القراءة والتنفيذ في كلِّ تشكيلةٍ ثلاثية (triad) على النحو التالي:

  • القراءة: يتم تمثيلها بحرف r بالموقع الأول.
  • الكتابة: يتم تمثيلها بحرف w بالموقع الثاني.
  • التنفيذ: يتم تمثيله بحرف x بالموقع الثالث. في بعض الحالات الخاصّة، يمكن أن يكون هناك حرفٌ آخر هنا.

عندما يتم وضع شَرْطَة ( - ) في أي موقعٍ من هذه المواقع، فهذا يعني الإذن المعين ذاك ليس متوفرًا لهذا الصنف. كمثال: إذا كانت التشكيلة الثلاثية للمجموعة المالكة لملفٍّ معين هي: --r ، فهذا يعني أن الملفّ هو قابل للقراءة فقط لتلك المجموعة المتصلة بالملفّ.

فهم قراءة، كتابة وتنفيذ الملفات

الآن صرتَ قادرًا على قراءة الأذونات الخاصّة بكلّ ملفّّ، وعلى الأرجح فإنّك الآن تريد معرفة مالذي يسمح كلّ نوعٍ من أنواع الأذونات للمستخدمين أن يفعلوا. سوف سنشرح كلّ إذنٍ بشكلٍ منفصل، ولكن عليك أن تتذكر أنّه غالبًا ما يتمُ استخدام خليط من هذه الأذونات مع بعضها البعض للسماح بوصولٍ معين إلى هذه الملفّات والمسارات من قبل المستخدمين.

إليك شرحًا بسيطًا إلى نوع الوصول الذي يمنحه كلٌّ نوعٍ من الأذونات للمستخدمين.

1- القراءة

يسمحُ إذن القراءة لملفٍّ عادي أن يتم عرضه من قبل المستخدم لمشاهدة محتويات الملفّ. لمجلد أو مسار، يسمح إذن القراءة لمستخدمٍ أن يقوم بعرض أسماء الملفّات الموجودة بتلك المجلدات أو المسارات.

2- الكتابة

يسمحُ إذن الكتابة لملفٍّ عادي أن يتم تعديله أو حذفه من قبل المستخدم. لمجلدٍ أو مسار، يسمح إذن الكتابة بأن يتم حذف المجلد أو المسار وتعديل محتوياته (إنشاء، حذف وإعادة تسمية الملفّات الموجودة بداخله) وتعديل محتويات الملفّات التي يمكن قراءتها من قبل المستخدم.

3- التنفيذ

يسمح إذن الكتابة بأن يتم تنفيذ ملفٍّ من قبل المستخدم (يجب على المستخدم أن يمتلك إذن القراءة أيضًا). أذونات التنفيذ يجب أن يتم إعطاؤها للبرامج التنفيذية وسكربتات الشلّ (shell scripts) قبل أن يتمكّن المستخدم من تشغيلها. لمجلدٍ أو لمسار، يسمح إذن التنفيذ بالوصول إلى البيانات الوصفية (metadata) الخاصة بالملفّات الموجودة بداخله (مثل الأمر cd أو ls -l).

أمثلة على أوضاع الملفّات والأذونات

الآن وبعدما صرتَ قادرًا على قراءة وضع الملفّات وفهم معنى إذنِ كلِ واحدٍ منها، فسوف نتطرّق إلى بضعة أمثلة لأوضاعٍ شائعة للملفّات مع شرحٍ بسيط حولها:

  • -rw-------: تمثّل ملفًّا قابلًا للوصول فقط من قبل مالكه.
  • -rwxr-xr-x: تمثّل ملفًّا قابلًا للتنفيذ من قبل جميع المستخدمين على النظام.
  • -rw-rw-rw-: تمثّل ملفًّا قابلًا للتعديل من قبل جميع المستخدمين على النظام.
  • drwxr-xr-x: تمثّل مسارًا يمكن لجميع المستخدمين على النظام الوصول إليه وقراءته.
  • drwxrwx---: تمثّل مسارًا قابلًا للتعديل (بالإضافة إلى محتوياته) من قبل مالكه والمجموعة التي ينتمي إليها.
  • drwxr-x---: تمثّل مسارًا يمكن الوصول إليه من قبل مجموعته.

كما تلاحظ، عادةً، مالك الملفّ يتمتّع بغالب الأذونات الخاصة بالملفّ مقارنةً مع الصنفين الآخرين. عادةً، سترى أنّ صنفيّ "المجموعة" و "الآخرون" يمتلكان أذونات فرعية فقط من أذونات مالك الملفّ (مساوية لها أو أقل). هذا أمرٌ منطقي لأن الملفّات يجب أن تكون قابلة للوصول فقط من طرف المستخدمين الذين يحتاجون الوصول إليه لسببٍ معيّن.

شيءٌ آخر لملاحظته هو أنّه وعلى الرغم من أنّه هناك العديد من تشكيلات الأذونات الممكنة، فإنّ عددًا محدودًا منها فقط قد يكون استخدامها منطقيًا في حالاتٍ معيّنة. كمثال فإنّ أُذنيّ الكتابة والتنفيذ غالبًا ما يتم إلحاقهما بإذن القراءة، لأنّه سيكون من الصعب تعديل، ومن المستحيل تنفيذ ملفٍّ لا تستطيع قراءته.

تعديل ملكية الملفات والأذونات

للإبقاء على هذا الدليل بأبسط ما يمكن، لن نتطرف إلى كيفية تعديل ملكيّة الملفّات والأذونات هنا.

الخاتمة

يجب أن تكون الآن قد امتلكت معرفة جيّدة حول كيفية عمل ملكيّة الملفّات والأذونات في نظام لينكس. إذا كنتَ تحبّ تعلم المزيد عن أساسيات لينكس، فمن المستحسن بشدّة أن تقوم بقراءة الدّرس القادم من هذه السّلسلة والذي سيكون حول إعادة توجيه الإدخال/الإخراج في لينكس.

ترجمة -وبتصرّف- للمقال: An Introduction to Linux Permissions.



2 اشخاص أعجبوا بهذا


تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن