73 lines
2.7 KiB
Markdown
73 lines
2.7 KiB
Markdown
|
---
|
||
|
title: macOS Ensure User Group
|
||
|
description: Ensures that the provisioning user has a group on the system with the same name
|
||
|
sidebar_label: 20 macOS Ensure User Group
|
||
|
slug: /scripts/before/run_onchange_before_20-ensure-user-group.sh.tmpl
|
||
|
githubLocation: https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_onchange_before_20-ensure-user-group.sh.tmpl
|
||
|
scriptLocation: https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_onchange_before_20-ensure-user-group.sh.tmpl
|
||
|
repoLocation: home/.chezmoiscripts/universal/run_onchange_before_20-ensure-user-group.sh.tmpl
|
||
|
---
|
||
|
# macOS Ensure User Group
|
||
|
|
||
|
Ensures that the provisioning user has a group on the system with the same name
|
||
|
|
||
|
## Overview
|
||
|
|
||
|
This script ensures that there is a group with the same name of the provisioning user available on the system.
|
||
|
|
||
|
|
||
|
|
||
|
## Source Code
|
||
|
|
||
|
```
|
||
|
{{- if (eq .host.distro.family "darwin") -}}
|
||
|
#!/usr/bin/env bash
|
||
|
# @file macOS Ensure User Group
|
||
|
# @brief Ensures that the provisioning user has a group on the system with the same name
|
||
|
# @description
|
||
|
# This script ensures that there is a group with the same name of the provisioning user available on the system.
|
||
|
|
||
|
{{ includeTemplate "universal/profile-before" }}
|
||
|
{{ includeTemplate "universal/logg-before" }}
|
||
|
|
||
|
if [ -n "$USER" ]; then
|
||
|
logg info "Adding the $USER user to the $USER group"
|
||
|
### Ensure user has group of same name (required for Macports)
|
||
|
logg info "Ensuring user ($USER) has a group with the same name ($USER) and that it is a member. Sudo privileges may be required"
|
||
|
|
||
|
GROUP="$USER"
|
||
|
USERNAME="$USER"
|
||
|
|
||
|
### Add group
|
||
|
sudo dscl . create /Groups/$GROUP
|
||
|
|
||
|
### Add GroupID to group
|
||
|
if [[ "$(sudo dscl . read /Groups/$GROUP gid 2>&1)" == *'No such key'* ]]; then
|
||
|
MAX_ID_GROUP="$(dscl . -list /Groups gid | awk '{print $2}' | sort -ug | tail -1)"
|
||
|
GROUP_ID="$((MAX_ID_GROUP+1))"
|
||
|
sudo dscl . create /Groups/$GROUP gid "$GROUP_ID"
|
||
|
fi
|
||
|
|
||
|
### Add user
|
||
|
sudo dscl . create /Users/$USERNAME
|
||
|
|
||
|
### Add PrimaryGroupID to user
|
||
|
if [[ "$(sudo dscl . read /Users/$USERNAME PrimaryGroupID 2>&1)" == *'No such key'* ]]; then
|
||
|
sudo dscl . create /Users/$USERNAME PrimaryGroupID 20
|
||
|
fi
|
||
|
|
||
|
### Add UniqueID to user
|
||
|
if [[ "$(sudo dscl . read /Users/$USERNAME UniqueID 2>&1)" == *'No such key'* ]]; then
|
||
|
MAX_ID_USER="$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)"
|
||
|
USER_ID="$((MAX_ID_USER+1))"
|
||
|
sudo dscl . create /Users/$USERNAME UniqueID "$USERID"
|
||
|
fi
|
||
|
|
||
|
### Add user to group
|
||
|
sudo dseditgroup -o edit -t user -a $USERNAME $GROUP
|
||
|
else
|
||
|
logg warn 'The USER environment variable is unavailable'
|
||
|
fi
|
||
|
{{ end -}}
|
||
|
```
|