web-dev-qa-db-ja.com

Logstashはアクセスも必要なファイルを読み取ることができません

コマンド$ usermod -a -G adm logstashを使用して、ユーザーlogstashをグループadmに追加しました。

Logstashエージェントが読み取ろうとしているファイルの1つは/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::---

オフにしてからもう一度オンにしてみました。

10
Phil Sturgeon

Upstartのこのバグに関連していることが判明しました:

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

admはセカンダリグループであるため、プロセスに適用されていませんでした。これはf ** kとして壊れており、今後のバージョンでは明らかに修正されています。

私の解決策は、setguid admをinitファイルに追加することでした。

5
Phil Sturgeon

回避策は次のとおりです。

Sudo vi /etc/init.d/logstash

修正

    LS_GROUP=logstash

沿って

    LS_GROUP=adm

その後

Sudo /etc/init.d/logstash start
5
David