Wie finde ich heraus, welche Berechtigungen eine App hat?

28

Sandbox-Apps müssen ihre Berechtigungen deklarieren. Das nützt mir natürlich nichts, wenn ich nicht sagen kann, welche Ansprüche es deklariert. Ein Texteditor, der ohne mein Wissen über Berechtigungen für Core Location, Network Server und mein Adressbuch verfügt, könnte viel schlimmer sein als eine App ohne Sandbox.

Wie kann ich sehen, welche Berechtigungen eine App hat?

Ken
quelle

Antworten:

35

Nach einigem Suchen fand ich eine Befehlszeilenantwort:

codesign -d --entitlements :- /Applications/Whatever.app/

Dadurch wird eine XML-Liste mit folgenden Werten gedruckt:

<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>

Weitere Informationen finden Sie unter https://developer.apple.com/library/archive/qa/qa1798/_index.html#//apple_ref/doc/uid/DTS40014167-CH1-IOS_STEPS

Wenn jemand einen einfacheren / schöneren Weg kennt, würde ich ihn gerne hören.

Ken
quelle
In Mojave 10.14.4 gibt der obige Befehl zu Beginn zusätzliche 8 Byte aus:, fade7171000000fbwodurch das XML ungültig wird. Wie kann man das vermeiden oder abstreifen?
luckman212
codesign -d --entitlements - <filepath> 2>&1 | LANG=C LC_CTYPE=C sed 's/^.*\<\?xml/\<\?xml/g' | grep "<.*>" Vielleicht gibt es eine andere Lösung, aber so entferne ich diese Bytes. Aber ich denke nicht, dass es notwendig ist: Sie können codesigneine App erstellen, indem Sie auf eine Berechtigungs-XML verweisen, und macOS ignoriert diese Bytes trotzdem.
JayB
Fügen Sie einen Doppelpunkt hinzu, um diese Bytes wegzulassen:codesign -d --entitlements :- /Applications/Whatever.app/
artyom.stv