我创建了一个脚本,该脚本运行重复性以备份我在 VPS 上的文件,并使用我作为用户生成的 GPG 密钥。
当我尝试将此脚本作为 SUDO 运行时,我得到:
GPGError: GPG Failed, see log below:
===== Begin GnuPG log =====
gpg: C7B2Y6DO: skipped: public key not found
gpg: [stdin]: encryption failed: public key not found ===== End GnuPG log =====
现在我意识到这是为什么(因为它不是 SUDO 的密钥,而是用户密钥)但是在我去为 SUDO 重新生成密钥之前,是否可以让 sudo 使用用户密钥?
不是很重要,但脚本是根据这三个站点的组合建模的: http ://www.cenolan.com/2008/12/how-to-incremental-daily-backups-amazon-s3-duplicity/
http://www.randys.org/2007/11/16/how-to-automated-backups-to-amazon-s-s3-with-duplicity/
解决方案:在 bash 脚本中添加以下内容:
鳍
你试过这个
--homedir
选项吗?我相信 sudo 的默认配置是保留 $HOME。因此,如果您以 user1 身份登录,并
sudo scriptname
在 scriptname的位置使用echo $HOME
,您应该会看到回显“/home/user1”,而不是“/root”。我假设 BassKozz 没有改变这一点。也许他没有以他想要的 user1 身份登录,而是以 sudo 身份运行脚本。也许他真的只是以 root 身份运行脚本,例如通过 root 的 cronjob。在这种情况下,他的 $HOME 一开始就不会是 /home/user1 ,所以即使 sudo 保留了 $HOME 的值,它也无济于事。在这种情况下,告诉您如何将 $HOME 设置为正确值或通知 gpg 您的 homedir 在哪里的任何其他答案都应该有效。
但是,如果确实如他所说的那样,他甚至无法“以 sudo”身份运行他的重复脚本——也就是说,当以 user1 身份登录并键入
sudo duplicity_script
时,那么问题不会是错误设置的 $HOME . 正如我们所见,在这种情况下,$HOME 应该具有正确的值。所以问题是别的。我听得还不够多,也不太了解 duplicity+gpg 来推测它可能是什么。如果您对 sudo 使用“--preserve-env”选项,那么 sudo 会话中的 GPG 将能够找到在本机会话中运行的 gpg-agent。
例子:
sudo --preserve-env YOUR_COMMAND...
您确定要首先使用用户 gpg 密钥加密备份吗?
除非您有单独的 gpg 密钥备份(我希望您这样做),否则如果您丢失了主目录的内容,您将无法解密任何备份。