إدارة أذونات المجلد والملف بشكل تكراري باستخدام chmod

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

تابع القراءة لمعرفة المزيد!

المتطلبات الأساسية

لمتابعة الشرح، تحتاج إلى جهاز يعمل بنظام Linux ومجلد يحتوي على ملفات ومجلدات يمكنك ممارسة تغيير أذوناتها.

التعرف على مستخدمي Linux ومجموعاتهم

المستخدمون والمجموعات هما عنصران مهمان في نظام Linux، حيث يلعبون دورًا أساسيًا في إدارة الملفات والمجلدات بشكل آمن. المالك هو الشخص الذي يتم تعيين الملف أو المجلد له، وهو الشخص الذي أنشأه بشكل افتراضي. في Linux، تنتمي الملفات والمجلدات أيضًا إلى مجموعات. يتم تعيين المستخدمين والمجموعات عن طريق أمر “chown”.chown command.

في الصورة أدناه، يتم إظهار المحتوى المميز باللون الأخضر للمستخدم الذي يملك الملف أو المجلد، “mihail” في هذا المثال. ويتم إظهار المحتوى المميز باللون الأزرق للمجموعة التي ينتمي إليها الملف أو المجلد، والتي تملكها مجموعة “staff” في هذا المثال.

Listing the owner and group of a set of files and directories

فهم أذونات الملفات والمجلدات في Linux

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

  • القراءة (r أو 4): تشير إلى ما إذا كان يمكن للمستخدم أو المجموعة قراءة محتويات الملف أو الدليل. يتم منح إذن القراءة تلقائيًا لجميع الملفات والدلائل المُنشأة حديثًا لجميع الأطراف.
  • الكتابة (w أو 2): تشير إلى ما إذا كان يمكن للمستخدم أو المجموعة تحرير محتوى كائن. يُمنح هذا الإذن تلقائيًا فقط لمالك الملف أو الدليل.
  • التنفيذ (x أو 1): تشير إلى ما إذا كان يمكن للمستخدم أو المجموعة تنفيذ ملف أو تنفيذ الأوامر داخل دليل. يُمنح إذن التنفيذ تلقائيًا فقط للدلائل ولكن ليس للملفات.

إذا لم تمنح الإذن للمستخدم (u) أذونات التنفيذ لدليل، فلن يكون بإمكانه إظهار محتويات الدليل لأن المستخدم لن يتمكن من تنفيذ الأوامر داخل الدليل!

يُعرض مثال أدناه، ويوضح إخراج الأمر ls -l أنواع الأذونات المختلفة. تسبق تلك الأذونات التي يسبقها القيمة d، دليلاً على أنها دليل.

Listing file and directory permissions

لماذا يوجد ثلاث مجموعات من الأذونات لكل كائن على ما يبدو؟ يتم تحقيق التحكم الدقيق في الأذونات عن طريق تقسيم الأذونات إلى الأقسام (المُشار إليها باسم الأطراف لغرض هذا البرنامج التعليمي) المدرجة أدناه.

  • المستخدم (u): صاحب الملف أو الدليل، مميز باللون الأزرق.
  • المجموعة (g): أعضاء المجموعة التي ينتمي إليها ملف أو دليل، مميزين باللون الأخضر.
  • الآخرين (o): جميع المستخدمين والمجموعات الإضافية التي لم يتم تعيينها صراحة، مميزة باللون الأحمر.
Demonstrating the combined permissions for a file or directory

تغيير أذونات الملف عبر أمر chmod المتكرر

مع فهم الأذونات الصحيح لنظام Linux، يمكنك قراءة كيفية تغيير أذونات الملف. يتم تعديل الأذونات عبر أمر chmod المتكرر كما هو موضح في الأمثلة أدناه.

1. أولاً، قم بفحص الأذونات الحالية باستخدام الأمر ls -l. هنا، يتم عرض ملف my_dir/index.js.

Checking the current permission of index.js.

2. قم بتشغيل الأمر chmod، محددًا الطرف، a (الكل)، والأذونات، rwx، أو القراءة/الكتابة/التنفيذ. يتبع الأمر الكامل: chmod a=rwx index.js.

Changing index.js’ permissions.

3. كما يمكنك ملاحظة، لا يعيد تشغيل الأمر chmod المتكرر أي نتائج. للتحقق من تغيير الأذونات، قم بتشغيل الأمر ls -l مرة أخرى.

Verifying index.js permissions

تعيين أذونات الملف عبر القيم الرقمية

تذكر الأرقام المرتبطة بالأذونات مثل القراءة أو الكتابة؟ بدلاً من تحديد قيم الحروف، يمكنك تحديد الأذونات المحددة عبر رقم. من خلال إضافة القيم، يمكنك إنشاء إذن محدد مثل 6 وهو مزيج من أذونة الكتابة (2) والقراءة (4).

في المثال أدناه، قم بتعيين الأذونات لملف main.py عبر الأمر chmod 664 main.py. القيم الرقمية تفسر كما يلي.

  • المستخدم: قراءة وكتابة (6).
  • المجموعة: قراءة وكتابة (6).
  • الآخرين: قراءة (4).
Changing permissions for main.py.

بمجرد تغيير الأذونات، تحقق من الأذونات الجديدة لملف main.py بواسطة الأمر ls -l.

Verifying permissions for main.py

إزالة وإضافة أذونات الملف

الأوامر غير الرقمية التي قمت بتشغيلها حتى الآن تستخدم المعلمة التعيينية (=) مع chmod بشكل تكراري، لتعيين الأذونات الصريحة. بدلاً من ذلك، يمكنك إزالة (-) أو إضافة (+) أذونات إلى مجموعات الأذونات الحالية.

