无法使用 /usr/bin/security 通过 cron 从钥匙串中检索密码

rxv*_*xvt 4 cron keychain osx-yosemite macos

当我从我的用户 crontab 运行它时,我似乎无法使用 /usr/bin/security 从钥匙串成功检索密码。在我的终端中运行良好。

我还可以通过 cron 邮件输出看到我的 USER、HOME 和 PATH 都在 cron 中正确设置。

我已经能够确定当它在 cron 中运行时,它只能看到我的系统钥匙串,而不是我的用户钥匙串:

    "/Library/Keychains/System.keychain"
    "/Library/Keychains/System.keychain"
Run Code Online (Sandbox Code Playgroud)

然后我告诉 /usr/bin/security 明确使用我的用户钥匙串,现在我没有得到任何输出,但退出代码是 36。

#security error 36
Error: 0x00000024 36 CSSM_ERRCODE_OBJECT_ACL_REQUIRED
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚这意味着什么。

我已经在 cron 中指定了我的 PATH 并尝试从 bash 登录 shell 中运行 /usr/bin/security 通过 bash -l -c /usr/bin/security...

这是我正在运行的 cron 命令:

bash -l -c '/usr/bin/security find-generic-password -g -a myusername -s test_vault /Users/myusername/Library/Keychains/login.keychain 2>&1 ; echo $?'
Run Code Online (Sandbox Code Playgroud)

我从 cron 收到的邮件显示 PATH 已成功获取。

有任何想法吗?谢谢!

rxv*_*xvt 5

所以看起来即使我试图在我的 crontab 中运行它,因为 cron 本身以 root 身份运行,它仍然不允许访问我的钥匙串。

我发现这篇博文讲述了使用 launchd 来安排作业,现在我的工作通过 launchd 可以正常工作!:)