gpt4 book ai didi

macos - 使用来自守护进程的 OSX 系统钥匙串(keychain)

转载 作者:行者123 更新时间:2023-12-04 02:59:28 25 4
gpt4 key购买 nike

我有一个需要以 root 身份运行并由 launchd 启动的守护进程。这个守护进程需要存储一些用户提供的凭据,所以我让它使用 SecKeychainOpen 和类似的函数将它们写入系统钥匙串(keychain)。

我很确定,因为它以 root 身份运行,所以我必须使用系统钥匙串(keychain)(因为使用用户的登录钥匙串(keychain)是不正确的,因为它不能以普通用户身份运行)。

我的安装程序在安装结束时使用launchctl 将其加载到launchd 中。问题是它实际上直到重新启动后才开始。我在 plist 中将 OnLOad 设置为 true,但似乎在使用系统钥匙串(keychain)时,我需要重新启动它才能工作。

我想知道是否有人知道解决此问题的方法,因为如果不需要重新启动,这将是更好的用户体验。所以要清楚,我可以使用launchd以编程方式从守护进程访问系统钥匙串(keychain)而无需重新启动吗?

感谢您的任何建议或想法。

最佳答案

因为我最终发现我的问题根本不是我想的那样,我想我应该把解决方案放在这里。

事实证明(尽管我在几个网站上读到过),使用 launchd 以编程方式使用守护进程访问系统钥匙串(keychain)是完全可以的,无需重新启动。只需以正常方式加载 plist(当然需要 root 权限),一切正常。

我的问题是我的安装后脚本从未运行过,实际上在某些 Mac 上构建时甚至从未包含在我的 .pkg 安装程序中。显然,如果您没有安装 PackageMaker.app,macports 仍然会为您制作带有安装程序的 dmg,但安装程序是一个目录而不是正确的单个文件,并且它可能缺少某些部分(例如我的 postinstall 脚本)。

PackageMaker.app 可以在 Apple 开发者网站的 Xcode AuxTools 包中找到(然后需要将它放在/Applications 或 macports 可以找到的其他地方)。

关于macos - 使用来自守护进程的 OSX 系统钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15338858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com