Я добавил пользователя 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
в файл инициализации.