デーモン用のアカウントを作りたいと思った時に,システム環境設定->アカウントから作成するといろいろ余計なものもくっついてくるので,もう少しカスタマイズできる方法ないのかなと思って探していた.まあクライアントマシンでテスト用にデーモン起動させたいだけなので,rootで起動しても問題ないのだけども...
Max OS X 10.5だとOpenDirectoryというディレクトリサービス経由でユーザ管理をしており,そこにアクセスすればいいっぽい.アクセスするにはdsclというコマンドラインユーティリティがある.
$ dscl . list /Users _amavisd _appowner _appserver _ard _atsserver ... $ dscl . read /Users/_www AppleMetaNodeLocation: /Local/Default NFSHomeDirectory: /Library/WebServer Password: * PrimaryGroupID: 70 RealName: World Wide Web Server RecordName: _www www RecordType: dsRecTypeStandard:Users UniqueID: 70 UserShell: /usr/bin/false
デーモンの場合は_で始まるユーザ名になっているらしいので,dummyというデーモン用アカウントを作りたい場合は以下のようになるのかな
$ dscl . create /Groups/_dummy $ dscl . create /Groups/_dummy PrimaryGroupID <GID> $ dscl . create /Groups/_dummy RealName <NAME> $ dscl . append /Groups/_dummy RecordName dummy $ dscl . create /Users/_dummy $ dscl . create /Users/_dummy UniqueID <UID> $ dscl . create /Users/_dummy PrimaryGroupID <GID> $ dscl . create /Users/_dummy RealName <NAME> $ dscl . create /Users/_dummy UserShell /usr/bin/false $ dscl . create /Users/_dummy NFSHomeDirectory /var/empty $ dscl . append /Users/_dummy RecordName dummy
UIDとかGIDは設定する前に既に存在しないかチェックしないと危険.
$ dscl . search /Users UniqueID 70 _www UniqueID = ( 70 ) $ dscl . search /Groups PrimaryGroupID 70 _www PrimaryGroupID = ( 70 )