Все известные предыдущие версии macOS работали с таким контекстом сценария:

osascript -e "/path/to/my/app.command" with administrator privileges

Теперь он просто молча терпит неудачу ... после запроса пароля администратора. Командный файл - это то, что изначально использовалось для запуска приложения, и у приложения есть кнопка для повторного запуска с привилегиями ... и предыдущее непривилегированное приложение закрывается.

Если я удалю "с правами администратора", он перезапускается. если это есть, это не так.

Если я попробую использовать:

/usr/bin/security execute-with-privileges /path/to/my/app.command

Он также не работает ... никогда даже не показывает запрос пароля.

Я пробовал также «sudo open /Applications/myApp.app», но это, конечно, не запускается с привилегиями.

Из оболочки я могу запустить sudo свое приложение, и это нормально, но я не могу ожидать, что средний пользователь сможет выполнять sudo в оболочке.

Как я уже сказал, это был хороший метод, который работал, вероятно, последние 6-8 лет ... но теперь не работает. У кого-нибудь есть какие-то уловки или способы обойти это?

В свое время ... и я понятия не имею, почему, я увидел всплывающее окно безопасности OSX, указывающее, что "java" не является доверенным приложением, и мои настройки разрешают только приложения из магазина приложений. Но это случилось всего один раз ... и это было странно. Я нажал ОК, оно исчезло. Я подумал, что, возможно, Java была помещена в карантин, поэтому я выполнил команду, чтобы очистить этот флаг:

xattr -rd com.apple.quarantine /path/to/the/binary/java

Но это не имело значения. Я уверен, что это новые функции безопасности в Catalina, которые усложняют задачу ... но я не могу понять, почему и как с ними работать. Это приложение java, которое запускается через файл app.command, который находит java на компьютере, а затем запускает его ... по умолчанию поиск локальной копии в собственной подпапке.

4
Ben 10 Окт 2019 в 11:32

1 ответ

Лучший ответ

Проверьте настройки песочницы вашего проекта. в файле прав App Sandbox должно быть установлено значение false. Функция песочницы не позволяет вашему приложению повышать привилегии в вашем приложении. ссылка: https://developer.apple.com/app-sandboxing/

1
Bing 9 Дек 2019 в 22:02