#!/bin/bash
echo "Create macOS Local Administrator Account"
echo "=========================================="
#version check
varOSMaj=$(sw_vers -productVersion | awk '{split ($0,a,"."); print a[1]}')
varOSMin=$(sw_vers -productVersion | awk '{split ($0,a,"."); print a[2]}')
if [ "$varOSMaj" -eq "10" ]
then
if [ "$varOSMin" -lt "15" ]
echo "! WARNING: This script has not been successfully tested on macOS versions"
echo " lower than 10.15 and may not work with those devices. Execution halted."
exit 1
fi
fi
#search for an unused userID, starting at 502
varExit=0
varUserID=501
until [ "$varExit" -eq "1" ]
do
varUserID=$((varUserID+1))
dscl . -list /Users UniqueID | grep -q " $varUserID$"
varExit=$?
echo "- Trying ID #$varUserID..."
sleep 1
done
echo " SUCCESS: User ID #$varUserID is free for use."
echo "- Creating a new user: $usrUN ($usrRN)"
echo "--------------------------------"
dscl . -create /Users/$usrUN
dscl . -create /Users/$usrUN UserShell /bin/bash
dscl . -create /Users/$usrUN RealName "$usrRN"
dscl . -create /Users/$usrUN UniqueID $varUserID
dscl . -create /Users/$usrUN PrimaryGroupID 80
dscl . -create /Users/$usrUN NFSHomeDirectory /Users/$usrUN
dscl . -create /Users/$usrUN Picture "/Library/User Pictures/Instruments/Turntable.tif"
dscl . -append /Groups/admin GroupMembership $usrUN
dscl . -create /Users/$usrUN "authentication_authority" ";ShadowHash;"
dscl . -passwd /Users/$usrUN $usrPWD
cp -vR /System/Library/User\ Template/English.lproj/ /Users/$usrUN > /dev/null 2>&1
chown -R $varUserID:staff /Users/$usrUN
echo "- New user account created!"
echo " It may be wise to reboot the device before signing into it."
Script data
Language - Bash
Run as - System / Root User
Script timeout duration - 5 Mins
Script variables
Run time variables
usrRN
usrUN
usrPWD
Read me
usrRN String User's real name. usrUN String Desired username. Do not use spaces. usrPWD String Desired password. Complex. Do not use spaces.