【问题标题】:OSX Catalina broke osascript launch with administrator priviledgesOSX Catalina 以管理员权限破坏了 osascript 启动
【发布时间】:2019-10-10 08:32:59
【问题描述】:

所有已知的先前 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”,但这当然不会以特权启动。

我可以从 shell sudo 启动我的应用程序,这很好,但我不能指望普通用户能够在 shell 中执行 sudo。

正如我所说,这是一个很好的方法,可能在过去 6 到 8 年里一直有效......但现在失败了。任何人有任何技巧或方法来解决它?

有一次....我不知道为什么,我看到 OSX 安全弹出窗口指示“java”不是受信任的应用程序,我的设置只允许应用商店应用程序。但这只发生过一次……而且很奇怪。我点击确定,它消失了。我想也许 java 已经被隔离了,所以我执行了清除该标志的命令:

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

但这并没有什么不同。我确信这是 Catalina 中的新安全功能使事情变得困难......但我无法弄清楚为什么或如何解决它们。它是一个 java 应用程序,通过 app.command 文件启动,该文件在机器上找到 java 然后启动它...默认在其自己的子文件夹中查找本地副本。

【问题讨论】:

    标签: java launch administrator macos-catalina


    【解决方案1】:

    检查项目的沙盒设置。 App Sandbox 应在权利文件中设置为 false。 沙盒功能可防止您的应用提升应用中的权限。 参考:https://developer.apple.com/app-sandboxing/

    【讨论】:

    • 接受这个答案。简而言之,如果您不使用 XCode 并开发原生 OSX 应用程序,您将无法再进行各种特权活动,即使提示用户进行这些特权活动也是如此。升级的结果被简单地忽略了。我的应用程序是一个 java 应用程序,并且在应用程序中有 java 二进制文件,但通过 script.command 文件启动,因此不符合 Apple 的要求。 XCode 对我没用。
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2011-05-05
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多