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.


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.


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.