※ ChatGPTを利用し、要約された質問です(原文:cronでGPGが使えない)
cronでGPGが使えない
このQ&Aのポイント
cronでGPGが使えないという問題が発生しました。シェルスクリプトを使ってデータベースのバックアップを取ろうとした際に、GPGの公開鍵が見つからないというエラーが出ました。
問題の原因としては、rootユーザーで実行しているため、GPGの公開鍵をインポートする必要がありました。インポートした後に信頼度をI trust ultimatelyに設定したところです。
しかし、cronで同じシェルスクリプトを実行したところ、GPGの公開鍵が見つからないエラーが発生しました。原因としては、cronの実行環境とrootユーザーの環境で環境変数が異なるため、GPGが正しく動作しない可能性があります。
次のようなデータベースをバックアップするシェルスクリプトを作成しました。
#! /bin/sh
BACKUP_DIR=/home/backup
FILE_NAME=testdb`date +%Y%m%d`.sql
mysqldump -udumpuser -pパスワード testdb > ${BACKUP_DIR}/${FILE_NAME}
gpg -r ○○@○○ -e ${BACKUP_DIR}/${FILE_NAME}
rm -rf ${BACKUP_DIR}/${FILE_NAME}
sqlbackup.shと名前を付けてrootで実行してみたところ問題なくバックアップできました。
しかし、/etc/crontabに
0 0 * * * root /bin/sqlbackup.sh
と記述して実行してみたところ
gpg: ○○@○○: skipped: public key not found
となってしまいました。
rootで「gpg --import」で○○@○○の公開鍵をインポートし、「gpg --edit-key」で信頼度をI trust ultimatelyにしています。
どのような原因が考えられますでしょうか。
よろしくお願いいたします。
お礼
ご回答ありがとうございます。 /etc/crontabに直接記述せず、crontab -eでスケジュールを追加したところうまく動きました。 同じrootユーザで実行でも/etc/crontabとcrontab -eでは挙動が違うのですね。 お騒がせしました。