كيفية استخدام الأمر chmod على نظام Linux

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

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

في Linux ، يتم التحكم في من يمكنه فعل ما يتعلق بملف أو دليل من خلال مجموعات من الأذونات. هناك ثلاث مجموعات من الأذونات. مجموعة واحدة لمالك الملف ، ومجموعة أخرى لأعضاء مجموعة الملف ، ومجموعة نهائية لأي شخص آخر.

تتحكم الأذونات في الإجراءات التي يمكن تنفيذها على الملف أو الدليل. فهي إما تسمح بقراءة الملف أو تعديله أو تمنعه ​​أو تنفيذه إذا كان نصًا أو برنامجًا. بالنسبة إلى الدليل ، تتحكم الأذونات من يمكنه cdالدخول إلى الدليل ومن يمكنه إنشاء الملفات أو تعديلها داخل الدليل.

يمكنك استخدام  chmod الأمر لتعيين كل من هذه الأذونات. لمعرفة الأذونات التي تم تعيينها على ملف أو دليل ، يمكننا استخدام ls.

عرض وفهم أذونات الملفات

يمكننا استخدام خيار -l(تنسيق طويل) lsلسرد أذونات الملفات للملفات والدلائل.

ls -l

في كل سطر ، يحدد الحرف الأول نوع الإدخال الذي يتم سرده. إذا كانت شرطة ( -) فهو ملف. إذا كان هو الحرف d فهو دليل.

تمثل الأحرف التسعة التالية الإعدادات الخاصة بمجموعات الأذونات الثلاث.

  • تُظهر الأحرف الثلاثة الأولى الأذونات الممنوحة للمستخدم الذي يمتلك الملف ( أذونات المستخدم ).
  • تُظهر الأحرف الثلاثة الوسطى الأذونات الممنوحة لأعضاء مجموعة الملف ( أذونات المجموعة ).
  • تعرض الأحرف الثلاثة الأخيرة الأذونات لأي شخص ليس في الفئتين الأوليين ( أذونات أخرى ).

هناك ثلاثة أحرف في كل مجموعة من الأذونات. الأحرف هي مؤشرات على وجود أو عدم وجود أحد الأذونات. تكون إما شرطة ( -) أو حرف. إذا كان الحرف عبارة عن شرطة ، فهذا يعني أنه لم يتم منح الإذن. إذا كان الحرف هو r، wأو ل x، وقد تم منح هذا الإذن.

تمثل الحروف:

  • r : قراءة الأذونات. يمكن فتح الملف وعرض محتوياته.
  • w : أذونات الكتابة. يمكن تحرير الملف وتعديله وحذفه.
  • x : تنفيذ الأذونات. إذا كان الملف عبارة عن برنامج نصي أو برنامج ، فيمكن تشغيله (تنفيذه).

فمثلا:

  •  --- يعني أنه لم يتم منح أي أذونات على الإطلاق.
  •  rwxيعني أنه تم منح الأذونات الكاملة. مؤشرات القراءة والكتابة والتنفيذ كلها موجودة.

في لقطة الشاشة الخاصة بنا ، يبدأ السطر الأول بامتداد d. يشير هذا السطر إلى دليل يسمى "أرشيف". مالك الدليل هو "dave" ، واسم المجموعة التي ينتمي إليها الدليل يسمى أيضًا "dave".

الأحرف الثلاثة التالية هي أذونات المستخدم لهذا الدليل. هذه تظهر أن المالك لديه أذونات كاملة. و r، wو xالشخصيات كلها موجودة. هذا يعني أن المستخدم ديف قد قرأ وكتب ونفذ أذونات لذلك الدليل.

