Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create user for running a daemon, on MacOS X?

What is the right way to create a user on MacOS X, from the command line, which will be used only for running a sever application? For example, there is already the '_www' user for Apache httpd, but for the new application I want it to be using its own account.

like image 218
Andre M Avatar asked Sep 27 '15 17:09

Andre M


1 Answers

There is no "adduser" command. The Mac approach is to use the dscl command, which is the "Directory Service Command Line Utility". Directory Services is similar in notion to LDAP, but is a different solution.

The examples below will use 'mydaemon' as the intended account, though typically you would use a value matching the name of your daemon application.

All daemon users are prefixed with an underscore, such as _www.

To list the attributes on an existing entry:

   sudo dscl . -read /Users/_www

Before creating a user, create a group choosing an unused group id (here we chose 300):

   sudo dscl . -create /Groups/_mydaemon
   sudo dscl . -create /Groups/_mydaemon PrimaryGroupID 300

Once done, we create a new user (we use the same id as we did for the group, that won't be using a shell:

   sudo dscl . -create /Users/_mydaemon UniqueID 300
   sudo dscl . -create /Users/_mydaemon PrimaryGroupID 300
   sudo dscl . -create /Users/_mydaemon UserShell /usr/bin/false

The above is based on reading up on various information sources and verifying the process myself. One reference, that I found useful is:

http://minecraft.gamepedia.com/Tutorials/Create_a_Mac_OS_X_startup_daemon

Note, there is also GUI version of dscl (location based on MacOS X 10.10):

/System/Library/CoreServices/Applications/Directory\ Utility.app/

like image 162
Andre M Avatar answered Oct 19 '22 22:10

Andre M