أذونات الملفات في لينكس/يونكس: كيفية القراءة والكتابة والتغيير

⚡ ملخص ذكي

تتحكم أذونات الملفات في أنظمة Linux و Unix في من يمكنه قراءة وكتابة وتنفيذ كل ملف، مما يحمي نظامًا متعدد المستخدمين من خلال طبقتين: الملكية، التي تحدد المستخدم والمجموعة والآخرين، وبتات أذونات القراءة والكتابة والتنفيذ.

  • 👥 ملكية: كل ملف ومجلد ينتمي إلى مستخدم (مالك)، ومجموعة، وآخرين، يُطلق عليهم أحيانًا اسم العالم.
  • 🔑 ضوابط: تنطبق ثلاث صلاحيات على كل فئة مالكة: القراءة (r)، والكتابة (w)، والتنفيذ (x).
  • 📃 قائمة: يُظهر الأمر ls -l سلسلة أذونات مثل -rw-rw-r– للمالك والمجموعة والعالم.
  • 🔢 الوضع المطلق: يقوم الأمر chmod مع رقم ثماني مكون من ثلاثة أرقام بتعيين الأذونات لجميع الفئات الثلاث في وقت واحد، على سبيل المثال 764.
  • ➕ الوضع الرمزي: يؤدي استخدام الأمر chmod مع u و g و o و a و + و - و = إلى تغيير فئة مالك واحدة دون التأثير على الفئات الأخرى.
  • 🧭 أوامر الملكية: يقوم الأمر chown بتغيير المالك والمجموعة، بينما يقوم الأمر chgrp بتغيير المجموعة فقط.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن للمساعدين الذين يعملون بالذكاء الاصطناعي وبرنامج GitHub Copilot إنشاء وشرح أوامر chmod و chown.

أذونات الملفات في لينكس ويونكس: كيفية القراءة والكتابة والتغيير

أذونات الملفات في لينكس يُحدد نظام يونكس من يُمكنه قراءة كل ملف أو تعديله أو تشغيله، مما يحافظ على أمان النظام المشترك متعدد المستخدمين. تشرح هذه الصفحة ملكية الملفات، وصلاحيات القراءة والكتابة والتنفيذ، والأوامر التي تُغيرها.

لينكس هو نسخة من يونكس، نظام التشغيل متعدد المستخدمين الذي يمكن الوصول إليه من قبل العديد من المستخدمين في وقت واحد. كما يمكن استخدام لينكس على الحواسيب المركزية والخوادم دون أي تعديل. لكن هذا يثير مخاوف أمنية، إذ يمكن لمستخدم غير مصرح له أو خبيث إتلاف البيانات الحساسة أو تغييرها أو حذفها. ولضمان أمان فعال، يقسم لينكس نظام الصلاحيات إلى مستويين:

  • امتلاك
  • إذن

يُعدّ مفهوم أذونات الملفات وملكية الملفات أساسيًا في نظام لينكس. سنشرح هنا أذونات الملفات وملكية الملفات في لينكس، وسنتناول كليهما بالتفصيل. لنبدأ بمفهوم الملكية.

ملكية ملفات Linux

يُخصص لكل ملف ومجلد في نظام يونكس/لينكس ثلاثة أنواع من المالكين، كما هو موضح أدناه. يوضح الرسم البياني أدناه كيفية ربط الملكية بالمستخدم والمجموعة والآخرين.

مخطط ملكية الملفات في نظام لينكس يوضح فئات الأذونات الخاصة بالمستخدمين والمجموعات وغيرها.

اسم المستخدم

المستخدم هو صاحب الملف. بشكل افتراضي ، يصبح الشخص الذي أنشأ الملف مالكه. ومن ثم ، يُطلق على المستخدم أحيانًا اسم المالك.

تجمع

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

خدمات أخرى

أي مستخدم آخر لديه صلاحية الوصول إلى الملف. هذا الشخص لم ينشئ الملف ولا ينتمي إلى مجموعة مستخدمين تملك الملف. عمليًا، هذا يعني أي شخص آخر. لذا، عند منح الإذن للآخرين، يُشار إلى ذلك أيضًا بمنح الإذن للجميع.

