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

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

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

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(以用户身份运行初始化脚本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::---

我尝试将其关闭然后再次打开。

答案1

原来和upstart里的这个bug有关:

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

因为adm它是一个次要组,所以它没有被应用到该过程中,这被破坏了,并且显然在以后的版本中得到了修复。

我的解决方案是添加setguid adm到 init 文件中。

答案2

这是一个可行的解决方法:

sudo vi /etc/init.d/logstash

调整

    LS_GROUP=logstash

经过

    LS_GROUP=adm

然后

sudo /etc/init.d/logstash start

相关内容