我们正在开发一个带有助手工具的应用程序,该助手工具使用SMJobBless安装到系统中。这按预期工作;但有一个警告。使用SMJobBless时防止授权弹出
我们频繁进行自动部署 - 有时每周超过一次。每当辅助工具版本发生变化时,我们都会重新注册 - 导致密码提示。这两个因素很快会对我们的用户产生不良影响。
在最初的Helper Tool安装过程中,有没有办法让密码提示只出现一次?后续更新能否在没有提示的情况下发生也许有一种方法可以利用现有的Helper Tool来安装自己的更新版本?
我们正在开发一个带有助手工具的应用程序,该助手工具使用SMJobBless安装到系统中。这按预期工作;但有一个警告。使用SMJobBless时防止授权弹出
我们频繁进行自动部署 - 有时每周超过一次。每当辅助工具版本发生变化时,我们都会重新注册 - 导致密码提示。这两个因素很快会对我们的用户产生不良影响。
在最初的Helper Tool安装过程中,有没有办法让密码提示只出现一次?后续更新能否在没有提示的情况下发生也许有一种方法可以利用现有的Helper Tool来安装自己的更新版本?
简答:第SMJobBless()
总是提示输入管理员凭据。没有办法阻止它提示。如果你调用这个API,它会提示(或失败)。在解决方法
较长的答案:
如果你的助手工具与管理/ root权限运行,理论上可以用新版本替换本身。 这样做之前请仔细考虑。获得这个权利和维护安全性是非常困难,事实上,即使是主要的操作系统 installer functionality有一个强有力的迹象表明,走这条路线的风险可能会超过收益。
Race Conditions, Secure File Operations, and Time of Check vs Time of Use
苹果Security APIs,特别SecRequirementCreateWithString
和SecCodeCheckValidity
:
如果必须进行,在读了。
macOS Code Signing In Depth和Code Signing Requirement Language
你必须确保你的助手工具不能欺骗与替换自己(或执行)恶意代码,否则你将已经打开软件为是一个平凡的根开发矢量。
还要注意:无论什么样的苹果目前并核实SMJobBless
安装辅助工具,可以想象的是,他们可以收紧在未来的要求,并拒绝运行已被修改,因为他们通过SMJobBless
安装辅助工具。最安全的方法(在多个方面)是只要你需要安装/更新助手就拨打SMJobBless
。
感谢您的回答,尤其是链接。我们将为我们的用户提供当前的解决方案,但这些解决方法在我们的集成测试中很有用。 – Liosan