Sometimes, it’s nice to add local users to a computer via a script or the command line via ARD instead of the GUI. In the middle of the quarter, I needed to add a local user to each computer in our lab that would have no password and be a standard user. The reason is because we had some problems with Logic and our Network Home Setup – something I’d like to post about later. I did some searching around and found some code that worked in Leopard, but not Snow Leopard. DSCL’s (Directory Service’s Command Line) syntax changed slightly in Snow Leopard, so I had to modify it to do what I wanted.
Here is an example of creating a local user by the name logicuser that is added to the local directory service.
#Create a new entry in the local domain
sudo dscl . -create /Users/logicuser
#Create and set the shell property to bash.
sudo dscl . -create /Users/logicuser UserShell /bin/bash
#Create and set the user’s full name.
sudo dscl . -create /Users/logicuser RealName "Logic User"
#Create and set the user’s ID.
sudo dscl . -create /Users/logicuser UniqueID 503
#Create and set the user’s group ID property.
sudo dscl . -create /Users/logicuser PrimaryGroupID 20
#Create and set the user home directory.
sudo dscl . -create /Users/logicuser NFSHomeDirectory /Local/Users/logicuser
#Set the password.
sudo dscl . -passwd /Users/logicuser
Execute the above code, and you’d have a local user you can log into.
Edit: Much later on, I learned that while this DOES work, it’s not the best way. Because there is no password for this user, it’s not really that big of a deal. However, if we wanted a password, we would be creating a user insecurely via the command line. Imagine, someone sniffs your network traffic while issuing this command – they now know your password. To fix this problem, I suggest investigating the InstaDMG Create User package. Some further resources for study include InstaDMGs Source Code, InstaDMGs List Serv and AFP548 Forum.