我从CentOS 6.4 OS上的tomcat的官方站点下载了tomcat7 tar.gz文件(二进制发行版tar.gz,不是yum)。我想使用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
搜索了文件,然后发现了这样的错误:类型= AVC消息=审核(1386185162.298:210505):AVC:拒绝{写入} 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 = file
类型= SYSCALL msg =审核(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 =(无)ses = 94 comm =“ logrotate” exe =“ / usr / sbin / logrotate” subj = system_u: system_r:logrotate_t:s0-s0:c0.c1023键=(空)
但是我不喜欢
selinux
。您能帮我解决这个问题吗? 最佳答案
Tomcat日志文件或logrotate可能已被selinux阻止。
SElinux日志文件位置:
/var/log/avc.log
/var/log/audit/audit.log
/var/log/audit.log
关于linux - CentOS 6.4 logrotate显示错误权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20299200/