المجموعة الثانية من ثلاثة أحرف هي أذونات المجموعة ، وهذه هي r-x. تظهر هذه أن أعضاء مجموعة ديف قد قرأوا ونفذوا أذونات لهذا الدليل. هذا يعني أنه يمكنهم سرد الملفات ومحتوياتها في الدليل ، ويمكنهم cd(التنفيذ) في هذا الدليل. ليس لديهم أذونات الكتابة ، لذلك لا يمكنهم إنشاء الملفات أو تحريرها أو حذفها.

المجموعة النهائية من ثلاثة أحرف هي أيضًا  r-x. تنطبق هذه الأذونات على الأشخاص الذين لا تحكمهم أول مجموعتين من الأذونات. قرأ هؤلاء الأشخاص (يطلق عليهم "آخرون") الأذونات وتنفيذها في هذا الدليل.

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

بالنسبة لجميع الملفات الأخرى (باستثناء ملف البرنامج النصي mh.sh) ، قام ديف وأعضاء مجموعة ديف بقراءة وكتابة الخصائص على الملفات ، بينما يمتلك الآخرون أذونات قراءة فقط.

بالنسبة للحالة الخاصة لملف البرنامج النصي mh.sh ، قام المالك ديف وأعضاء المجموعة بقراءة الأذونات وكتابتها وتنفيذها ، بينما قام الآخرون بقراءة الأذونات وتنفيذها فقط.

فهم بناء جملة الإذن

لاستخدامها chmod لتعيين الأذونات ، نحتاج إلى إخبارها:

  • من:  لمن نقوم بتعيين الأذونات.
  • ماذا : ما التغيير الذي نقوم به؟ هل نقوم بإضافة أو إزالة الإذن؟
  • أي من الأذونات نقوم بتعيينها؟

نستخدم المؤشرات لتمثيل هذه القيم ، ونشكل "بيانات أذونات" قصيرة مثل u+x، حيث "u" تعني "المستخدم" (who) ، وتعني "+" إضافة (ماذا) ، وتعني "x" إذن التنفيذ (الذي) .

قيم "من" التي يمكننا استخدامها هي:

  • u : المستخدم ، ويعني صاحب الملف.
  • g : المجموعة ، أي أعضاء المجموعة التي ينتمي إليها الملف.
  • س : اخرى، وهذا يعني الناس لا تحكمه uو gالأذونات.
  • أ : الكل ، أي كل ما سبق.

إذا لم يتم استخدام أي من هذه chmodالأشياء ، فتصرف كما لو aتم استخدام " ".

قيم "ماذا" التي يمكننا استخدامها هي:

  • - : علامة ناقص. يزيل الإذن.
  • + : علامة الجمع. يمنح الإذن. يضاف الإذن إلى الأذونات الموجودة. إذا كنت تريد الحصول على هذا الإذن ومجموعة الأذونات هذه فقط ، فاستخدم =الخيار الموضح أدناه.
  • = : علامة يساوي. تعيين إذن وإزالة الآخرين.

القيم "التي" يمكننا استخدامها هي:

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

ضبط وتعديل الأذونات

لنفترض أن لدينا ملفًا يتمتع فيه كل شخص بأذونات كاملة.

ls -l new_ file.txt

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

chmod u = rw، og = r new_file.txt

استخدام عامل التشغيل "=" يعني أننا نقوم بمسح أي أذونات موجودة ثم تعيين الأذونات المحددة.

دعنا نتحقق من الإذن الجديد لهذا الملف:

ls -l new_file.txt

تمت إزالة الأذونات الحالية ، وتم تعيين الأذونات الجديدة كما توقعنا.

ماذا عن إضافة إذن دون إزالة إعدادات الأذونات الموجودة؟ يمكننا القيام بذلك بسهولة أيضًا.

لنفترض أن لدينا ملف نصي انتهينا من تحريره. نحن بحاجة إلى جعله قابلاً للتنفيذ لجميع المستخدمين. تبدو أذوناته الحالية كما يلي:

ls -l new_script.sh

يمكننا إضافة إذن التنفيذ للجميع بالأمر التالي:

chmod a + x new_script.sh

