我们正在使用Helper Tool开发一个应用程序-使用SMJobBless将其安装到系统中。这按预期工作;但有一个警告。

我们会进行频繁的自动部署-有时每周超过一次。每当助手工具版本更改时,我们都会重新注册它-导致出现密码提示。这两个因素将很快使我们的用户恼火。

在最初的Helper Tool安装过程中,是否有办法让密码提示仅出现一次?可能会在没有提示的情况下进行后续更新吗?也许有一种方法可以利用现有的帮助器工具来安装自身的更新版本?

最佳答案

简短答案:否。SMJobBless()总是提示输入管理员凭据。无法阻止它提示。如果调用此API,它将提示(或失败)。



解决方法的更长答案:

如果您的帮助程序工具以admin / root特权运行,则理论上可以用新版本替换自己。在执行此操作之前,请仔细考虑。正确地做到这一点并维护安全性是非常困难的,而且即使主要的操作系统在vulnerabilities中都具有installer functionality的事实也充分说明了采用这种方法的风险可能大于收益。

如果必须继续,请继续阅读以下内容:


Race Conditions, Secure File Operations, and Time of Check vs Time of Use
Apple的Security APIs,尤其是SecRequirementCreateWithStringSecCodeCheckValidity
macOS Code Signing In DepthCode Signing Requirement Language


您将必须确保您的助手工具不会被诱骗用(或执行)恶意代码替换自身,否则您将把软件开放为琐碎的根漏洞利用程序。

另请注意:不管Apple目前如何验证SMJobBless安装的帮助程序工具,可以想象它们将来会收紧要求并拒绝运行自通过SMJobBless安装以来已修改的帮助程序工具。最安全的方法(在多个方面)是在需要安装/更新帮助程序时仅调用SMJobBless

关于objective-c - 使用SMJobBless时防止授权弹出窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39846072/

10-08 23:09