O Logstash não pode ler arquivos que deveriam ter acesso também

10

Eu adicionei o usuário logstash ao grupo adm usando o comando $ usermod -a -G adm logstash .

Um dos arquivos que o agente logstash está tentando ler é o /var/log/nginx/foo-access.log , que tem as seguintes permissões:

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

Quando eu sudo su logstash posso ler o arquivo, MAS, quando eu $ sudo service logstash_agent restart (que o script init executa como o usuário logstash ), ele preenche os logs do logstash com:

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

Posso confirmar que o usuário do logstash está no grupo adm:

$ groups logstash
logstash : logstash adm

Este arquivo definitivamente tem o acesso de arquivo correto:

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

Eu tentei desligá-lo e ligá-lo novamente.

    
por Phil Sturgeon 31.07.2013 / 19:25

2 respostas

5

Verificou-se estar relacionado com este bug no upstart:

link

Como adm era um grupo secundário, ele não estava sendo aplicado ao processo, que é quebrado como f ** k e aparentemente é corrigido em uma versão posterior.

Minha solução foi adicionar setguid adm ao arquivo init.

    
por 04.08.2013 / 13:15
5

Aqui está uma solução alternativa:

sudo vi /etc/init.d/logstash

modificar

    LS_GROUP=logstash

por

    LS_GROUP=adm

então

sudo /etc/init.d/logstash start
    
por 05.06.2014 / 11:32