Auf einem OpenSUSE Tumbleweed-Host, heute Morgen aktualisiert. Nach dem Update und einem Neustart schlägt jeder Versuch, Dovecot zu starten, mitCan't open log file /var/log/dovecot: Permission denied
cat /etc/os-release
beinhaltet VERSION_ID="20180314"
/usr/sbin/dovecot --version
Erträge2.3.0.1 (ffd8a29)
Derzeit installierte Dovecot-Pakete beginnen mit dovecot-2.3-1.1
und dovecot23-2.3.0.1-2.1
. Ich bin nicht sicher, welche Version vor dem Update installiert war, aber sie kann nicht älter als eine Woche gewesen sein. Das Update hat keine .rpmnew
oder ähnliche Dateien generiert.
/etc/dovecot
Daran hat sich seit über einem Jahr nichts geändert und dieses Problem besteht heute neu.
Die kommentarlosen Zeilen aus /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot
auth_verbose = yes
auth_verbose_passwords = no
auth_debug = no
auth_debug_passwords = no
mail_debug = yes
plugin {
}
log_timestamp = "%Y-%m%b-%d%a.%H-%M-%S.%Z"
- Ich habe die Berechtigungen gelockert
/var/log/dovecot*
für777
- Ich habe die Berechtigungen gelockert
/var/log
für775
- Ich habe SELinux deaktiviert mit
setenforce 0
- Ich habe Apparmor deaktiviert mit
service apparmor stop
(und bestätigt mitservice apparmor status
) - Ich habe versucht, den Besitz von zu
/var/log/dovecot*
ändernmail
unddovecot
- Ich habe umbenannt
var/log/dovecot
invar/log/dovecot.old
Ausgabe von ls -al /var/log/dovecot*
:
-rwxrwxrwx 1 root root 10666 Aug 16 2016 /var/log/dovecot.debug
-rwxrwxrwx 1 root root 1483 Aug 16 2016 /var/log/dovecot.info
-rwxrwxrwx 1 root root 34118709509 Mar 17 12:28 /var/log/dovecot.old
Das Volumen ist nicht voll (64%).
Warum wird Dovecot die Berechtigung zum Öffnen seines Protokolls verweigert?, und wie gewähre ich es?
Antwort1
Es sieht so aus, als hätte OpenSUSE das Standard-Apparmor-Profil für Dovecot auf ein Profil aktualisiert, das dessen Funktion auf mehrere Arten verhindert. Das Verhindern der Protokollierung außerhalb von Syslog scheint beabsichtigt zu sein, aber bei den anderen ist das nicht eindeutig der Fall.
Um die Funktionalität wiederherzustellen, musste ich in mehreren Dateien Berechtigungen hinzufügen /etc/apparmor.d/local/
:
usr.lib.dovecot.auth
/run/dovecot/old-stats-user w,
usr.lib.dovecot.config
/var/lib/dovecot/ssl-parameters.dat r, capability dac_read_search,
usr.lib.dovecot.log
/var/log/dovecot w,
usr.sbin.dovecot
/usr/lib/dovecot/stats ix, /var/log/dovecot w,
Die w
Berechtigung wird für Protokolle benötigt, da Apparmor sie ablehnt ac
und es meines Wissens keine Möglichkeit gibt, die Berechtigung für zu erteilen c
. Ich konnte keinen Hinweis darauf finden, dass eine Dokumentation mit einer Liste offener Berechtigungen vorhanden ist, daher gibt es möglicherweise eine andere Möglichkeit, „Erstellen und Anhängen“ als zuzulassen w
.
Ich habe die ix
Berechtigung für Statistiken verwendet, anstatt Px
weil keine apparmor.d/user.lib.dovecot.stats
entsprechende Datei darin enthalten ist /etc/apparmor.d/local
und ich dachte, es sei besser, meine Änderungen auf lokale Vorgänge zu beschränken.
All dies wurde festgestellt inOpenSUSE-Fehler #1087753, Link im Kommentar von @Psychonaut zur Frage; es ist möglich, dass OpenSUSE die Standardeinstellungen in einem zukünftigen Update verbessert.
Nichts davon behebt das Problem, dass die Protokollierung in Syslog nicht funktioniert, aber die obigen Änderungen scheinen dafür zu sorgen, dass Dovecot wieder normal funktioniert.