我目前正在设置一个 borgmatic 备份作业,它应该使用以下命令从 kwallet 获取存储库:
kwallet-query -r systeembackup kdewallet -f borg
但不幸的是,当我运行 borgmatic 时它会触发此错误:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Couldn't start kwalletd: QDBusError("org.freedesktop.DBus.Error.Disconnected", "Not connected to D-Bus server")
passcommand supplied in BORG_PASSCOMMAND failed: Command '['kwallet-query', '-r', 'systeembackup', 'kdewallet', '-f', 'borg']' returned non-zero exit status 1.
由于备份作业以 root 用户身份运行以便能够执行完整系统备份,因此该命令无法打开 KDE 钱包。
我尝试以自己的用户身份运行它:
sudo -i -u ik kwallet-query -r systeembackup kdewallet -f borg
没有成功:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-ik'
Couldn't start kwalletd: QDBusError("org.freedesktop.DBus.Error.Disconnected", "Not connected to D-Bus server")
Wallet kdewallet not found
也不先设置 XDG 变量:
export XDG_RUNTIME_DIR=/run/user/1000; sudo -i -u ik kwallet-query -r systeembackup kdewallet -f borg
有没有办法以特权进程/用户的身份从钱包获取密码?
答案1
我能够通过设置来实现这一点
encryption_passcommand: sudo -E -u InsertUserNameHere kwallet-query -r borg-passphrase kdewallet
在/etc/borgmatic/config.yaml
。
我的博格密码设置为:
head -c 32 /dev/urandom | base64 -w 0 | kwalletcli -Pe borg-passphrase -f Passwords