والآن يطرح السؤال الأهم: كيف يميز نظام لينكس بين أنواع المستخدمين الثلاثة هذه بحيث لا يستطيع المستخدم "أ" التأثير على ملف يحتوي على معلومات أو بيانات حيوية خاصة بالمستخدم "ب"؟ الأمر أشبه بعدم الرغبة في وجود زميل يعمل على مشروعك الخاص كمبيوتر Linux لعرض صورك. هنا يأتي دور الأذونات، وهي التي تحدد سلوك المستخدم.

دعونا نفهم نظام الأذونات في نظام لينكس.

أذونات ملف Linux

يحتوي كل ملف ومجلد في نظام Unix/Linux الخاص بك على الأذونات الثلاثة التالية المحددة لجميع المالكين الثلاثة المذكورين أعلاه.

  • قراءة: يمنحك هذا الإذن صلاحية فتح ملف وقراءته. أما إذن القراءة على مجلد فيمنحك القدرة على عرض محتوياته.
  • كتابة: تمنحك صلاحية الكتابة إمكانية تعديل محتويات ملف. أما صلاحية الكتابة على مجلد فتمنحك إمكانية إضافة الملفات الموجودة فيه وحذفها وإعادة تسميتها. لنفترض أن لديك صلاحية الكتابة على ملف، ولكن ليس لديك صلاحية الكتابة على المجلد الذي يحتوي على هذا الملف. ستتمكن من تعديل محتويات الملف، ولكن لن تتمكن من إعادة تسميته أو نقله أو حذفه من المجلد.
  • تنفيذ: In Windowsعادةً ما يحمل البرنامج القابل للتنفيذ امتداد ".exe"، مما يسهل تشغيله. في أنظمة يونكس/لينكس، لا يمكنك تشغيل أي برنامج إلا إذا تم منحه إذن التنفيذ. إذا لم يتم منح إذن التنفيذ، فقد تتمكن من رؤية أو تعديل كود البرنامج (شريطة منح أذونات القراءة والكتابة)، ولكن لن تتمكن من تشغيله.

لنستعرض أذونات الملفات في لينكس مع أمثلة. تشغيل الأمر ls -l في الطرفية يُعطي النتيجة التالية:

ls -l

تُظهر لقطة الشاشة أدناه سلسلة الأذونات في قائمة طويلة.

يُظهر الأمر `ls -l` في الطرفية سلسلة أذونات الملف `rw-rw-r--`

هنا، قمنا بتسليط الضوء على '-rw-rw-r–'، وهذا الرمز ذو المظهر الغريب هو الذي يخبرنا عن أذونات يونكس الممنوحة للمالك ومجموعة المستخدمين والعالم.

هنا، تشير علامة "-" الأولى إلى أننا حددنا ملفًا. أما الأيقونة الموجودة أسفلها فتشير إلى ملف عادي.

رمز صغير يشير إلى أن العنصر المدرج هو ملف عادي

وإلا، لو كان دليلاً، لكان قد تم عرض حرف "د"، كما هو الحال في القائمة أدناه.

قائمة طرفية تعرض دليلاً مُعلَّماً بحرف "d" في بداية سلسلة الأذونات

الأحرف سهلة التذكر.

  • r = إذن القراءة
  • w = إذن الكتابة
  • x = إذن التنفيذ
  • – = لا إذن

دعونا ننظر إلى الأمر من هذه الزاوية. الجزء الأول من الرمز هو 'rw-'. وهذا يشير إلى أن المالك 'Home' يمكنه:

  • اقرأ الملف
  • اكتب أو حرر الملف

لا يمكن للمالك تنفيذ الملف، لأن بت التنفيذ مُعيّن على "-". تُظهر الأيقونة أدناه بت التنفيذ وقد تم مسحه إلى شرطة (-).

أيقونة صغيرة تُظهر مسح بت إذن التنفيذ إلى شرطة (-).

بحسب التصميم، فإن العديد من توزيعات لينكس مثل فيدورا وسنت أو إس و Ubuntu أضف مستخدمًا إلى مجموعة تحمل نفس اسم المستخدم. على سبيل المثال، تمت إضافة المستخدم "tom" إلى مجموعة تحمل اسم "tom".

