العربية

أدوات المطور · حاسبة Chmod

شرح الوضع الرمزي chmod: u+x، g-w، o=r وa+rX

· كيف يعمل

chmod يونيكس سير عمل المطور

تظهر المهام الرمزية كمخطط بت إذن خاص لنظام Unix
الرسم التوضيحي المتجه الأصلي ToolAcre

الشكل الرمزي لـ chmod عبارة عن قواعد نحوية صغيرة: من، العامل، أي بت. يقوم هذا المنشور بتفكيكها بحيث يصبح u+x وgo-rwx واضحين، ويظهر عندما يتفوق الرمز على الرقم الثماني.

نص نشر مليء بالأحرف — يعمل chmod u+x,go-w deploy.sh، ولكن لا يمكن لأحد في الفريق أن يقول ما الذي تغيره

يبدو الأمر مثل u+x كعرض رمزي للآلة الحاسبة، لكن النموذجين لهما وظائف مختلفة. يقبل الحقل الرمزي القابل للتحرير تسعة مواضع إذن، مسبوقة بشكل اختياري بحرف نوع ملف معروف. على النقيض من ذلك، توضح الوسيطة chmod التي تم إنشاؤها تعيينات كاملة باستخدام عبارات u= وg= وo=، لذا فهي تمثل وضعًا ثابتًا بدلاً من تحليل تغيير نسبي.

إدخال 750 يجعل التمييز ملموسًا. العرض هو rwxr-x---، بينما المهمة التي تم إنشاؤها هي u=rwx,g=rx,o=. كلاهما يصف نفس المالك والمجموعة والبتات الأخرى، ولكن يتم تنسيق الثانية فقط كوسيطة chmod. الصفحة لا تقوم بتشغيل هذا الأمر مطلقًا. إنه يعرض التمثيل بحيث يمكن مراجعة القيمة المقترحة قبل أي إجراء منفصل للصدفة.

تفصل الآلة الحاسبة عرض النمط ls عن قائمة المهام التي تنشئها

تظهر الأحرف u وg وo في المهمة التي تم إنشاؤها لأنها تشير إلى المالك والمجموعة وغيرهم. يقوم كل مخرج بتسمية الفئات الثلاث بشكل صريح، بما في ذلك عبارة فارغة عندما لا يكون لدى الفصل أذونات. الآلة الحاسبة لا تحليل حذفت-من النحوي أو الاختصار. يبدأ إدخاله من الوضع المكتمل، وليس من التعليمات التي تعتمد نتيجتها على هدف موجود.

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

تظهر الحروف في المهام التي تم إنشاؤها؛ تم حذف النسبي - لم يتم تحليل القواعد النحوية

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

تُظهر المقارنة ذات البت الواحد ما يمكن أن يثبته سير العمل المدعوم. الوضع 750 يعرض rwxr-x---; يؤدي تغيير رقم المجموعة إلى 7 إلى إنتاج rwxrwx --- وتغيير g=rx إلى g=rwx. تحدد الآلة الحاسبة الأوضاع المكتملة قبل وبعد. ولا يتم تقييم g+w مقابل ملف مباشر، لأنه لا يوجد وضع حالي أو مسار أو نظام ملفات أو تنفيذ أمر يشارك في التحويل.

عامل التشغيل الذي تم إنشاؤه هو =، بينما تظل قواعد الإدخال + و- خارج الأداة

يتعرف المحلل اللغوي على r وw في مواضعهما الثابتة، بالإضافة إلى x أو - في مواضع التنفيذ العادية. كما أنه يقبل s وS وt وT حيث تشترك البتات الخاصة في تلك المواضع. يختلف Capital X: فهو ينتمي إلى قواعد chmod النسبية وهو غير مدعوم هنا. يتم رفض توفير X بدلاً من تفسيره بصمت على أنه بت تنفيذ عادي.

يتم تنفيذ الحروف الخاصة الصغيرة والكبيرة عمدا. يستخدم Setuid وsetgid s عندما تكون بتة التنفيذ المطابقة موجودة وS عندما تكون غائبة؛ يستخدم Sticky t أو T بنفس القاعدة في موضع التنفيذ الآخر. يحافظ الصف الخاص والملخص المكون من أربعة أرقام على تلك البتات. لا يضيف أي من هذا دعمًا للاختيار المشروط للأحرف الكبيرة X عبر الملفات والأدلة.

يقبل المحلل اللغوي r وw وx وs وS وt وT؛ رأس المال X غير مدعوم

