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

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

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

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

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

    "/Library/Keychains/System.keychain"
    "/Library/Keychains/System.keychain"

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

#security error 36
Error: 0x00000024 36 CSSM_ERRCODE_OBJECT_ACL_REQUIRED

我似乎不明白这是什么意思。

我在 cron 中指定了我的 PATH,并尝试通过 bash 登录 shell 内部运行 /usr/bin/securitybash -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 $?'

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

有什么想法吗?谢谢!

答案1

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

我发现博客文章讨论了使用 launchd 来安排作业,我的作业现在可以通过 launchd 正常工作!:)

相关内容