如何为特定应用强制执行沙盒规则?


9

我写了一个沙箱规范文件(从文件的启发/usr/share/sandbox和手册像这样),现在我可以在沙箱中推出一些应用程序sandbox-exec $path_to_rules /Applications/$appname.app/Content/...。精细。

以常规方式启动应用程序(Finder的“使用...打开”等)时,是否可以执行规则?

我曾考虑过用包装脚本替换.app中的二进制文件,但是应用程序更新后它将被覆盖,我每次都需要恢复它。

Answers:


5

是的,您可以更改二进制文件,甚至更改Info.plist,但是就像更改二进制文件一样,每次更新应用程序时,都需要再次执行此操作。如果不更改应用程序,就无法做到这一点,而该方法不会在更新时被覆盖。

您可以使用启动代理自动进行更改。
将以下内容另存~/Library/LaunchAgentscom.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 2014年

@Equidamoid您可以使用LaunchAgents; 编辑答案
grg

1
因此,在您的示例中,它将在cp /Users/.../MyApp /Applications...MyApp二进制文件每次更改时运行?谢谢!
Equidamoid14年

@Equidamoid是的,完全是!
grg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.