الجزء الثاني هو 'rw-'. وهو خاص بمجموعة المستخدمين 'Home'، ويمكن لأعضاء المجموعة القيام بما يلي:

  • اقرأ الملف
  • اكتب أو حرر الملف

الجزء الثالث مخصص للعالم، أي لأي مستخدم. وهو يشير إلى "r–". وهذا يعني أن المستخدم لا يمكنه سوى:

  • اقرأ الملف

يوضح الجدول أدناه كيفية ربط كل جزء من سلسلة الأذونات بالمالك والمجموعة والعالم.

تحليل سلسلة أذونات rw-rw-r-- إلى أقسام المالك والمجموعة والعالم

تغيير أذونات الملفات/المجلدات في لينكس باستخدام الأمر 'chmod'

لنفترض أنك لا تريد أن يرى زميلك صورك الشخصية. يمكنك تحقيق ذلك عن طريق تغيير أذونات الملفات.

يمكننا استخدام الأمر 'chmod' أمر، وهو اختصار لـ "وضع التغيير". باستخدام هذا الأمر، يمكننا تعيين أذونات (قراءة، كتابة، تنفيذ) على ملف أو مجلد للمالك والمجموعة والعالم.

بناء الجملة:

chmod permissions filename

هناك طريقتان لاستخدام الأمر:

  • الوضع المطلق
  • الوضع الرمزي

الوضع المطلق (الرقمي) في لينكس

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

رقم الهاتف نوع الإذن رمز
0 لا يوجد إذن -
1 تنفيذ –X
2 كتابة -W-
3 تنفيذ + الكتابة -wx
4 عرض ص-
5 قراءة + تنفيذ آر إكس
6 القراءة والكتابة RW
7 اقرأ + اكتب + نفّذ RWX

دعونا نرى أمر chmod قيد التنفيذ، كما هو موضح في نافذة الطرفية أدناه.

قم بتشغيل الأمر chmod 764 على الملف sample في الطرفية لتغيير أذوناته

في نافذة الطرفية أعلاه، قمنا بتغيير صلاحيات الملف 'sample' إلى '764'. يشير الرمز المطلق '764' إلى ما يلي:

  • يستطيع المالك القراءة والكتابة والتنفيذ.
  • يمكن لمجموعة المستخدمين القراءة والكتابة.
  • العالم لا يستطيع إلا أن يقرأ.

يظهر هذا على شكل '-rwxrw-r–'، كما هو موضح في النتيجة أدناه.

قائمة طرفية تعرض الملف النموذجي مع سلسلة الأذونات -rwxrw-r-- بعد تنفيذ الأمر chmod 764

هذه هي الطريقة التي يمكنك بها تغيير أذونات المستخدم في نظام لينكس على ملف عن طريق تعيين رقم مطلق.

الوضع الرمزي في لينكس

في الوضع المطلق، يمكنك تغيير صلاحيات جميع المالكين الثلاثة. أما في الوضع الرمزي، فيمكنك تعديل صلاحيات مالك محدد. ويستخدم هذا الوضع رموزًا رياضية لتعديل صلاحيات ملفات يونكس.

المُشغل الوصف
+ يضيف إذنًا إلى ملف أو دليل
- يزيل الإذن
= يحدد الأذونات ويتجاوز الأذونات التي تم تحديدها مسبقًا

يتم تمثيل الملاك المختلفين على النحو التالي.

اسم المستخدم الدلالات
u مستخدم / المالك
g رأس التجميع
o أخرى
a الكل

لن نستخدم الصلاحيات بالأرقام مثل 755، بل بالأحرف مثل rwx. لنلقِ نظرة على المثال الموضح أدناه.

استخدم الأمر chmod الرمزي في الطرفية مع u و g و o و + و - و = لتغيير صلاحيات محددة

تغيير الملكية والمجموعة في Linux

لتغيير ملكية ملف أو مجلد، يمكنك استخدام الأمر التالي:

chown user filename

في حال رغبتك في تغيير المستخدم والمجموعة لملف أو مجلد، استخدم الأمر التالي:

