विशेष एप्लिकेशन के लिए सैंडबॉक्स नियम कैसे लागू करें?


9

मैंने एक सैंडबॉक्स विनिर्देश फ़ाइल ( इस/usr/share/sandbox तरह से और मैनुअल से फ़ाइलों से प्रेरित) लिखी और अब मैं सैंडबॉक्स में कुछ ऐप लॉन्च कर सकता हूं । ठीक।sandbox-exec $path_to_rules /Applications/$appname.app/Content/...

क्या नियम को लागू करने का एक तरीका है जब एप्लिकेशन को नियमित रूप से शुरू किया जाता है (खोजक के "ओपन विथ ...", आदि)?

मैंने बाइनरी को बदलने के बारे में सोचा। रैपर स्क्रिप्ट के साथ। लेकिन इसे ऐप अपडेट के बाद अधिलेखित कर दिया जाएगा और मुझे हर बार पुनर्स्थापित करने की आवश्यकता होगी।

जवाबों:


5

हां, आप बाइनरी को बदल सकते हैं, या यहां तक ​​कि Info.plist को भी बदल सकते हैं, लेकिन आपके द्वारा बनाए गए बाइनरी को बदलने की तरह हर बार ऐप को अपडेट करने के बाद इसे फिर से करना होगा। इस तरह से ऐप को बदले बिना ऐसा करने का कोई तरीका नहीं है जब इसे अपडेट किया जाएगा तो इसे अधिलेखित नहीं किया जाएगा।

आप लॉन्च एजेंट के साथ स्वचालित रूप से अपने बदलाव कर सकते हैं।
निम्नलिखित को इस ~/Library/LaunchAgentsरूप में सहेजें com.yourname.youragent.plist, फिर चलाएं launchctl load ~/Library/LaunchAgents/com.yourname.youragent.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.yourname.youragent</string>
        <key>OnDemand</key>
        <true/>
        <key>Program</key>
        <string>cp</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/grgarside/test/MyApp</string>
            <string>/Applications/MyApp.app/Contents/MacOS/</string>
        </array>
        <key>WatchPaths</key>
        <array>
            <string>/Applications/MyApp.app/Contents/MacOS/MyApp</string>
        </array>
    </dict>
</plist>

उपरोक्त स्क्रिप्ट WatchPathsकिसी भी संशोधन के लिए देखेगा (इस मामले में, यह किसी ऐप के लिए बाइनरी देख रहा है) और cpएप्लिकेशन / एप्लिकेशन में आपके बाइनरी को कॉपी करने के लिए चलेगा ।


मैं ऑटो-पैचिंग इंस्टॉल किए गए ऐप्स के बारे में सोच रहा हूं। क्या हर बार कुछ /Applicationsबदले जाने पर मेरी स्क्रिप्ट को स्वचालित रूप से चलाने का एक तरीका है? और खुद को संशोधित करने के लिए किसी भी एप्लिकेशन को मना करने के लिए भी।
इक्वेडामॉइड जूल

@Equidamoid आप LaunchAgents का उपयोग कर सकते हैं; संपादित जवाब
GRG

1
इसलिए, आपके उदाहरण में यह cp /Users/.../MyApp /Applications...हर बार चलेगा जब MyApp बाइनरी को बदल दिया जाता है? धन्यवाद!
इक्वेडामॉयड

@Equidamoid हाँ, बिल्कुल!
GRG
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.