大学の研究室なら当然ながらMac[Pro|Mini|Book[Pro|Air]]がある。
これらMacOSXマシンをActiveDirectoryに参加させて、ユーザアカウントの統一管理を行ってみる
手元にあるのはMacOSX 10.7.5(Lion)である。名前とかIPは下記のようにした
コンピュータ名 | IPアドレス | DNS上でのホスト名 | 参照DNSサーバ | 検索ドメイン |
lion | 192.168.0.64 | lion.sybyl.local | 192.168.0.3 | sybyl.local |
*コンピュータ名は、「システム環境設定」->「共有」の「コンピュータ名」で定義
*IPは、「システム環境設定」->「ネットワーク」から手入力で定義
*DNSと検索ドメインは、「システム環境設定」->「ネットワーク」->「詳細...」->「DNS」タブで定義
まずはMacOSXマシンをActiveDirectoryに参加させる
「システム環境設定」->「ユーザとグループ」を開く
開いた「ユーザとグループ」画面で左下の鍵をクリックして、管理者によるパスワード認証されると
編集可能な状態になる。ここで「ネットワークアカウントサーバ」欄の「接続...」をクリックする
すると接続するサーバを問われ、ここのActiveDirectoryのドメイン「sybyl.local」を入力する。
入力と同時に、このドメインコントローラーへの接続認証が求められる。
「サーバ」にはドメイン名「sybyl.local」
「AD管理ユーザ」には「administrator」
「AD管理パスワード」には provision時のパスワードを入力する
*クライアントコンピュータIDは、ドメインに参加させたいこのMacである
所定項目の入力が終わったら「OK」ボタンをクリックする
参照先として「SYBYL」ドメインが追加された
windowsのリモートサーバ管理ツールの「ActiveDirectoryユーザーとコンピューター」からマシン「lion」の登録が確認できる
加え、マシン「lion」のプロパティーを開いて「オペレーティングシステム」タブを開くと
となっている。
MacOSXマシンをドメインコントローラーに参加させたが、実際の所、この状態では
uid/gidらは正しく引いてくれていない。
lion:~ supervisor$ id illya
uid=1055295333(illya) gid=1246082528(SYBYL\Domain Users) groups=1246082528(SYBYL\Domain Users),
403(com.apple.sharepoint.group.2),12(everyone),62(netaccounts),1214755721(SYBYL\fate)
lion:~ supervisor$
原因はuid/gidのマッピングが正しくないため。
それを調整するには再度「システム環境設定」->「ユーザとグループ」を開き、下記「編集...」ボタンをクリックする
表示された画面から「ディレクトリユーティリティーを開く...」ボタンをクリックする。
表示された「ディレクトリユーティリティー」画面で、
名前「Active Directory」を選択して「鉛筆アイコン」をクリックする
既に参加しているドメイン情報の個所に「詳細オプションの表示」を展開して、
「ユーザ環境」タブは既定の「ローカル・ホームディレクトリを起動ディスクに設定」「ActiveDirectoryからUNCパスを使用してネットワークホームを設定」(使用するプロトコル:smb)「デフォルトのユーザシェル(/bin/bash)」を有効にする
そして、「マッピング」タブでは
UIDは「uidNumber」、ユーザGIDを「gidNumber」、グループGIDを「gidNumber」にマッピングし直す。
3番目の「管理」タブは規定の「フォレスト内の任意のドメインから認証」を有効にする
ここで「OK」ボタンを押して完了となる。
先ほどのuidとgidは、
lion:~ supervisor$ id illya
uid=1002(illya) gid=2000(SYBYL\fate) groups=2000(SYBYL\fate),403(com.apple.sharepoint.group.2),12(everyone),62(netaccounts)
lion:~ supervisor$
とドメインコントローラーで定義したuid/gidが引き継げられた。
実際にログインを試みてみる。
ログイン画面が変更され
とされ、「その他のユーザ...」を選びドメインコントローラーに存在するユーザでログイン操作してみる。
ログイン後、ターミナルを立ち上げて、調べると
Last login: Sat Jan 16 02:30:40 on console
lion:~ illya$ pwd
/Users/illya
lion:~ illya$
lion:~ illya$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 39Gi 10Gi 29Gi 26% /
devfs 183Ki 183Ki 0Bi 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% /net
map auto_home 0Bi 0Bi 0Bi 100% /home
map -fstab 0Bi 0Bi 0Bi 100% /Network/Servers
//illya@c/home 53Gi 19Gi 34Gi 37% /Volumes/home
lion:~ illya$
lion:~ illya$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
map -fstab on /Network/Servers (autofs, automounted, nobrowse)
//illya@c/home on /Volumes/home (smbfs, nodev, nosuid, mounted by illya)
lion:~ illya$
とホームフォルダは一応mountされているが(/Volumes/home)、そこがホームディレクトリではなく、/Users/<ユーザ名>となっている。
ホームフォルダとは、sambaで規定した場所で「ActiveDirectoryユーザとコンピュータ」で定義される。
*sambaの[homes]機能を使ってないので \\c\home\<ユーザ名> となってます
/Users/<ユーザ名>をホームディレクトリにせず、Linuxと同様に共有された/home/<ユーザ名>をホームディレクトリにするにはsambaで定義したホームフォルダを継承させるようにする。MacOSX側の設定の際に「ローカル・ホームディレクトリを起動ディスクに設定」を無効にするとそれができる。
そうすると、
Last login: Sat Jan 16 02:49:27 on console
lion:~ illya$ pwd
/home/illya
lion:~ illya$ df
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/disk0s2 82206864 21789376 59905488 27% /
devfs 363 363 0 100% /dev
map -hosts 0 0 0 100% /net
map auto_home 0 0 0 100% /home
map -fstab 0 0 0 100% /Network/Servers
//illya@c/home/illya 110645248 40103200 70542048 37% /home/illya
lion:~ illya$
lion:~ illya$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
map -fstab on /Network/Servers (autofs, automounted, nobrowse)
//illya@c/home/illya on /home/illya (smbfs, nodev, nosuid, automounted, nobrowse, mounted by illya)
lion:~ illya$
となる。
これでアカウントもホームディレクトリ(/home/<ユーザ名>)もMacOSX側と共有できるようである。
ただし、shellが事前指定なので要注意。
Linuxなら単にgetent passwdですむのだが、MacOSXでは違って、
ローカルマシンのアカウント情報は
lion:~ supervisor$ dscl . -ls /Users
で行う。AcitiveDirectoryからのユーザは
lion:~ supervisor$ dscl "/Active Directory/SYBYL/All Domains" -ls /Users
administrator
guest
illya
krbtgt
lion:~ supervisor$
で得られる。そしてユーザの詳細は
lion:~ supervisor$ dscl "/Active Directory/SYBYL/All Domains" -read /Users/illya
:
dsAttrTypeNative:cn: illya
:
AltSecurityIdentities: Kerberos:illya@sybyl.local
AppleMetaNodeLocation:
/Active Directory/SYBYL/sybyl.local
AppleMetaRecordName: CN=illya,CN=Users,DC=sybyl,DC=local
AuthenticationAuthority: ;Kerberosv5;;illya@SYBYL.LOCAL;SYBYL.LOCAL; ;NetLogon;illya;SYBYL
Comment: 天の杯・ホムンクルス
EMailAddress: xxxxx@xxx.xxxx.xx
FirstName: Illyasviel
:
NFSHomeDirectory: /Users/illya
OriginalHomeDirectory: <home_dir><url>smb://c/home/illya</url><path>/</path></home_dir>
:
SMBHome: \\c\home\illya
SMBHomeDrive: z
:
lion:~ supervisor$
と得られる。