Como impor regras de sandbox para o aplicativo específico?

8

Eu escrevi um arquivo de especificação de sandbox (inspirado em arquivos /usr/share/sandboxe manuais como este ) e agora posso iniciar um aplicativo na sandbox sandbox-exec $path_to_rules /Applications/$appname.app/Content/.... Bem.

Existe uma maneira de aplicar as regras quando o aplicativo é iniciado de maneira regular ("Abrir com ..." do Finder, etc.)?

Pensei em substituir o binário dentro de .app por script de wrapper, mas ele será substituído após a atualização do aplicativo e precisarei restaurá-lo sempre.

Equidamóide
fonte

Respostas:

5

Sim, você pode alterar o binário ou até mesmo o Info.plist, mas, como alterar o binário feito, será necessário fazer isso novamente sempre que o aplicativo for atualizado. Não há como fazer isso sem alterar o aplicativo de uma maneira que não seja substituída quando for atualizada.

Você pode fazer suas alterações automaticamente com um Agente de Inicialização.
Salve o seguinte em ~/Library/LaunchAgentscomo e com.yourname.youragent.plist, em seguida, execute 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>

O script acima observará WatchPathstodas as modificações (nesse caso, ele está assistindo o binário de um aplicativo) e será executado cppara copiar seu binário no aplicativo em / Aplicativos.

grg
fonte
Estou pensando em aplicar aplicativos instalados automaticamente. Existe uma maneira de executar meu script automaticamente toda vez que algo /Applicationsé alterado? E também proibir qualquer aplicativo de se modificar.
Equidamóide
@Equidamoid Você pode usar o LaunchAgents; resposta editada
grg
11
então, no seu exemplo, ele será executado cp /Users/.../MyApp /Applications...toda vez que o binário do MyApp for alterado? Obrigado!
Equidamóide
@ Equidamoid Sim, exatamente!
grg