Gateway
सुरक्षित फ़ाइल संचालन
OpenClaw सुरक्षा-संवेदनशील स्थानीय फ़ाइल संचालन के लिए @openclaw/fs-safe का उपयोग करता है: रूट-सीमित पठन/लेखन, परमाण्विक प्रतिस्थापन, आर्काइव निष्कर्षण, अस्थायी कार्यस्थान, JSON स्थिति और गुप्त फ़ाइलों का प्रबंधन।
यह अविश्वसनीय पथ नाम प्राप्त करने वाले विश्वसनीय OpenClaw कोड के लिए एक लाइब्रेरी सुरक्षा-सीमा है, सैंडबॉक्स नहीं। होस्ट फ़ाइल सिस्टम अनुमतियाँ, OS उपयोगकर्ता, कंटेनर और एजेंट/टूल नीति अब भी वास्तविक प्रभाव-क्षेत्र निर्धारित करते हैं।
डिफ़ॉल्ट: कोई Python सहायक नहीं
OpenClaw fs-safe POSIX Python सहायक को डिफ़ॉल्ट रूप से बंद रखता है:
- जब तक कोई ऑपरेटर इसे स्पष्ट रूप से चालू न करे, gateway को कोई स्थायी Python साइडकार शुरू नहीं करना चाहिए;
- अधिकांश इंस्टॉलेशन को पैरेंट डायरेक्टरी परिवर्तन के अतिरिक्त सुदृढ़ीकरण की आवश्यकता नहीं होती;
- Python को अक्षम रखने से डेस्कटॉप, Docker, CI और बंडल किए गए ऐप परिवेशों में रनटाइम व्यवहार पूर्वानुमेय रहता है।
OpenClaw केवल डिफ़ॉल्ट बदलता है। स्पष्ट सेटिंग हमेशा प्रभावी होती है:
# डिफ़ॉल्ट OpenClaw व्यवहार: केवल Node वाले fs-safe फ़ॉलबैक।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 को fs-safe की केवल Node वाली सुरक्षा-सीमाएँ मिलती हैं:
- सापेक्ष-पथ पलायन (
..), निरपेक्ष पथ और उन स्थानों पर पथ विभाजकों को अस्वीकार करता है जहाँ केवल साधारण नाम अनुमत हैं; - तदर्थ
path.resolve(...).startsWith(...)जाँच के बजाय विश्वसनीय रूट हैंडल के माध्यम से संचालन हल करता है; - उन API पर सिमलिंक और हार्डलिंक पैटर्न अस्वीकार करता है जिन्हें इस नीति की आवश्यकता होती है;
- जहाँ API फ़ाइल सामग्री लौटाता या ग्रहण करता है, वहाँ पहचान जाँच के साथ फ़ाइलें खोलता है;
- परमाण्विक सहोदर-अस्थायी फ़ाइल + नाम बदलने की प्रक्रिया द्वारा स्थिति/कॉन्फ़िगरेशन फ़ाइलें लिखता है;
- पठन और आर्काइव निष्कर्षण के लिए बाइट सीमाएँ लागू करता है;
- जहाँ API को आवश्यकता होती है, वहाँ गुप्त और स्थिति फ़ाइलों पर निजी फ़ाइल मोड लागू करता है।
यह OpenClaw के सामान्य खतरा मॉडल को कवर करता है: किसी एक विश्वसनीय ऑपरेटर सीमा के भीतर अविश्वसनीय मॉडल/Plugin/चैनल पथ इनपुट संभालने वाला विश्वसनीय gateway कोड।
Python क्या जोड़ता है
POSIX पर वैकल्पिक सहायक एक स्थायी Python प्रक्रिया चालू रखता है और पैरेंट डायरेक्टरी में बदलावों के लिए फ़ाइल डिस्क्रिप्टर-सापेक्ष फ़ाइल सिस्टम संचालन का उपयोग करता है: नाम बदलना, हटाना, डायरेक्टरी बनाना, स्थिति/सूची प्राप्त करना और कुछ लेखन पथ।
यह समान UID वाली उन रेस विंडो को सीमित करता है जिनमें कोई अन्य प्रक्रिया सत्यापन और बदलाव के बीच किसी पैरेंट डायरेक्टरी को बदल देती है—ऐसे होस्ट पर गहन सुरक्षा, जहाँ अविश्वसनीय स्थानीय प्रक्रियाएँ उन्हीं डायरेक्टरियों को बदल सकती हैं जिनमें OpenClaw काम करता है।
यदि आपके डिप्लॉयमेंट में यह जोखिम है और Python की उपलब्धता सुनिश्चित है, तो यह सेट करें:
OPENCLAW_FS_SAFE_PYTHON_MODE=requirePlugin और कोर के लिए मार्गदर्शन
- जब कोई पथ संदेश, मॉडल आउटपुट, कॉन्फ़िगरेशन या Plugin इनपुट से आता है, तो Plugin-संबंधी फ़ाइल पहुँच को कच्चे
fsके बजायopenclaw/plugin-sdk/*सहायकों के माध्यम से होना चाहिए। - कोर कोड को
src/infra/*के अंतर्गत fs-safe रैपरों का उपयोग करना चाहिए, ताकि OpenClaw की प्रक्रिया नीति एकसमान रूप से लागू हो। - आर्काइव निष्कर्षण में स्पष्ट आकार, प्रविष्टि-संख्या, लिंक और गंतव्य सीमाओं वाले fs-safe आर्काइव सहायकों का उपयोग होना चाहिए।
- गुप्त जानकारी के लिए OpenClaw गुप्त सहायक या fs-safe गुप्त/निजी-स्थिति सहायक उपयोग किए जाने चाहिए;
fs.writeFileके आसपास मोड जाँच स्वयं न बनाएँ। - शत्रुतापूर्ण स्थानीय उपयोगकर्ताओं से पृथक्करण के लिए केवल fs-safe पर निर्भर न रहें। अलग-अलग OS उपयोगकर्ताओं/होस्ट के अंतर्गत अलग-अलग gateway चलाएँ या सैंडबॉक्सिंग का उपयोग करें।
संबंधित: सुरक्षा, सैंडबॉक्सिंग, Exec अनुमोदन, गुप्त जानकारी।