Update 2 files
- /home/.chezmoiscripts/universal/run_onchange_before_20-ensure-user-group.sh.tmpl - /home/dot_local/bin/executable_install-program
This commit is contained in:
parent
a50ee7340c
commit
87414c9d63
2 changed files with 43 additions and 7 deletions
|
@ -9,6 +9,36 @@
|
||||||
{{ includeTemplate "universal/logg-before" }}
|
{{ includeTemplate "universal/logg-before" }}
|
||||||
|
|
||||||
### Ensure user has group of same name (required for Macports)
|
### Ensure user has group of same name (required for Macports)
|
||||||
logg info 'Ensuring user has a group with the same name and that it is a member. Sudo privileges may be required'
|
logg info "Ensuring user ($USER) has a group with the same name ($USER) and that it is a member. Sudo privileges may be required"
|
||||||
echo y | sudo dseditgroup -o create "$USER" > /dev/null
|
|
||||||
|
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
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
|
@ -1501,15 +1501,21 @@ async function addUserGroup(group) {
|
||||||
log('info', logStage, `Ensuring the ${group} group / user is added`)
|
log('info', logStage, `Ensuring the ${group} group / user is added`)
|
||||||
if (osType === 'linux') {
|
if (osType === 'linux') {
|
||||||
const useradd = which.sync('useradd', { nothrow: true })
|
const useradd = which.sync('useradd', { nothrow: true })
|
||||||
if (useradd) {
|
const usermod = which.sync('usermod', { nothrow: true })
|
||||||
|
if (useradd && usermod) {
|
||||||
runCommand(`Adding the ${group} user / group`, `sudo useradd ${group}`)
|
runCommand(`Adding the ${group} user / group`, `sudo useradd ${group}`)
|
||||||
|
runCommand(`Adding the ${process.env.USER} user to the ${group} group`, `sudo usermod -a -G ${group} ${process.env.USER}`)
|
||||||
} else {
|
} else {
|
||||||
log('error', logStage, `The useradd command is unavailable`)
|
log('error', logStage, `The useradd and / or usermod command is unavailable`)
|
||||||
}
|
}
|
||||||
} else if (osType === 'darwin') {
|
} else if (osType === 'darwin') {
|
||||||
runCommand(`Adding the ${group} group`, `sudo dscl . -create /Users/${group}`)
|
runCommand(`Creating the ${group} group`, `sudo dscl . create /Groups/${group}`)
|
||||||
runCommand(`Creating the ${group} group`, `sudo dscl . -create /Groups/${group}`)
|
runCommand(`Ensuring the ${group} group has a GID`, `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`)
|
||||||
runCommand(`Adding the ${group} user to the ${group} group`, `sudo dscl . -append /Groups/${group} GroupMembership ${group}`)
|
runCommand(`Adding the ${group} user`, `sudo dscl . create /Users/${group}`)
|
||||||
|
runCommand(`Ensuring the ${group} user has a PrimaryGroupID`, `if [[ "$(sudo dscl . read /Users/${group} PrimaryGroupID 2>&1)" == *'No such key'* ]]; then sudo dscl . create /Users/${group} PrimaryGroupID 20; fi`)
|
||||||
|
runCommand(`Ensuring the ${group} user has a UniqueID`, `if [[ "$(sudo dscl . read /Users/${group} 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/${group} UniqueID "$USERID"; fi`)
|
||||||
|
runCommand(`Adding the ${group} user to the ${group} group`, `sudo dseditgroup -o edit -t user -a ${group} ${group}`)
|
||||||
|
runCommand(`Adding the ${process.env.USER} user to the ${group} group`, `sudo dseditgroup -o edit -t user -a ${process.env.USER} ${group}`)
|
||||||
} else if (osType === 'windows') {
|
} else if (osType === 'windows') {
|
||||||
log('warn', logStage, `Windows support not yet added`)
|
log('warn', logStage, `Windows support not yet added`)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue