Gateway
عملیات امن فایلها
OpenClaw برای عملیات حساس امنیتی روی فایلهای محلی از @openclaw/fs-safe استفاده میکند: خواندن/نوشتن محدود به ریشه، جایگزینی اتمی، استخراج بایگانی، فضاهای کاری موقت، وضعیت JSON و مدیریت فایلهای محرمانه.
این یک محافظ در سطح کتابخانه برای کد مورداعتماد OpenClaw است که نام مسیرهای نامطمئن را دریافت میکند، نه یک محیط ایزوله. مجوزهای سیستم فایل میزبان، کاربران سیستمعامل، کانتینرها و سیاست عامل/ابزار همچنان شعاع واقعی اثر را تعیین میکنند.
پیشفرض: بدون ابزار کمکی Python
OpenClaw ابزار کمکی POSIX مبتنی بر Python در fs-safe را بهطور پیشفرض خاموش تنظیم میکند:
- Gateway نباید یک فرایند جانبی پایدار Python را اجرا کند، مگر اینکه اپراتور آن را فعال کند؛
- بیشتر نصبها به سختسازی اضافی در برابر تغییر دایرکتوری والد نیاز ندارند؛
- غیرفعالکردن Python رفتار زمان اجرا را در محیطهای دسکتاپ، Docker، CI و برنامههای بستهبندیشده قابلپیشبینی نگه میدارد.
OpenClaw فقط مقدار پیشفرض را تغییر میدهد. تنظیم صریح همیشه اولویت دارد:
# رفتار پیشفرض OpenClaw: سازوکارهای جایگزین fs-safe فقط با Node.OPENCLAW_FS_SAFE_PYTHON_MODE=off # در صورت دسترسبودن ابزار کمکی از آن استفاده کن و در صورت نبود آن به سازوکار جایگزین برگرد.OPENCLAW_FS_SAFE_PYTHON_MODE=auto # اگر ابزار کمکی نتواند اجرا شود، با حالت بسته شکست بخور.OPENCLAW_FS_SAFE_PYTHON_MODE=require # مسیر صریح و اختیاری مفسر.OPENCLAW_FS_SAFE_PYTHON=/usr/bin/python3نامهای عمومی متغیرهای محیطی fs-safe نیز کار میکنند: FS_SAFE_PYTHON_MODE و FS_SAFE_PYTHON.
وقتی ابزار کمکی بخشی از وضعیت امنیتی شما است، از require (نه auto) استفاده کنید؛ اگر ابزار کمکی نتواند اجرا شود، auto بدون اطلاع به رفتار فقط مبتنی بر Node برمیگردد.
مواردی که بدون Python محافظتشده میمانند
با خاموشبودن ابزار کمکی، OpenClaw همچنان از محافظهای فقط مبتنی بر Node در fs-safe بهرهمند میشود:
- گریز از مسیر نسبی (
..)، مسیرهای مطلق و جداکنندههای مسیر را در جاهایی که فقط نام ساده مجاز است رد میکند؛ - عملیات را بهجای بررسیهای موردی
path.resolve(...).startsWith(...)از طریق یک دستگیره ریشه مورداعتماد انجام میدهد؛ - الگوهای پیوند نمادین و پیوند سخت را در APIهایی که چنین سیاستی را الزامی میکنند، نمیپذیرد؛
- فایلها را در جاهایی که API محتوای فایل را برمیگرداند یا مصرف میکند، همراه با بررسی هویت باز میکند؛
- فایلهای وضعیت/پیکربندی را با الگوی فایل موقت همسطح + تغییر نام اتمی مینویسد؛
- محدودیتهای بایتی را برای خواندن و استخراج بایگانی اعمال میکند؛
- در جاهایی که API الزام میکند، حالتهای دسترسی خصوصی فایل را برای فایلهای محرمانه و وضعیت اعمال میکند.
این موارد مدل تهدید عادی OpenClaw را پوشش میدهند: کد مورداعتماد Gateway که ورودی مسیر نامطمئن از مدل/Plugin/کانال را درون مرز یک اپراتور مورداعتماد مدیریت میکند.
مزایای افزوده Python
در POSIX، ابزار کمکی اختیاری یک فرایند پایدار Python را حفظ میکند و برای تغییرات دایرکتوری والد از عملیات سیستم فایل نسبت به توصیفگر فایل استفاده میکند: تغییر نام، حذف، ایجاد دایرکتوری، دریافت وضعیت/فهرست و برخی مسیرهای نوشتن.
این کار پنجرههای رقابت با UID یکسان را محدود میکند که در آن فرایندی دیگر، دایرکتوری والد را بین اعتبارسنجی و تغییر جابهجا میکند — دفاع در عمق روی میزبانهایی که فرایندهای محلی نامطمئن میتوانند همان دایرکتوریهایی را تغییر دهند که OpenClaw در آنها عملیات انجام میدهد.
اگر استقرار شما چنین خطری دارد و وجود Python تضمین شده است، این مقدار را تنظیم کنید:
OPENCLAW_FS_SAFE_PYTHON_MODE=requireراهنمای Plugin و هسته
- وقتی مسیری از پیام، خروجی مدل، پیکربندی یا ورودی Plugin میآید، دسترسی فایل برای Plugin باید بهجای
fsخام از ابزارهای کمکیopenclaw/plugin-sdk/*عبور کند. - کد هسته باید از پوششدهندههای fs-safe در
src/infra/*استفاده کند تا سیاست فرایند OpenClaw بهطور سازگار اعمال شود. - استخراج بایگانی باید با ابزارهای کمکی بایگانی fs-safe و محدودیتهای صریح برای اندازه، تعداد ورودیها، پیوندها و مقصد انجام شود.
- برای فایلهای محرمانه باید از ابزارهای کمکی اسرار OpenClaw یا ابزارهای کمکی اسرار/وضعیت خصوصی fs-safe استفاده شود؛ بررسیهای حالت دسترسی پیرامون
fs.writeFileرا دستی پیادهسازی نکنید. - برای جداسازی در برابر کاربران محلی مهاجم، تنها به fs-safe تکیه نکنید. Gatewayهای جداگانه را تحت کاربران یا میزبانهای جداگانه سیستمعامل اجرا کنید، یا از محیط ایزوله استفاده کنید.
مطالب مرتبط: امنیت، محیط ایزوله، تأییدهای اجرا، اسرار.