كيف يعمل
في يونكس ولينكس، لكل ملف أذونات لثلاث فئات: المستخدم المالك، والمجموعة، والبقية ("الآخرون"). ويمكن لكل فئة أن تملك ثلاثة أذونات: القراءة (r) والكتابة (w) والتنفيذ (x). وchmod هو الأمر الذي يعدّلها.
تُمثَّل الأذونات بطريقتين متكافئتين: عددية (ثمانية) ورمزية. في الثمانية تكون كل فئة رقمًا من 0 إلى 7، وهو مجموع 4 (قراءة) + 2 (كتابة) + 1 (تنفيذ). وفي الرمزية تُكتب بتسعة أحرف، مثل rwxr-xr-x.
يتحكم رقم رابع في البداية في البتات الخاصة: setuid (4) وsetgid (2) وsticky (1). تحوّل هذه الأداة في الاتجاهين: علّم الأذونات بالمربعات للحصول على الصيغة الثمانية والرمزية والأمر الجاهز للنسخ، أو الصق قيمة لرؤيتها منعكسة.
أمثلة
755rwxr-xr-xيستطيع المالك القراءة والكتابة والتنفيذ؛ والمجموعة والآخرون القراءة والتنفيذ فقط. نموذجي للأدلة والنصوص البرمجية.644rw-r--r--يقرأ المالك ويكتب؛ والمجموعة والآخرون يقرؤون فقط. شائع في ملفات البيانات والإعداد.600rw-------يستطيع المالك وحده القراءة والكتابة؛ ولا يملك أحد غيره الوصول. ويُوصى به للمفاتيح الخاصة.4755rwsr-xr-xيفعّل الرقم الأول 4 خاصية setuid: يُنفَّذ البرنامج بامتيازات مالك الملف.حالات الاستخدام
- منح إذن التنفيذ لنص برمجي (chmod 755) أو تقييد ملف يحتوي بيانات حساسة (chmod 600).
- الترجمة بين الرقم الثماني في درس تعليمي وما يعرضه ls -l، دون حساب البتات يدويًا.
- فهم الأذونات التي يمنحها أمر فعليًا قبل تنفيذه على خادم.
الأسئلة الشائعة
لماذا 755 ثلاثة أرقام فقط وأحيانًا تظهر أربعة؟
تمثّل الأرقام الثلاثة المستخدم والمجموعة والآخرين. أما الرقم الرابع، الاختياري وفي البداية، فيتحكم في البتات الخاصة (setuid وsetgid وsticky)؛ وإذا كان 0 يُحذَف، لذلك 0755 و755 متماثلان.
ماذا يعني الحرفان s وt في rwsr-xr-t؟
يحلّان محل x للإشارة إلى بت خاص. الحرف s في كتلة المستخدم هو setuid، وفي كتلة المجموعة هو setgid؛ والحرف t في كتلة الآخرين هو sticky bit. وبالأحرف الكبيرة (S/T) يكون البت مفعّلًا لكن دون إذن تنفيذ.
ما الفرق بين chmod 755 وchmod u=rwx,g=rx,o=rx؟
لا فرق: ينتجان الأذونات نفسها تمامًا. الصيغة الثمانية أكثر إحكامًا والرمزية أكثر قابلية للقراءة. ويقبل chmod أيضًا تغييرات نسبية مثل u+x (إضافة التنفيذ للمالك) دون المساس بالبقية.
ما الأذونات التي يجب أن يمتلكها مفتاح SSH خاص؟
600 (rw-------). يرفض SSH استخدام مفتاح خاص إذا كان بإمكان المجموعة أو الآخرين قراءته. ويستخدم مجلد ~/.ssh عادةً 700.