我在我的 CentOS 6.4 操作系统(二进制发行版 tar.gz,不是 yum)上从 tomcat 的官方网站下载了一个 tomcat7 tar.gz 文件。我想使用 logrotate 来滚动我的 tomcat 日志。所以我/etc/logrotate.d/tomcat7
在以下内容中创建文件:
/usr/tomcat7/logs/catalina.out {
copytruncate
dateext
compress
missingok
notifempty
rotate 10
size 50M
postrotate
find /usr/tomcat7/logs/ \( -name "*.log" -o -name "*.txt" \) -mtime +10 -delete
endscript
}
我用这个命令测试了这个角色logrotate /etc/logrotate.conf
。一切都好。
但是第二天我发现它没有自动滚动tomcat日志。
所以我必须修改文件/etc/cron.daily/logrotate
来调试。我将线路更改/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
为/usr/sbin/logrotate /etc/logrotate.conf >> /var/log/logrotate.log 2>&1
.
最后,我发现结果/var/log/logrotate.log
是error: error opening /usr/tomcat7/logs/catalina.out: Permission denied
奇怪的是,只有 tomcat 日志收到权限被拒绝。除tomcat日志外的所有其他日志。
没有权限 ?!为什么?为什么root权限被拒绝?
ll -d /usr/tomcat7/logs
drwxr-xr-x. 2 root root 12288 11 30 03:14 /usr/tomcat7/logs/
ll /usr/tomcat7/logs
total 135100
-rw-r--r--. 1 root root 2241 11 29 09:07 catalina.2013-11-29.log
-rw-r--r--. 1 root root 26063 11 30 03:14 catalina.2013-11-30.log
-rw-r--r--. 1 root root 137950120 11 30 18:43 catalina.out
-rw-r--r--. 1 root root 0 11 29 09:07 host-manager.2013-11-29.log
-rw-r--r--. 1 root root 0 11 30 03:14 host-manager.2013-11-30.log
-rw-r--r--. 1 root root 477 11 29 09:07 localhost.2013-11-29.log
-rw-r--r--. 1 root root 725 11 30 03:14 localhost.2013-11-30.log
-rw-r--r--. 1 root root 284261 11 29 21:56 localhost_access_log.2013-11-29.txt
-rw-r--r--. 1 root root 45611 11 30 18:42 localhost_access_log.2013-11-30.txt
-rw-r--r--. 1 root root 0 11 29 09:07 manager.2013-11-29.log
-rw-r--r--. 1 root root 0 11 30 03:14 manager.2013-11-30.log
@user3069508
非常感谢!我发现文件/var/log/audit/audit.log
存在。然后我用关键字搜索文件,logrotate
我发现这样的错误:
type=AVC msg=audit(1386185162.298:210505):avc: denied { write } for pid=740 comm="logrotate" name="catalina.out" dev=sda5 ino=48235357 scontext=system_u:system_r:logrotate_t:s0- s0:c0.c1023 tcontext=unconfined_u:object_r:usr_t:s0 tclass=文件类型=SYSCALL msg=audit(1386185162.298:210505):arch=c000003e syscall=2 成功=没有退出=-13 a0=1d33440 a1=2 a2= 7fffff6730cf a3=746165726373662f items=0 ppid=737 pid=740 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=94 comm= "logrotate" exe="/usr/sbin/logrotate" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
但我不擅长selinux
。你能帮我解决这个问题吗?