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 (#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>
This commit is contained in:
parent
9019b5603e
commit
15a9a0e645
2 changed files with 45 additions and 0 deletions
packaging/installer
|
@ -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}!"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue