通过 cron 以 root 身份记录旋转 "Permission Denied"

Log Rotate "Permission Denied" as root via cron

我正在尝试将自定义 logrotate 策略配置为每分钟 运行 作为 root。不幸的是,cron 作业拒绝了我的许可;但是如果我 运行 以 root 身份手动运行脚本,我不会遇到任何问题。

custom_logrotate.sh

#!/bin/bash

/usr/sbin/logrotate -f -v /etc/custom_logrotate/custom_logrotate.conf > /var/log/rotate.log 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/etc/cron.d/custom_logrotate

* * * * * root /etc/custom_logrotate/custom_logrotate.sh

custom_logrotate.conf

/opt/nginx/logs/stdout.log /opt/nginx/logs/perf.log {
        rotate 10
        copytruncate
        nocompress
        size 10M
        start 0
}

权限

namei -mo /opt/nginx/logs/
f: /opt/nginx/logs/
 dr-xr-xr-x root root      /
 drwxr-xr-x root root      opt
 drwxr-x--- root gnginx capione
 drwxr-x--- root gnginx logs

以及错误信息。

error: error opening /opt/nginx/logs/perf.log: Permission denied

注意: 运行 /etc/custom_logrotate/custom_logrotate.sh 直接工作正常但仅面临来自 cron 作业的问题。

问题在于使用 /etc/cron.d 而不是 /var/spool/cron/root aka crontab。

似乎即使在 /etc/cron.d 中将用户指定为 root,一些实用程序仍然无法正常工作。