أدوات المطور · حاسبة Chmod
البحث عن الملفات القابلة للكتابة عالميًا والثنائيات setuid باستخدام البحث -perm
· لماذا يهم
chmod يونيكس التحكم في الوصول
هناك نمطان من الأذونات يفسران العديد من الحوادث الحقيقية: الملفات التي يمكن لأي شخص تغييرها والبرامج التي تعمل كجذر. يوضح هذا المنشور كيفية العثور على كليهما باستخدام البحث -perm وما يجب فعله بشأنهما.
يطلب المراجع قائمة ليست لديك — ما هي الملفات التي يمكن لأي مستخدم تعديلها، وما هي البرامج التي ترفع الامتيازات عند تشغيلها
تبدأ مراجعة الأذونات غالبًا بأوضاع تم جمعها بالفعل في مكان آخر: ربما 0002، 4000، 2000، أو قيمة كاملة مثل 4755. يمكن للآلة الحاسبة فك تشفير هذه الأرقام إلى أذونات المالك والمجموعة والأذونات الأخرى، بما في ذلك البتات الثلاثة الخاصة. ولا يقوم بالبحث في الدلائل، أو فحص الثنائيات، أو إنتاج قائمة جرد للمسارات.
تعامل مع كل وضع متوفر على أنه وصف للبتات، وليس حكمًا على الملف. أدخله، وقارن الحقل الثماني مع العرض الرمزي ومصفوفة خانة الاختيار، ثم سجل ما تغير. تظل الملكية وACL الإدخالات والإمكانيات وهوية أي عملية تستخدم المسار حقائق يجب جمعها من البيئة الفعلية.
World-writable تعني أن فئة الآخرين لديها w - النمط الثماني 0002 ولماذا يجده -perm -0002 بغض النظر عن البتات الأخرى
القيمة 0002 تعزل بت الكتابة الأخرى. في التخطيط العادي المكون من ثلاث فئات، ينتمي الرقم الأخير إلى الجميع خارج فئات المالك والمجموعة، ويكون وزن مكون الكتابة الخاص به 2. وبالتالي فإن الوضع الكامل الذي يحتوي على تلك البتة سيظهر w في الفئة الأخرى، على الرغم من أن الآلة الحاسبة لا تحدد موقع مثل هذه الأوضاع بنفسها.
ما إذا كان تعبير البحث المعين يعني مطابقة تامة أو مطابقة كاملة أو أي بت ينتمي إلى وثائق البحث، وليس إلى هذا المحول. قم بتوفير الوضع الناتج بدلاً من ذلك. على سبيل المثال، 0666 يصبح rw-rw-rw-، بينما 0644 يصبح rw-r--r--؛ يكون الاختلاف مرئيًا في المجموعة ومواضع الكتابة الأخرى دون الإشارة إلى أن أيًا من الوضعين يناسب مسارًا محددًا.
0002 يعرض بت الكتابة الأخرى؛ العثور على دلالات مطابقة خارجية
يستخدم رقم البت الخاص الرائد 4 لـ setuid و2 لـ setgid. وبالتالي، يجمع 4755 setuid مع أذونات 755 العادية، بينما يجمع 2755 setgid مع نفس البتات اللاحقة. تعرض الآلة الحاسبة هذه الأقنعة بشكل منفصل وتضع أحرفها الرمزية في موضع تنفيذ المالك أو المجموعة عند تقديم الوضع الكامل.
القضية تحمل أدلة مفيدة. إذا كان setuid يرافق تنفيذ المالك، فسيعرض موضع تنفيذ المالك s؛ بدون تنفيذ يعرض S. يتبع Setgid نفس القاعدة في موضع المجموعة. تقوم هذه المخرجات بفك تشفير عدد صحيح مزود، لكنها لا تقوم بفحص البرنامج، أو تحديد مالكه، أو تشغيله، أو تحديد ما إذا كان هناك ما يبرر البتة الخاصة.
4000 و2000 فك تشفيرهما كـ setuid وsetgid بدون تدقيق الثنائيات
يجب أن تظل صيغة البحث عن الأذونات منفصلة عن حساب الأذونات. تقبل الآلة الحاسبة الوضع الرمزي الثماني أو تسعة أحرف وتقوم بإرجاع قيمة واحدة مكونة من اثني عشر بت. لا يحتوي على أي تمثيل لمشغل البحث، أو مسند المسار، أو قاعدة المطابقة، لذلك لا يمكن التمييز بين استعلام الوضع الدقيق واستعلام البتات المطلوبة بالكامل داخل هذه الواجهة.
قم بفك تشفير الوضع من كل نتيجة بحث خارجية بدلاً من لصق تعبير البحث. يتم تعيين الأرقام العادية الثلاثة للمالك والمجموعة وغيرهم، في حين يتم تعيين الأرقام البادئة الاختيارية إلى setuid وsetgid وsticky. يتحقق سير العمل هذا من البتات المبلغ عنها ولكنه يترك تغطية البحث ومطابقة الدلالات للأداة التي أنتجت القائمة.
تحتاج أوضاع البحث الدقيقة والكاملة وأي بت إلى وثائق البحث
لنفترض أن عملية تدقيق تم إجراؤها في تقارير أخرى 0666 و4755. يؤدي إدخال 0666 إلى الحصول على rw-rw-rw-، مما يجعل الكتابة الأخرى مرئية في الثلاثي الأخير. يؤدي إدخال 4755 إلى الحصول على rwsr-xr-x: لقد قام المالك بالقراءة والكتابة والتنفيذ، ويستبدل setuid حرف التنفيذ الخاص بالمالك بأحرف صغيرة s نظرًا لوجود بت التنفيذ هذا.
النتيجة الثانية مثل 4644 توضح سبب أهمية الشكل الرمزي. يعرض rwSr--r--، مع إظهار الحرف S الكبير setuid بينما يكون تنفيذ المالك غائبًا. يمكن للآلة الحاسبة أن تجعل هذا التناقض واضحًا. لا يزال يتعذر عليه تحديد المسار، أو تحديد من يملكه، أو فحص محتوياته، أو التوصية بإزالة البت.
مثال عملي: فك تشفير نتائج التدقيق المتوفرة دون مسح المسارات
لا تقم بإصلاح كل وضع غير عادي تلقائيًا. يعد الوضع مجرد مدخل واحد لقرار يعتمد أيضًا على الهدف والمالك والمجموعة والعملية المطلوبة. الصفحة لا تتلقى عمدا أيا من هذا السياق. معاينة الأمر الخاصة به عبارة عن نص خامل، وحتى المسار المقتبس بشكل صحيح لا يتم فتحه أو التحقق منه بواسطة المتصفح.
قبل تغيير الوضع المبلغ عنه، قارن بين القيم الحالية والمقترحة بمعدل بت واحد في كل مرة. تؤدي إزالة الكتابة الأخرى من 0666 إلى إنتاج 0664؛ تؤدي إزالة setuid من 4755 إلى إنتاج 0755. هذه الحقائق الحسابية قابلة للتكرار، ولكن ما إذا كان أي من التغييرين يحافظ على عبء العمل يتطلب أدلة محلية تتجاوز الآلة الحاسبة وتتجاوز الإرشادات التفصيلية للبت العادي للمادة 501.
تتطلب الاستثناءات والمعالجة الملكية المحلية وأدلة عبء العمل
العديد من أبعاد التدقيق ذات الصلة غائبة. لا يستعلم المسار عن ACL من الإدخالات، أو إمكانيات الملف، أو الملكية، أو مكونات المسار القابلة للكتابة، أو سلوك التحميل، أو السياسة الإلزامية. كما أنه لا يقوم بتنفيذ البحث أو فحص PATH أو اجتياز التخزين. وبالتالي فإن التحويل النظيف يشير فقط إلى أن الرقم المقدم والحروف المعروضة متفقان.
أبقِ هذه الحدود مرئية في أي تقرير. قم بتسجيل المسار وطريقة التجميع بجانب وضع فك التشفير، ثم التحقق من الهويات وآليات الوصول الإضافية باستخدام الأدوات الخارجية المناسبة. تعتبر الآلة الحاسبة ذات قيمة باعتبارها تدقيقًا للتدوين لأنها ترفض الأرقام الثمانية غير الصالحة وتكشف عن البتات الخاصة؛ إنه ليس ماسحًا ضوئيًا لنظام الملفات أو محرك إصلاح.
الخلاصة: تعرف على ملفاتك القابلة للكتابة والمميزة - واستخدم حاسبة Chmod لترجمة كل وضع مشبوه قبل تغييره
تدقيق إذن مفيد يفصل الاكتشاف عن التفسير. اسمح لعملية خارجية موثقة بجمع المسارات المرشحة، ثم استخدم الآلة الحاسبة لترجمة كل وضع تم إرجاعه إلى أذونات فئة صريحة. تحقق من رقم البت الخاص الاختياري بعناية مثل الثلاثة اللاحقة، نظرًا لأن 0755، و2755، و4755 تشترك في الأذونات العادية ولكنها تصف قيم مختلفة من اثني عشر بت.
اختتم باستنتاج ضيق: ما هو المالك والمجموعة والبتات الأخرى والخاصة التي يحتوي عليها الوضع المتوفر. لا تحول هذا الحساب إلى ادعاء غير مدعوم بشأن التعرض أو السياسة المطلوبة. تساعد الآلة الحاسبة المراجعين على قراءة الأوضاع المشبوهة بدقة؛ يجب أن يوفر النظام المباشر الملكية وعبء العمل وأدلة التنفيذ قبل أن يقوم أي شخص بتغييرها.