У меня есть задание cron в crontab root, определенное следующим образом:
0 1 * * * /usr/local/bin/tarsnap-backup-script > /tmp/tarsnapcron.txt 2> /tmp/tarsnapcron.err
Скрипт представляет собой скрипт на Python, который выполняет tarsnap
, который читает ключ из /root/tarsnap.key
. Этот ключ принадлежит пользователю root и chmod 400.
Если я запускаю сценарий из оболочки bash, он выполняется без ошибок. Однако в cron я получаю исключение python, напечатанное на tarsnapcron.err
:
could not change directory to "/root": Permission denied
В чем разница между запуском этого скрипта как root
в bash и запустив его из root
crontab? Почему последний не может читать из /root
?
У меня была та же проблема, и решение было предоставить права корневой группе:
chmod 440 /root/backup.key
После этого cron смог прочитать файл, и сценарий резервного копирования запустился без сбоев.