¿Cómo hacer cumplir las reglas de sandbox para la aplicación en particular?

8

Escribí un archivo de especificación de sandbox (inspirado en archivos de /usr/share/sandbox y manuales como this ) y ahora puedo lanzar algunas aplicaciones en sandbox con sandbox-exec $path_to_rules /Applications/$appname.app/Content/... . Bien.

¿Hay alguna forma de hacer cumplir las reglas cuando la aplicación se inicia de manera regular ("Abrir con ...", etc.)? "

Pensé en reemplazar el binario dentro de .app con un script de envoltura, pero se sobrescribirá después de la actualización de la aplicación y tendré que restaurarlo cada vez.

    
pregunta Equidamoid 25.07.2014 - 12:30

1 respuesta

4

Sí, puedes cambiar el binario, o incluso cambiar el Info.plist, pero al cambiar el binario que hagas, tendrás que volver a hacerlo cada vez que se actualice la aplicación. No hay manera de hacer esto sin cambiar la aplicación de una manera que no se sobrescriba cuando se actualice.

Puede realizar cambios automáticamente con un agente de lanzamiento.
Guarde lo siguiente en ~/Library/LaunchAgents como com.yourname.youragent.plist , luego ejecute 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>

El script anterior observará el WatchPaths para cualquier modificación (en este caso, está observando el binario para una aplicación) y ejecutará cp para copiar su binario a la aplicación en / Aplicaciones.

    
respondido por el grg 25.07.2014 - 15:21

Lea otras preguntas en las etiquetas