Come applicare le regole sandbox per l'app specifica?


8

Ho scritto un file di specifica sandbox (ispirato a file /usr/share/sandboxe manuali come questo ) e ora posso avviare alcune app in sandbox con sandbox-exec $path_to_rules /Applications/$appname.app/Content/.... Belle.

Esiste un modo per applicare le regole quando l'app viene avviata in modo regolare ("Apri con ..." del Finder, ecc.)?

Ho pensato di sostituire il file binario all'interno di .app con script wrapper ma verrà sovrascritto dopo l'aggiornamento dell'app e dovrò ripristinarlo ogni volta.

Risposte:


5

Sì, puoi cambiare il binario o persino cambiare il file Info.plist, ma come cambiare il binario che fai, dovrai farlo di nuovo ogni volta che l'app viene aggiornata. Non c'è modo di farlo senza cambiare l'app in un modo che non verrà sovrascritto quando viene aggiornato.

È possibile apportare automaticamente le modifiche con un Launch Agent.
Salvare quanto segue in ~/Library/LaunchAgentsas com.yourname.youragent.plist, quindi eseguire 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>

Lo script sopra controllerà le WatchPathseventuali modifiche (in questo caso, sta guardando il binario per un'app) e verrà eseguito cpper copiare il binario nell'app in / Applicazioni.


Sto pensando di applicare automaticamente le patch alle app installate. C'è un modo per eseguire automaticamente il mio script ogni volta che qualcosa /Applicationsviene cambiato? E anche per vietare a qualsiasi app di modificarsi.
Equidamoide,

@Equidamoid È possibile utilizzare LaunchAgents; risposta modificata
grg

1
quindi, nel tuo esempio verrà eseguito cp /Users/.../MyApp /Applications...ogni volta che il binario MyApp viene modificato? Grazie!
Equidamoide,

@Equidamoid Sì, esattamente!
grg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.