我正在尝试在 CentOS 7 环境中获取 filebeat(用于 logstash 转发)以在我创建的用户帐户下运行:filebeat 而不是 root。我尝试将/etc/rc.d/init.d/filebeat
文件编辑为以下内容,但无济于事。我可能做错了什么,但对 BASH 脚本仍然有点陌生,我可能把它放在错误的地方?我尝试遵循此处建议的实施说明
为简洁起见,我只显示上述文件的第一部分,因为后面部分没有改变:
#!/bin/bash
#
# filebeat filebeat shipper
#
# chkconfig: 2345 98 02
#
### BEGIN INIT INFO
# Provides: filebeat
# Required-Start: $local_fs $network $syslog
# Required-Stop: $local_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Sends log files to Logstash or directly to Elasticsearch.
# Description: filebeat is a shipper part of the Elastic Beats
# family. Please see: https://www.elastic.co/products/beats
### END INIT INFO
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
[ -f /etc/sysconfig/filebeat ] && . /etc/sysconfig/filebeat
pidfile=${PIDFILE-/var/run/filebeat.pid}
agent=${PB_AGENT-/usr/bin/filebeat}
args="-c /etc/filebeat/filebeat.yml"
test_args="-e -configtest"
wrapper="filebeat-god"
wrapperopts="-r / -n -p $pidfile"
RETVAL=0
service_user="filebeat"
# Source function library.
. /etc/rc.d/init.d/functions
# Determine if we can use the -p option to daemon, killproc, and status.
# RHEL < 5 can't.
if status | grep -q -- '-p' 2>/dev/null; then
daemonopts="--user $service_user --group $service_group --pidfile $pidfile"
**chown -R $service_user /etc/filebeat || return 1
chown $service_user $pidfile || return 1
chmod g+w $pidfile || return 1**
pidopts="-p $pidfile"
touch
fi
以前,我使用类似于以下内容创建了一个用户帐户 filebeat:
useradd filebeat -u 5044 -c "Filebeat Service Account" -d /dev/null -s /sbin/nologin
但是,当我在启动后尝试查看该过程时,它仍然显示为由 root 拥有:
[root@testvm ~]# ps -aef | grep filebeat
root 26030 1 0 13:16 ? 00:00:00 /usr/bin/filebeat -c /etc/filebeat/filebeat.yml