dsclコマンドの使い方
[]

2009.02.08

このエントリーをはてなブックマークに追加
はてなブックマーク - dsclコマンドの使い方

prerequisite

  • Mac OS X

refs

about

dscl
Directory Service command line utility

LeopardではそれまでのNEXTSTEP由来のNetInfoから脱却して独自のOpen Directoryというサービスでユーザの管理や認証などを行なう。

MovableTypeでサイトを作ってる時に、管理画面から生成したファイルが、 apache権限(www)になるので、ローカルから編集しようとたとき、 パーミッションがないため、編集できないので、 回避策として、自分のユーザをwwwグループに追加する。 dsclコマンドで行なった編集は即座にシステムに反映される。

なぜwwwといったデーモン系にはwwwと_www、2つのレコード名があるのか疑問。

manページによると、コマンド(e.g. -list)の先頭のダッシュは付けても付けなくてもよいみたいだ。

インタラクティブモードで起動

$ sudo dscl
Entering interactive mode... (type "help" for commands)
 >

list コマンド

ルート直下のレコード一覧:

$dscl . -list /

AFPServer
AFPUserAliases
Aliases
AppleMetaRecord
...(以下略)

ユーザ一覧を表示:

$dscl . -list /Users

_amavisd
_appowner
_appserver
_ard
_atsserver
...(以下略)

グループ一覧:

$dscl . list /Groups
_amavisd
_appowner
_appserveradm
_appserverusr
_ard
_atsserver
_calendar
_carddav
_clamav
...(以下略)

read コマンド

wwwユーザのレコードの内容を出力:

$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

wwwグループの内容確認:

$ sudo dscl . -read /Groups/www
AppleMetaNodeLocation: /Local/Default
GeneratedUID: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000046
Password: *
PrimaryGroupID: 70
RealName:
 World Wide Web Server
RecordName: _www www
RecordType: dsRecTypeStandard:Groups

readall コマンド

$ sudo dscl . readall /Users
AppleMetaNodeLocation: /Local/Default
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000053
NFSHomeDirectory: /var/virusmails
Password: *
PrimaryGroupID: 83
RealName:
 AMaViS Daemon
RecordName: _amavisd amavisd
RecordType: dsRecTypeStandard:Users
UniqueID: 83
UserShell: /usr/bin/false
-
AppleMetaNodeLocation: /Local/Default
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000057
NFSHomeDirectory: /var/empty
Password: *
PrimaryGroupID: 87
RealName:
 Application Owner
RecordName: _appowner appowner
RecordType: dsRecTypeStandard:Users
UniqueID: 87
UserShell: /usr/bin/false
-
(...以下省略...)

search コマンド

$ dscl . search /Users UniqueID 70
_www    UniqueID = (
    70
)
$ dscl . search /Users RecordName www
_www    RecordName = (
    "_www",
    www
)

change コマンド

あるユーザの所属グループをstaffからwwwに変更する:

$sudo dscl . change /Users/[ユーザ名] PrimaryGroupID 20 70

本当に変わったか確認:

$id [ユーザ名]
uid=501([ユーザ名]) gid=20(staff) groups=70(_www),102(com.apple.access_ssh),98(_lpadmin),101(com.apple.sharepoint.group.1),81(_appserveradm),79(_appserverusr),80(admin)

append コマンド

wwwグループにユーザを追加:

$sudo dscl . -append /Groups/_www GroupMembership [追加したいユーザ]

本当に追加されたか確認:

$ dscl . -read /Groups/_www
AppleMetaNodeLocation: /Local/Default
GeneratedUID: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000046
GroupMembership: [追加したいユーザ]
Password: *
PrimaryGroupID: 70
RealName:
 HTTP Users
RecordName: _www www
RecordType: dsRecTypeStandard:Groups
SMBSID: S-1-5-21-170

delete コマンド

wwwグループの[ユーザ]を削除:

$ sudo dscl . delete /Groups/_www GroupMembership [削除したい値]

create コマンド

グループ作成:

$ sudo dscl . create /Groups/munin PrimaryGroupId 4949

ユーザ作成:

$ sudo dscl . create /Users/munin UniqueId 4949
$ sudo dscl . create /Users/munin PrimaryGroupId 4949
$ sudo dscl . create /Users/munin UserShell /bin/false
$ sudo dscl . create /Users/munin NFSHomeDirectory /nohome
$ sudo dscl . create /Users/munin RealName Munin

グループにユーザを追加:

$ sudo dscl . create /Groups/munin GroupMembership munin

hadoop ユーザーを追加する

まず以下のようにユーザーIDとグループIDは被らないようにするために現在使用中のIDを調べる。

現在使用中のグループIDを調べる:

$ sudo dscl . -list /Groups PrimaryGroupID | cut -c 32-38 | sort -rn

現在使用中のユーザーIDを調べる:

$ sudo dscl . -list /Users UniqueID | cut -c 23-28 | sort -rn

hadoop ユーザーを追加する:

$ sudo dscl . -create /Groups/_hadoop PrimaryGroupID <空いているグループID>
$ sudo dscl . -append /Groups/_hadoop RecordName hadoop
$ sudo dscl . -create /Users/_hadoop UniqueID <空いているユーザーID>
$ sudo dscl . -create /Users/_hadoop RealName "Hadoop Service"
$ sudo dscl . -create /Users/_hadoop PrimaryGroupID <空いているグループID>
$ sudo dscl . -create /Users/_hadoop NFSHomeDirectory /var/lib/hadoop
$ sudo dscl . -create /Users/_hadoop Password "*"
$ sudo dscl . -append /Users/_hadoop RecordName hadoop
$ sudo /usr/sbin/createhomedir -b -u hadoop

muninグループとユーザの作成

// muninのREADME.OSXより抜粋したdsclコマンドでのグループとユーザーの作成。

bash-3.2# dscl . create /Groups/munin PrimaryGroupId 4949
bash-3.2# dscl . create /Users/munin UniqueId 4949
bash-3.2# dscl . create /Users/munin PrimaryGroupId 4949
bash-3.2# dscl . create /Users/munin UserShell /bin/false
bash-3.2# dscl . create /Users/munin NFSHomeDirectory /nohome
bash-3.2# dscl . create /Users/munin RealName Munin
bash-3.2# dscl . create /Groups/munin GroupMembership munin

bash-3.2# dscl . -read /Users/munin
dsAttrTypeNative:PrimaryGroupId: 4949
dsAttrTypeNative:UniqueId: 4949
AppleMetaNodeLocation: /Local/Default
GeneratedUID: 2A56D7FE-00D0-4B81-BAE7-F842E675031D
NFSHomeDirectory: /nohome
RealName: Munin
RecordName: munin
RecordType: dsRecTypeStandard:Users
UserShell: /bin/false

bash-3.2# dscl . -read /Groups/munin
dsAttrTypeNative:PrimaryGroupId: 4949
AppleMetaNodeLocation: /Local/Default
GeneratedUID: F53ACCA3-2CB9-440F-84A6-E2FADC44CB9E
GroupMembership: munin
RecordName: munin
RecordType: dsRecTypeStandard:Groups

ユーザー削除(例)

$ sudo dscl . delete /Users/jenkins
$ sudo rm -rf /Users/Shared/Jenkins

関連記事はありません。

Leave a Reply