(macOS) Create a new user worklet

  • 20 September 2019
  • 3 replies
  • 104 views

Userlevel 4
Badge

I'm exploring a custom worklet to create a new user.



So far this has been successful creating the user.

However when trying to login, the password does not work.


Please help if you think of a way around this.



#!/bin/bash

sudo ddcl . -create /Users/automox

sudo dscl . -create /Users/automox UserShell /bin/bash

sudo dscl . -create /Users/automox RealName Automox

sudo dscl . -create /Users/automox UniqueID 9999

sudo dscl . -create /Users/automox NFSHomeDirectory /Local/Users/automox

sudo dscl . -passwd /Users/automox password123

sudo dscl . -append /Groups/admin GroupMembership automox



ps - Don’t use password123… I’m sure that goes without saying 🙂 Also there’s better ways to make users, but we’re trying to conjure this up for a specific use case.


This topic has been closed for comments

3 replies

Badge

great work here cfrieberg, dscl is indeed the preferred method for creating user accounts on macOS. One limitation of that tools is that it does not create a user’s home folder. Based on the last line it seems like you want this account to have admin rights, so I fixed that below as well.



#!/bin/bash



user_short_name="automox"

user_long_name="Automox"

user_password="Password123"

user_unique_id="9999"



dscl . -create /Users/"$user_short_name"

dscl . -create /Users/"$user_short_name" UserShell /bin/bash

dscl . -create /Users/"$user_short_name" RealName "$user_long_name"

dscl . -create /Users/"$user_short_name" UniqueID "$user_unique_id"

dscl . -create /Users/"$user_short_name" NFSHomeDirectory /Users/"$user_short_name"

dscl . -passwd /Users/"$user_short_name" "$user_password"

dscl . -create /Users/"$user_short_name" PrimaryGroupID 20 #for an admin user, use 80 for a standard user

cp -R /System/Library/User\ Template/English.lproj /Users/"$user_short_name"

chown -R "$user_short_name":admin /Users/"$user_short_name"

Userlevel 4
Badge

This is great! Thank you Tim.



I tested it out in a custom worklet, it successfully created a user account that I could log into.



I wonder if there’s a way to automate the account setup steps (siri, language, etc that come up after loggin in)



Thanks again!

There are ways to force a password reset on next login, if that seems like a nice feature to add.