Mac を Active Directory に参加させる

Active Directory はなかなかいい。シングルサインオンなどどうでもいいようなことに思えるかもしれないが、やはり、いい。しばらく使っていると、無駄にパスワードを入力するという行為に耐えられなくなる。共用マシンの管理者だったりすると、利用者ごとにアカウントを用意して、仮パスワードを作って、それを連絡して、という面倒なことをしなくてもよくなるのが非常に嬉しい。
というようにいいことずくめの Active Directory なのだが、Windows 以外のマシンを参加させるのは楽ではない。だが、不可能ではない。というか、MacActive Directory に参加させるのに今ようやく成功した*1。ちょっと嬉しいので、備忘という名目で手順を日記に書いておく。OS のバージョンは 10.5.2*2 だ。

参加申請

当たり前だが、Active Directory には勝手には参加できない。事前にドメインの管理者に参加を申請しておく必要がある。

NTPの設定

Active Directory では Kerberos 認証が使われるので、ドメインコントローラに NTP で同期するようにしておかなければならない。「システム環境設定」の「日付と時刻」を開き、「日付と時刻を自動的に設定」の欄にドメインコントローラの FQDN を入力する。ドメインコントローラが複数ある場合には、一番近いものにしておくのがいいと思う。

マシン名の設定

「システム環境設定」の「共有」を開き、「コンピュータ名」にマシンの名前*3を入力する。FQDN ではなくローカル名。末尾の「.local」なども付けない。
いま気付いたが、「システム環境設定」の「ネットワーク」で「詳細」の「WINS」を見てみたところ、「NetBIOS 名」もこのマシン名になっていた。設定した覚えはないので自動的になったのだと思うが、もし違う名前になっているのなら、正しいマシン名にしておいた方がいいと思う。

/etc/krb5.conf の作成

これはイレギュラーかもしれないが、/etc/krb5.conf を作ってやらないと、後述する「ディレクトリユーティリティ」でエラー*4が発生してしまった。kinit が成功しない*5ようなら、こういう内容の /etc/krb5.conf を用意する:

[libdefaults]
 default_realm = YOURREALM.EXAMPLE.COM
 dns_lookup_kdc = true

Active Directory のバインド

ディレクトリユーティリティ」を起動する。ここで、焦って「+」ボタンを押してはいけない。どう見ても「+」ボタンでディレクトリサーバを追加していくようにしか見えない UI だが、そうではない。ここは、正しく設定されたディレクトリサーバの一覧が自然に表示されていく場所なのだ。
そういうわけで、まずは「詳細設定を表示」を押す。上の方にいろいろとアイコンが出てくるので、「サービス」を選ぶ。続いて、「Active Directory」にチェックを入れ、鉛筆のアイコンをクリックする。
Active Directoryドメイン」には Active Directory のレルムを入力する。レルムなので全部大文字で入力したが、いま見たら小文字になっていた。多分、どっちでもいいんだろう。「コンピュータ ID」の方には、マシン名を入れる。FQDN ではなくローカル名だ。「詳細オプション」はデフォルトのままでいい*6マッピング」にあるチェックボックスにチェックを入れてみたら、全員の UID が同じ値になってしまったりといった問題に遭遇した。ディレクトリユーティリティのヘルプによればデフォルトのままで UID をいい感じに生成してくれるらしいので、それに任せておくのがいいと思う:

ディレクトリユーティリティのヘルプより

Active Directory アクセスについて

Windows 2000 以降のサーバの Active Directory ドメイン内の基本的なユーザアカウント情報にアクセスするように Mac OS X を構成することができます。この操作は、「ディレクトリユーティリティ」の Active Directory プラグインを使って行います。Active Directory プラグインは、「ディレクトリユーティリティ」の「サービス」パネルにリストされています。

〜中略〜

Active Directory プラグインでは、Active Directory ユーザアカウントの標準属性から Mac OS X 認証に必要なすべての属性が生成されます。プラグインは、パスワード変更、失効、強制変更、セキュリティオプションなどの、Active Directory 認証方式もサポートしています。

〜中略〜

Active Directory プラグインにより、Active Directory ドメインにおけるユーザアカウントの GUID(Globally Unique ID)に基づいて、一意のユーザ ID とプライマリグループ ID が動的に生成されます。生成されるユーザ ID とプライマリグループ ID は、異なる Mac OS X コンピュータへのログインにアカウントが使用される場合であっても、各ユーザアカウントについて同一です。

以上の入力を完了したら、「バインド」ボタンを押す。「ユーザ名」と「パスワード」には、Active Directory での自分のアカウントとパスワードを入れる*7。このとき、アカウントは「ユーザ名@YOURREALM.EXAMPLE.COM」の書式にする。Windows で使われる「ドメイン名\ユーザ名」ではダメだ。「コンピュータ OU」は、デフォルトで入っている値のままにしておく。「認証に使用」と 「コンタクトに使用」は両方ともチェックしておく。

そしてログイン

以上で、目出たく MacActive Directory に参加させることができた。これでもう、Active Directory のアカウントとパスワードで Mac にログインできる*8はずだ。

微妙に残った問題

Active Directory のユーザがログインした場合、Kerberos 認証の結果として TGT が得られている((klist コマンドで確かめられる。))。なので、他の Windows マシンが公開している CIFS 共有へのアクセスではパスワードは尋ねられないはずだ。実際、大概はそういう動作になっている。だが、一部の CIFS 共有では、認証に失敗してしまいパスワードを入れなければならない。
癪に障るので何とかしたいところだが、今日はもう疲れたのでこの辺にしておく。

*1:昨日の夜から始めてやっとできた。

*2:10.5.1 以前の Leopard では、Active Directory への参加 (バインド) に不具合があるらしい。10.5.2 でしか試していないので詳細は分からないが。

*3:ドメイン管理者が然るべき名前を指定してきているはず。

*4:「不明なエラー」とか、そんな内容だったと思う。

*5:「指定されたレルムの KDC を見つけられない」的なことを英語で言ってくる。

*6:今回セットアップした Mac はデスクトップマシンだったが、ラップトップの場合はモバイルアカウントを作るようにした方がいいのかもしれない。

*7:場合によっては、ドメイン管理者から専用のユーザ名とパスワードを案内されるかもしれない。

*8:ユーザ名とパスワードを入力してログインする設定に変更しておくこと。