我创build了一个运行重复的脚本来备份我在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使用用户密钥?
不是很重要,但脚本是build立在这三个网站的组合: 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/
https://help.ubuntu.com/community/DuplicityBackupHowto
你尝试过--homedir选项吗?
解决scheme:将以下内容添加到bash脚本中:
HOME=/home/user/
鳍
我相信sudo的默认configuration是保存$ HOME。 因此,如果您以user1身份login,并使用sudo scriptname其中scriptname确实echo $HOME ,则应该会看到“/ home / user1”回显,而不是“/ root”。
我会假设BassKozz并没有改变这一点。 也许他没有以他想要的user1login,以sudo的方式运行脚本。 也许他只是以root身份运行脚本,例如通过root的cronjob。 在这种情况下,他的$ HOME永远不会是/ home / user1,所以即使sudo保留了$ HOME的值,也没有帮助。 在这种情况下,任何其他答案告诉你如何设置$ HOME到正确的值,或通知gpg你的homedir,应该工作。
但是,如果他说他甚至不能以“sudo”的forms运行他的副本脚本 – 也就是说,当以user1身份login并inputsudo duplicity_script ,问题不会是错误的$ HOME。 正如我们所见,$ HOME在这种情况下应该具有正确的价值。 所以问题是别的。 我还没有听够,也不知道口信+ gpg是否足够,来推测它可能是什么。
如果使用“–preserve-env”选项来sudo,那么sudo会话中的GPG将能够find在本机会话中运行的gpg-agent。
例:
sudo –preserve-env YOUR_COMMAND …
你确定你的意思是首先用一个用户gpg密钥来encryption你的备份吗?
除非你有一个单独的备份你的gpg密钥(我希望你这样做),否则你将无法解密任何备份,如果你失去了你的主目录的内容。