[Cialug] cron gpg
Claus
cniesen at gmx.net
Mon Aug 28 14:31:08 CDT 2006
Cron should run all commands with root privileges. I'm not sure what
environment variable are set by default.
Although I use a different OS it should work the same. I created a
script file and call it from cron (all in one line):
0 4 * * 3 /usr/bin/su root -c
"/root/cronscripts/user-data-backup" > /dev/null 2>&1#
In the script file I exclusively declare the shell and path:
#!/bin/sh
#PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
#export PATH
tar -cf - /home/claus | gpg --batch -e -r Claus -o
/backup/claus-`date +%Y-%m-%d`.tar.pgp
The although I haven't explicitly set it, the home path of root seems to
be correct since the public pgp keys reside in the ~/.gnugp/pubring.gpg
of root.
Instead of waiting till tonight I would change the cron date/time to
test it earlier.
Good luck,
Claus
On 8/28/2006 10:48 AM, Barry Von Ahsen wrote:
> I have a process that gpgs and ftps a file. When I run it from the
> command line (as root), everything works fine. When cron tries to run
> it (as root), it claims it can't find the gpg key it needs. Is there
> anything special I need to do? Is cron really running as root, or as
> some root-equivalent user? This is on RHEL 4.3
>
> I just noticed SHLVL is different, but I re-ran from SHLVL=2 on the
> command line and it worked fine
>
> Here is cron's env:
> SHELL=/bin/bash MAILTO=root OLDPWD=/ USER=root
> PATH=/sbin:/bin:/usr/sbin:/usr/bin PWD=/home/dir/lmsfile HOME=/ SHLVL=2
> LOGNAME=root _=/bin/env
>
> Here is root's env (from the same dir):
> HOSTNAME=www.server.com
> SHELL=/bin/bash
> TERM=screen
> HISTSIZE=1000
> USER=root
> LS_COLORS=*snip*
> MAIL=/var/spool/mail/root
> PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
>
> INPUTRC=/etc/inputrc
> PWD=/home/dir/lmsfile
> LANG=en_US.UTF-8
> SHLVL=1
> HOME=/root
> LOGNAME=root
> LESSOPEN=|/usr/bin/lesspipe.sh %s
> G_BROKEN_FILENAMES=1
> _=/bin/env
> OLDPWD=/root
>
> and the gpg error:
> gpg: entsys: skipped: public key not found
> gpg: /home/dir/lmsfile/file.clr: encryption failed: public key not found
>
> and the relevant script line:
> /usr/bin/gpg -v -r entsys --yes --always-trust --output ${GPGFILE}
> --encrypt ${CLEARFILE} >> gpg_putfiles.log 2>&1
>
> and the crontab line:
> 30 20 * * * root sh /etc/cron.d/runlms > /dev/null 2>&1
>
> this all worked fine on mandrake, then went to crap on rhel until I
> figured out I couldn't directly execute the script, I had to run it
> through sh
>
> -barry
>
> _______________________________________________
> Cialug mailing list
> Cialug at cialug.org
> http://cialug.org/mailman/listinfo/cialug
>
>
More information about the Cialug
mailing list