Logcheck 没有权限读取日志文件

Logcheck 没有权限读取日志文件

我使用 logcheck 来监控日志文件,但我不是通过电子邮件接收报告,而是想使用 bash 脚本将它们发送到外面。

因此我使用了-o:

sudo -u logcheck /usr/sbin/logcheck -o 2>&1 | myscript with curl

但我收到以下错误:

错误:无法运行 logtail 或保存输出。

经过一些测试,我发现即使 logcheck 用户属于 adm 组,它也没有权限读取日志文件。

当然,logcheck不能以root用户身份或者具有root权限的用户运行。

有人使用这个包并能帮助我吗?

Centos 7 带有 epel 的 logcheck。

答案1

要在没有 root 权限的情况下使用logcheck,您需要确保用户logcheck在该adm组中(正如您已经发现的那样)。

此外,在 Centos 和其他基于 Redhat 的发行版中,您需要确保日志文件归组所有adm,即chgrp adm在这些日志文件上执行,并使日志文件可由组读取(chmod g+r)。执行一次后,logrotate应使用与轮换文件相同的所有者/组/权限重新创建日志文件,从而保留您的更改。如果不是这种情况,请确保和create中的选项没有任何会覆盖原始值的附加参数。/etc/logrotate.conf/etc/logrotate.d/*

答案2

实际上我们不需要改变 /var/log 下任何文件的所有权。

我遇到了同样的问题:

sudo -u logcheck logcheck -o -t
Error: Could not run logtail or save output.

我尝试使用访问列表为 logcheck 用户提供对 /var/log 下文件的权限,并且它对我有用。

# setfacl -R -m u:logcheck:rwx /var/log/secure*
# setfacl -R -m u:logcheck:rwx /var/log/messages*

答案3

除了 @wurtel 发布的答案之外,logcheck 还需要写入文件.offset。我们需要创建它们,并使它们仅对 logcheck 用户可读/可写:

touch /var/log/messages.offset
chmod 600 /var/log/messages.offset
chown logcheck /var/log/messages.offset

touch /var/log/secure.offset
chmod 600 /var/log/secure.offset
chown logcheck /var/log/secure.offset

相关内容