我使用 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