Logstash tidak dapat membaca file yang seharusnya memiliki akses juga

10

Saya telah menambahkan pengguna logstashke grup admmenggunakan perintah $ usermod -a -G adm logstash.

Salah satu file yang mencoba dibaca oleh agen logstash adalah /var/log/nginx/foo-access.log, yang memiliki izin berikut:

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

Ketika saya sudo su logstashbisa membaca file, TETAPI ketika saya $ sudo service logstash_agent restart(yang menjalankan skrip init sebagai logstashpengguna) mengisi logstash log dengan:

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

Saya dapat mengonfirmasi bahwa pengguna logstash ada dalam grup adm:

$ groups logstash
logstash : logstash adm

File ini pasti memiliki akses file yang tepat:

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

Saya sudah mencoba mematikannya dan lagi.

Phil Sturgeon
sumber
File Anda tampaknya tidak memiliki izin menulis grup yang benar. Chmod untuk memperbaikinya
Nithin Meppurathu
Saya tidak ingin menulis ke file, seperti saya katakan saya ingin membacanya.
Phil Sturgeon
Saya berasumsi Anda juga memeriksa izin direktori induk ( /var/log/nginx)
dawud
getfacl /var/log/nginx/kapture-api3-access.log
Nithin Meppurathu
Saya menambahkan output dari perintah itu ke pertanyaan. Saya sudah menjalankannya sebelumnya dengan hasil yang saya harapkan, jadi awalnya tidak repot.
Phil Sturgeon

Jawaban:

5

Ternyata terkait dengan bug ini di pemula:

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

Karena admmerupakan grup sekunder, itu tidak diterapkan pada proses, yang dipecah menjadi f ** k dan tampaknya diperbaiki dalam versi yang lebih baru.

Solusi saya adalah menambahkan setguid admke file init.

Phil Sturgeon
sumber
5

Berikut adalah solusi yang berhasil:

sudo vi /etc/init.d/logstash

memodifikasi

    LS_GROUP=logstash

oleh

    LS_GROUP=adm

kemudian

sudo /etc/init.d/logstash start
David
sumber
1
Juga berfungsi dengan menambahkan "LS_GROUP = adm" ke / etc / defaults / logstash - bagian baiknya adalah lebih mudah dikelola menggunakan boneka.
thinice