ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

MacOSX Leopard のユーザ作成・削除は dscl コマンド

Linux の様な useradd も groupadd も無い。
MacOSX Server は niutil (NetInfoManager) らしいけど、man はあるのにコマンドがどこにも無い。
もうダメだーと思ったら、google検索で 2ch の過去ログが引っかかってこのコマンドを発見。

dscl -- Directory Service command line utility



簡単な使い方。
グループ情報を操作するときは、 Users を Groups に変更すればOK。

dscl . -list /Users:ユーザ一覧

$ dscl . -list /Users
_amavisd
_appowner
_appserver
...
daemon
nobody
postgres
root
...

dscl . -read /Users/<ユーザ名>: ユーザ情報詳細

$ dscl . -read /Users/postgres
AppleMetaNodeLocation: /Local/Default
GeneratedUID: F24A7FD3-ACD4-4267-BF3B-C3275A4ECDA5
NFSHomeDirectory: /opt/local/var/db/postgresql83
Password: *
PrimaryGroupID: 500
RealName:
 PostgreSQL-83\ Server
RecordName: postgres
RecordType: dsRecTypeStandard:Users
UniqueID: 500
UserShell: /bin/sh

dscl . -read /Groups/<グループ名>: グループ情報詳細

$ dscl . -read /Groups/postgres
AppleMetaNodeLocation: /Local/Default
GeneratedUID: 2D36EA51-04B2-427D-BF85-96770E16ED6D
Password: *
PrimaryGroupID: 500
RealName: postgres
RecordName: postgres
RecordType: dsRecTypeStandard:Groups

sudo dscl . -create /Users/<ユーザ名>:ユーザ作成

$ sudo dscl . -create /Users/oracle
$ dscl . -read /Users/oracle
AppleMetaNodeLocation: /Local/Default
GeneratedUID: 2F2CE8F8-B8F3-41E9-A555-3150C16E5E15
RecordName: oracle
RecordType: dsRecTypeStandard:Users

作成済みのユーザに対して、後から設定を追加できる。

$ sudo dscl . -create /Users/oracle gid 0
$ dscl . -read /Users/oracle
AppleMetaNodeLocation: /Local/Default
GeneratedUID: 2F2CE8F8-B8F3-41E9-A555-3150C16E5E15
PrimaryGroupID: 0
RecordName: oracle
RecordType: dsRecTypeStandard:Users

特定の情報だけ削除する場合は -deleteオプションを使う。

$ sudo dscl . -delete /Users/oracle GeneratedUID
$ dscl . -read /Users/oracle
AppleMetaNodeLocation: /Local/Default
PrimaryGroupID: 0
RecordName: oracle
RecordType: dsRecTypeStandard:Users

sudo dscl . -delete /Users/<ユーザ名>: ユーザ削除

$ sudo dscl . -delete /Users/oracle
$ dscl . -read /Users/oracle
<dscl_cmd> DS Error: -14136 (eDSRecordNotFound)