我们正在使用Helper Tool开发一个应用程序 - 使用SMJobBless将其安装到系统中。这按预期工作;但有一点需要注意。
我们经常进行自动部署 - 有时每周不止一次。每当Helper Tool版本发生变化时,我们都会重新注册它 - 导致密码提示。这两个因素很快会让我们的用户感到恼火。
在最初的Helper Tool安装过程中,有没有办法让密码提示只出现一次?没有提示可以进行后续更新吗?也许有一种方法可以利用现有的Helper Tool来安装自己的更新版本?
答案 0 :(得分:1)
简短回答:否。SMJobBless()
始终提示输入管理员凭据。没有办法阻止它提示。如果你调用这个API,它会提示(或失败)。
关于解决方法的更长答案:
如果您的帮助工具以admin / root权限运行,理论上它可以用新版本替换自己。 在此之前要仔细考虑。正确地做到这一点并保持安全非常困难,甚至主要操作系统在{{3}中都有vulnerabilities这一事实这是一个强有力的指标,表明走这条路的风险可能超过收益。
如果您必须继续,请阅读:
Apple的Race Conditions, Secure File Operations, and Time of Check vs Time of Use,特别是Security APIs和SecRequirementCreateWithString
。
您必须确保您的帮助工具不会被欺骗以替换(或执行)恶意代码,或者您将软件打开成为一个简单的根漏洞矢量。
另请注意:无论Apple目前如何验证SMJobBless
安装的帮助工具,可以想象他们将来可以收紧要求并拒绝运行自安装以来已修改过的辅助工具通过SMJobBless
。最安全的方法(在多个方面)只需在需要安装/更新帮助程序时调用SMJobBless
。