ما هو الـ Sticky Bit في أنظمة يونكس؟ شرح مفصل

ما هو الـ Sticky Bit في أنظمة يونكس؟

في عالم الحوسبة، يُعرف الـ Sticky Bit بأنه علامة (Flag) خاصة بصلاحيات ملكية المستخدم، يمكن تعيينها للملفات والمجلدات في الأنظمة الشبيهة بيونكس (Unix-like systems). تختلف وظيفة هذه العلامة بناءً على ما إذا كانت مطبقة على ملف أو مجلد.

وظائف الـ Sticky Bit

1. بالنسبة للمجلدات (الاستخدام الحديث)

عندما يتم تعيين الـ Sticky Bit لمجلد ما، فإن نظام الملفات يتعامل مع الملفات الموجودة داخل هذا المجلد بطريقة خاصة. في هذه الحالة، لا يمكن لأي شخص إعادة تسمية أو حذف ملف إلا إذا كان:

  • مالك الملف نفسه.
  • مالك المجلد الذي يحتوي على الملف.
  • المستخدم الجذر (Root user).

بدون هذه العلامة، يمكن لأي مستخدم يمتلك صلاحيات الكتابة والتنفيذ للمجلد أن يحذف أو يعيد تسمية أي ملف بداخله، بغض النظر عن مالك الملف. يُستخدم هذا الإعداد عادةً في مجلد /tmp لمنع المستخدمين العاديين من حذف ملفات بعضهم البعض في مساحة تخزين مؤقتة مشتركة.

2. بالنسبة للملفات (الاستخدام القديم)

قديماً، كان الـ Sticky Bit يُستخدم مع الملفات التنفيذية. كان الهدف هو إبقاء البرنامج في الذاكرة الرئيسية (Main Memory) حتى بعد انتهاء الحاجة إليه، وذلك لتقليل عمليات التبديل (Swapping) التي تحدث عند إعادة تحميل البرنامج من وحدة التخزين الثانوية البطيئة. ومع ذلك، فقد أصبح هذا الإجراء قديماً وغير مستخدم حالياً بسبب تحسينات أنظمة التبديل والذاكرة المخبئية.

تاريخ الـ Sticky Bit

تم تقديم الـ Sticky Bit في الإصدار الخامس من يونكس عام 1974 للملفات التنفيذية الصرفة. كان يوجه نظام التشغيل للاحتفاظ بجزء النص من البرنامج في مساحة التبديل بعد خروج العملية. هذا كان يسرع من تنفيذ البرامج المتكررة مثل المحررات النصية. ومع ذلك، واجهت هذه الميزة مشكلة عند تحديث الملف التنفيذي (Patching)، حيث كان يتطلب الأمر إزالة الـ Sticky Bit، تشغيل البرنامج ثم الخروج منه لتفريغ الذاكرة المخبئية، ثم استبدال الملف وإعادة تعيين العلامة.

حالياً، لا تدعم معظم أنظمة لينكس هذا السلوك التقليدي للملفات، لأن لينكس يقوم بتخزين الملفات التنفيذية في الذاكرة المخبئية بنفس طريقة جميع الملفات الأخرى.

كيفية الاستخدام والتطبيق

يمكن لأي مستخدم إنشاء مجلد بـ Sticky Bit، بينما لا يمكن تعيين هذه العلامة على الملفات إلا بواسطة المستخدم الجذر (Superuser)، رغم أن مالك الملف يمكنه إزالتها.

أمثلة على استخدام أمر chmod

يمكن تعيين الـ Sticky Bit باستخدام الأمر chmod إما عن طريق الوضع الثماني (Octal mode) أو الرمز t. على سبيل المثال، لإضافة العلامة إلى المجلد /usr/local/tmp:

  • باستخدام الرمز: chmod +t /usr/local/tmp
  • باستخدام الوضع الثماني: chmod 1777 /usr/local/tmp

لإزالة العلامة، يمكن استخدام الأمر التالي:

  • chmod -t /usr/local/tmp أو chmod 0777 /usr/local/tmp

تمثيل الـ Sticky Bit في الصلاحيات

في تدوين صلاحيات نظام ملفات يونكس، يتم تمثيل الـ Sticky Bit بالحرف t (صغير) أو T (كبير) في الخانة الأخيرة من الصلاحيات:

  • t (صغير): يظهر عندما يكون بت التنفيذ (Execution bit) للمجموعة "الآخرين" (Others) مفعلاً.
  • T (كبير): يظهر عندما يكون بت التنفيذ للمجموعة "الآخرين" غير مفعل.

أسئلة شائعة

ما هو الفرق بين الـ Sticky Bit والمجلدات العادية؟

في المجلدات العادية التي تملك صلاحيات كتابة للجميع، يمكن لأي مستخدم حذف أي ملف. أما في المجلدات التي تحتوي على Sticky Bit، فلا يمكن حذف الملف إلا لمالكه أو لمالك المجلد أو للمستخدم الجذر.

كيف يمكنني تفعيل الـ Sticky Bit على مجلد معين؟

يمكنك استخدام الأمر 'chmod +t [اسم المجلد]' أو استخدام القيمة الرقمية '1777' في أمر chmod لتعيين صلاحيات كاملة مع الـ Sticky Bit.

هل لا يزال الـ Sticky Bit مفيداً للملفات التنفيذية؟

لا، هذه الوظيفة أصبحت قديمة (Obsolete) في معظم أنظمة التشغيل الحديثة مثل لينكس، حيث يتم التعامل مع التخزين المخبئي للملفات التنفيذية بشكل أكثر كفاءة تلقائياً.