chown user:group filename

دعونا نرى هذا عملياً، كما هو موضح أدناه.

تشغيل أمر chown في الطرفية لتغيير مالك ومجموعة ملف

في حال رغبتك في تغيير مالك المجموعة فقط، استخدم الأمر التالي:

chgrp group_name filename

يشير اختصار 'chgrp' إلى تغيير المجموعة. تُظهر لقطة الشاشة أدناه استخدام أمر chgrp.

تشغيل أمر chgrp في الطرفية لتغيير مالك المجموعة فقط لملف

نصيحه

  • يحتوي الملف /etc/group على جميع المجموعات المعرفة على النظام.
  • يمكنك استخدام الأمر "groups" للعثور على جميع المجموعات التي أنت عضو فيها، كما هو موضح أدناه.

تشغيل أمر المجموعات في الطرفية لعرض قائمة المجموعات التي ينتمي إليها المستخدم

  • يمكنك استخدام الأمر newgrp للعمل كعضو في مجموعة أخرى غير مجموعتك الافتراضية، كما هو موضح أدناه.

تشغيل أمر newgrp في الطرفية للتبديل إلى مجموعة مختلفة

  • لا يمكن أن تمتلك مجموعتان نفس الملف.
  • لا توجد مجموعات متداخلة في نظام لينكس. لا يمكن أن تكون مجموعة ما مجموعة فرعية لمجموعة أخرى.
  • x — تنفيذ دليل يعني السماح لك "بالدخول" إلى دليل والحصول على إمكانية الوصول إلى الأدلة الفرعية.
  • هناك أذونات أخرى يمكنك تعيينها على الملفات والمجلدات، والتي سيتم تناولها في درس تعليمي متقدم لاحق.

الأسئلة الشائعة

أضف صلاحية التنفيذ باستخدام الأمر chmod. الصيغة الرمزية chmod +x script.sh تمنح صلاحية التنفيذ للجميع، بينما الصيغة chmod u+x script.sh تمنحها للمالك فقط. بعد ذلك، يمكنك تشغيل البرنامج النصي مباشرةً باستخدام ./script.sh من مجلده.

يُحدد الأمر umask الأذونات الافتراضية التي تُزال من الملفات والمجلدات المُنشأة حديثًا. تبدأ أذونات الملفات من 666 وأذونات المجلدات من 777، ثم تكون قيمة umask أقل من 777.tracتيد. قيمة umask الشائعة 022 تعطي الملفات 644 والمجلدات 755. شغّل الأمر umask لمعرفة القيمة الحالية.

هذه بتات أذونات خاصة. يقوم setuid بتشغيل برنامج بحقوق مالكه، ويقوم setgid بتشغيله بحقوق المجموعة أو يجعل الملفات الجديدة ترث مجموعة الدليل، ويسمح بت sticky لمالك الملف فقط بحذفه داخل دليل مشترك مثل /tmp.

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

هذا الخطأ يعني أنك لا تملك صلاحيات تعديل الملف. لتشغيل الأمر chmod، يجب أن تكون مالك الملف أو أن تكون مستخدمًا بصلاحيات الجذر؛ أما لتشغيل الأمر chown، فأنت تحتاج عادةً إلى صلاحيات الجذر. أضف sudo قبل الأمر، أو انتقل إلى مالك الملف، ثم حاول مرة أخرى.

استخدم الخيار -R التكراري. يُطبّق الأمر chmod -R 755 myfolder الأذونات على المجلد وكل ملف ومجلد فرعي بداخله، بينما يُطبّق الأمر chown -R user:group myfolder نفس الشيء على الملكية. استخدم الخيار -R بحذر، لأنه يؤثر على كل عنصر داخل المجلد.

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

نعم. مساعد الطيار جيثب يمكن اقتراح أوامر chmod و chown و chgrp من خلال تعليق قصير يصف الأذونات أو المالك الذي تريده، وإكمالها أثناء الكتابة. Revراجع كل اقتراح قبل تنفيذه، لأن تغييرات الأذونات والملكية تؤثر على الأمان.

تلخيص هذه التدوينة بـ: