Sandbox MacOS инструмент командной строки - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь собрать инструмент командной строки MacOS в песочнице на Mojave 10.14.6 в Xcode 11.2. Это просто простая целевая инструментальная печать Hello World на стандартный вывод.

Когда я добавлю возможность App Sandbox к цели, инструмент все равно будет построен, ноне в состоянии бежать. При запуске в Xcode, в отладчике я вижу ошибку в контексте кода, который пытается запустить песочницу:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Когда я запускаю инструмент из командной строки, я получаю

Illegal instruction: 4

Используя codesign -d --entitlements - ./HelloWorldCli для перечисления прав, я получаю

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.automation.apple-events</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.get-task-allow</key>
<true/>

Теперь вопрос: возможно ли создать инструмент командной строки MacOS в режиме песочницы? Это вообще имеет смысл? Если да, что я должен изменить, чтобы применить возможность App Sandbox ? Если нет, то почему существует выдающаяся опция для применения возможности App Sandbox к проекту инструмента командной строки? И какие варианты у меня есть тогда, чтобы добавить права, такие как keychain-access к инструменту командной строки в XCode?

...