أدوات المطور · حاسبة Chmod
POSIX قوائم ACL مقابل بتات وضع chmod: عندما لا يكون rwx كافيًا
· خلفية
chmod يونيكس التحكم في الوصول
تغطي بتات الوضع مالكًا واحدًا ومجموعة واحدة وكل شخص آخر. يشرح هذا المنشور نموذج POSIX.1e ACL الذي يملأ الفجوة، وكيف يتفاعل مع chmod، وعندما تظل المجموعة المشتركة هي الإجابة الأبسط.
قارئ واحد أكثر مما يسمح به النموذج - ينتمي الملف إلى مجموعة التطبيقات، ويحتاج مدقق واحد من خارج المجموعة إلى قراءته
لا يحتوي نموذج الوضع العادي على فتحة هوية رابعة. ويمكنه وصف الأذونات لمالك واحد ومجموعة واحدة وكل الأشخاص الآخرين، ولكن لا يمكنه تسمية مدقق إضافي. تعكس الآلة الحاسبة هذه الحدود تمامًا: تعرض المصفوفة والعرض الرمزي والملخصات تلك الفئات الثلاثة بالإضافة إلى البتات الخاصة، وليس إدخالات الوصول لكل مستخدم أو لكل مجموعة.
إن توسيع الطبقة الأخرى لمجرد استيعاب قارئ إضافي واحد من شأنه أن يؤثر على كل هوية تقع ضمن تلك الفئة. يمكن للآلة الحاسبة إظهار هذا التغيير الحسابي، مثل الانتقال من 0640 إلى 0644، ولكن لا يمكنها تحديد ما إذا كان الوصول الأوسع مقبولًا أم لا. يتطلب الوصول المسمى أدلة وأدوات خارج هذا الطريق.
حد الثلاث فئات - لماذا يحتوي النموذج التقليدي على فتحة واحدة بالضبط لكل من المالك والمجموعة والآخرين
ينتمي كل رقم ثماني لاحق إلى فئة ثابتة واحدة. يتلقى المالك والمجموعة وآخرون إشارات القراءة والكتابة وتنفيذها، مما ينتج عنه تسعة أوضاع عادية. لا يمكن للنموذج إدراج ثلاثية أخرى لشخص مسمى. وبالتالي فإن التحويل الناجح يصف الوضع الأساسي بأمانة دون ذكر أي شيء عن الإدخالات الإضافية المرفقة في مكان آخر.
هذا القيد مهم عند قراءة المخرجات المقيدة على ما يبدو. تخبرك القيمة الرمزية لـ rw-r----- بالمالك الأساسي والمجموعة والبتات الأخرى التي يمثلها 0640. ولا يثبت أنه لا توجد هوية أخرى يمكنها قراءة الكائن، لأن الآلة الحاسبة لا تقوم بفحص بيانات ACL ولا تراقب أي طبقة تنفيذ خارجية.
POSIX.1e قوائم ACL - مستخدم مسمى وإدخالات مجموعة مسماة تمت إضافتها إلى نفس الملف، وتم ضبطها باستخدام setfacl وقراءتها باستخدام getfacl
لم يتم تنفيذ إدخالات المستخدم المحدد والمجموعة المسماة. لا يحتوي المصدر على محلل أو منسق لسجلات ACL، ولا قناع ACL، ولا عملية setfacl أو getfacl. قد تحفز هذه المفاهيم استخدام آلية خارجية للتحكم في الوصول، ولكن لا يمكن لهذه المقالة تحديد بناء جملة الأمر أو السلوك بما يتجاوز الاعتراف بالحدود الصريحة للآلة الحاسبة.
أبقِ الوضع الأساسي مرئيًا أثناء أداء هذا العمل المنفصل. أدخل القيمة الثمانية المبلغ عنها، وتحقق من المالك والمجموعة والثلاثيات الأخرى، وقم بتسجيل أي بت خاص. ثم استخدم وثائق نظام الملفات الموثوقة والأدوات الخارجية المناسبة للإدخالات المسماة. لا تؤدي معاينة chmod التي تم إنشاؤها بواسطة الآلة الحاسبة إلى إنشاء ACL أو فحصها أو الاحتفاظ بها.
تتطلب الإدخالات المسماة ACL أدوات خارجية لم يتم تنفيذها هنا
تعتمد العلاقة بين تغيير chmod وبتات فئة المجموعة وقناع ACL على السلوك الذي لم يتم تنفيذه هنا. تقوم الآلة الحاسبة ببساطة بتحويل وضع اثني عشر بت وتصدر مهمة أو وسيطة ثماني. لا تحتوي على حالة ACL التي يمكن من خلالها حساب الحقوق الفعلية، لذلك لا يمكنها التنبؤ بما إذا كان سيتم تحديد الحد الأقصى للإدخال المسمى أم لا.
تجنب وصف نتيجة ACL من إخراج الوضع وحده. يؤدي التغيير من 0640 إلى 0600 إلى إزالة بتات فئة المجموعة الثلاثة في هذا النموذج بشكل واضح؛ أي شيء يتعلق بالمستخدمين المحددين، أو المجموعات المسماة، أو الأقنعة يتطلب ACL الفعلي وقواعد النظام الأساسي. تحقق من تلك التي تحتوي على وثائق نظام الملفات قبل تطبيق الأمر المعروض على كائن يحمل ACL.
ACL يحتاج تفاعل القناع مع chmod إلى وثائق نظام الملفات
الوراثة الافتراضية ACL تقع أيضًا خارج المسار. لا تحتوي الصفحة على دليل إدخال ACL، ولا تحتوي على عملية إنشاء، ولا تحتوي على حقل umask. يؤدي تبديل المحدد الهدف من ملف إلى دليل إلى تغيير الأفعال الإنجليزية البسيطة المرتبطة بوضع ثابت؛ ولا يقوم بإنشاء ملف أو وراثة نموذج أو حساب أذونات كائن مستقبلي.
لنفس السبب، لا يمكن لوضع الدليل الحالي التنبؤ بكل وضع طفل جديد هنا. يمكن للآلة الحاسبة أن تشرح أن قراءة الدليل وكتابته وتنفيذه تتوافق مع القائمة وتعديل الإدخالات والوصول إلى المحتويات المسماة. ولا يمكنه دمج تلك البتات الأساسية مع الإدخالات الافتراضية أو طلبات الإنشاء أو أقنعة العملية التي لا يتلقاها أبدًا.
الافتراضي ACL الميراث وتفاعل umask خارج هذا المسار
فكر في الوضع الأساسي المتوفر 0640 لملف قد يحتاج إلى قارئ إضافي. تعرض الآلة الحاسبة rw-r-----: المالك يقرأ ويكتب، والقراءة الجماعية، ولا شيء آخر. وهذا هو البيان الكامل الذي تدعمه مدخلاته. ولا يحدد هوية المدقق ولا يقدم فئة رابعة لوضع تلك الهوية فيها.
احتفظ بسجل الوضع الأساسي هذا أثناء إجراء ACL في مكان آخر. إذا أبلغت العملية الخارجية لاحقًا عن وضع مختلف، فقم بفك تشفيره مرة أخرى ومقارنة كل فئة. لا تلصق أمر ACL في حقل الوضع أو تفترض أن معاينة الأمر تتضمن إدخالات مسماة. فهو يمثل دائمًا الوضع الرقمي المعروض حاليًا فقط.
مثال عملي: اجعل الوضع الأساسي قابلاً للقراءة أثناء عمل ACL في مكان آخر
لم يتم إنشاء عائلات ACL الأخرى وقواعد نظام الملفات البعيدة ودعم التحميل بواسطة هذه المصادر. لا تكتشف الآلة الحاسبة نوع التخزين أو الخيارات المثبتة أو نظام التشغيل أو توفر عمليات ACL. وبالتالي فإن عرض ACL المفقود يعد بمثابة حد تنفيذ، وليس دليلاً على أن الكائن الأساسي يفتقر إلى عناصر تحكم وصول أكثر ثراءً.
كما أن السياسة الإلزامية والقدرات والملكية وهوية العملية منفصلة أيضًا. حتى المعرفة الكاملة بالوضع الأساسي لا يمكنها أن تحل محل تلك المدخلات. قم بالإبلاغ عن تحويل الوضع كطبقة واحدة وقم بتسمية كل طبقة غير ملحوظة بشكل صريح. وهذا يمنع أن يتم الخلط بين عرض rwx النظيف وبين تحليل الترخيص الكامل.
لا يتم استنتاج نماذج ACL الأخرى ودعم التركيب
عندما تكون هناك ثلاث فئات كافية، تعطي الآلة الحاسبة حسابًا دقيقًا وعكسيًا لها. عندما لا تكون كذلك، اجعل هذا الحساب الأساسي قابلاً للقراءة بدلاً من فرض استثناء مسمى على الفئة الأخرى. يجب أن تتفق طرق العرض الثمانية والرمزية ومربعات الاختيار على نفس قيمة المالك والمجموعة وغيرها وقيمة البت الخاصة.
قاعدة الإيقاف بسيطة: استخدم هذا المسار للوضع الأساسي الحسابي والأدوات الخارجية الموثوقة لحالة ACL. لا تستنتج مطلقًا الإدخالات أو الأقنعة أو الميراث أو دعم نظام الملفات من rwx وحده. تجمع المراجعة الدقيقة بين مصادر الأدلة المنفصلة دون التظاهر بأن الآلة الحاسبة تنفذ هياكل التحكم في الوصول التي لا يحتويها كود المصدر الخاص بها.