Logstash ne peut pas lire les fichiers auxquels il devrait également avoir accès

10

J'ai ajouté un utilisateur logstashau groupe admà l'aide de la commande $ usermod -a -G adm logstash.

L'un des fichiers que l'agent logstash essaie de lire est /var/log/nginx/foo-access.log, qui dispose des autorisations suivantes:

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

Quand je sudo su logstashpeux lire le fichier, MAIS, quand je $ sudo service logstash_agent restart(que le script init exécute en tant logstashqu'utilisateur), il remplit les journaux de journal de bord avec:

{: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}

Je peux confirmer que l'utilisateur logstash est dans le groupe adm:

$ groups logstash
logstash : logstash adm

Ce fichier a définitivement le bon accès au fichier:

$ 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::---

J'ai essayé de l'éteindre et de le rallumer.

Phil Sturgeon
la source
Votre fichier ne semble pas avoir les autorisations d'écriture de groupe correctes. Chmod à corriger
Nithin Meppurathu
Je ne veux pas écrire dans le fichier, comme je l'ai dit, je veux le lire.
Phil Sturgeon
Je suppose que vous avez également vérifié les autorisations du répertoire parent ( /var/log/nginx)
dawud
getfacl /var/log/nginx/kapture-api3-access.log
Nithin Meppurathu
J'ai ajouté la sortie de cette commande à la question. Je l'avais déjà fait avec les résultats que j'attendais, donc je n'ai pas pris la peine au départ.
Phil Sturgeon

Réponses:

5

Il s'est avéré être lié à ce bogue dans upstart:

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

Parce qu'il adms'agissait d'un groupe secondaire, il n'était pas appliqué au processus, qui est cassé en f ** k et est apparemment corrigé dans une version ultérieure.

Ma solution a été d'ajouter setguid admau fichier init.

Phil Sturgeon
la source
5

Voici une solution de contournement:

sudo vi /etc/init.d/logstash

modifier

    LS_GROUP=logstash

par

    LS_GROUP=adm

puis

sudo /etc/init.d/logstash start
David
la source
1
Fonctionne également en ajoutant "LS_GROUP = adm" à / etc / defaults / logstash - la bonne partie à ce sujet est qu'il est plus facile à gérer à l'aide de marionnettes.
Thinice