Назад | Перейти на главную страницу

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 user) он заполняет журналы 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::---

Я пробовал выключить и снова включить.

Вот рабочий обходной путь:

sudo vi /etc/init.d/logstash

модифицировать

    LS_GROUP=logstash

по

    LS_GROUP=adm

затем

sudo /etc/init.d/logstash start

Оказалось, что это связано с этой ошибкой в ​​выскочке:

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

Так как adm была вторичной группой, она не применялась к процессу, который сломан как ебать и, по-видимому, исправлен в более поздней версии.

Моим решением было добавить setguid adm в файл инициализации.