特定のアプリにサンドボックスルールを適用する方法


8

サンドボックスの仕様ファイルを書いた /usr/share/sandbox やマニュアルのような この )そして今私はサンドボックスでいくつかのアプリを起動することができます sandbox-exec $path_to_rules /Applications/$appname.app/Content/...。いいですね。

アプリを通常の方法で起動したときに規則を強制する方法はありますか(Finderの "Open with ..."など)

.app内のバイナリをラッパースクリプトで置き換えることを考えましたが、アプリのアップデート後に上書きされるので、毎回復元する必要があります。

回答:


4

はい、バイナリを変更することも、Info.plistを変更することもできますが、バイナリを変更するのと同じように、アプリが更新されるたびにこれを行う必要があります。更新されたときに上書きされないようにアプリを変更せずにこれを行う方法はありません。

Launch Agentを使って自動的に変更を加えることができます。
以下を保存してください ~/Library/LaunchAgents として com.yourname.youragent.plistその後実行します 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>

上記のスクリプトは WatchPaths 変更があった場合(この場合は、アプリのバイナリを監視しています) cp バイナリを/ Applicationsのアプリにコピーします。


インストール済みのアプリに自動パッチを適用することを考えています。何かが入るたびに自動的に私のスクリプトを実行する方法はありますか /Applications 変更されますか?また、アプリが自分自身を変更することを禁止する
Equidamoid

@Equidamoid LaunchAgentsを使うことができます。編集された答え
grg

だから、あなたの例ではそれが実行されます cp /Users/.../MyApp /Applications... MyAppバイナリが変更されるたびに?ありがとうございます。
Equidamoid

@Equidamoidはい、その通りです。
grg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.