@cryptotaxi247 / netdata-1 / commits / 067305602

allow netdata installer to install and run netdata as any user (#13780)

* allow netdata installer to install and run netdata as any user * Update netdata-installer.sh Co-authored-by: Austin S. Hemmelgarn <ahferroin7@gmail.com> * Update netdata-installer.sh Co-authored-by: Austin S. Hemmelgarn <ahferroin7@gmail.com> Co-authored-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>

Costa Tsaousis committed Oct 9, 2022 at 17:02 UTC 067305602f373d12286e492143bf6cb2a32ffe31
4 files changed +35 -32
build/subst.inc
+1
@@ -13,6 +13,7 @@
13 -e 's#[@]libsysdir_POST@#$(libsysdir)#g' \
14 -e 's#[@]enable_aclk_POST@#$(enable_aclk)#g' \
15 -e 's#[@]enable_cloud_POST@#$(enable_cloud)#g' \
16 + -e 's#[@]netdata_user_POST@#$(netdata_user)#g' \
17 $< > $@.tmp; then \
18 mv "$@.tmp" "$@"; \
19 else \
configure.ac
+2
@@ -1540,6 +1540,7 @@ configdir="${sysconfdir}/netdata"
1540 libconfigdir="${libdir}/netdata/conf.d"
1541 logdir="${localstatedir}/log/netdata"
1542 pluginsdir="${libexecdir}/netdata/plugins.d"
1543 +netdata_user="${with_user}"
1544 libsysdir="${libdir}/netdata/system"
1545
1546 AC_SUBST([varlibdir])
@@ -1552,6 +1553,7 @@ AC_SUBST([libconfigdir])
1553 AC_SUBST([logdir])
1554 AC_SUBST([pluginsdir])
1555 AC_SUBST([webdir])
1556 +AC_SUBST([netdata_user])
1557 AC_SUBST([libsysdir])
1558
1559 CFLAGS="${originalCFLAGS} ${OPTIONAL_LTO_CFLAGS} ${OPTIONAL_PROTOBUF_CFLAGS} ${OPTIONAL_MATH_CFLAGS} ${OPTIONAL_NFACCT_CFLAGS} \
netdata-installer.sh
+29 -29
@@ -934,6 +934,34 @@ if [ "$have_autotools" ]; then
934 fi
935 fi
936
937 +# function to extract values from the config file
938 +config_option() {
939 + section="${1}"
940 + key="${2}"
941 + value="${3}"
942 +
943 + if [ -x "${NETDATA_PREFIX}/usr/sbin/netdata" ] && [ -r "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ]; then
944 + "${NETDATA_PREFIX}/usr/sbin/netdata" \
945 + -c "${NETDATA_PREFIX}/etc/netdata/netdata.conf" \
946 + -W get "${section}" "${key}" "${value}" ||
947 + echo "${value}"
948 + else
949 + echo "${value}"
950 + fi
951 +}
952 +
953 +# the user netdata will run as
954 +if [ "$(id -u)" = "0" ]; then
955 + NETDATA_USER="$(config_option "global" "run as user" "netdata")"
956 + ROOT_USER="root"
957 +else
958 + NETDATA_USER="${USER}"
959 + ROOT_USER="${USER}"
960 +fi
961 +NETDATA_GROUP="$(id -g -n "${NETDATA_USER}")"
962 +[ -z "${NETDATA_GROUP}" ] && NETDATA_GROUP="${NETDATA_USER}"
963 +echo >&2 "Netdata user and group set to: ${NETDATA_USER}/${NETDATA_GROUP}"
964 +
965 # shellcheck disable=SC2086
966 if ! run ./configure \
967 --prefix="${NETDATA_PREFIX}/usr" \
@@ -943,7 +971,7 @@ if ! run ./configure \
971 --libdir="${NETDATA_PREFIX}/usr/lib" \
972 --with-zlib \
973 --with-math \
946 - --with-user=netdata \
974 + --with-user="${NETDATA_USER}" \
975 ${NETDATA_CONFIGURE_OPTIONS} \
976 CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"; then
977 fatal "Failed to configure Netdata sources." I000A
@@ -1077,34 +1105,6 @@ progress "Read installation options from netdata.conf"
1105 [ ! -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] &&
1106 touch "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
1107
1080 -# function to extract values from the config file
1081 -config_option() {
1082 - section="${1}"
1083 - key="${2}"
1084 - value="${3}"
1085 -
1086 - if [ -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ]; then
1087 - "${NETDATA_PREFIX}/usr/sbin/netdata" \
1088 - -c "${NETDATA_PREFIX}/etc/netdata/netdata.conf" \
1089 - -W get "${section}" "${key}" "${value}" ||
1090 - echo "${value}"
1091 - else
1092 - echo "${value}"
1093 - fi
1094 -}
1095 -
1096 -# the user netdata will run as
1097 -if [ "$(id -u)" = "0" ]; then
1098 - NETDATA_USER="$(config_option "global" "run as user" "netdata")"
1099 - ROOT_USER="root"
1100 -else
1101 - NETDATA_USER="${USER}"
1102 - ROOT_USER="${USER}"
1103 -fi
1104 -NETDATA_GROUP="$(id -g -n "${NETDATA_USER}")"
1105 -[ -z "${NETDATA_GROUP}" ] && NETDATA_GROUP="${NETDATA_USER}"
1106 -echo >&2 "Netdata user and group is finally set to: ${NETDATA_USER}/${NETDATA_GROUP}"
1107 -
1108 # port
1109 defport=19999
1110 NETDATA_PORT="$(config_option "web" "default port" ${defport})"
system/netdata.service.in
+3 -3
@@ -7,16 +7,16 @@ After=network.target httpd.service squid.service nfs-server.service mysqld.servi
7
8 [Service]
9 Type=simple
10 -User=netdata
10 +User=@netdata_user_POST@
11 Group=netdata
12 RuntimeDirectory=netdata
13 RuntimeDirectoryMode=0775
14 PIDFile=/run/netdata/netdata.pid
15 ExecStart=@sbindir_POST@/netdata -P /run/netdata/netdata.pid -D
16 ExecStartPre=/bin/mkdir -p @localstatedir_POST@/cache/netdata
17 -ExecStartPre=/bin/chown -R netdata:netdata @localstatedir_POST@/cache/netdata
17 +ExecStartPre=/bin/chown -R @netdata_user_POST@ @localstatedir_POST@/cache/netdata
18 ExecStartPre=/bin/mkdir -p /run/netdata
19 -ExecStartPre=/bin/chown -R netdata:netdata /run/netdata
19 +ExecStartPre=/bin/chown -R @netdata_user_POST@ /run/netdata
20 PermissionsStartOnly=true
21
22 # saving a big db on slow disks may need some time