第5回 OpenDirectoryUndocumented Mac OS X(2/3 ページ)

» 2007年07月12日 06時22分 公開
[白山貴之,ITmedia]

NetInfoの歴史的いきさつ

 まずは歴史的いきさつというべきか、NeXTSTEPではどうだったのかという点を説明したい。NeXTSTEPがリリースされた1980年代末、ミニコンとそれにつながる端末という垂直的・中央集権的なネットワークではない、各ユーザーのデスクトップに置かれたパワフルなUNIXワークステーションによる水平/分散的なネットワークというパラダイムへの移行が流行していた。

 中央集権的なミニコンと端末の場合、システム管理者が管理しなければならないのはその中央ホストの/etc/passwdただ1つだけで良かった。しかし、UNIXワークステーションによる分散的な環境の場合、ユーザー管理1つをとってもそれぞれのワークステーションの/etc/passwdを管理する必要があった。

NIS

 当時、UNIXワークステーションによる分散的な環境を推進していたSun Microsystems(以下、Sun)は、こうした問題を解決するためにNIS*というディレクトリサービスをいち早く提供していた。これは、中心となるNISサーバの/etc/passwdのみをメンテナンスし、各ワークステーションがNISサーバへアカウント情報を問い合わせることで同期を計るという仕組みである。ただ、数台から数十台といった部門レベルでは問題なく動作したのだが、より大きな、例えば全社レベルのネットワークを構築しようとしたときには少々能力不足の面があった。そのため、次世代のワークステーションではNISに代わるいっそう高度なネットワークレベルでのディレクトリサービスが求められており、各社がしのぎを削っていたのだ。

NetInfo

 そういった競合の中の1つが、NeXTSTEPに搭載されたNetInfoである(図1)。NetInfoは、NISと同じくSunRPC*ベースのディレクトリサービスを中心とするアカウント管理の枠組みだが、/etc/passwdなどのファイルをただテーブル化しただけのNISと異なり、配布する情報に階層構造を採用し、ユーザー情報やグループ情報などの決められた情報だけではなく任意のデータを格納できるようにしたのだ。さらに、NISが単一のサーバからしか情報を提供できないのに対し、この階層構造を持つデータベースそのものを階層構造で配置し、管理を分散できるようになっていた(図2-A)

図1 図1 NetInfoデータベースの構造。NetInfoデータベースの中はノードというデータが階層構造を構成している。すべてのノードがそれぞれプロパティを持ち、プロパティは0ないし1つ以上の値を持つ。ファイルシステムと異なり、ノードはディレクトリとして下にノードを持つと同時に、プロパティを持つことができる点に注意

 全社レベルで頂点のNetInfoサーバを構築し、さらに各部門/部署にそれぞれNetInfoサーバを構築したとしよう。NeXTSTEPは、まずローカルに存在する自分自身のNetInfoデータベースを検索、必要な情報がなかった場合は上位の、例えば部署レベルのNetInfoデータベースを検索、見つからなかった場合はさらに上位にある部門レベルのデータベースを参照という具合に、順番に検索していく。また、従業員や役員はトップレベルのNetInfoサーバに登録することで社内のどのワークステーションにも自由にログインでき、一方臨時アルバイトは該当部署のNetInfoサーバのみに登録すればほかの部署ではログインできないといったことが簡単に実現できた。

 この階層の検索はCライブラリ(Libc)レベルで実装されており、アプリケーション側では何も特別な処理を必要としない。後述のlookupdがこの検索を担当し、さらに情報のキャッシュを行い効率化を図っている。

 NetInfoのもう1つの特徴として、BOOTP*との統合*が挙げられる(図2-B)。NeXTSTEPは起動時にBOOTPによるIPアドレスの取得を行うが、このとき自動的に直近のNetInfoサーバを見つけ、これを上位NetInfoサーバとして接続、アカウント情報を参照する。さらに、ファイルサーバからNFSで提供されているホームディレクトリなどの自動マウントまで行う。このため、OSをインストールして再起動したら即運用可能になったのだ。

図2 図2 NetInfoの特徴

このページで出てきた専門用語

NIS

Network Information Serviceの略称。Sunが開発したユーザー管理システム。商用UNIXはもとより、フリーのUNIX系OSにも搭載されている。

SunRPC

RPCはRemote Procedure Callの略。リモートマシンに対して処理を実行させる仕組み。通信部分はもちろん、データを正規化することでエンディアンの問題を回避したり、関数のスタブを自動生成して開発の手間を省くツールなどを備えている。Sunが開発したものがSunRPCと慣用的に呼称されており、NISやNFSの基盤として用いられている。なお、MachのIPC/RPCではなくSunRPCを使っていることから分かるように、NetInfoはNeXTSTEPに特化した技術ではない。HP-UXやSolaris上で動作したこともあれば、Linux上で動作するNetInfoなども存在したとされている。

BOOTP

RFC951で制定された動的なIPアドレスの設定プロトコル。DHCPの基となった。配布したIPアドレスを回収する仕組みなどをBOOTPにつけ加えたものがDHCPである。

BOOTPとの統合

この統合のため、NeXTSTEPはもちろんRhapsodyからMac OS Xに到るまで、BOOTP/DHCPまわりは独自仕様のオンパレードとなっている。加えてMac OS Xの場合、NetBootも絡んでくるのでこれまた厄介なのだ。


関連キーワード

Apple | LDAP | Mac | Mac OS X | 認証 | パスワード | UNIX


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