在 CentOS 上设置 Filebeat 权限,通常涉及 文件权限、用户权限、系统服务权限(systemd)以及 SELinux 几个方面。下面按常见场景说明。
在 CentOS 上,通过 RPM 安装的 Filebeat 默认:
root/etc/filebeat/filebeat.yml/var/lib/filebeat/var/log/filebeat⚠️ 如果以
root运行,Filebeat 可以读取大多数日志文件;但出于安全考虑,有时会改为普通用户。
例如:
/var/log/nginx/access.log
权限为:
-rw-r----- 1 nginx nginx
如果 Filebeat 不是 nginx 组或 root,会报:
permission denied
sudo usermod -aG nginx filebeat
然后重启 Filebeat:
sudo systemctl restart filebeat
sudo chmod 644 /var/log/nginx/access.log
确认:
ps -ef | grep filebeat
若为 root,一般不会有读权限问题。
sudo systemctl edit filebeat
添加:
[Service]
User=filebeat
Group=filebeat
sudo chown -R filebeat:filebeat /var/lib/filebeat
sudo chown -R filebeat:filebeat /var/log/filebeat
sudo chown filebeat:filebeat /etc/filebeat/filebeat.yml
sudo systemctl daemon-reload
sudo systemctl restart filebeat
getenforce
如果是 Enforcing,可能阻止 Filebeat 读日志。
sudo ausearch -m avc -ts recent
sudo setsebool -P filebeat_can_read_logs on
(某些版本需要手动加策略)
或临时测试:
sudo setenforce 0
在 filebeat.yml 中:
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/*.log
确保:
# 查看 filebeat 用户
id filebeat
# 查看文件权限
ls -l /var/log/nginx/access.log
# 查看 filebeat 状态
systemctl status filebeat
# 查看错误
journalctl -u filebeat -f
如果你能告诉我:
我可以给你更精确的权限配置方案。