Bagaimana cara menegakkan aturan kotak pasir untuk aplikasi tertentu?

8

Saya menulis file spesifikasi sandbox (terinspirasi oleh file dari /usr/share/sandboxdan manual seperti ini ) dan sekarang saya dapat meluncurkan beberapa aplikasi di sandbox sandbox-exec $path_to_rules /Applications/$appname.app/Content/.... Baik.

Apakah ada cara untuk menegakkan aturan saat aplikasi dijalankan secara reguler ("Open with ...", dll dari Finder)?

Saya berpikir untuk mengganti biner di dalam .app dengan skrip wrapper tetapi akan ditimpa setelah pembaruan aplikasi dan saya harus mengembalikannya setiap waktu.

Equidamoid
sumber

Jawaban:

5

Ya, Anda dapat mengubah biner, atau bahkan mengubah Info.plist, tetapi seperti mengubah biner yang Anda buat perlu melakukan ini lagi setiap kali aplikasi diperbarui. Tidak ada cara untuk melakukan ini tanpa mengubah aplikasi dengan cara yang tidak akan ditimpa ketika itu diperbarui.

Anda dapat secara otomatis melakukan perubahan dengan Agen Peluncuran.
Simpan berikut ini ~/Library/LaunchAgentssebagai com.yourname.youragent.plist, lalu jalankan 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>

Script di atas akan menonton WatchPathsuntuk setiap modifikasi (dalam hal ini, ia mengawasi biner untuk suatu aplikasi) dan akan berjalan cpuntuk menyalin biner Anda ke aplikasi di / Aplikasi.

GRG
sumber
Saya sedang berpikir tentang menambal aplikasi yang diinstal secara otomatis. Apakah ada cara untuk menjalankan skrip saya secara otomatis setiap kali ada /Applicationsperubahan? Dan juga untuk melarang aplikasi apa pun untuk memodifikasi sendiri.
Equidamoid
@Equidamoid Anda dapat menggunakan LaunchAgents; jawaban yang diedit
grg
1
jadi, dalam contoh Anda ini akan berjalan cp /Users/.../MyApp /Applications...setiap kali biner MyApp diubah? Terima kasih!
Equidamoid
@Equidamoid Ya, persis!
GRG