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