9 votos

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

Escribí un archivo de especificación de la caja de arena (inspirado en los archivos de /usr/share/sandbox y manuales como este ) y ahora puedo lanzar alguna aplicación en sandbox con sandbox-exec $path_to_rules /Applications/$appname.app/Content/... . Bien.

¿Existe alguna forma de aplicar las reglas cuando la aplicación se inicia de forma habitual (el "Abrir con..." del Finder, etc.)?

He pensado en reemplazar el binario dentro de .app con el wrapper script pero se sobreescribirá tras la actualización de la app y tendré que restaurarlo cada vez.

5voto

siva Puntos 23

Sí, puedes cambiar el binario, o incluso cambiar el Info.plist, pero al igual que cambiar el binario tendrás que hacerlo de nuevo 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 sobrescribe cuando se actualiza.

Puede realizar los cambios automáticamente con un Agente de Lanzamiento.
Guarde lo siguiente en ~/Library/LaunchAgents como com.yourname.youragent.plist y, a continuación, 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 anterior script vigilará el WatchPaths para cualquier modificación (en este caso, está viendo el binario para una aplicación) y ejecutará cp para copiar su binario a la aplicación en /Applications.

0 votos

Estoy pensando en auto-Parcheando las aplicaciones instaladas. ¿Hay alguna forma de ejecutar mi ParcheandoscriptParcheando automáticamente cada vez que algo en /Applications se modifique? Y también para prohibir que cualquier aplicación se modifique a sí misma.

0 votos

@Equidamoid Puedes usar LaunchAgents; respuesta editada

1 votos

Por lo que, en su ejemplo, se ejecutará cp /Users/.../MyApp /Applications... cada vez que se cambia el binario de MyApp? Gracias.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X