netdata/packaging/installer: HoS situation - Fix broken install-or-update script (#5806)
During the last major installer refactoring, we managed to break (again) the static64 installer. We modified the code that defines user/group ownerships for netdata installation, forcing the install to end up with a process running as netdata and files set as root To fix this, we re-instate default NETDATA_USER/NETDATA_GROUP to root, as it should be. Then we attempt group netadata creation. If that succeeds, we attempt user netdata creation. If that succeeds, we attempt secondary groups addition. Report errors on all otherwise situations from each step.
Paul Emm. Katsoulakis committed
Apr 5, 2019 at 11:47 UTC
e1f7a105c4a08cd7ae4bd6fc79f022d1d59dcd8a
2 files changed
+27
-26
packaging/installer/functions.sh
+9
-9
@@ -614,11 +614,11 @@ portable_add_user() {
614
portable_add_group() {
615
local groupname="${1}"
616
617
- # Check if group exist
617
+ # Check if group exist
618
if cut -d ':' -f 1 </etc/group | grep "^${groupname}$" 1>/dev/null 2>&1; then
619
- echo >&2 "Group '${groupname}' already exists."
620
- return 0
621
- fi
619
+ echo >&2 "Group '${groupname}' already exists."
620
+ return 0
621
+ fi
622
623
echo >&2 "Adding ${groupname} user group ..."
624
@@ -644,13 +644,13 @@ portable_add_group() {
644
portable_add_user_to_group() {
645
local groupname="${1}" username="${2}"
646
647
- # Check if group exist
647
+ # Check if group exist
648
if ! cut -d ':' -f 1 </etc/group | grep "^${groupname}$" >/dev/null 2>&1; then
649
- echo >&2 "Group '${groupname}' does not exist."
650
- return 1
651
- fi
649
+ echo >&2 "Group '${groupname}' does not exist."
650
+ return 1
651
+ fi
652
653
- # Check if user is in group
653
+ # Check if user is in group
654
if [[ ",$(grep "^${groupname}:" </etc/group | cut -d ':' -f 4)," =~ ,${username}, ]]; then
655
# username is already there
656
echo >&2 "User '${username}' is already in group '${groupname}'."
packaging/makeself/install-or-update.sh
+18
-17
@@ -69,27 +69,28 @@ then
69
fi
70
71
# -----------------------------------------------------------------------------
72
-progress "Add user netdata to required user groups"
72
+progress "Attempt to create user/group netdata/netadata"
73
74
NETDATA_WANTED_GROUPS="docker nginx varnish haproxy adm nsd proxy squid ceph nobody"
75
NETDATA_ADDED_TO_GROUPS=""
76
-if [ "${UID}" -eq 0 ]; then
77
- if ! portable_add_group netdata; then
78
- run_failed "Failed to add netdata group"
79
- NETDATA_GROUP="root"
80
- fi
81
- if ! portable_add_user netdata "/opt/netdata"; then
82
- run_failed "Failed to add netdata user"
83
- NETDATA_USER="root"
84
- fi
85
-
86
- for g in ${NETDATA_WANTED_GROUPS}; do
87
- # shellcheck disable=SC2086
88
- portable_add_user_to_group ${g} netdata && NETDATA_ADDED_TO_GROUPS="${NETDATA_ADDED_TO_GROUPS} ${g}" || run_failed "Failed to add netdata user to secondary groups"
89
- done
76
+# Default user/group
77
+NETDATA_USER="root"
78
+NETDATA_GROUP="root"
79
+
80
+if portable_add_group netdata; then
81
+ if portable_add_user netdata "/opt/netdata"; then
82
+ progress "Add user netdata to required user groups"
83
+ for g in ${NETDATA_WANTED_GROUPS}; do
84
+ # shellcheck disable=SC2086
85
+ portable_add_user_to_group ${g} netdata && NETDATA_ADDED_TO_GROUPS="${NETDATA_ADDED_TO_GROUPS} ${g}" || run_failed "Failed to add netdata user to secondary groups"
86
+ done
87
+ NETDATA_USER="netdata"
88
+ NETDATA_GROUP="netdata"
89
+ else
90
+ run_failed "I could not add user netdata, will be using root"
91
+ fi
92
else
91
- run_failed "Failed to add netdata user and group"
92
- run_failed "The installer does not run as root."
93
+ run_failed "I could not add group netdata, so no user netdata will be created as well. Netdata run as root:root"
94
fi
95
96
# -----------------------------------------------------------------------------