إذا ألقينا نظرة على الأذونات ، فسنرى أنه تم الآن منح إذن التنفيذ للجميع ، وما زالت الأذونات الحالية سارية.

ls -l new_script.sh

كان بإمكاننا تحقيق نفس الشيء بدون "أ" في عبارة "a + x". الأمر التالي سيعمل أيضًا.

chmod + x new_script.sh

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

يمكننا تطبيق أذونات على ملفات متعددة في وقت واحد.

هذه هي الملفات الموجودة في الدليل الحالي:

ls -l

لنفترض أننا نريد إزالة أذونات الكتابة للمستخدمين "الآخرين" من الملفات التي لها امتداد ".page". يمكننا القيام بذلك بالأمر التالي:

chmod أو * .page

دعنا نتحقق من تأثير ذلك:

ls -l

كما نرى ، تمت إزالة إذن القراءة من ملفات ".page" لفئة المستخدمين "الأخرى". لم تتأثر أي ملفات أخرى.

إذا أردنا تضمين الملفات في المجلدات الفرعية ، فقد استخدمنا -Rالخيار (العودي).

chmod -R أو * .page

الاختزال العددي

هناك طريقة أخرى للاستخدام chmodوهي توفير الأذونات التي ترغب في منحها للمالك والمجموعة والآخرين كرقم مكون من ثلاثة أرقام. يمثل الرقم الموجود في أقصى اليسار أذونات المالك. يمثل الرقم الأوسط أذونات أعضاء المجموعة. يمثل الرقم الموجود في أقصى اليمين الأذونات للآخرين.

الأرقام التي يمكنك استخدامها وما تمثله مذكورة هنا:

  • 0: (000) لا يوجد إذن.
  • 1: (001) إذن التنفيذ.
  • 2: (010) إذن كتابة.
  • 3: (011) كتابة الأذونات وتنفيذها.
  • 4: (100) إذن قراءة.
  • 5: (101) قراءة وتنفيذ الأذونات.
  • 6: (110) أذونات القراءة والكتابة.
  • 7: (111) أذونات قراءة وكتابة وتنفيذ.

يتم تمثيل كل من الأذونات الثلاثة بواحدة من البتات في المكافئ الثنائي للرقم العشري. إذن 5 ، وهو 101 في النظام الثنائي ، يعني القراءة والتنفيذ. 2 ، وهو 010 في ثنائي ، يعني إذن الكتابة.

باستخدام هذه الطريقة ، يمكنك تعيين الأذونات التي ترغب في الحصول عليها ؛ لم تقم بإضافة هذه الأذونات إلى الأذونات الموجودة. لذلك إذا كانت أذونات القراءة والكتابة موجودة بالفعل ، فسيتعين عليك استخدام 7 (111) لإضافة أذونات التنفيذ. سيؤدي استخدام 1 (001) إلى إزالة أذونات القراءة والكتابة وإضافة إذن التنفيذ.

دعنا نضيف إذن القراءة مرة أخرى على ملفات ".page" لفئة المستخدمين الآخرين. يجب علينا أيضًا تعيين أذونات المستخدم والمجموعة ، لذلك نحتاج إلى تعيينها على ما هي عليه بالفعل. هؤلاء المستخدمون لديهم بالفعل أذونات القراءة والكتابة ، وهي 6 (110). نريد أن يكون "الآخرون" قد قرأوا وأذونات ، لذلك يجب ضبطهم على 4 (100).

سينجز الأمر التالي هذا:

chmod 664 * .page

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

ls -l

خيارات متقدمة

إذا قرأت صفحة الدليل ، chmodفسترى أن هناك بعض الخيارات المتقدمة المتعلقة بتات SETUID و SETGID ، والحذف المقيد أو بت "الثابت".

بالنسبة لـ 99٪ من الحالات التي ستحتاج إليها chmod، ستساعدك الخيارات الموضحة هنا.