أدوات المطور · حاسبة Chmod
إصلاح nginx 403 محظور: أذونات الملف والدليل المهمة
· لماذا يهم
chmod يونيكس التحكم في الوصول
غالبًا ما يكون 403 من nginx مشكلة في نظام الملفات، وليس مشكلة في التكوين. يوضح هذا المنشور كيفية التحقق من المستخدم الذي يعمل عليه nginx والبتات التي يحتاجها في كل دليل في المسار.
403 على موقع ثابت يعمل محليًا - جاءت الملفات من /home/deploy ويقول nginx إنه محظور لكل URL
قد يشتمل nginx 403 على بتات الوضع، لكن هذا المسار لا يمكنه تحديد سببه. لا تحتوي الآلة الحاسبة على تكامل nginx أو سجلات أو محلل تكوين أو بحث عن العمليات أو أداة السير على المسار. فهو يجيب على أسئلة أضيق: ما إذا كان قد تم تنفيذ فئة الدليل وما إذا كانت فئة الملف العادي قد تمت قراءتها، مما يساعد في تفسير الأدلة التي تم جمعها في مكان آخر.
ابدأ بالأوضاع الدقيقة التي تمت ملاحظتها في كل مكون من مكونات المسار بدلاً من افتراض الإعدادات الافتراضية. أدخل كل وضع واختر نوعه المستهدف. يكشف النص الرمزي ومربعات الاختيار والنثر عن أذونات الفئة ويؤكد التحويل، لكن لا يمكن إظهار أن nginx حاول الوصول أو الهوية التي استخدمها أو ما إذا كانت أذونات نظام الملفات قد أنتجت الاستجابة.
قد يشتمل 403 على بتات الوضع، ولكن لا يمكن لهذا المسار تحديد سببه
لا يمكن للآلة الحاسبة اكتشاف هوية عامل nginx. إنها نماذج المالك والمجموعة والفئات الأخرى، ولكن لا توجد أسماء مستخدمين أو عمليات أو عضويات. لذلك، لا يقول وضع مثل rwxr-xr-x شيئًا عما إذا كان العامل يمتلك الكائن، أو ينتمي إلى مجموعته، أو يقع ضمن مجموعة أخرى. ويجب أن يحدد التفتيش الخارجي هذا التصنيف.
يجب أن يسبق اكتشاف الهوية المطالبات المتعلقة بالبتات ذات الصلة. بمجرد أن يحدد الدليل الفئة القابلة للتطبيق، تظهر المصفوفة القراءة كـ 4، والكتابة كـ 2 والتنفيذ كـ 1. قبل ذلك، تحرير المجموعة أو غيرها هو التخمين. لا يقرأ المسار أي حالة عملية؛ فهو يترجم الأوضاع المتوفرة بدلاً من استنتاج بنية الخادم.
لا تكتشف الآلة الحاسبة هوية عامل nginx
افحص كل مكون دليل كوضع منفصل موفر. بالنسبة للأدلة، يسمح التنفيذ بالإدخال والوصول المستند إلى الاسم، وتسمح القراءة بالإدراج، وتسمح الكتابة بإنشاء الإدخالات وإعادة تسميتها وحذفها. يساعد التفسير الخاص بالهدف المراجعين على تحديد ما إذا كانت الفئة المنشأة خارجيًا قد تم تنفيذها على مكون معين دون المطالبة بفحص المسار نفسه.
لا ينتقل المتصفح من الجذر إلى جذر الويب. لا يمكنه تحديد موقع مكون الحظر أو تأكيد الوجود أو فحص قوائم ACL. قم بتوفير كل وضع دليل تمت ملاحظته بشكل منفصل، ثم تحقق من الكائن النهائي كملف عادي، حيث تتعلق القراءة بالمحتويات بدلاً من القوائم. وهذا يفسر الأدلة المجمعة بدلاً من استبدال فحص نظام الملفات.
تحتاج الملفات إلى r، وليس أكثر - لماذا 644 كافٍ للملفات الثابتة ولماذا 755 على الملفات ليس هو الحل
بالنسبة للملف الثابت، يعرض 644 rw-r--r--. يتلقى المالك القراءة والكتابة، بينما تتلقى المجموعة وغيرها القراءة؛ لا أحد يتلقى التنفيذ. يُظهر هذا التحويل أن قراءة الملف وتنفيذه عبارة عن بتات منفصلة. ليس لدى الصفحة أي أساس لتحديد ما إذا كان خادم معين يحتاج إلى التنفيذ، لأن سياسة الخادم غير موجودة.
حافظ على تفسيرات الملف والدليل متميزة. تنفيذ الدليل يعني الإدخال وإمكانية الوصول المستندة إلى الاسم، بينما يعني تنفيذ الملف العادي تشغيل البرنامج. وبالتالي فإن مربع الاختيار نفسه يحتوي على نثر خاص بالهدف. تؤدي مقارنة 644 مع 755 إلى توضيح البتات، ولكن لا يمكن تشخيص 403 أو وصف وضع عام بدون التكوين والهوية وACL وسياق السياسة.
مثال عملي: تتبع /home/deploy/site/index.html — namei -l على المسار والسطر ls -l الذي يكشف عن أداة الحظر
يبدأ المثال المدعوم بعد جمع أدلة المسار في مكان آخر. لنفترض أن مكونات الدليل هي 755 والملف النهائي هو 644. تعرض الآلة الحاسبة الأدلة كـ rwxr-xr-x، وتشرح تنفيذ المجموعة وغيرها كإدخال وإمكانية الوصول. فهو يعرض الملف كـ rw-r--r--، موضحًا المجموعة وغيرها من الوصول إلى المحتوى.
إذا كان المكون 750، فإن ثلاثيته الأخرى هي ---، بينما تظل المجموعة r-x. قد يكون هذا الاختلاف مهمًا، لكنه لا يثبت أن nginx يستخدم غيره. لا يمكن للمسار تشغيل namei أو ls، لذلك يجب أن يوفر الدليل الخارجي المسارات والأوضاع. ثم يقوم بعد ذلك بمزامنة كل تمثيل لتقليل أخطاء النسخ أثناء المراجعة.
مثال عملي: فحص الأوضاع المتوفرة لكل مكون من مكونات المسار
تظل قرارات الملكية خارج نطاق تحويل الوضع. لا تقرأ اللوحة أي مالك أو مجموعة ولا تقدم أي عملية تشون أو chgrp. ولا يمكنه الاختيار بين النشر أو الخدمة أو ملكية المجموعة المشتركة، ولا تقييم المحتوى المتحرك. تتطلب هذه القرارات عدم وجود أدلة على النظام وعبء العمل من المصادر؛ لا يمكن لأي وضع تم إنشاؤه أن يحل محل هذا السياق.
بمجرد حل الملكية في مكان آخر، قارن بين كيفية تقسيم الأوضاع للوصول. الوضع 750 يمنح المالك الأذونات الكاملة، والقراءة والتنفيذ الجماعي، ولا شيء للآخرين؛ 755 يضيف قراءة وتنفيذ أخرى. ويبقى هذا مشروطا بمعرفة طبقة العامل. لا تغير معاينة الأمر الخامل الملكية ولا تؤكد الوصول إلى الخادم.
تظل خيارات الملكية خارج نطاق تحويل الوضع
لا يتم هنا تشخيص التكوين واختيار الفهرس والتحكم الإلزامي في الوصول والسلوك المنبع. لا يوجد مصدر يقوم بتحميل تكوين nginx، أو التحقق من URI أو الفهرس، أو قراءة السجلات، أو الاتصال بالمنبع، أو مراقبة SELinux أو AppArmor. لذلك لا يمكن تحويل الوضع الموفر بشكل صحيح تحديد سبب إرجاع nginx 403؛ يجب أن يجيب دليل الخادم على هذا السؤال.
احتفظ بهذا التمييز عندما يبدو الوضع مريبًا. قد تظهر اللوحة أن فئة الدليل تفتقر إلى التنفيذ أو أن فئة الملف تفتقر إلى القراءة، ولكن الملاءمة تعتمد على الهوية ودليل المسار. لا يمكن للبتات المسموح بها أيضًا استبعاد الأسباب الأخرى. اذكر بالضبط ما يسمح به الوضع، ثم ارجع إلى التشخيصات الخاصة بالخادم.
لم يتم تشخيص التكوين والفهرس وMAC وأسباب المنبع
قد يعتمد الوصول إلى المسار على كل مكون، إلا أن الآلة الحاسبة ترى قيمة واحدة مقدمة في كل مرة. تكمن قوته في فك التشفير الدقيق: يظل النص الثماني والرمزي ومربعات الاختيار متزامنة، بينما يميز نثر الدليل بين القائمة والتعديل والإدخال. فهو يبسط المراجعة دون التظاهر باكتشاف المكونات أو العملية التي تحاول الوصول.
قم بتأسيس هوية الخادم وجمع أوضاع المسار خارج هذا المسار. قم بفك تشفير كل دليل كدليل والكائن النهائي كملف عادي، مع التركيز على الفئة التي تم التحقق منها خارجيًا. التحقق من التكوين وقوائم ACL والسياسة الإلزامية بشكل منفصل. تقوم الآلة الحاسبة بالتحقق من صحة العملية الحسابية، ولكن لا يمكنها تحديد سبب 403 أو التحقق من الإصلاح.