Моя команда пишет приложение для Mac OS, которое должно вызывать сценарий оболочки во внешнем каталоге.
Приложение отлично работает на Yosemite (10.10.3). Однако, если я запустил его на El Capitan (10.11.2), приложение получит такие ошибки из сценария:
/bin/bash: <path-to-script>: /bin/sh: bad interpreter: Operation not permitted
Я могу вызвать эту ошибку с помощью простого скрипта, подобного этому:
#!/bin/sh
echo "Hello World!"
Я не получаю сообщения об ошибке, если запускаю скрипты вручную из Терминала.
Приложение открывает каталог сценария с помощью средства выбора файлов. Я подтвердил, что приложение может читать другие файлы из этого каталога.
Изменение /bin/sh
на /bin/bash
или копию /bin/sh
на другом пути дает ту же ошибку с новым путем интерпретатора.
Сотрудник проверил эту проблему на машине El Capitan с отключенной защитой целостности системы, но получил ту же ошибку.
Я устанавливаю тестовое приложение из файла .pkg. Правами являются:
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
Добавление права com.apple.security.files.user-selected.executable
не имело значения
Если я попытаюсь запустить .app, созданный на промежуточном этапе сборки пакета, я смогу запустить сценарий без ошибок.
В приведенном ниже вопросе описывается аналогичная ошибка. Однако я проверил и приложение, и сценарий и обнаружил, что ни у одного из них не установлен атрибут com.apple.quarantine
.
Mac OS: / usr / bin / env: плохой интерпретатор : Операция запрещена
--- ОБНОВИТЬ ----
Мы добавили еще два в список прав доступа PKG:
<key>com.apple.security.scripting-targets</key>
<true/>
<key>com.apple.security.temporary-exception.apple-events</key>
<true/>
Мы попытались запустить простой файл .sh с помощью файла AppleScript (.scpt) (хранящегося в каталоге приложения), мы также подтвердили, что файл .sh и файл .scpt также не имеют расширенного атрибута, но у нас все еще есть эта ошибка .
Ниже показаны команды ls -@Oel
как для AppleScript, так и для файла сценария оболочки соответственно.
$ ls -@Oel TestMXMLCall.scpt
-rwxrwxrwx 1 root wheel - 2302 Jun 15 03:12 TestMXMLCall.scpt
$ ls -@Oel /usr/local/bin/mxmlc
-rwxr-xr-x 1 santanukarar staff - 2190 Jun 15 01:17 /usr/local/bin/mxmlc
/bin/sh /path/to/script
, запускается ли он с этим? - person anishsane   schedule 10.06.2016ls -l /bin/sh
? - person cdarke   schedule 10.06.2016-r-xr-xr-x 1 root wheel 632672 Dec 3 2015 /bin/sh
. Я планирую запустить это из нашего приложения, если вы думаете иначе. - person Santanu Karar   schedule 10.06.2016file /path/to/script
? - person anishsane   schedule 10.06.2016