حاسبة صلاحيات chmod
تطويرالتحويل بين صيغة chmod الثمانية والرمزية ومصفوفة صلاحيات 3×3 — مباشر، مزامنة ثلاثية.
لا يتم جلب الروابط البعيدة؛ الصق JSON مباشرة.
| قراءة (4) | كتابة (2) | تنفيذ (1) | رقم | |
|---|---|---|---|---|
| المالك | | | | 0 |
| المجموعة | | | | 0 |
| أخرون | | | | 0 |
$ chmod 0000 file a= في هذه الصفحة
ما هو حاسبة chmod؟#
chmod أمر Unix الذي يضبط أذونات القراءة والكتابة والتنفيذ على ملفّ أودليل. ونموذج أذونه ثلاث مجموعات — المالك والمجموعة وغيرهم — كلٌّ بثلاث بتات تشغيل/إيقاف: قراءة (4) وكتابة (2) وتنفيذ (1)، التي تجمع إلى رقمٍ واحد من 0 إلى 7. رتّب الأرقام الثلاثة فتحصل على النمط الثُماني الذي تكتبه على سطر الأوامر: 755 يعني «المالك قراءة+كتابة+تنفيذ (7)، والمجموعة قراءة+تنفيذ (5)، وغيرهم قراءة+تنفيذ (5)». وهناك أيضًا رقم خاصّ رابع اختياري بادِئ لـ setuid وsetgid وبتّ لاصق.
سبب كون الحاسبة نافعة فعلًا هنا هو التكافؤ الثلاثي بين مصفوفة الأذونات (الخانات التي تُفعّلها في مدير ملفّات)، والثُماني (755)، والسلسلة الرمزية (rwxr-xr-x، التي يطبعها ls -l). معظم الناس يتقنون تمثيلًا واحدًا ويتعثّرون في الآخرَين. تُبقي هذه الصفحة الثلاثة متزامنة: غيّر أيًّا منها فيتحدّث الآخران فورًا، ويُجمَّع لك سطر أمر chmod المطابق.
يهمّ ذلك لأنّ بتّ أذونٍ خاطئ من أكثر الطرق شيوعًا لكسر نشر — دليل لا يستطيع خادم الويب قراءته، أمياكل خاصّ مفتوحٌ جدًّا فيرفضه SSH، أوملفّ تنفيذي فقد بتّ x. أن تقرأ 755 وتعرف أنّها تعني «مقروء عالميًّا، والمجموعة وغيرهم يستطيعان التنقّل لكن لا الكتابة» مهارةٌ تُدرِّبها هذه الأداة بإظهار الترجمة حيًّا.
كيفية الاستخدام#
- اعمل من أيّ تمثيل تملكه أصلًا:
- فعّل الخانات في مصفوفة الأذونات (3 صفوف: مالك/مجموعة/غيرهم، 3 أعمدة: قراءة/كتابة/تنفيذ). يُظهر عمود الرقم يمين كلّ صف قيمة 0–7 لتلك المجموعة وأنت تُفعّل.
- أواكتب قيمة ثُمانية (1–4 أرقام، تُقبل البادئة
0o، مثل755و0644و0o600). - أواكتب قيمة رمزية (
rwxr-xr-x، أوالشكل بفواصلrwx,r-x,r-x، أوبند chmod مثلu=rw,go=r).
- إن احتجت البتّات الخاصة، فعّل setuid أوsetgid أولاصق في طقم حقول البتّات الخاصة. وتشغل هذه خانةَ التنفيذ لمالكها في الشكل الرمزيّ:
s/Sلـ setuid/setgid، وt/Tللّاصق. - اقرأ بطاقة النتيجة:
- سطر الأوامر المُجمَّع
$ chmod <octal> file، جاهز للنسخ. - الشكل الرمزيّ، مثل
u=rwx,go=rx. - تفصيلٌ لكلّ مجموعة يُظهر رقم كلّ فئة وأذونات قراءتها/كتابتها/تنفيذها.
- سطر الأوامر المُجمَّع
- اضغط نسخ لأخذ سطر الأوامر.
- يُؤكّد سطر الحالة التحليل أويُبلّغ هل كان مُدخل ثُماني أورمزيّ غير صالح.
الميزات الرئيسية#
- تزامن ثلاثيّ حيّ. المصفوفة والثُماني والرمزيّ كلّها تُحدِّث بعضها، فتُدخل ما تعرف وتقرأ ما تحتاج.
- البتّات الخاصة بشكل صحيح. تُعالَج
setuidوsetgidوالبتّ اللاصق دون فقد، بما في ذلك تدوين خانة التنفيذ بأحرف صغيرة/كبيرة (sمقابلS، وtمقابلT) الذي يستخدمهls. - ثُماني مكوّن من 4 أرقام قياسيًّا. المخرَج دائمًا 4 أرقام (
0755و4755و0000)، مطابقًا لما يعرضهchmodوstat— لا شكل 3 أرقام ملتبس حين تُضبَط البتّات الخاصة. - رمزيّ بصيغة البند. يُصدر شكل الإسناد المطلق الذي يقبله الصدفة (
u=rw,go=rx)، دامجًا المجموعات المتجاورة المتطابقة للإيجاز، وملحقًا البتّات الخاصة كـu+s/g+s/+t. - تحليل مُدخل متساهل. يقبل
755و0644و0o600، والصورة من 9 محارف، والنسخة المفصولة بفواصل، وبنود chmod (u=rwx,go=rx، وu+rwx,go-w).
مثال عملي#
النمط الأشيع على دليل ويب مُنشور. اكتب 755 في حقل الثُماني. تُفعّل المصفوفة مالكًا قراءة+كتابة+تنفيذًا، ومجموعةً قراءة+تنفيذًا، وغيرهم قراءة+تنفيذًا؛ ويُظهر الحقل الرمزيّ rwxr-xr-x؛ وتقرأ بطاقة النتيجة:
$ chmod 755 file
Symbolic: u=rwx,go=rx
مع تفصيلٍ يُعدّد المالك 7 (قراءة وكتابة وتنفيذ)، والمجموعة 5 (قراءة وتنفيذ)، وغيرهم 5 (قراءة وتنفيذ). ذلك هو النمط القياسي للأدللة وسكربتات التنفيذ: يفعل المالك كلّ شيء، والجميع يقرأ ويتنفّق لكن لا يُعدّل.
قارنه الآن بـ 644 — النمط الآمن لملفّ مُقدَّم عاديّ. يصبح الرمزيّ rw-r--r--، والأمر $ chmod 644 file: المالك يقرأ ويكتب، والمجموعة وغيرهم يقرآن فقط، والأهمّ لا أحد لديه تنفيذ (فلا يُشغَّل ملفّ مُنزَّل عرضيًّا). لأصل SSH خاصّ، تكتب 600 (rw-------)، النمط الوحيد الذي يقبله ssh.
مثال ببتّ خاصّ: ثنائيّ يجب أن يعمل بامتيازات مالكه. اكتب 4755 فيصبح خانة الرمزيّ rwsr-xr-x — لاحظ s في موضع تنفيذ المالك، علامةً على setuid. سطر الأوامر $ chmod 4755 file، و4 البادئة هي رقم البادئة الخاصة (setuid = 4) التي لا يستطيع الشكل 3 أرقام التعبير عنها — وهو بالضبط لماذا تُصدر هذه الأداة دائمًا أربعة أرقام.
الأسئلة الشائعة#
ما الفرق بين 755 و0755؟#
على سطر الأوامر هما متكافئان — chmod 755 وchmod 0755 يُنتجان النمط نفسه، لأنّ 0 البادئة تعني ببساطة «لا بتّات خاصة». تعرض هذه الأداة دائمًا أربعة أرقام (0755) ليكون موضع البتّات الخاصة ظاهرًا ومتّسقًا مع كيفية إبلاغ stat وls عن الأنماط. وحين تنسخ سطر الأوامر، يُستخدم الشكل التقليديّ $ chmod 755 file لأنّه ما يكتبه الناس.
ماذا تعني s وS وt وT في المخرَج الرمزيّ؟#
إنها البتّات الخاصة تشغل خانة تنفيذ. s صغيرة (في موضع المالك أوالمجموعة) تعني setuid/setgid و التنفيذ مُفعّل؛ وS كبيرة تعني البتّ مضبوط لكن التنفيذ مُعطّل. وt صغيرة (في موضع غيرهم) تعني لاصق و تنفيذ مُفعّل؛ وT كبيرة تعني لاصق مضبوط وتنفيذ مُعطّل. واصطلاح «الكافئة تعني لا تنفيذ» هذا هو كيف يميّز ls بين الحالتَين دون عمود إضافيّ.
هل أستخدم الثُماني أمالرمزيّ حين أشغّل chmod فعلًا؟#
كلاهما يعمل، لكنّهما يتصرفان مختلفًا. الثُماني (chmod 755 file) يضبط النمط مطلقًا — كلّ بتّ مضبوط بالضبط على ما كتبته. والرمزيّ (chmod u+x file) يُحرّر النمط الحاليّ — يُغيّر البتّات التي تذكرها فقط ويترك الباقي. استخدم الثُماني حين تريد حالةً نهائية معلومة (سكربتات نشر، Dockerfiles)؛ واستخدم الرمزيّ حين تريد دفع إذنٍ واحد دون إزعاج البقية.
لماذا يرفض SSH أمياكل الخاصّ بخطأ «bad permissions»؟#
لأنّ ssh يوجب أن تكون الأمياكل الخاصة بالنمط 0600 (قراءة/كتابة للمالك فقط) ويرفض أيّ شيء أكثر انفتاحًا كغير آمن. فإن كان مفتاحك 0644 أوله كتابة مجموعة/غيرهم، يُعامله ssh كقابل للعبث ويرفض استخدامه. اضبطه بـ $ chmod 600 id_ed25519 فيختفي الخطأ. تستطيع التحقّق من النمط بالضبط هنا قبل تشغيل الأمر.