我有一个脚本,它通过cronjob在sh脚本中执行gpg加密命令。 这是我的脚本的一部分
do
gpg --batch --no-tty --yes --recipient $Key --output $Outputdir/${v}.pgp --encrypt ${v}
echo "$?"
if ["$?" -eq 0 ];
then
mv $Inputdir/${v} $Readydir/
echo "file moved"
else
echo "error in encryption"
fi
done
回声$?给出值为2。
尝试了bellow命令
gpg --batch --home-dir dir --recipient $Key --output $Outputdir/${v}.pgp --encrypt ${v}
其中dir = / usr / bin / gpg
我的完整脚本
#set -x
PT=/gonm1_apps/xfb/ref/phoenix_drop
Inputdir=`grep Inputdir ${PT}/param.cfg | cut -d "=" -f2`
Outputdir=`grep Outputdir ${PT}/param.cfg | cut -d "=" -f2`
Key=`grep Key ${PT}/param.cfg | cut -d "=" -f2`
Readydir=`grep Readydir ${PT}/param.cfg | cut -d "=" -f2`
echo $USER
if [ "$(ls -la $Inputdir | grep -E 'S*.DAT')" ]; then
echo "Take action $Inputdir is not Empty"
cd $Inputdir
for v in `ls SID_090_*`
do
gpg --recipient $Key --output $Outputdir/${v}.pgp --encrypt ${v}
echo "$?"
if ["$?" -eq 0 ];
then
mv $Inputdir/${v} $Readydir/
echo "file moved"
else
echo "error in encryption"
fi
done
cd ${PT}
else
echo "$Inputdir is Empty"
fi
答案 0 :(得分:1)
GnuPG管理个人密钥环和" GnuPG主目录"每个用户。从Web服务或cronjobs调用GnuPG时的commmon问题是以另一个用户身份执行它们。
这意味着其他用户的GnuPG会在错误的密钥环(主目录)中查找密钥,如果已修复,则根本不应具有对GnuPG主目录的访问权限(以root用户身份运行cron或web服务器时不是问题,但这不应该由于这个原因而不能完成。)
有多种方法可以缓解这个问题:
sudo
或su
可能有助于将GnuPG作为其他用户运行。www-data
或root
用户(或者在你的机器上调用的任何东西。)--home-dir /home/[username]/.gnupg
或更短{{1}来执行此操作如果你的shell解决了这个问题。最好不要这样做,因为GnuPG非常严格地验证访问权限,如果太放松,则拒绝工作。 GnuPG不喜欢权限,允许其他用户,但所有者完全访问GnuPG主目录。--home-dir ~username/.gnupg
。答案 1 :(得分:0)
如果
the echo $USER prints as root when executed on cronjob and as username when executed manually
然后您需要以用户身份登录并使用" crontab -e"等命令。为该用户添加cronjob以运行脚本