วิธีการบังคับใช้กฎแซนด์บ็อกซ์สำหรับแอพนั้น ๆ


9

ผมเขียนไฟล์ข้อกำหนด Sandbox (แรงบันดาลใจจากไฟล์จาก/usr/share/sandboxและคู่มือเช่นนี้ ) และตอนนี้ฉันสามารถเปิด app บางอย่างใน sandbox sandbox-exec $path_to_rules /Applications/$appname.app/Content/...โดย ละเอียด.

มีวิธีบังคับใช้กฎหรือไม่เมื่อแอปเริ่มต้นด้วยวิธีปกติ (Finder's "Open with ... " ฯลฯ )

ฉันคิดเกี่ยวกับการแทนที่ไบนารีภายใน. app ด้วยสคริปต์ wrapper แต่มันจะถูกเขียนทับหลังจากอัปเดตแอปและฉันจะต้องกู้คืนทุกครั้ง

คำตอบ:


5

ใช่คุณสามารถเปลี่ยนไบนารีหรือแม้แต่เปลี่ยน Info.plist แต่เช่นเดียวกับการเปลี่ยนไบนารีที่คุณทำคุณจะต้องทำสิ่งนี้อีกครั้งทุกครั้งที่มีการอัปเดตแอป ไม่มีวิธีทำเช่นนี้โดยไม่เปลี่ยนแอปในลักษณะที่จะไม่ถูกเขียนทับเมื่อมีการอัปเดต

คุณสามารถทำการเปลี่ยนแปลงของคุณโดยอัตโนมัติด้วย Launch Agent
บันทึกต่อไปนี้ใน~/Library/LaunchAgentsขณะที่วิ่งแล้วcom.yourname.youragent.plistlaunchctl 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


ฉันกำลังคิดเกี่ยวกับแอพที่ติดตั้งแพตช์อัตโนมัติ มีวิธีเรียกใช้สคริปต์ของฉันโดยอัตโนมัติทุกครั้งที่บางสิ่ง/Applicationsมีการเปลี่ยนแปลงหรือไม่? และยังห้ามมิให้แอพแก้ไขตัวเอง
Equidamoid

@Equidamoid คุณสามารถใช้ LaunchAgents; คำตอบที่แก้ไข
grg

1
ดังนั้นในตัวอย่างของคุณมันจะทำงานcp /Users/.../MyApp /Applications...ทุกครั้งที่ MyApp เปลี่ยนไบนารี ขอบคุณ!
Equidamoid

@Equidamoid ใช่แน่นอน!
grg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.