Làm cách nào để thực thi quy tắc hộp cát cho ứng dụng cụ thể?


8

Tôi đã viết một tệp đặc tả hộp cát (lấy cảm hứng từ các tệp từ /usr/share/sandboxvà hướng dẫn sử dụng như thế này ) và bây giờ tôi có thể khởi chạy một số ứng dụng trong hộp cát với sandbox-exec $path_to_rules /Applications/$appname.app/Content/.... Khỏe.

Có cách nào để thực thi các quy tắc khi ứng dụng được khởi động theo cách thông thường (Công cụ tìm kiếm "Mở bằng ...", v.v.) không?

Tôi đã nghĩ về việc thay thế nhị phân bên trong .app bằng tập lệnh bao bọc nhưng nó sẽ bị ghi đè sau khi cập nhật ứng dụng và tôi sẽ cần khôi phục nó mỗi lần.

Câu trả lời:


5

Có, bạn có thể thay đổi nhị phân hoặc thậm chí thay đổi Info.plist, nhưng giống như thay đổi nhị phân bạn thực hiện sẽ cần phải thực hiện lại điều này mỗi khi ứng dụng được cập nhật. Không có cách nào để làm điều này mà không thay đổi ứng dụng theo cách không bị ghi đè khi cập nhật.

Bạn có thể tự động thực hiện các thay đổi của mình với Launch Agent.
Save the sau trong ~/Library/LaunchAgentskhi com.yourname.youragent.plist, sau đó chạy 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>

Kịch bản trên sẽ xem WatchPathsbất kỳ sửa đổi nào (trong trường hợp này, nó đang xem tệp nhị phân cho một ứng dụng) và sẽ chạy cpđể sao chép tệp nhị phân của bạn vào ứng dụng trong / Ứng dụng.


Tôi đang suy nghĩ về việc tự động vá các ứng dụng đã cài đặt. Có cách nào để chạy tập lệnh của tôi tự động mỗi khi có gì đó /Applicationsthay đổi không? Và cũng để cấm bất kỳ ứng dụng để sửa đổi chính nó.
Equidamoid

@Equidamoid Bạn có thể sử dụng LaunchAgents; câu trả lời đã được chỉnh sửa
grg

1
Vì vậy, trong ví dụ của bạn, nó sẽ chạy cp /Users/.../MyApp /Applications...mỗi khi thay đổi nhị phân MyApp? Cảm ơn!
Equidamoid

@Equidamoid Vâng, chính xác!
grg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.