1. أولاً، قم بعرض الأذونات الحالية لملف README.md عبر الأمر ls -l README.md.

Checking README.md current permissions

2. بعد ذلك، قم بإضافة (+) أذونات التنفيذ (x) لفئة المستخدم (u)، مع إزالة (-) أذونات القراءة (r) من فئة الآخرين (o) لـ README.md، باستخدام الأمر التالي chmod u+x,o-r README.md. تفصل أذونات الأطراف المختلفة بفواصل (,).

Changing README.md permissions

3. قم بتشغيل الأمر ls -l README.md للتحقق من تعديل الأذونات.

Checking README.md new permissions

تغيير الأذونات للملفات والمجلدات بشكل متكرر

على الرغم من أنك تحقق تقدمًا، إلا أنك تعمل على ملف واحد في كل مرة. ماذا لو كان لديك عدد كبير من الملفات لتغيير الأذونات؟ حان الوقت لتطوير أدائك وتعلم كيفية تغيير الأذونات لعدة ملفات.

واحدة من الخيارات لتغيير عدة ملفات هي تشغيل أمر chmod مع خيار -R (تكراري، وليس الحرف الكبير). خيار التكراري سيغير الأذونات لجميع الملفات، بما في ذلك تلك التي تحت الدلائل الفرعية، داخل المسار المعطى.

1. اعتبر الأمر التالي، chmod -R a=r,u=rwx my_dir. معظم الخيارات التي رأيتها من قبل.

سيقوم هذا الأمر بتغيير الأذونات لجميع الملفات في الدليل، my_dir والدلائل الفرعية، عبر الخيار التكراري (-R). يتم تعيين القراءة (r) للجميع (a)، مع إذن مختلف للمستخدم الحالي (u) معين إلى الأذونات الكاملة (قراءة، كتابة، تنفيذ).

في اللقطة أدناه، ترى الأذونات الناتجة بعد تنفيذ الأمر، الذي لا يعطي أي ناتج.

Checking my_dir files new permissions

2. افترض أنك قمت بتشغيل الأمر، chmod -R a=rwx my_dir، على نفس الدليل كما في السابق، my_dir. مرة أخرى، أنت تقوم بتغيير جميع الملفات في my_dir، ودلائلها الفرعية، لتعيين جميع (a) الأذونات الكاملة (قراءة، كتابة، تنفيذ). إليك نتيجة الأمر، حيث أن أمر chmod التكراري لا يعرض ناتجًا.

Checking my_dir files new permissions to confirm every part now has every permission

3. كيف بالنسبة للأسلوب الرقمي؟ كما هو موضح أدناه، الطريقة التكرارية تعمل أيضًا مع أذونات رقمية، chmod -R 770 my_dir. هنا تعطي صلاحيات كاملة للمستخدم والمجموعة، لكن لا تعطي أي صلاحيات للطرف الآخر.

Recursively changing permissions with the numeric method

4. قم بتشغيل ls -l للتحقق من أن أذونات ملفات my_dir ومجلداتها مضبوطة بالطريقة الرقمية.

Checking the permissions set once again, this time with the numeric method

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

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

تعيين أذونات SUID (المستخدم + S)

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

على سبيل المثال، تخيل index.js. لإعطاء أذونة SUID الإضافية، قم بتشغيل chmod u+s index.js.

الآن، إذا قمت بتشغيل ls -l index.js، ستجد أن المستخدم لديه s في صلاحياتهم بدلاً من x.

Checking index.js new permissions

تعيين أذونات SGID (المجموعة + S)

المعروفة عادة باسم SGID، تتمتع هذه الأذونة الخاصة بوظيفتين:

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

قم بتطبيق ذلك على ملف index.php. لإضافة إذن SGID لهذا الملف، قم بتشغيل الأمر التالي: chmod g+s index.php.

الآن، إذا قمت بتشغيل ls -l index.php، ستجد أن المجموعة لديها s في الأذونات.

Checking index.php new permissions

انتقل إلى مجلد: my_dir. يمكنك إضافة إذن SGID لهذا المجلد باستخدام الأمر التالي: chmod g+s my_dir. ستكون ملكية المجموعة لأي ملفات يتم إنشاؤها في هذا المجلد الآن مضبوطة على مالك المجلد. يمكنك التحقق من الأذونات الجديدة للمجلد باستخدام ls -ld my_dir (يحدد المعلم “d” إخراج المجلدات فقط).

Checking my_dir new permissions

تغيير إذن البت اللزج

آخر إذن خاص معروف أيضًا بـ “إذن البت اللزج”. هذا الإذن لا يؤثر على الملفات الفردية. ولكن، على مستوى المجلد، يقيد حذف الملفات. يمكن لـ المالك فقط للملف إزالته من ذلك المجلد.

أضف البت اللزج إلى المجلد my_dir المألوف القديم. للقيام بذلك، قم بتشغيل الأمر على النحو التالي: chmod +t my_dir.

لاحظ أنه لإضافة البت اللزج، لا تشير إلى المجموعة الأخرى (o) قبل +t.

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

Checking my_dir new and special permissions

الختام

تهانينا! لقد تناولت العديد من المواضيع حول الـ chmod البارزة. أنت الآن جاهز للتعامل مع أي مشاكل إذن مزعجة تنشأ مع أداة الـ chmod العظيمة. حتى تعلمت كيفية استغلال قوة الخيار التكراري (-R)

كيف تنوي تطبيق وظائف الـ chmod المتعددة الاستخدامات لصالحك في المرة القادمة التي ستحتاج فيها إلى إدارة أذونات الملف أو الدليل؟

Source:
https://adamtheautomator.com/chmod-recursive/