通过 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,一些实用程序仍然无法正常工作。
我正在尝试将自定义 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,一些实用程序仍然无法正常工作。