@cryptotaxi247 / netdata-1 / commits / 15a9a0e64

Improve kickstart so it can add the netdata user/group on Synology DSM (#20024)

* attempt to create user/group using synology CLI tools. * Update functions.sh fix spellcheck warning * Update functions.sh improve support for Synology command synogroup so it can add user to group keeping former members * fix bug closing if too soon * remove redundant test * fix shellcheck warning * use run to run synogroup * add DSM support to remove user/group * silence shellcheck warning: this needs to be expanded. * fix: the variable has to be expanded. * fix: parameter has to be expanded. silence shellcheck warning * Update packaging/installer/functions.sh --------- Co-authored-by: Ilya Mashchenko <ilya@netdata.cloud>

ycdtosa committed Apr 2, 2025 at 13:27 UTC 15a9a0e6457d976a34157c954a39cc38e3d84192
2 files changed +45
packaging/installer/functions.sh
+19
@@ -1065,6 +1065,8 @@ portable_add_user() {
1065 run dscl . create /Users/"${username}" IsHidden 1
1066 return 0
1067 fi
1068 + elif command -v synouser 1> /dev/null 2>&1; then
1069 + run synouser -add "${username}" "" "netdata agent" 0 "" 0 && return 0
1070 fi
1071
1072 warning "Failed to add ${username} user account!"
@@ -1092,6 +1094,8 @@ portable_add_group() {
1094 run addgroup "${groupname}" && return 0
1095 elif command -v dseditgroup 1> /dev/null 2>&1; then
1096 dseditgroup -o create "${groupname}" && return 0
1097 + elif command -v synogroup 1> /dev/null 2>&1; then
1098 + run synogroup --add "${groupname}" && return 0
1099 fi
1100
1101 warning >&2 "Failed to add ${groupname} user group !"
@@ -1127,6 +1131,21 @@ portable_add_user_to_group() {
1131 run addgroup "${username}" "${groupname}" && return 0
1132 elif command -v dseditgroup 1> /dev/null 2>&1; then
1133 dseditgroup -u "${username}" "${groupname}" && return 0
1134 + elif command -v synogroup 1> /dev/null 2>&1; then
1135 + # Get current members of the group
1136 + current_members_list=$(synogroup --get "${groupname}" | grep '^[0-9]')
1137 + current_members=$(echo "${current_members_list}" | grep -oP '\[\K[^\]]+' | tr '\n' ' ' | sed 's/ $//')
1138 +
1139 + # Append username to the list
1140 + if [ -n "$current_members" ]; then
1141 + new_members="${current_members} ${username}"
1142 + else
1143 + new_members="${username}"
1144 + fi
1145 +
1146 + # Set the member list
1147 + # shellcheck disable=SC2086
1148 + run synogroup --member "${groupname}" ${new_members} && return 0
1149 fi
1150
1151 warning >&2 "Failed to add user ${username} to group ${groupname}!"
packaging/installer/netdata-uninstaller.sh
+26
@@ -452,6 +452,16 @@ portable_del_group() {
452 fi
453 fi
454
455 + # DMS ( Synology )
456 + if command -v synogroup 1> /dev/null 2>&1; then
457 + if get_group "${groupname}" > /dev/null 2>&1; then
458 + run synogroup --del "${groupname}" && return 0
459 + else
460 + info "Could not find group ${groupname}, nothing to do"
461 + return 0
462 + fi;
463 + fi
464 +
465 error "Group ${groupname} was not automatically removed, you might have to remove it manually"
466 return 1
467 }
@@ -515,6 +525,11 @@ portable_del_user() {
525 run sysadminctl -deleteUser "${username}" && return 0
526 fi
527
528 + # DMS ( Synology )
529 + if command -v synouser 1> /dev/null 2>&1; then
530 + run synouser --del "${username}" && return 0
531 + fi
532 +
533 error "User ${username} could not be deleted from system, you might have to remove it manually"
534 return 1
535 }
@@ -555,6 +570,17 @@ portable_del_user_from_group() {
570 run dseditgroup -o delete -u "${username}" "${groupname}" && return 0
571 fi
572
573 + # DSM ( Synology )
574 + if command -v synogroup 1> /dev/null 2>&1; then
575 + # Get current members of the group removing username
576 + current_members_list=$(synogroup --get "${groupname}" | grep -v "\[${username}\]" | grep '^[0-9]' )
577 + current_members=$(echo "${current_members_list}" | grep -oP '\[\K[^\]]+' | tr '\n' ' ' | sed 's/ $//')
578 +
579 + # Set the new list of members
580 + # shellcheck disable=SC2086
581 + run synogroup --member "${groupname}" ${current_members} && return 0
582 + fi
583 +
584 error "Failed to delete user ${username} from group ${groupname} !"
585 return 1
586 }