Is there any way to add, remove, or modify user accounts via the command line? I'm not talking about an account for a system process or daemon, I mean is there any way to add a user account, change, user real names, icons, FileVault protection, Admin/normal/limited user status, and basically do everything else that can be done in the System Preferences Users preference pane, but via some command line utility?
2 Answers
To create an account in the Users folder
dscl / -create /Users/addfromcli
Create and set the shell property to bash.
dscl / -create /Users/addfromcli UserShell /bin/bash
Create and set the user’s full name. (Displayed in some of the panels/login screen)
dscl / -create /Users/addfromcli RealName "Added From Cli"
Create and set the user’s ID. (this is the unique id, you need to find out what id your last user create was and add one)
dscl / -create /Users/addfromcli UniqueID 503
Create and set the user’s group ID property. (This can be your default group)
dscl / -create /Users/addfromcli PrimaryGroupID 1000
Create and set the user home directory.
dscl / -create /Users/addfromcli NFSHomeDirectory /Local/Users/addfromcli
Set the password. (dont use password as a password)
dscl / -passwd /Users/addfromcli PASSWORD
Some more details can be found on OS X Daily
-
Wrapping those command lines in `` would greatly improve readability. Dec 15, 2010 at 3:54
-
I did this (only with
/
changed tolocalonly
), but the home directory of the new user didn't appear... Dec 4, 2012 at 21:42 -
Ok, after exiting from the single user mode, I was able to see the new user in the login menu, and then there appeared the new home directory in the filesystem. So my above comment was not about any real problem. Dec 4, 2012 at 21:56
-
1When I enter these commands I get the error
Data source (/) is not valid.
Apr 20, 2022 at 15:37
Solution by @Infamy seems to be for 10.5.
On OS X 10.6 each line needs to be changed to look like the following:
sudo dscl localhost -create /Local/Default/Users/addusername
That is, replace /
by localhost
, prepend /Local/Default
to /Users
and invoke the entire command with sudo
.
-
I did this (only with
/
changed tolocalonly
), but the home directory of the new user didn't appear... Dec 4, 2012 at 21:43 -
Ok, after exiting from the single user mode, I was able to see the new user in the login menu, and then there appeared the new home directory in the filesystem. So my above comment was not about any real problem. Dec 4, 2012 at 21:56
-
I created a user
sudo dscl localhost -create /Local/Default/Users/envguard
but when I want to change owner of a file usingchown envguard:staff filename
I get the errorchown: envguard: illegal user name
. Why is MacOS crappy like that when unix did it well for a hundred of years.... Apr 20, 2022 at 15:42
dscl
? Maybe? A starting point for looking, I've never tried it myself. You'll note that your user account is completely absent from /etc/passwd. You might have luck looking at the OSX Server docs.