logrotate kann nicht rotieren, Berechtigung als Root-Benutzer verweigert

logrotate kann nicht rotieren, Berechtigung als Root-Benutzer verweigert

Ich habe ein Problem, das ich nicht begreife. Ich habe logrotate auf einem CentOS 7-Server eingerichtet, um meine App-Protokolle zu rotieren.

Diese Datei befindet sich in /etc/cron.daily (ich habe sogar ein Whoami hinzugefügt, um zu überprüfen, ob sie als Root ausgeführt wird):

#!/bin/sh

whoami

/usr/sbin/logrotate -v /etc/logrotate.d/myapp
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Dies führt meine Logrotate-Konfiguration aus …

"/opt/myapp/log/*.log" {
  daily
  create 644 root root
  rotate 5
  size 20M
  copytruncate
  missingok
  notifempty
  compress
}

Hier ist mein Protokollverzeichnis ...

[root@server log]# ls -la
total 97684
drwxr-xr-x. 3 root root      4096 Sep 28 12:41 .
drwxr-xr-x. 5 root root      4096 Sep 27 20:57 ..
-rw-r--r--. 1 root root 100015457 Sep 28 12:36 myapp.log

Jedes Mal, wenn wir es manuell als Root ausführen, rotiert es das Protokoll ... aber wenn wir es über Cron ausführen, schlägt es fehl. Hier ist die E-Mail, die es sendet ...

From root@server  Thu Sep 28 12:30:02 2017
Return-Path: <root@server>
X-Original-To: root
Delivered-To: root@server
Received: by server (Postfix, from userid 0)
        id 9C82B419; Thu, 28 Sep 2017 12:30:02 -0500 (CDT)
From: "(Cron Daemon)" <root@server>
To: root@server
Subject: Cron <root@server> run-parts /etc/cron.daily
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=10746>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20170928173002.9C82B419@server>
Date: Thu, 28 Sep 2017 12:30:01 -0500 (CDT)
/etc/cron.daily/myapp:

root <<<<<<<<< whoami output
reading config file /etc/logrotate.d/myapp
Handling 1 logs
rotating pattern: /opt/myapp/log/*.log  20971520 bytes (5 rotations)
empty log files are not rotated, old logs are removed
considering log /opt/myapp/log/myapp.log
  log needs rotating
rotating log /opt/myapp/log/myapp.log, log->rotateCount is 5
error: error opening /opt/myapp/log/myapp.log: Permission denied
set default create context

Hat das schon einmal jemand erlebt oder hat er eine Idee, was die Ursache sein könnte?

Antwort1

Es stellte sich heraus, dass es sich um ein SELinux-Problem handelte; logrotate hatte keinen Zugriff auf den Dateikontext, weshalb ihm der Zugriff wiederholt verweigert wurde.

Die Antwort hierzu finden Sie hier:SELinux fcontext

verwandte Informationen