الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

يستخدم OpenClaw @openclaw/fs-safe لعمليات الملفات المحلية الحساسة أمنيًا: عمليات القراءة/الكتابة المحدودة بالجذر، والاستبدال الذري، واستخراج الأرشيفات، ومساحات العمل المؤقتة، وحالة JSON، والتعامل مع ملفات الأسرار. الهدف هو توفير حاجز مكتبي ثابت لكود OpenClaw الموثوق الذي يتلقى أسماء مسارات غير موثوقة. هذا ليس صندوقًا رمليًا. ما تزال أذونات نظام ملفات المضيف، ومستخدمو نظام التشغيل، والحاويات، وسياسة الوكيل/الأداة تحدد نطاق التأثير الفعلي.

الافتراضي: لا يوجد مساعد Python

يعطّل OpenClaw مساعد Python الخاص بـ POSIX في fs-safe افتراضيًا. السبب:
  • يجب ألا يشغّل Gateway عملية Python جانبية مستمرة إلا إذا اختار المشغّل ذلك صراحة؛
  • كثير من عمليات التثبيت لا تحتاج إلى التقوية الإضافية لتعديلات الدليل الأب؛
  • إبقاء Python معطّلًا يجعل سلوك الحزمة/وقت التشغيل أكثر قابلية للتنبؤ عبر بيئات سطح المكتب، وDocker، وCI، والتطبيقات المضمّنة.
يغيّر OpenClaw الافتراضي فقط. إذا عيّنت وضعًا صراحة، فسيحترمه fs-safe:
# Default OpenClaw behavior: Node-only fs-safe fallbacks.
OPENCLAW_FS_SAFE_PYTHON_MODE=off

# Opt into the helper when available, falling back if unavailable.
OPENCLAW_FS_SAFE_PYTHON_MODE=auto

# Fail closed if the helper cannot start.
OPENCLAW_FS_SAFE_PYTHON_MODE=require

# Optional explicit interpreter.
OPENCLAW_FS_SAFE_PYTHON=/usr/bin/python3
تعمل أسماء fs-safe العامة أيضًا: FS_SAFE_PYTHON_MODE وFS_SAFE_PYTHON.

ما يبقى محميًا بدون Python

مع إيقاف المساعد، لا يزال OpenClaw يستخدم مسارات Node في fs-safe من أجل:
  • رفض الإفلاتات عبر المسارات النسبية مثل ..، والمسارات المطلقة، وفواصل المسارات حيث لا يُسمح إلا بالأسماء؛
  • حل العمليات عبر مقبض جذر موثوق بدلًا من فحوصات مخصصة مثل path.resolve(...).startsWith(...);
  • رفض أنماط الروابط الرمزية والروابط الصلبة في واجهات API التي تتطلب هذه السياسة؛
  • فتح الملفات مع فحوصات هوية عندما تُرجع واجهة API محتويات ملف أو تستهلكها؛
  • كتابات ذرية عبر ملفات مؤقتة شقيقة لملفات الحالة/الإعدادات؛
  • حدود البايت للقراءات واستخراج الأرشيفات؛
  • أوضاع خاصة للأسرار وملفات الحالة حيث تتطلبها واجهة API.
تغطي هذه الحمايات نموذج التهديد العادي في OpenClaw: كود Gateway موثوق يتعامل مع إدخال مسارات غير موثوق من النموذج/Plugin/القناة داخل حد مشغّل موثوق واحد.

ما يضيفه Python

على POSIX، يحتفظ المساعد الاختياري في fs-safe بعملية Python واحدة مستمرة، ويستخدم عمليات نظام ملفات نسبية إلى واصف ملف لتعديلات الدليل الأب مثل rename وremove وmkdir وstat/list وبعض مسارات الكتابة. يضيّق ذلك نوافذ السباق ضمن نفس UID حيث يمكن لعملية أخرى تبديل دليل أب بين التحقق والتعديل. إنه دفاع متعدد الطبقات للمضيفين حيث يمكن لعمليات محلية غير موثوقة تعديل الأدلة نفسها التي يعمل OpenClaw داخلها. إذا كان النشر لديك يتضمن هذا الخطر وكان وجود Python مضمونًا، فاستخدم:
OPENCLAW_FS_SAFE_PYTHON_MODE=require
استخدم require بدلًا من auto عندما يكون المساعد جزءًا من وضعك الأمني؛ إذ إن auto يعود عمدًا إلى سلوك Node فقط إذا لم يكن المساعد متاحًا.

إرشادات Plugin والجوهر

  • يجب أن يمر وصول الملفات الموجّه إلى Plugin عبر مساعدات openclaw/plugin-sdk/*، وليس fs الخام، عندما يأتي المسار من رسالة، أو مخرجات نموذج، أو إعدادات، أو إدخال Plugin.
  • يجب أن يستخدم كود الجوهر أغلفة fs-safe المحلية ضمن src/infra/* حتى تُطبّق سياسة عملية OpenClaw باتساق.
  • يجب أن يستخدم استخراج الأرشيفات مساعدات أرشيف fs-safe مع حدود صريحة للحجم، وعدد الإدخالات، والروابط، والوجهة.
  • يجب أن تستخدم الأسرار مساعدات أسرار OpenClaw أو مساعدات الأسرار/الحالة الخاصة في fs-safe؛ لا تنشئ فحوصات أوضاع يدوية حول fs.writeFile.
  • إذا كنت تحتاج إلى عزل عن مستخدم محلي عدائي، فلا تعتمد على fs-safe وحده. شغّل Gateways منفصلة تحت مستخدمي/مضيفي نظام تشغيل منفصلين أو استخدم العزل الرملي.
ذو صلة: الأمان، العزل الرملي، موافقات التنفيذ، الأسرار.