Apache HTTPD / أسس هوية الطلب والإعداد / الدرس 5
تفويض المجلد والتجاوزات الموزعة
افصل سياسة Apache ووصول القرص وOptions وتفويض .htaccess.
في هذه الصفحة
أهداف الدرس
- قراءة Require في سياقها المقصود.
- شرح قصور التجاوز والخيارات عن أذونات النظام.
قد يواجه الطلب فحوص وصول مستقلة
يقرر Apache السماح وفق المزود والحاويات، ويقرر النظام اجتياز وقراءة مستخدم الخادم وقد تضيف المنصة قيوداً. للتوثيق العام ومادة Parcel الخاصة عقدان مختلفان. لا تحدد 403 الطبقة. أثبت المضيف والمورد والأقسام والوحدة والخطأ قبل التغيير. يجب ألا يقود رفض واحد إلى توسيع كل الملفات أو إسقاط التفويض؛ فقد يكون المسار المختار خطأ أصلاً، أو يكون نظام أمان المنصة يرفض عملية صحيحة النطاق تحتاج مراجعة مالك المورد.
استخدم نموذج 2.4 المختار عمداً
توفر authz_core تركيب Require، وتحتاج مزودات الاسم والعنوان وحداتها. تختلف دلالة التوافق القديم فلا تخلطه عرضياً. تعني all granted سماح سياسة Apache للنطاق العام، لا وجود المسار أو قدرة القراءة. تحتاج الخاصة هوية أو شبكة مراجعة لا نسخ المثال العام. لا يمنح نجاح سياسة الطلب مستخدم الخادم أذونات نظام جديدة، كما لا تمنح قراءة الملف لكل العمليات حق إتاحته لكل عميل؛ يبقى كل قرار عند الطبقة التي يملكها.
اقرأ حد محتوى عام صريحاً
يفترض المقطع ملفات عامة افتراضية ودعم النواة والتفويض. تمنع AllowOverride None تجاوزات النطاق، وتلغي -Indexes الفهرسة حيث تنطبق. ليست وصفة تحصين عامة؛ يهم الموروث والفهرس والمعالج والدمج. لا يُحمّل أو يغير ملفاً أو إذناً. راجع المالك ومن يعدل الإعداد والشجرة. تعطيل القائمة لا يخفي تلقائياً كل اسم معروف ولا يلغي ملف فهرس مضبوطاً، ويجب أن يوضح التحقق أي نوع طلب فُحص بدلاً من استنتاج سرية كل المحتوى من رد واحد.
<Directory "/lab/parcel/public">
AllowOverride None
Options -Indexes
Require all granted
</Directory>
لا يُنشأ المسار أو يُقرأ. لا يمنع تعطيل القائمة ملفاً معروفاً أو DirectoryIndex ولا يفوض أشقاء خاصين.
يفوض الإعداد الموزع جزءاً من السياسة
قد تغير .htaccess المدعوم وفق AllowOverride وضوابطه ولا تُقرأ تحت None هنا. قد يوضح المركزي السياسة ويقلل اكتشافها لكل طلب عند سيطرة المالك، وللاستضافة المفوضة حاجة مختلفة. تهم الفئات والتوجيهات المسموحة. لا تنصح بإنشاء الملف علاجاً عاماً دون إثبات قراءته وسلطة الكاتب. ينبغي أن يعرف المستضيف أي تغييرات فوضها، لأن السماح بتوجيه يفعل معالجاً أو يعيد كتابة مسار قد يكون أوسع أثراً من مجرد تعديل شكل صفحة ثابتة.
اشترط دليلي السياسة والملف
يجمع النموذج الكامل سماح Apache وقدرة العملية المطلوبة ويرفض غياب أحدهما. لا يقيم Require أو POSIX أو ACL أو label. قد تضيف الحقيقة فحوصاً ومعالجاً مختلفاً. يحفظ الفصل أن إصلاح طبقة لا يضمن الأخرى. ضيق التصحيح ونسق العمل الفعلي مع المالك خارج الدورة. لا تعني true في النموذج أن ملفاً صار عاماً أو أن شخصاً غيّر أذوناته؛ هي نتيجة افتراضين معلنين، يحتاج كل منهما أدلة مستقلة في البيئة التي يراد إصلاحها.
def readable(policy_allows, required_file_access):
return policy_allows and required_file_access
print(readable(True, False))
print(readable(False, True))
print(readable(True, True))
False
False
True
يقيم قيماً فقط ولا يفحص أو يعدل هوية أو مجلداً أو إذناً أو ACL أو label أو .htaccess أو خادماً.
الأخطاء الشائعة وإصلاحها
يُتوقع أن تصلح all granted رفض القرص.
- لماذا يحدث؟
- اختلطت سياسة الطلب بقدرة النظام.
- كيف تصلحه؟
- حدد عملية الملف وعقد الوصول المراجع مع المالك.
- كيف تتجنب تكراره؟
- افصل دليلي التفويض والقرص.
تُعد -Indexes حماية لكل خاص.
- لماذا يحدث؟
- اختلطت القائمة بالملف المعروف.
- كيف تصلحه؟
- ضع سياسة ومكان محتوى مناسبين للخاص.
- كيف تتجنب تكراره؟
- راجع المباشر والفهرس كحالتين.
يُتوقع أثر .htaccess مع منع التجاوز.
- لماذا يحدث؟
- افتُرض اكتشاف التفويض.
- كيف تصلحه؟
- راجع AllowOverride والنطاق المدعومين.
- كيف تتجنب تكراره؟
- وثق موضع سلطة السياسة.
اختبر فهمك
1. عُطلت القائمة وعُرف /guide.html. هل يُرفض حتماً؟
اعرض الحل المشروح
لا. يضبط Indexes القائمة لا كل ملف مباشر. تحدد القواعد والقرص والربط والمعالج الرد. يحتاج الخاص سياسة لا غموض اسم.
2. سمحت السياسة وتعذر اجتياز أب. ماذا تثبت المراجعة؟
اعرض الحل المشروح
حدد المسار والعمليات المطلوبة والمنصة والملكية، ونسق تصحيحاً ضيقاً مشروعاً. لا تمنح كتابة واسعة أو تغير مجلدات غير مرتبطة لإنجاح طلب واحد.
أهم ما تعلمته
- افصل التفويض والملف والقائمة والتفويض الموزع.
- حدد الحد المرفوض قبل تغيير السلطة.