Logstash kann keine Dateien lesen, auf die es auch Zugriff haben sollte

10

Ich habe den Benutzer mit dem Befehl logstashzur Gruppe hinzugefügt .adm$ usermod -a -G adm logstash

Eine der Dateien, die der Logstash-Agent zu lesen versucht /var/log/nginx/foo-access.log, verfügt über die folgenden Berechtigungen:

-rw-r----- 1 www-data adm 0 Jul 25 07:52 /var/log/nginx/foo-access.log

Wenn ich sudo su logstashdie Datei lesen kann, ABER wenn ich $ sudo service logstash_agent restart(das das Init-Skript als logstashBenutzer ausführt), füllt es die Logstash-Protokolle mit:

{:timestamp=>"2013-07-31T17:05:17.287000+0000", :message=>"failed to open /var/log/nginx/foo-access.log: Permission denied - /var/log/nginx/foo-access.log", :level=>:warn}

Ich kann bestätigen, dass sich der Logstash-Benutzer in der Administratorgruppe befindet:

$ groups logstash
logstash : logstash adm

Diese Datei hat definitiv den richtigen Dateizugriff:

$ getfacl /var/log/nginx/foo-access.log
getfacl: Removing leading '/' from absolute path names
# file: var/log/nginx/foo-access.log
# owner: www-data
# group: adm
user::rw-
group::r--
other::---

Ich habe versucht, es aus- und wieder einzuschalten.

Phil Sturgeon
quelle
Ihre Datei scheint nicht über die richtigen Gruppenschreibberechtigungen zu verfügen. Chmod zu beheben
Nithin Meppurathu
Ich möchte nicht in die Datei schreiben, wie gesagt, ich möchte sie lesen.
Phil Sturgeon
Ich /var/log/nginx
gehe
getfacl /var/log/nginx/kapture-api3-access.log
Nithin Meppurathu
Ich habe die Ausgabe dieses Befehls zur Frage hinzugefügt. Ich hatte es schon einmal mit den erwarteten Ergebnissen durchgeführt und mich anfangs nicht darum gekümmert.
Phil Sturgeon

Antworten:

5

Es stellte sich heraus, dass dies mit diesem Fehler im Upstart zusammenhängt:

https://bugs.launchpad.net/upstart/+bug/812870

Da admes sich um eine sekundäre Gruppe handelte, wurde sie nicht auf den Prozess angewendet, der als f ** k unterbrochen und anscheinend in einer späteren Version behoben ist.

Meine Lösung bestand darin setguid adm, der Init-Datei etwas hinzuzufügen .

Phil Sturgeon
quelle
5

Hier ist eine funktionierende Problemumgehung:

sudo vi /etc/init.d/logstash

ändern

    LS_GROUP=logstash

durch

    LS_GROUP=adm

dann

sudo /etc/init.d/logstash start
David
quelle
1
Funktioniert auch durch Hinzufügen von "LS_GROUP = adm" zu / etc / defaults / logstash - das Schöne daran ist, dass die Verwaltung mit Puppet einfacher ist.
Thinice