특정 앱에 샌드 박스 규칙을 적용하는 방법은 무엇입니까?


9

나는 (의 파일에서 영감을 샌드 박스 사양 파일 작성 /usr/share/sandbox하기 추천하고 매뉴얼 ) 지금은와 샌드 박스에서 일부 응용 프로그램을 실행할 수 있습니다 sandbox-exec $path_to_rules /Applications/$appname.app/Content/.... 좋아.

앱이 정기적으로 시작될 때 규칙을 적용 할 수있는 방법이 있습니까 (Finder의 "Open with ..."등)?

.app 내부의 바이너리를 래퍼 스크립트로 바꾸는 것에 대해 생각했지만 앱 업데이트 후에 덮어 쓰므로 매번 복원해야합니다.

답변:


5

예, 바이너리를 변경하거나 Info.plist를 변경할 수도 있지만 바이너리를 변경하는 것처럼 앱을 업데이트 할 때마다이 작업을 다시 수행해야합니다. 앱을 업데이트 할 때 덮어 쓰지 않는 방식으로 앱을 변경하지 않으면이 작업을 수행 할 수 없습니다.

실행 에이전트를 사용하여 자동으로 변경할 수 있습니다.
에 다음 저장을 ~/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

1
따라서 귀하의 예에서는 cp /Users/.../MyApp /Applications...MyApp 바이너리가 변경 될 때마다 실행 됩니까? 감사!
Equidamoid

@Equidamoid 그렇습니다!
grg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.