【问题标题】:CentOS 6.4 logrotate show error permission deniedCentOS 6.4 logrotate 显示错误权限被拒绝
【发布时间】:2013-12-16 10:38:48
【问题描述】:

我在我的 CentOS 6.4 操作系统上从 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 搜索文件,发现错误如下:

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=文件 type=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。你能帮我解决这个问题吗?

【问题讨论】:

    标签: linux centos logrotate


    【解决方案1】:

    Tomcat 日志文件或 logrotate 可能被 selinux 阻止。

    SElinux 日志文件位置:

    /var/log/avc.log
    /var/log/audit/audit.log
    /var/log/audit.log
    

    【讨论】:

    • 有两种解决方案。 a) 阅读有关 SELinux 的大量信息 b) 禁用 SELinux * 禁用 SELinux:setenforce 0(临时)/etc/sysconfig/selinux(永久)
    【解决方案2】:

    不要去盲目地禁用 SELinux, 您可以使用restorecon 命令恢复原始安全上下文:

    # restorecon -v /var/lib/logrotate.status
    restorecon reset /var/lib/logrotate.status context system_u:object_r:init_var_lib_t:s0->system_u:object_r:logrotate_var_lib_t:s0
    

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 2020-08-25
      • 1970-01-01
      • 2015-08-25
      • 2018-07-29
      • 2016-05-02
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多