原文作者:pelaxa.com/
发布时间:2015年3月17日
在OS X上创建服务用户并不像在Linux系统上那样简单。 首先,useradd命令是不可用的。
因此,为了在OS X上执行同样的操作,请打开一个终端窗口并运行以下命令。在这个例子中,我将创建一个组和用户,以便运行MongoDB。
[korey@localhost ~]$ sudo dscl . -list /Users UniqueID
_amavisd 83
_appleevents 55
_appowner 87
_appserver 79
_ard 67
_assetcache 235
_astris 245
_atsserver 97
_avbdeviced 229
_calendar 93
_ces 32
_clamav 82
_coreaudiod 202
_coremediaiod 236
_cvmsroot 212
....
上面的命令列出了所有当前的用户以及他们的UID。这是必要的,这样我们就可以挑选一个低于500的未使用的ID(高于500的UID为普通用户)。你可以用/Groups代替/Users来运行同样的命令,得到一个组的列表。
首先,让我们为同名的用户创建一个组。
[korey@localhost ~]$ sudo dscl . -create /Groups/_mongo gid 300
[korey@localhost ~]$ sudo dscl . -create /Groups/_mongo RealName "Mongo DB Server Group"
[korey@localhost ~]$ sudo dscl . -create /Groups/_mongo passwd "*"
正如你所看到的,组的ID被设置为300,而密码被设置为 "*"。这是一个特殊的密码,不允许作为该组的用户登录。我不确定这是否有必要,但看看OS X上其他类似的组,这似乎是正确的方法。
现在,让我们创建这个用户,并确保它不会在登录屏幕上显示为一个用户。
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo uid 300
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo gid 300
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo NFSHomeDirectory /var/empty
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo UserShell /usr/bin/false
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo RealName "Mongo DB Server"
[korey@localhost ~]$ sudo dscl . -create /Users/_mongo passwd "*"
在这一点上,服务账户已经创建,其主要组别设置为我们刚刚创建的组别。设置shell和home文件夹是必要的,以确保该账户不会显示在登录屏幕上,并确保即使有人以该用户的身份登录,他们也不会有任何访问权限。再一次,这里的账户密码被设置为 "*",以便不允许登录。
如果你看看你的OS X机器上的/etc/passwd,你会注意到大多数服务账户都列在其中,但上述账户却没有。我不确定从长远来看这是否会有问题,但就所有的意图和目的而言,服务账户是按预期工作的。
当然,在我想出上述命令集之前,我搜索了很长时间,这里有一些帮助我的链接。