أدوات المطور · حاسبة Chmod
ما لا يستطيع chmod التعبير عنه: الإمكانيات والملفات غير القابلة للتغيير وMAC
· خلفية
chmod يونيكس التحكم في الوصول
بتات الوضع هي إحدى الطبقات المتعددة التي تقرر نجاح العملية. يقدم هذا المنشور الميزات الأخرى (إمكانيات الملفات، وعلامات الدردشة، وSELinux، وAppArmor) وكيفية التعرف على رفض كل منها.
لا يمكن للجذر كتابة ملف 644 - يقول الوضع نعم، ولا يغير chmod شيئًا، ويستمر الخطأ
قد يسمح الوضع بإجراء عملية بينما لا تزال العملية تفشل. تقوم الآلة الحاسبة بفك تشفير 644 كـ rw-r--r--، مما يعني أن المالك يمكنه قراءة ملف عادي وتعديله بينما يمكن للمجموعة والآخرين قراءته. هذا يستقر فقط على القطع التقليدية المتوفرة. فهو لا يثبت ملكية العملية أو هوية المسار أو عدم وجود طبقة تنفيذ أخرى.
تسمي المصادر العديد من عناصر التحكم غير النموذجية: القدرات، والسمات غير القابلة للتغيير، وسياسة الوصول الإلزامي، وعلامات التثبيت، ومساحات الأسماء، ومرشحات syscall، وقوائم التحكم في الوصول (ACL)، والملكية. إعادة الدخول إلى الوضع أو إنشاء أمر chmod آخر لا يكشف شيئًا عنهما. تحقق أولاً من التوافق الثماني والرمزي والمصفوفي؛ إذا استمر الفشل، فاجمع الأدلة من البيئة بدلاً من توسيع نطاق تخمينات chmod.
لا يزال من الممكن أن تفشل العملية المتوافقة مع الوضع بالنسبة للطبقات التي لا تستطيع هذه الأداة رؤيتها
نماذج الآلة الحاسبة لا يوجد ترتيب بين الضوابط الخارجية. نموذج البيانات بالكامل عبارة عن عدد صحيح من الرقم الثماني 0000 إلى 7777، موسعًا إلى المالك، والمجموعة، وغير ذلك، وsetuid، وsetgid، والقيم المنطقية اللاصقة. تستخدم التفسيرات تلك القيمة ونوع الهدف. لا يتم إدخال أي مسار قرار kernel أو تسلسل وحدة الأمان أو نتيجة syscall في الحساب.
هذا القيد يجعل الصفحة خطوة أولى خاضعة للرقابة. قم بتأكيد الوضع، وتمييز الاجتياز عن التنفيذ، ولاحظ أحرف البت الخاصة. تضيف المقالة 501 الملكية ويتم تنفيذ الدليل الأصلي كشيكات قريبة. وبعيدًا عن ذلك، لا توفر هذه المصادر أي تصنيف تشخيصي بين قوائم ACL، أو السياسة الإلزامية، أو عمليات التثبيت، أو السمات، أو مساحات الأسماء، أو القدرات، أو عوامل التصفية. الوضع المتوافق يضيق السؤال فقط.
لا تقوم الآلة الحاسبة بنمذجة الطلب بين طبقات التنفيذ الخارجية
قدرات الملف تقع خارج نطاق الأدلة المتاحة. لا يحتوي التطبيق على أسماء القدرات أو محلل البيانات أو أمر الفحص أو حساب تفاعلها مع setuid. يمكنه تشفير setuid كـ 4000 وشرح ملف عادي قابل للتنفيذ. لا ينبغي أن يصبح ذلك مقارنة بأنظمة الامتيازات الدقيقة التي لا يمثلها هذا المستودع ولا يوثقها.
ما تثبته الصفحة هو أمر ملموس. يصبح الوضع 4755 rwsr-xr-x، وأسماء الملخصات الخاصة به setuid، وتلحق المهام u+s. يستخدم الوضع 4644 الأحرف الكبيرة S لأن تنفيذ المالك غائب، مما يؤدي إلى الكشف عن مجموعة تسمى خاطئة دائمًا. تحدد الاختبارات حقائق الوضع تلك؛ يجب أن تحدد الأدوات الخارجية ما إذا كانت الإمكانيات موجودة، أو تسمح بالوصول، أو تقدم تصميمًا أفضل.
قدرات الملف خارج المجموعة المصدر
السمات غير القابلة للتغيير والإلحاق فقط غائبة أيضًا عن النموذج. الآلة الحاسبة لا تقرأ سمات نظام الملفات ولا تتعرف على أوامر تغييرها. تحتوي مصفوفتها على rwx للمالك والمجموعة وغيرهم، بالإضافة إلى ثلاث بتات خاصة. وبالتالي، لا يمكن لبت الكتابة المرئي أن يضمن كتابة ناجحة، ولا يمكن لتبديلها بشكل متكرر تشخيص سمة لم تلاحظها الصفحة مطلقًا.
حافظ على التمييز العملي. إذا تم عرض 644 بشكل صحيح، فإن كتابة المالك موجودة في الوضع التقليدي؛ وهذا دليل تمثيلي، وليس كتابة مكتملة. لا تفتح الصفحة مسار العرض المقتبس بأمان أو تقوم بتشغيل الأمر الذي تم إنشاؤه. عندما تصاحب البتات الكافية فشلًا حقيقيًا، قم بفحص الكائن والنظام الفعليين بدلاً من إسناد الحالة غير الملحوظة.
السمات غير القابلة للتغيير والإلحاق فقط موجودة خارج مجموعة المصدر
لا يتم تحليل سياقات التحكم في الوصول الإلزامية وملفات التعريف والسجلات هنا. تذكر المصادر SELinux وAppArmor فقط كأمثلة للقرارات التي لا يمكن للآلة الحاسبة ملاحظتها. وهي لا توفر أي بنية سياقية أو دلالات سياسة أو تنسيق سجل أو أمر تشخيصي. وبالتالي لا يمكن للوضع وحده أن ينسب الرفض إلى أي من النظامين؛ يجب أن يأتي الدليل من بيئة التنفيذ.
يعزز محدد الملف أو الدليل هذه الحدود. يقوم بتغيير الأفعال مثل التشغيل، والقائمة، والإنشاء، والحذف، والإدخال، والوصول، ولكنه لا يغير العدد الصحيح ولا يقرأ تسمية السياسة. يتشارك البرنامج والدليل 755 rwxr-xr-x أثناء وصف الإجراءات العادية المختلفة. ولا يتنبأ أي من التفسيرين بنتائج السياسة الإلزامية، لذا احتفظ بالوضع الذي تم التحقق منه واستشر سجلات النظام الأساسي.
تقع سياقات وسجلات التحكم في الوصول الإلزامية خارج المجموعة المصدر
لا يمكن للوضع المتوفر الكشف عن خيارات التثبيت. تقبل الآلة الحاسبة النص الثماني أو الرمزي ومسارًا اختياريًا يُستخدم فقط لعرض الأوامر. لا يفتح هذا المسار مطلقًا، أو يحدد تركيبه، أو يقرأ التكوين. تسرد المصادر سلوك القراءة فقط، وعدم التنفيذ، وعدم التنفيذ كمخاوف خارجية، ولكنها لا توفر تفاصيل النظام الأساسي لتشخيص تلك السياسات.
قد يشتمل النص الذي تم إنشاؤه على الوضع الثماني، والمسار المقتبس، وعلامة -R المعروضة، ولكن لا شيء يثبت أن نظام الملفات سيحترم الطلب. حتى قيمة البت الخاصة التي يتم إرسالها ذهابًا وإيابًا بشكل مثالي قد تكون غير فعالة بموجب القواعد غير المرئية. تعامل مع الأمر باعتباره قطعة أثرية للمراجعة، ثم تحقق من نظام الملفات الهدف قبل المطالبة بتغيير الأذونات أو أن يصبح التنفيذ ممكنًا.
لا يتم اكتشاف خيارات التثبيت من الوضع المتوفر
لا تظهر مساحات الأسماء ومرشحات syscall في أي مكان في نموذج الوضع. لا تحتوي المدخلات على هوية العملية أو سياق الحاوية أو قائمة syscall أو تكوين وقت التشغيل. لا يمكن للصفحة معرفة ما إذا كانت العملية ترى نفس المسار، أو تصل إلى الكائن المتوقع، أو تحتوي على مكالمة تمت تصفيتها. تختلف هذه الأسئلة بشكل أساسي عن إضافة 4، و2، و1 ضمن أذونات ثلاثية.
لا تستنتج آليات وقت التشغيل من التحويل الناجح. يغطي التحقق من الصحة الأرقام الثمانية المشوهة والطول الرمزي والأحرف في غير مكانها. النتيجة الصالحة تعني فقط أن النص يتم تعيينه إلى وضع قابل للتمثيل؛ لا يتحقق من صحة بيئة التنفيذ. نظرًا لأن نص الصدفة الذي تم إنشاؤه خامل، فإن تحليل مساحة الاسم والتصفية لا يزال يتطلب أدلة وقت التشغيل غائبة عن هذه المصادر.
لا يتم تمثيل مساحات الأسماء ومرشحات syscall
ابدأ بالوضع لأنه صغير الحجم وسهل التحكم فيه أو إخراجه. قم بترجمة القيمة، وفحص كل فئة، وتمييز الملف عن الدليل، واكشف عن أي بادئة بت خاصة. الاتفاق بين النظام الثماني والرمزي والمصفوفة والملخص والتفسير يجعل السؤال التقليدي مصاغًا بشكل جيد. وقد يكشف عن جزء مفقود أو زائد، وليس سلطة حصرية.
تواصل فقط مع الأدلة من النظام الحقيقي. لم يتم اكتشاف الملكية وقوائم ACL والسمات والسياسة الإلزامية والتركيبات والإمكانيات ومساحات الأسماء والمرشحات وقواعد التطبيق هنا. لا تقوم المعاينة بقراءة الملف أو تغييره. الاستنتاج المنضبط ضيق: قم بتسوية حسابات الوضع الموفر محليًا، ثم تحقق من التنفيذ الخارجي بدلاً من التدوير عبر قيم chmod الأوسع دون معرفة الرفض.