@cryptotaxi247 / netdata-1 / commits / e1f7a105c

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 # -----------------------------------------------------------------------------