التحكم في من يمكنه الوصول إلى الملفات والبحث في الدلائل وتشغيل البرامج النصية باستخدام Linux chmod
يعدل هذا الأمر أذونات ملفات Linux، والتي تبدو معقدة للوهلة الأولى ولكنها في الواقع بسيطة للغاية بمجرد معرفة كيفية عملها.
chmod يعدل أذونات الملف
في Linux، يتم التحكم في من يمكنه القيام بما يتعلق بملف أو دليل من خلال مجموعات من الأذونات. هناك ثلاث مجموعات من الأذونات. مجموعة واحدة لمالك الملف، ومجموعة أخرى لأعضاء مجموعة الملف، ومجموعة أخيرة للجميع.
تتحكم الأذونات في الإجراءات التي يمكن تنفيذها على الملف أو الدليل. فهي تسمح أو تمنع قراءة الملف أو تعديله أو تنفيذه إذا كان نصًا برمجيًا أو برنامجًا. بالنسبة للدليل، تحكم الأذونات من يمكنه cd
إلى الدليل ومن يمكنه إنشاء أو تعديل الملفات داخل الدليل.
أنت تستخدم chmod
أمر إلى قم بتعيين كل من هذه الأذونات. ل انظر ما هي الأذونات التي تم تعيينها في ملف أو دليل، يمكننا استخدام ls
.
عرض أذونات الملفات وفهمها
يمكننا استخدام -l
(التنسيق الطويل) الخيار الذي يجب أن يكون ls
قائمة أذونات الملف للملفات والدلائل.
ls -l
في كل سطر، يحدد الحرف الأول نوع الإدخال الذي يتم إدراجه. إذا كان عبارة عن شرطة (-
) إنه ملف. إذا كان الحرف d
إنه دليل.
تمثل الأحرف التسعة التالية إعدادات المجموعات الثلاث من الأذونات.
- تُظهر الأحرف الثلاثة الأولى الأذونات للمستخدم الذي يملك الملف (أذونات المستخدم).
- تُظهر الأحرف الثلاثة الوسطى الأذونات لأعضاء مجموعة الملف (أذونات المجموعة).
- تُظهر الأحرف الثلاثة الأخيرة الأذونات لأي شخص لا يقع ضمن الفئتين الأوليين (الأذونات الأخرى).
هناك ثلاثة أحرف في كل مجموعة من الأذونات. والأحرف هي مؤشرات لوجود أو عدم وجود أحد الأذونات. وهي إما شرطة (-
) أو حرف. إذا كان الحرف عبارة عن شرطة، فهذا يعني أنه لم يتم منح الإذن. إذا كان الحرف عبارة عن r
, w
، أو x
، تم منح هذا الإذن.
الحروف تمثل:
- r: أذونات القراءة. يمكن فتح الملف وعرض محتوياته.
- w: أذونات الكتابة. يمكن تحرير الملف وتعديله وحذفه.
- x: تنفيذ الأذونات. إذا كان الملف عبارة عن نص برمجي أو برنامج، فيمكن تشغيله (تنفيذه).
على سبيل المثال:
---
يعني أنه لم يتم منح أي أذونات على الإطلاق.rwx
يعني أنه تم منح الأذونات الكاملة. مؤشرات القراءة والكتابة والتنفيذ موجودة جميعها.
في لقطة الشاشة الخاصة بنا، يبدأ السطر الأول بـ d
يشير هذا السطر إلى دليل يسمى “archive”. مالك الدليل هو “dave”، واسم المجموعة التي ينتمي إليها الدليل يسمى أيضًا “dave”.
الأحرف الثلاثة التالية هي أذونات المستخدم لهذا الدليل. وهي توضح أن المالك لديه أذونات كاملة. r
, w
، و x
جميع الأحرف موجودة. وهذا يعني أن المستخدم dave لديه أذونات القراءة والكتابة والتنفيذ لهذا الدليل.
المجموعة الثانية المكونة من ثلاثة أحرف هي أذونات المجموعة، وهي r-x
. تُظهر هذه أن أعضاء مجموعة dave لديهم أذونات القراءة والتنفيذ لهذا الدليل. وهذا يعني أنه يمكنهم سرد الملفات ومحتوياتها في الدليل، ويمكنهم cd
(تنفيذ) في هذا الدليل. ليس لديهم أذونات الكتابة، وبالتالي لا يمكنهم إنشاء أو تحرير أو حذف الملفات.
المجموعة النهائية من ثلاث شخصيات هي أيضًا r-x
تنطبق هذه الأذونات على الأشخاص الذين لا يخضعون لمجموعتي الأذونات الأوليين. يتمتع هؤلاء الأشخاص (المسمون “الآخرون”) بأذونات القراءة والتنفيذ في هذا الدليل.
لذا، باختصار، يتمتع أعضاء المجموعة وغيرهم بأذونات القراءة والتنفيذ. كما يتمتع المالك، وهو مستخدم يُدعى dave، بأذونات الكتابة أيضًا.
بالنسبة لجميع الملفات الأخرى (باستثناء ملف البرنامج النصي mh.sh)، يتمتع dave وأعضاء مجموعة dave بخصائص القراءة والكتابة على الملفات، بينما يتمتع الآخرون بأذونات القراءة فقط.
بالنسبة للحالة الخاصة لملف البرنامج النصي mh.sh، فإن المالك dave وأعضاء المجموعة لديهم أذونات القراءة والكتابة والتنفيذ، بينما يتمتع الآخرون بأذونات القراءة والتنفيذ فقط.
فهم بناء جملة الأذونات
للإستخدام chmod
لتعيين الأذونات، نحتاج إلى إخباره بما يلي:
- من: من نقوم بتعيين الأذونات له.
- ماذا: ما هو التغيير الذي نقوم به؟ هل نضيف الإذن أم نزيله؟
- أيهما: ما هي الأذونات التي نقوم بتعيينها؟
نحن نستخدم المؤشرات لتمثيل هذه القيم، ونشكل “عبارات أذونات” قصيرة مثل u+x
حيث أن “u” تعني “المستخدم” (من)، و”+” تعني إضافة (ماذا)، و”x” تعني إذن التنفيذ (الذي).
القيم “من” التي يمكننا استخدامها هي:
- u: المستخدم، أي مالك الملف.
- g: المجموعة، أي أعضاء المجموعة التي ينتمي إليها الملف.
- o: آخرون، أي الأشخاص الذين لا يحكمهم
u
وg
الأذونات. - أ: كل، أي كل ما سبق.
إذا لم يتم استخدام أيًا منها، chmod
يتصرف كما لو كان “a
“لقد تم استخدامها.”
القيم “ماذا” التي يمكننا استخدامها هي:
- -: علامة الطرح. تزيل الإذن.
- +: علامة زائد. تمنح الإذن. تتم إضافة الإذن إلى الأذونات الموجودة. إذا كنت تريد الحصول على هذا الإذن وهذه المجموعة فقط من الأذونات، فاستخدم
=
الخيار الموضح أدناه. - =: علامة يساوي. قم بتعيين إذن وإزالة الإذن الآخر.
القيم “التي” التي يمكننا استخدامها هي:
- ر: إذن القراءة.
- w: إذن الكتابة.
- x: إذن التنفيذ.
ضبط الأذونات وتعديلها
لنفترض أن لدينا ملفًا يتمتع الجميع بالصلاحيات الكاملة عليه.
ls -l new_file.txt
نريد أن يكون للمستخدم dave أذونات القراءة والكتابة وأن تكون للمجموعة والمستخدمين الآخرين أذونات القراءة فقط. يمكننا القيام بذلك باستخدام الأمر التالي:
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” في عبارة “a+x”. وكان الأمر التالي ليعمل بنفس الكفاءة.
chmod +x new_script.sh
تعيين الأذونات لملفات متعددة
يمكننا تطبيق الأذونات على ملفات متعددة في وقت واحد.
هذه هي الملفات الموجودة في الدليل الحالي:
ls -l
لنفترض أننا نريد إزالة أذونات القراءة للمستخدمين “الآخرين” من الملفات التي تحمل الامتداد “.page”. يمكننا القيام بذلك باستخدام الأمر التالي:
chmod o-r *.page
دعونا نتحقق من التأثير الذي كان لذلك:
ls -l
كما نرى، تمت إزالة إذن القراءة من ملفات “.page” لفئة “الآخرين” من المستخدمين. ولم تتأثر أي ملفات أخرى.
إذا أردنا تضمين الملفات في الدلائل الفرعية، كان بإمكاننا استخدام -R
خيار (متكرر).
chmod -R o-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
لأن الخيارات الموضحة هنا سوف تلبي احتياجاتك.