如何在非 root 用户的情况下在 cronjob 中使用 secret-tool?

如何在非 root 用户的情况下在 cronjob 中使用 secret-tool?

我在我的 bash 脚本中使用了这个命令。

somePassw=$(/usr/bin/secret-tool lookup some-login $someLogin 2>secret-tool.log)

它在命令行中运行良好。但如果从 crontab 运行该脚本,我会在日志中看到以下消息:

secret-tool.log:
(secret-tool:6289): GLib-GObject-CRITICAL **: 15:02:01.285: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
secret-tool: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

如果我输入,我在终端中会看到相同的错误,sudo -E secret-tool lookup... 但我创建 crobtab 作业时没有 root 权限。我该如何摆脱这些错误?Ubuntu 18.04.3 LTS (gdm3)

答案1

简单的回答是“你不能”。

secret-tool使用$DISPLAY变量来查找 GUI 来显示内容。

运行时cron,没有 GUI。

可以将变量从 GUI 环境复制$DISPLAY到 cronjob(并读取man xhost),但这会使secret-tool的提示出现在您的屏幕上,从而违背了的目的cron

此外,由于它secret-tool涉及身份验证,因此可能检测并禁止这种情况,或者可能需要其他环境变量。

相关内容