我在 root 的 crontab 中有一个 cron 作业,定义如下:
0 1 * * * /usr/local/bin/tarsnap-backup-script > /tmp/tarsnapcron.txt 2> /tmp/tarsnapcron.err
该脚本是一个执行的 Python 脚本tarsnap
,它从中读取密钥/root/tarsnap.key
。此密钥由 root 和 chmod 400 拥有。
如果我从 bash shell 运行该脚本,它会执行而不会出现错误。但是,在 cron 下,我得到了一个打印到的 python 异常tarsnapcron.err
:
could not change directory to "/root": Permission denied
root
在 bash 中运行此脚本与从 的 crontab 运行此脚本有何区别root
?为什么后者无法从 读取/root
?
答案1
我遇到了同样的问题,解决方案是授予 root 组权限:
chmod 440 /root/backup.key
此后,cron 能够读取该文件,并且备份脚本可以完美运行。