0
0
Fork 0
mirror of https://github.com/netdata/netdata.git synced 2025-04-07 06:45:39 +00:00

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

* 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>
This commit is contained in:
ycdtosa 2025-04-02 13:27:16 +02:00 committed by GitHub
parent 9019b5603e
commit 15a9a0e645
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 45 additions and 0 deletions

View file

@ -1065,6 +1065,8 @@ portable_add_user() {
run dscl . create /Users/"${username}" IsHidden 1
return 0
fi
elif command -v synouser 1> /dev/null 2>&1; then
run synouser -add "${username}" "" "netdata agent" 0 "" 0 && return 0
fi
warning "Failed to add ${username} user account!"
@ -1092,6 +1094,8 @@ portable_add_group() {
run addgroup "${groupname}" && return 0
elif command -v dseditgroup 1> /dev/null 2>&1; then
dseditgroup -o create "${groupname}" && return 0
elif command -v synogroup 1> /dev/null 2>&1; then
run synogroup --add "${groupname}" && return 0
fi
warning >&2 "Failed to add ${groupname} user group !"
@ -1127,6 +1131,21 @@ portable_add_user_to_group() {
run addgroup "${username}" "${groupname}" && return 0
elif command -v dseditgroup 1> /dev/null 2>&1; then
dseditgroup -u "${username}" "${groupname}" && return 0
elif command -v synogroup 1> /dev/null 2>&1; then
# Get current members of the group
current_members_list=$(synogroup --get "${groupname}" | grep '^[0-9]')
current_members=$(echo "${current_members_list}" | grep -oP '\[\K[^\]]+' | tr '\n' ' ' | sed 's/ $//')
# Append username to the list
if [ -n "$current_members" ]; then
new_members="${current_members} ${username}"
else
new_members="${username}"
fi
# Set the member list
# shellcheck disable=SC2086
run synogroup --member "${groupname}" ${new_members} && return 0
fi
warning >&2 "Failed to add user ${username} to group ${groupname}!"

View file

@ -452,6 +452,16 @@ portable_del_group() {
fi
fi
# DMS ( Synology )
if command -v synogroup 1> /dev/null 2>&1; then
if get_group "${groupname}" > /dev/null 2>&1; then
run synogroup --del "${groupname}" && return 0
else
info "Could not find group ${groupname}, nothing to do"
return 0
fi;
fi
error "Group ${groupname} was not automatically removed, you might have to remove it manually"
return 1
}
@ -515,6 +525,11 @@ portable_del_user() {
run sysadminctl -deleteUser "${username}" && return 0
fi
# DMS ( Synology )
if command -v synouser 1> /dev/null 2>&1; then
run synouser --del "${username}" && return 0
fi
error "User ${username} could not be deleted from system, you might have to remove it manually"
return 1
}
@ -555,6 +570,17 @@ portable_del_user_from_group() {
run dseditgroup -o delete -u "${username}" "${groupname}" && return 0
fi
# DSM ( Synology )
if command -v synogroup 1> /dev/null 2>&1; then
# Get current members of the group removing username
current_members_list=$(synogroup --get "${groupname}" | grep -v "\[${username}\]" | grep '^[0-9]' )
current_members=$(echo "${current_members_list}" | grep -oP '\[\K[^\]]+' | tr '\n' ' ' | sed 's/ $//')
# Set the new list of members
# shellcheck disable=SC2086
run synogroup --member "${groupname}" ${current_members} && return 0
fi
error "Failed to delete user ${username} from group ${groupname} !"
return 1
}