NetInfo とは,
NeXT STEP で用いられてきた NIS (YP) に代わるディレクトリサービスで,
複数のデータベースを階層的に配置することが可能です.
NetInfo とそのコマンドの詳細に関しては,
MacOS X Beta の NetInfo のページを御覧下さい.
osxserver
というホストに,
4階層からなる NetInfo データベースを構築します.
それらのデータベース名称と, そこに含まれるデータベースの中身は,
以下のように設定します.
例えば, 特定の個人だけが利用するホストで,
プリンタ設定や DNS の設定だけをしたい場合には,
local データベースの上位として level-0 を指定することにより,
余分なユーザ情報を受け付けなくて済みます.
また, 各種フリーソフトウェアを(例えば Solaris などの)サーバワークステーション上にインストールしておき,
それらを利用したい場合には, local データベースの上位として level-1 を設定すれば,
NFS により, サーバ上にあるソフトウェアを利用することが可能になります.
本来は, Solaris などの全体のサーバ上に NetInfo サーバを置くことが理想的です. しかし, Solaris 上で動作する NetInfo のパッケージが存在しないため, 取りあえず, MacOS X が動作しているホストを NetInfo サーバとして設定します.
# nidomain -m level-0 # nidomain -m level-1 # nidomain -m level-2 # nidomain -m level-3
nidomain
は NetInfo データベースを作成したり, 削除したりするコマンドです.
これらのコマンドにより, level-0
から level-3
までの4つの
NetInfo データベースが作成できました.
level-0 | | level-1 | | level-2 | | level-3と階層構造に配置する設定を行います.
各データベースには master
と呼ばれるプロパティが必要であり,
これは, 各データベースのマスターサーバのホスト名と, そのデータベース名を指定します.
NetInfo も NIS と同様にマスターサーバのコピーを持ち,
それを他のホストに提供するサーバを構築することが出来ます.
(NIS で言うところの slave server ですが, NetInfo では clone server と呼びます.
クローンサーバを作成するには, nidomain
コマンドを用います.)
master
プロパティは各クローンサーバがマスターサーバを識別するために用いられます.
NetInfo データベースの階層構造を決定するためのプロパティが serves
で,
machines
タグの中に記述されます.
具体的に上のデータベース配置を行うためには,
各データベースに以下のようなプロパティを設定します.
/ master OSXServer/level-0 /machines/OSXServer serves ./level-0 localhost/level-1 XXX/localこの設定を実現するためのコマンド群:
# niutil -t -createprop localhost/level-0 / master OSXServer/level-0 # niutil -t -createprop localhost/level-0 /machines/OSXServer serves \ ./level-0 localhost/level-1 XXX/local
/ master OSXServer/level-1 /machines/OSXServer serves ../level-0 ./level-1 localhost/level-2 XXX/localこの設定を実現するためのコマンド群:
# niutil -t -createprop localhost/level-1 / master OSXServer/level-1 # niutil -t -createprop localhost/level-1 /machines/OSXServer serves \ ../level-0 ./level-1 localhost/level-2 XXX/local
/ master OSXServer/level-2 /machines/OSXServer serves ../level-1 ./level-2 localhost/level-3 XXX/localこの設定を実現するためのコマンド群:
# niutil -t -createprop localhost/level-2 / master OSXServer/level-2 # niutil -t -createprop localhost/level-2 /machines/OSXServer serves \ ../level-1 ./level-2 localhost/level-3 XXX/local
/ master OSXServer/level-3 /machines/OSXServer serves ../level-2 ./level-3 localhost/level-4 XXX/localこの設定を実現するためのコマンド群:
# niutil -t -createprop localhost/level-3 / master OSXServer/level-3 # niutil -t -createprop localhost/level-3 /machines/OSXServer serves \ ../level-2 ./level-3 localhost/level-4 XXX/local
Tag | Property | Contents | |
/ | master | hostname/database_name | そのデータベースのマスターサーバを指定 |
/machines/hostname | serves | hostname/level-X | 上位データベースを指定 |
./level-X | 自身のデータベースを指定 | ||
hostname/level-X | 接続してくる下位ホストのデータベースを指定 |
すなわち,
OSXServer
が上位データベースと自身のデータベースをサービスするホストであることを示し,
一方, そのデーターベースに対して, localhost
の下位データベースが接続することを許可しています.
ここで, それぞれの serves
プロパティに書かれている XXX/local
という記述は,
実際には, XXX
の部分に他のホスト名が書かれ,
そのホストの local データベースからの接続を許可する設定を行います.
MacOS X Public Beta とは異なり, MacOS X では,
インストール時には他のホストの NetInfo データベースを参照しない設定となっています.
そのため, "Directory Service" を有効にする必要があります.
これは, "Applications/Utilities" 内にある "Directory Service" を起動し,
NetInfo を有効にすることで実現できます.
"Directory Service" では,
という3つの方法のいずれかで上位 NetInfo データベースを指定することが出来ますが,
Broadcast や DHCP を用いる方法では, 上位データベースとして
"network" という名前を持つデータベース以外を指定することが出来ません.
そこで, 今回は「特定のホストを指定する」という方法を用います.
すなわち, この部分に OSXServer
の level-3 データベースを指定して,
ホストを再起動することで, local データベースの上位データベースに
OSXServer
の level-3 データベースを持ってくることが出来ます.
なお, "Directory Service" で特定のホストを指定するためには,
そのホストの「ホスト名」ではなく, 「IPアドレス」を指定した方が安全です.
なぜなら, DNS 自身を NetInfo を用いて設定しようとしているため,
「ホスト名」では NetInfo の起動時に正しく検索が行われない可能性があるためです.
また, この設定内容は,
/var/db/SystemConfiguration/preferences.xml
の中に,
NetInfo->BindingMethods->Manual NetInfo->ServerAddresses->133.6.XXX.XXX NetInfo->ServerTags->level-3
として格納されます.
以下では各データベースにデータを設定していきます.
各データベースには root の password エントリをいれておかないと,
NetInfo Manager を開いたときに Warning Dialog が発生してしまいます.
そのため, 以下の操作を行います.
# nidump passwd -t localhost/local | grep "^root" > /tmp/passwd # niload -t passwd localhost/level-0 < /tmp/passwd # niload -t passwd localhost/level-1 < /tmp/passwd # niload -t passwd localhost/level-2 < /tmp/passwd # niload -t passwd localhost/level-3 < /tmp/passwd
第1行めは, local データベースに存在する root ユーザのエントリを取得して,
/tmp/passwd
に保存します.
それ以後の4つのコマンドで, 各データベースに対して root ユーザのエントリを作成しています.
DNS の設定, すなわち resolv.conf の設定を level-0 データベースに書き込みます. 書き込むべき内容は,
domain math.nagoya-u.ac.jp search math.nagoya-u.ac.jp nameserver 133.6.130.5 nameserver 133.6.130.1
とします. そのためには, 以下のコマンドを利用します.
# niutil -t -create localhost/level-0 /locations/resolver # niutil -t -createprop localhost/level-0 /locations/resolver nameserver 133.6.130.5 133.6.130.1 # niutil -t -createprop localhost/level-0 /locations/resolver domain math.nagoya-u.ac.jp # niutil -t -createprop localhost/level-0 /locations/resolver search math.nagoya-u.ac.jp
この段階で設定内容をみると, 以下のようになっています.
# nidump resolv.conf -t localhost/level-0 domain math.nagoya-u.ac.jp serach math.nagoya-u.ac.jp nameserver 133.6.130.5 nameserver 133.6.130.1
さらに, resolver の検索順序を設定します. ホスト名を検索する方法としては,
/etc/hosts
に書かれたもの. FFAgent
NetInfo
の情報. NIAgent
DNS
の情報. DNSAgent
NIS
の情報. NISAgent
を, どの順序で検索するかを指定することが出来ます.
ここでは, FFAgent, NIAgent, DNSAgent
の順で検索することを指定します.
そのためには,
# niutil -t -create localhost/level-0 /locations/lookupd/hosts # niutil -t -createprop localhost/level-0 /locations/lookupd/hosts LookupOrder FFAgent NIAgent DNSAgent
と指定します.
MacOS X では, ntpd
を利用することにより,
NTP サーバと時刻の同期をとることが可能です.
この機能を利用するには, /etc/hostconfig
の TIMESYNC
を -YES-
にする必要があります.
さらに, 以下の用法で NetInfo データベースに NTP サーバを指定します.
# niutil -t -create localhost/level-0 /config/ntp # niutil -t -createprop localhost/level-0 /config/ntp server timekeeper.math.nagoya-u.ac.jp
ここでは, NTP サーバとして timekeeper.math.nagoya-u.ac.jp
というホストを指定しています.
MacOS X におけるプリンタの利用は結構面倒ですが,
取りあえず, 通常の UNIX における /etc/printcap
に相当する情報を設定します.
通常 /etc/printcap
は以下のようなフォーマットをしています.
(これは, print_host のプリンタ 2F
を利用する,
リモートプリントの設定です.)
2F|2f:\ :lp:\ :rm=print_host:\ :sd=/var/spool/lpd/2F:\ :mx=#0:\ :rp=2F:
このような printcap ファイルを設定すれば良いように思えるのですが,
MacOS X では, プリンタエントリの "|" を正しく認識してくれません.
そのため, 上のような設定, すなわち, このプリンタを 2F
でも 2f
でも認識させるためには,
2F:\ :lp:\ :rm=print_host:\ :sd=/var/spool/lpd/2F:\ :mx=#0:\ :rp=2F: 2f:\ :lp:\ :rm=print_host:\ :sd=/var/spool/lpd/2F:\ :mx=#0:\ :rp=2F:
のように, プリンタエントリを分解した printcap を作成する必要があります. このようにして作成した printcap を利用して,
# niload -t printcap localhost/level-0 < printcap
とすることにより, NetInfo に printcap の設定が出来ます.
実際にプリンタを利用するためには,
という2つの方法があります.
(未完)
$Id: netinfo.html,v 1.6 2001-09-05 13:04:44+09 naito Exp $