From 175515ce497269779d11cb236213aa18e01b862a Mon Sep 17 00:00:00 2001 From: Ilya Mashchenko Date: Wed, 20 Mar 2024 09:15:24 +0200 Subject: Fix issues with permissions when installing from source on macOS (#17198) --- packaging/installer/functions.sh | 13 ++++++++++++- system/install-service.sh.in | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packaging/installer/functions.sh b/packaging/installer/functions.sh index 72f3842202..63b2f568db 100644 --- a/packaging/installer/functions.sh +++ b/packaging/installer/functions.sh @@ -934,6 +934,11 @@ portable_add_user() { echo >&2 "User '${username}' already exists." return 0 fi + elif command -v dscl > /dev/null 2>&1; then + if dscl . read /Users/"${username}" >/dev/null 2>&1; then + echo >&2 "User '${username}' already exists." + return 0 + fi else if cut -d ':' -f 1 < /etc/passwd | grep "^${username}$" 1> /dev/null 2>&1; then echo >&2 "User '${username}' already exists." @@ -952,7 +957,13 @@ portable_add_user() { elif command -v adduser 1> /dev/null 2>&1; then run adduser -h "${homedir}" -s "${nologin}" -D -G "${username}" "${username}" && return 0 elif command -v sysadminctl 1> /dev/null 2>&1; then - run sysadminctl -addUser "${username}" && return 0 + gid=$(dscl . read /Groups/"${username}" 2>/dev/null | grep PrimaryGroupID | grep -Eo "[0-9]+") + if run sysadminctl -addUser "${username}" -shell /usr/bin/false -home /var/empty -GID "$gid"; then + # FIXME: I think the proper solution is to create a role account: + # -roleAccount + name starting with _ and UID in 200-400 range. + run dscl . create /Users/"${username}" IsHidden 1 + return 0 + fi fi warning "Failed to add ${username} user account!" diff --git a/system/install-service.sh.in b/system/install-service.sh.in index cdd1bf52f5..226dca5dee 100755 --- a/system/install-service.sh.in +++ b/system/install-service.sh.in @@ -630,6 +630,8 @@ install_darwin_service() { exit 4 fi + launchctl unload /Library/LaunchDaemons/com.github.netdata.plist 2>/dev/null + if ! launchctl load /Library/LaunchDaemons/com.github.netdata.plist; then error "Failed to load plist file." exit 4 -- cgit v1.2.3