duplicity を実行して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のキーではないため、usersキーです)が、Sudoのキーを再生成する前に、Sudoにユーザーキーを使用させることはできますか?
それほど重要ではありませんが、スクリプトは次の3つのサイトの組み合わせをモデルにしています。 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スクリプトに以下を追加しました。
HOME=/home/user/
フィン
--homedir
オプションを試しましたか?
Sudoのデフォルト設定は$ HOMEを保持することだと思います。したがって、user1としてログインし、scriptnameがSudo scriptname
を実行した場所でecho $HOME
を使用した場合、「/ root」ではなく「/ home/user1」がエコーバックされることを期待する必要があります。
BassKozzはこれを変更していないと思います。おそらく、彼は目的のuser1としてログインしておらず、Sudoとしてスクリプトを実行しています。おそらく、彼は実際には、たとえばrootのcronjobを介して、rootとしてスクリプトを実行しているだけです。その場合、彼の$ 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キーの個別のバックアップがない限り(そうすることを願っています)、ホームディレクトリの内容を失った場合、バックアップを復号化することはできません。