为launchd守护程序保护密码存储

时间:2009-09-29 04:00:55

标签: cocoa

在普通的Cocoa应用程序中,通常将任何已保存的密码存储在Keychain中,从而避免许多陷阱。现在我正在编写一个需要存储密码的launchd守护进程,并且会在任何用户登录之前运行。这意味着我不能像往常一样使用密钥链。

我在Keychain Access中看到有一个“系统”钥匙串,但我无法找到任何关于如何使用它的文件(或者如果这是正确的用途)。

存储launchd守护程序使用的密码的最佳做法是什么?

2 个答案:

答案 0 :(得分:5)

您可以创建自己的钥匙串并毫不犹豫地使用它们。例如,如果您有应用包,则可以在应用包中添加一个。

或者您可以将守护程序作为特定用户(安装它的人)运行并将密钥放入其钥匙串中,然后在需要时直接进入其主文件夹。

或者您可以以root身份运行守护程序并将密钥放入System keychain。

-Wil

答案 1 :(得分:1)

钥匙串与用户上下文的概念紧密相关。因此,如果您需要处理用户钥匙串的后台进程,那么您应该使用UserAgent模型。 因为deamons通常(如果不总是)root:wheel priveleged,守护程序需要某种凭证的典型场景将被kerberos覆盖(Web服务器上的文件共享,XGrid代理,这样的事情)。绝不应该root:wheel守护进程使用用户的凭据。