Logstash无法读取它应该有权访问的文件

我使用$ usermod -a -G adm logstash命令将用户logstash添加到组adm

其中一个logstash代理正在尝试读取的文件是/var/log/nginx/foo-access.log ,它具有以下权限

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

当我sudo su logstash我可以读取文件,但是,当我$ sudo service logstash_agent restart (init脚本作为logstash用户运行)它填充logstash日志:

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

我可以确认logstash用户在adm组中:

 $ groups logstash logstash : logstash adm 

这个文件绝对有正确的文件访问权限:

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

我试过把它关掉再打开。

原来这与新贵有关:

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

因为adm是一个次要团体,所以没有被应用到这个过程中,这个过程被破解为f ** k,并且显然在更高版本中被修复。

我的解决scheme是将setguid adm添加到init文件。

这是一个工作的解决方法:

 sudo vi /etc/init.d/logstash 

修改

  LS_GROUP=logstash 

通过

  LS_GROUP=adm 

然后

 sudo /etc/init.d/logstash start