لم يتم تنفيذ تعبيرات نسخة الفئة مثل g=u. لا تقرأ الآلة الحاسبة أبدًا فئة مصدر من كائن موجود أو تطبق بتات فئة على أخرى. يتلقى الوضع الثماني أو النمط ls الكامل، ويحول تلك القيمة إلى قيم منطقية مسماة، ويصدر إشارات صريحة لكل فئة. يجب حساب أي نتيجة منسوخة في مكان آخر قبل أن تتمكن هذه الصفحة من فحصها.

لنفترض أن هناك خطوة خارجية تحدد أن المالك والمجموعة يجب أن يكون لديهما rwx بينما لا يملك الآخر أي شيء. يؤدي إدخال 770 إلى الحصول على rwxrwx--- وu=rwx,g=rwx,o=. وهذا يؤكد النتيجة الكاملة ولكنه لا يثبت كيفية استخلاصها. تظل الملكية أيضًا غير معروفة: يقوم المحول بتسمية الفئات دون تحديد المالك الحقيقي أو المجموعة أو العملية التي قد تواجه الهدف.

لم يتم تنفيذ نسخ الأذونات بين الفئات

يتم قبول الوضع 0750 بصفره البادئ ويتم تحليله بنفس قيمة 750. رقم المالك 7 ينشط القراءة والكتابة والتنفيذ؛ رقم المجموعة 5 ينشط القراءة والتنفيذ؛ الرقم الآخر 0 لا ينشط أي شيء. يصبح العرض المتزامن rwxr-x---، ويبقي الملخص المكون من أربعة أرقام دائمًا 0750 مرئيًا كقيمة مراجعة لا لبس فيها.

التعيين الرمزي الذي تم إنشاؤه لهذا الوضع الثابت هو u=rwx,g=rx,o=. تتوافق بنوده الثلاثة مباشرة مع أعمدة المصفوفة، بينما تستخدم معاينة الأمر الثماني 750 ما لم تتطلب البتة الخاصة رقمًا رابعًا. قد يتم اقتباس المسار المتوفر في المعاينة، ولكن لا يتم فتحه أبدًا. يتحقق المثال من التمثيل، وليس الملكية أو التفويض أو تغيير الإذن بنجاح.

مثال عملي: 0750 كوضع ثابت وقائمة المهام التي تم إنشاؤها

تظل التغييرات المستندة إلى المرجع ومعالجة الارتباط الرمزي وعمليات ACL خارج هذا المحول. لا يوجد إدخال ملف مرجعي، أو اجتياز المسار، أو نموذج إدخال ACL، أو استعلام نظام الملفات في الصفحة. يؤدي تحديد التكرار إلى إضافة علامة -R المعروضة فقط. وبالتالي، لا يمكن للأمر الذي تم إنشاؤه الإبلاغ عن الكائنات التي سيتم الوصول إليها أو ما إذا كانت طبقة أخرى للتحكم في الوصول تغير النتيجة الفعالة.

يوفر الإدخال غير الصالح فحصًا مفيدًا للحدود. يتم رفض خطاب الإذن في غير مكانه، أو علامة X غير المدعومة، أو العلامة الزائدة، أو الرقم الثماني المشوه بدلاً من إصلاحه. يؤدي تصحيح النص إلى شاشة عرض مدعومة مكونة من تسعة أحرف إلى إنشاء وضع وطرق عرض متزامنة. يثبت هذا القبول فقط أن السلسلة تعين البتات الاثني عشر المنفذة؛ ولا يتحقق من صحة ميزة chmod خارجية أو البيئة المستهدفة.

تظل عمليات المرجع والارتباط الرمزي وACL خارج هذا المحول

الفرق العملي هو بين عرض النمط ls والتخصيص الثابت الذي تم إنشاؤه، وليس بين الإدخال الرمزي كمدخل نسبي ومدخل ثماني كمدخل مطلق. يمثل كلا النموذجين القابلين للتحرير الوضع المكتمل. تقوم الآلة الحاسبة بتحويل أي منهما إلى نفس العدد الصحيح والمصفوفة والملخص والشرح والمعاينات، ثم تصدر عبارات صريحة u= وg= وo= لنموذج الأمر الرمزي.

استخدم طرق العرض المتزامنة هذه لاكتشاف الأخطاء الحسابية. إذا ظهرت 750 وrwxr-x--- وu=rwx,g=rx,o= معًا، يكون الوضع الثابت متسقًا داخليًا. توقف عند هذا الحد ما لم يقدم النظام الفعلي المزيد من الأدلة. لا تقوم الصفحة بتحليل عوامل التشغيل النسبية، أو المحددات المحذوفة، أو نسخ الفئة، أو الحرف X الكبير، ولا يمكنها تحديد ما إذا كان الوضع يعالج العملية الفاشلة الحقيقية.