/Permissions & ACL – V

Permissions & ACL – V

الحمد لله الذى عظم قدره و منتهاه،و الصلاة و السلام على من أحبه و اصطفاه، سيد الخلق محمد بن عبد الله، عليه أتم السلام و أفضل الصلاة

كيف تحذف ملف هذا “المطب” الذى قد برتطم به البعض موقعا نفسه فى ويلات المشاكل بدون أن ينتبه 

يظن كثير من الناس أنه لو أعطى 000 لـ file معين، صار هذا الـ file غير قابل للحذف
و للأسف الواقع المرير لا يثبت صحة هذه المقولة 😀

ببساطة شديدة عملية الحذف ترتبط ارتباط وثيقة بـ dir الذى يحتويه هذا الـ file
بمعنى أنه لو صارت الصلاحية لهذا file مثلا 000 للـ others و فى نفس الوقت يمتلك others صلاحية w على dir الذى يحتوى الملف الأول، ثم حاول أحد others حذف هذا الملف ..فستجد المفاجأة بشكل التالى 😀

1

بالضبط كما لاحظتم .. تم حذف الملف بنجاح 😀

بمعنى أدق انك إذا أردت حذف ملف لابد أن تتحكم فى permission write الخاص بالـ dir فى المقام الأول
و permission x حتى يستطيع المستخدم يدخل dir نفسه فى المقام الثانى

تمام ؟! .. تمام 😀

[divider scroll_text=””]

نبدأ بموضوع المقالة النهاردة بإذن الله ” اللى فات ده كان تسخين بس ” 😀

لدينا جروب اسمها admins تحتوى على ahmad و dos

اذا افترضنا ان هذه الجروب هى Group Owner للـ dir الذى يدعى art13
و أعطيت لهذه الجروب صلاحية rwx على art13
هذا يعنى أن كلا من ahmad و dos يستطيعان الدخول و إنشاء الملفات داخل هذا dir و لكن ..؟!

طبقا لما تحدثنا عنه بالأعلى يستطيع كل من dos و ahmad أن يحذف ملفات كل منهما الاخر
بمعنى ..ملفات ahmad ممكن يحذفها dos و ملفات dos ممكن يحذفها ahmad

هذا لأن dir بما يحتويه من ملفات الجروب المسؤولة عنهم هى جروب admins

أولا دعنا نضيف ahmad و dos لجروب admins ” و نراجع بالمرة على اللى فات ” 😀

2

ثم نجعل admins هى الجروب المسؤولة عن art13 و نعطيها صلاحيات rwx و نعطى للـ other لاشيئ 😀

و بإستخدام SGID نجعل admins جروب مسؤولة عن أى file or dir يتم انشائه داخل art13

و نجعل المستخدم ahmad و dos ينشأن ملف خاص لكل واحد منهما كما يوضح الشكل الآتى

3

و نخلى كل يوزر يمسح ملف اليوزر الثانى 😀

4

و بالفعل كله اتمسح من غير أى مشاكل، و طبعاده مينفعش
المفروض كل واحد يخلى باله من .. ملفاته 😀

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

إليك الحل السحرى و الصلاحية الخاصة الثالثة و الأخيرة بإذن الله .. التى يطلق عليها اسم
Sticky Bit
و يرمز لها بالحرف t
و هى التى ستمكننى من جعل كل يوزر يحذف الملفات التى يمتلكها فقط ” تخلى كل واحد فى حاله ” 😀

كيف يمكن التعامل معها ؟!
ببساطة
chmod o+t /art13

و كما تعودنا على مكان s الخاصة بـ SUID أنها تشارك الخانة الخاصة بـ user تحديدا خاتة x
و كما تعودنا على  مكان s الخاصة بـ SGID أنها تشارك الخانة الخاصة بـ group تحديدا خانة x أيضا

سيكون نفس الكلام مع t و مكانها فى حالتنا و ستشارك الخانة الخاصة بـ others تحديدا خانة x أيضا

و كما تكلمنا على كيفية التفريق بين s و S سابقا
نفس الكلام سنكرره هنا ..أى أنك اذا وجدت T capital letter -كما فى حالتنا هذه- فهذا معناه أن dir يمتلك صلاحية Sticky Bit و other لا يمتكلون صلاحية x
و أنك اذا وجدتك t small letter فهذا معناه أن dir يمتلك صلاحية Sticky Bit و other  يمتكلون صلاحية x

So , in another words
T = Sticky Bit ONLY
t = T + x “for others

5

والان نعيد خطوة إنشاء الملفات  لكل يوزر على هذا الوضع الجديد

6

و نحاول الان أن نجعل كل يوزر يحذف ملف اليوزر الاخر

7

أسقط فى أيديهما  “معرفوش يعملوا حاجة ” 😀

و دى هى الفكرة الأساسية من استخدام Sticky Bit special permission على directories بصفة عامة

أرجو إن الفكرة تكون وضحت .. تحت أمركم فى أى استفسار

دمتم بود ^_^ فى أمان الله ^_^ و إلى اللقاء الأخير المرة القادمة بإذن الله مع ACL حتى نكون أغلقنا هذا الموضوع بأهم جوانبه بإذن الرحمن ^_^

VMware Certified Professional (VCP5-DCV) Red Hat Certified Architect (RHCA) vExpert 2015