Mac OS X を NIS 環境に統合する方法

原著者:Marcel Bresink

April 3, 2002 (v 1.8) 2002年4月7日完訳(谷口 崇典)


(訳注)この文書は、原著作者であるMarcel Bresink氏の許可を得て翻訳、公開するものです。日本語訳の作成には十分な注意を払っていますが、誤りや欠落ついての責任を負いません。しかし、誤りなどの指摘を歓迎します。また、この文書を利用したことに起因する損害に関する責任を原著作者と翻訳者は負いません。
原文は随時更新されていますが、この日本語訳の追随は私のリズムで行われています。悪しからずご了承ください。


この文書では様々なバージョンの Mac OS X を NIS クライアントにする方法を述べています。


序章

この文書の最新版の所在
この文書の各国語版について
適切な Mac OS X のバージョンについて
免責と権利者の明示
問い合わせについて

一般的な情報

NIS とは
NIS を使うと Mac OS X システムで私の権限は制限されますか?
Mac OS X での NIS に関する Apple の見解は?
NIS の基礎知識
Mac OS X は NIS server になりますか?
NIS の代わりになるものはありますか?

NIS の使い方

前準備
Mac OS X 10.0 で管理者権限を得る
設定ファイルのバックアップ
システムを変更することなく NIS の確認をする
確認に失敗したら
hostconfig file を編集する
NIS 参照を設定する
これらの変数が意味すること

インストールの確認

変更を有効にする
lookupd で詳細に診断する

automounter を使う

automounter とは
Mac OS X の制限
Mac OS X の automounter のオプションを変更する
NIS server の mount map と互換を図る
"net" オプションはなぜ重要か

developer preview versions での NIS

Mac OS X DP4 で NIS を使う
Rhapsody DR2 for Intel で NIS を使う

よくある質問とその回答(FAQ)

Mac OS X 10.0 で Group の参照を正しく行わない。
Mac OS X 10.1にアップデートをしたら NIS を使えなくなりました。どうして?
NISサーバに今どきのUnixをインストールしました。Mac OS X は接続できるのですが、NISアカウントでログインできません。
私がログインすると、Finderは全てのアプリケーションをフォルダで表示して、Dockはまともに動作しません。助けて!
NIS がごく短い時間しか動作しません。突然NISサーバとの接続が切られてしまいます。マシンがハングアップしてしまうのです。どうしたらいい?
私のシステムはどこかおかしいので起動途中にハングアップします。どうしたらいい?
NIS は正しく動作しているようです。でも NFS サーバに私がアクセスしようとすると "permission denied" というエラーが出てしまいます。
なぜ NetInfo のことを話しているの? Mac OS X Server をインストールするときには「使用しない」にしたよ。
NIS のユーザは "Mac OS" や "webpage_authors" といった、NIS データベースにないユーザグループのメンバーになれますか。それともこうしたユーザ情報を NetInfo データベースに複製する必要がありますか?
私は Mac OS X system 群の管理者グループ "wheel" のメンバーになりたいのですが、私はただの NIS ユーザでしかありません。
NIS はネットワークユーザを参照します。しかし、Mac OS X は home ディレクトリを自動的にマウントしません。
NIS は正しく有効になりました。しかし、何人かの NIS ユーザはまだ Mac OS X にログインできません。
Mac OS X 上で NIS を使うことについて、すでに知られている問題点はありますか?
shadow passwords は Mac OS X の NIS で動作しますか?
Mac OS X DP4 でものすごい量の ypbind errors に出くわしました。


 

序章

Mac OS X は Darwin を基礎としています。それは BSD 4.4 Unix オペレーティングシステムで「味付け」されています。 そして、他の UNIX システムのネットワークに簡単に統合することが出来ます。

コンピュータネットワークでは、異なるホストで管理データを共有する必要があります。ユーザの名前やアクセス権限などです。Mac OS X は通常 Apple の NetInfo テクノロジーを使い、ネットワークを介してこれらの情報を共有します。典型的な UNIX ネットワークでは、Network Information サービス(NIS)を使ってこれらの情報を供給しています。この文書では、Mac OS X が稼働しているマシンでNISを使うための疑問に答えようと思います。これで NetInfo が動作していない、Linux や SUN の Solaris といったファイルサーバに容易にアクセスすることが出来ます。


この文書の最新版の所在

この文書の最新版は world-wide web の次のURLで得ることが出来ます。 http://www.bresink.de/osx/nis.html


この文書の各国語版について

この文書は、フランス語日本語でも読むことができます。Vincent Hottier 氏と Guillaume Perrin 氏(フランス語版)と谷口 崇典氏(日本語版)の貢献です。彼らの尽力に感謝します。

ドイツ語版もあります。ドイツ語版と英語版だけが最新である保証がなされていることに注意してください。


適切なMac OS X のバージョンについて

この文書が対象にしているシステムバージョンは以下の通りです:

上述の全てのリリースを単に "Mac OS X" と呼称しています。Darwin のユーザにとってもこの文書は有用であると思います。

(*) 印のオペレーティングシステムは、Apple の非公開契約(non-disclosure agreement)に基づく内密のソフトウエアプロトタイプです。この文書に記載されている情報は、このソフトウエアで Apple が公開を認めている部分だけであり、プロトタイプライセンス(Prototype License)と機密保持契約(Confidentiality Agreement)の第4章に従い機密事項を排除しています。


免責と権利者の明示

この文書を作成するに当たって、記述内容の正確性を維持するために相当な配慮を行っていますが、著者は、この文書に記載された情報を利用することに起因する、またはこの文書の記載不備や誤りに起因する結果に対する責を負いません。

製品名などには必ずしも商標表示をしていません。登録商標や商標はそれを特定する目的に限り使用しています。 Apple, Mac, Macintosh, NeXT, NEXTSTEP, OPENSTEP, および NetInfo は Apple Computer, Inc. の登録商標です。 UNIX は、X/Open Company, Ltd. が独占的にライセンスしている登録商標です。 Sun, Sun Microsystems, Solaris, と NFS は Sun Microsystems, Inc. の登録商標です。 Linux は Linus Torvalds 氏の 登録商標です。 SuSE は Gesellschaft für Software- und System-Entwicklung GmbH. の登録商標です。 その他の商標および登録商標は関連各社の登録商標です。


問い合わせについて

このドキュメントに関する質問やコメント、間違いのご報告などは、Marcel Bresinkまで、お気軽にメールしてください。メールアドレスは、marcel _at_ bresink.de です(訳注:彼は日本語を理解しません。内容的な間違いや更新が無いかどうかを原文で確認し、英文で送付してください。日本語訳に関する問い合わせなどは、翻訳者の谷口まで日本語でどうぞ。メールアドレスは、t.taniguti _at_ mac.com です)。


一般的な情報

NIS とは

NIS は Network Information Service の略です。これは、Sun Microsystems社が開発した技術です。NIS はローカルなネットワークの複数のコンピュータで管理データを共有することを可能にします。このデータは一元管理されネットワークに供給されます。UNIX を基礎とするほとんどのオペレーティングシステムは、NIS を使っているか、または使うことが出来ます。

しかし、Mac OS X は標準では NIS を使うことは出来ません。代わりに NetInfo を利用します。これは NeXT 社が開発した管理情報を供給する技術です。エンドユーザにとっては、 NetInfo と NIS の違いはありません。これらは基本的に同じことをします。ただ、実装方法やコンセプトが異なっているにすぎません。

NIS の最初のバージョンは Yellow Pages (YP) と呼ばれていました。しかし幾つかの国でこれは電話帳の名前として登録されていたために(英国では、Yellow Pages は British Telecom plc の登録商標でした)、Sun Microsystems 社はその名前をあきらめざるを得ませんでした。そのため、NIS を構成しているユーティリティプログラムやシステム関数は今でも "yp" から始まっています。

多くのシステム管理者はネットワークに繋がるマシンにユーザ情報を供給するために NIS を利用しています。これによって、全てのコンピュータは各ユーザの名前とパスワード、home ディレクトリの場所などを理解することが出来ます。 NIS はまたローカルエリアネットワークの全てのマシンを利用できるようにするための IP アドレスといった情報源としても利用されます。

NIS の後継システムは、NIS+ とか NIS Version 3 と呼ばれています。NIS と NIS+ の主な違いの一つは、データを暗号化してすることでよりセキュアになったということです。また効率的に大規模なシステム(例えば、10,000人以上のユーザ情報)を運用できるようになったこともあげられます。現時点で、Mac OS X は NIS+ と使うことが出来ません。この文書では、NIS についてのみ記述しています。

自明な理由によりこの文書は NIS についての完全な導入情報を提供することは出来ません。NIS についての標準的な書籍は、Hal Stern: NFS and NIS, O'Reilly, Cambridge, 1995 です。


NIS を使うと Mac OS X システムで私の権限は制限されますか?

いいえ。NIS を正しく設定しているのなら、それは管理データとは別のものです。 あなたの NetInfo データベースと共存する情報を追加提供するだけです。NIS と NetInfo を同時に利用することになんら問題はありません。もちろん、二つのデータベースの情報の矛盾や不統一を回避することも出来ます。

Mac OS X で NIS を有効にした場合でも、あなたにあるローカルな権限は一切失われることはありません。例えば、NIS を有効にした後でも、あなたはそのマシンの管理者権限を保持したままです。NIS はあなたのシステムに情報を追加するだけです。 別の見方をするならば、あなたの NetInfo データはネットワークの NIS 権限よりも優位になることはありません。つまり、あなたがある一台の Mac OS X システム管理者(root)である場合に、あなたが自動的にネットワーク上にある他のマシンの管理者になることはないのです。

上述したように、あなたが NIS と Netinfo で矛盾した情報を持たせるべきではありません。例えば、あなたの user id があなたのローカルな NetInfo データベースで 502 であり、異なった別のユーザも、NIS の中で user id 502 を持っていたとしましょう。これはトラブルとセキュリティ上の問題の原因となりえます。UNIX のセキュリティと権限の一貫性をどのように維持するかということは、この文書の範囲を大きく逸脱してしまいますので、ここでそれについて述べることはしません。


Mac OS X での NIS に関する Apple の見解は?

Apple の Tech Info Library の article #24895JN で以下のように述べています。:

"Mac OS X Server を NIS クライアントとして設定することについて、Apple はサポートを行いません。"

しかし、これは Apple 社が NIS の利用を思いとどまらせようとしていることを意味するものではありません。Apple 社は単にその動作の保証をしたくないだけです。Apple 社からの公式な3つの文書が出ています。これらには MacOS X で NIS を扱うときの有用な助言が書かれています。

Mac OS X Serverのための導入として、

「TIL Article #24895JN: Mac OS X Server: Local NetInfo データベースを NIS ドメインにバインドする

があります。

TIL Article #106499JN: Mac OS X 10.1: NIS ドメインにローカル NetInfo データベースを接続する

は24895の文書をMac OS X 10.1用に改版したものです。

そしてもう一つが、

TIL Article #24902: Mac OS X Server: Lookupd Release Notes

です。

インターネット上の Mac OS X システム管理に関する議論を見ると、これらの文書があるにも係わらず幾つかの点で混乱と多くの疑問が放置されているがあることに気づくでしょう。これが今あなたが読んでいる文書を書く主な理由です。

Mac OS X Public Beta の頃から、Apple 社は NIS への統合についての部分的な文書を添付しています。Terminal のコマンドラインで以下のようにタイプすることで読むことが出来ます。

man lookupd

 

NIS の基礎知識

NIS をより良く理解するために、幾つかの専門用語を説明しておきます。NIS のデータベースを中心的に維持しているコンピュータを NIS マスタサーバと呼びます。これ以外のネットワーク上でこのデータベースを利用するコンピュータを NIS クライアント と呼びます。1台のコンピュータはクライアントと同時にサーバにもなることができます。この場合自分自身にデータベースへの問い合わせを行います。

データベースのバックアップコピーを提供するコンピュータもあります。これらは NIS スレーブサーバと呼ばれます。スレーブサーバはマスターサーバがダウンしてしまった、あるいはネットワークトラブル時に、その役割を肩代わりすることが出来ます。 パフォーマンスをよくするためにスレーブサーバを利用される場合もあります。マスターサーバの反応が遅すぎる場合、NIS クライアントはもっとよい反応を得るためにスレーブサーバに接続することが出来ます。NIS は自動的にすべてのスレーブサーバがデータベース情報を同期して更新していることを確認します。マスタサーバでデータベースに変更が加えられると、マスタサーバからスレーブサーバにデータが送りだされることで、常にデータベースの同期を保とうとします。小さなネットワークであれば、NIS スレーブサーバを用意する必要はありません。

異なったデータベースを利用する "NIS ゾーン" にローカルエリアネットワークを論理的に区分けすることが可能です。このゾーンをを NIS ドメインと呼びます。それぞれのドメインは NIS マスタサーバを必要とします。しかし、どのドメインのマスターであるマシンにも制限はありません。例えば、1台のマシンに2つの異なるドメインの2つのマスタサーバを行わせることができます。それぞれの NIS クライアントに自己がどのドメインに所属しているかを正しく知らせているかどうかを確認する必要があります。このためそれぞれの NISドメインは NISドメインネームを必ず持つ必要があります。ネットワークに単一のドメインしかない場合でも、この名前は必ず必要です。

NIS ドメインネームはインターネットドメインネーム(DNS)とは全く関係ありません。しかし、混乱をさけるために多くのシステム管理者は NIS と DNS で同じ名前を使っています。一方ある管理者は、NIS のドメインネームやデータベース情報をネットワーク侵入者(クラッカー)に推測されにくくするために、 NIS と DNS で同じ名前を使わないようにしています。

NIS ドメインネームを使うことで、普通は起動時に、NIS クライアントは適切な NIS マスタサーバやスレーブサーバを探し、サーバのデータベースと接続を確立します。この処理をNIS ドメインとのバインドと呼びます。

NIS データベースは情報ごとに"テーブル"を持ちます。例えば、ネットワークにアクセスする全てのユーザ、ネットワークを構成する全てのコンピュータの一覧です。このようなテーブルを NIS マップと呼びます。 それぞれのマップには固有の名前があります。全ての NIS の実装で使われる標準的な命名がされています。例えば、user id でユーザ一覧を保持しているマップには passwd.byuid という名前が付けられています。 Mac OS X が認識するこうしたマップの名前についてはこの文書にて後述しています。標準的なデータベース同様、NIS 管理者は自由にテーブル(NIS マップ)を追加できますし、それらに新しい名前を選択することも出来ます。

 

Mac OS X は NIS server になりますか?

はい。可能です。 Mac OS X Public Beta の時から、必要なソフトウエアは同梱されていますが、ドキュメントは付いていません。ドキュメントがなくてもある程度 NIS についての経験を持つ管理者であれば、サーバを立ち上げることも可能でしょう。データベースと YP-Makefile の場所は /var/yp です。サーバは必要なデータベースファイルが作成されていると /System/Library/StartupItems/DirectoryServices/DirectoryServices 経由で自動的に起動します。

Mac OS X Server 1.x といった古い Mac OS X にはNIS サーバソフトウエアは含まれていません。しかし、NIS ツールのソースをダウンロードして目的のシステム用にコンパイルすることは可能です(多少修正は必要になるでしょう)。Darwinnetwork_cmds パッケージにこのツールはあります。

この文書は Mac OS X を NIS クライアントとして使うことについて述べています。ここでこれ以上サーバについての言及はしません。


NIS の代わりになるものはありますか?

Mac OS X と他の UNIX システムとで管理情報を共有するものには少なくとも2つあります。

  1. NetInfo を UNIX サーバにインストールできます。Linux 用のフリーの NetInfo の(部分的に不完全な)実装は、 Luke Howard 氏 PADL Software Pty Ltd によって書かれました。ftp.padl.com からパッケージをダウンロードできます。
    また Xedoc Software Development は1990年代の主要な全ての UNIX システム向けに NetInfo 製品を出しています。NetInfo 技術は一時期において Xedoc 社からライセンスされていました。 NeXT 社は "NetInfo for Solaris" と "NetInfo for HP/UX" をそれぞれ認めていました。詳しくはこちら を参照してください。

  2. LDAP を使うという解決策もあります。LDAP は RFC 2307 でインターネット標準とされている Lightweight Directory Access Protocol の略です。LDAP は NIS や NetInfo と似ていますが、より現代的なオブジェクティブなアプローチ、X.500 標準をとっています。Mac OS X を含む全ての現代的な UNIX で利用できます。Apple 社は LDAP へのコミット表明をしており、NetInfoとともに利用可能です。LDAP は Apple のディレクトリサービス API の一部に含まれています。Mac OS X Public Beta 以来、最小限のドキュメントが man(オンラインマニュアル)で提供されています。man を参照するには Terminal を使います。Mac OS X の初期のバージョンにはLDAPに関するドキュメントは付属していません。しかし関連文書として、TIL article #24902 が公開されています。

NIS の使い方

前準備

Mac OS X で NIS を使うためには、管理者権限(root)を持っていなければなりません。 さらに自分の所属する NIS ドメインの名前("NIS の基礎知識"参照)を知っていなければなりません。以下の条件を満たしていることを前提としています。

Rhapsody DR 2 or Mac OS X DP4 をお使いの場合、幾つかのシステムコンポーネントをアップデートする必要があります。以下の "developer preview versions での NIS"を参照してください。


Mac OS X 10.0 で管理者権限を得る

システムをよりセキュアにするために、Apple 社は version 10.0 から管理者ユーザ "root" を無効にしています。出荷時の状態では root でのログインはできません。これは通常のインストール作業では問題とはなりません。Mac OS X をインストールするときに作成されるユーザは全ての管理者権限を必要とする作業を行うことが出来るからです。しかし、幾つかのシステム書類を変更するときには root 権限を要求されます。次章で使う幾つかのコマンドは "permission denied" エラーのために使うことが出来ないでしょう。次の2つのうちどちらかを使ってこうした作業を可能にしなければなりません。

"sudo" コマンドを使う: 使おうとしているコマンドの前に "sudo" を置くことで、一時的に root権限を得ることが出来ます。例えば、次のようなコマンドです。

cp file1 file2

root 権限が必要であるために、これが失敗したのならば、次のようにします。

sudo cp file1 file2

あなたの管理者パスワード(rootではありません)を尋ねられますので、正しくパスワードを入力します。正しいパスワードであれば、そのコマンドは root 権限で実行されます。これが推奨されている方法です。

root アカウントを有効にする: "NetInfo Manager"(/Applications/Utilities にあります)を起動し、メニューから"ドメイン - セキュリティ - ルートユーザを有効"を選択します。これを行うと root アカウントを有効にすることが出来ます。ただし、この操作でシステムのセキュリティレベルを少し下げることになります。


設定ファイルのバックアップ

Mac OS X で NIS を有効にすると、2つの設定ファイルを変更します。設定ファイル /etc/hostconfig と NetInfo データベースです。変更前にこれらのファイルのバックアップを取っておきましょう。問題が起きたときでも安全に元の状態に復帰できます。

警告: バックアップが無い状態で /etc/hostconfig や NetInfo データベースを壊してしまうと、システムは使用不能になります。

現在の設定ファイルをバックアップする手順は以下の通りです。

  1. 管理者または root でログインします。

  2. Terminal アプリケーションを起動します(起動していない場合)。

  3. 以下のコマンドで hostconfig ファイルのバックアップを作成します。

    cp /etc/hostconfig /etc/hostconfig.backup

  4. 次に Rhapsody や Mac OS X Server 1.x の場合は以下のようにします。

    cp -R /etc/netinfo/local.nidb /etc/netinfo/local.nidb.backup


    Mac OS X の最近のバージョンの場合は以下のようにします。

    cp -R /var/db/netinfo/local.nidb /var/db/netinfo/local.nidb.backup

    これでローカルな NetInfo データベースのバックアップを作成出来ました。


システムを変更することなく NIS の確認をする

システムが実際に NIS データベースに接続できるかどうかを"事前確認" することが可能です。どの設定ファイルも変更していないので、この接続は一時的なものです。 NIS に関して何か問題があれば、再起動するだけで元の状態に戻ることが出来ます。この操作は強く推奨されますが、「hostconfig file を編集する」まで読み飛ばしていただいても構いません。

root でログインしていて、Terminal.app はまだ起動しているとしています。

  1. RPC portmapper が動いているかどうかを確認するために以下のコマンドを入力します。

    rpcinfo -p

    このサービスは、NIS サーバーと "お話" ができなければなりません。 portmapper が動作していない場合、以下のようなメッセージが表示されます。

    rpcinfo: can't contact portmapper: RPC: remote system error - Connection refused


    このようなメッセージが出たら、以下のコマンドを入力します。

    portmap

    そしてもう一度、 "rpcinfo -p" を試します。うまく行けば、以下のような出力がされるでしょう。
       program vers proto    port
    100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 200100001 1 udp 938 netinfobind
    200100001 1 tcp 941 netinfobind


    portmapper が本当に動いているかどうかをもう一度確認して、次へ進んでください。

  2. 以下のコマンドを入力してください。

    domainname mydomain.nis

    "mydomain.nis" はこれから所属しようとしている NIS ドメインの名前で置き換えてください。NIS ドメインの名前は あなたのインターネットドメインと同じではないかもしれませんので注意して下さい。
  3. 以下のコマンドを入力してください。

    ypbind

    ypbind プログラムはあなたのサブネットワークの中に NIS サーバを探します。そして手順1で特定したドメインにバインドします。これは数秒以内に終了します。10秒以上経ってもプロンプトが戻らない場合は、何か問題があることを意味します。この場合は Ctrl-C を押下して ypbind を停止させます。そして、次の"確認に失敗したら"を読んでください。

  4. どの NIS サーバに接続しているかを知るには以下のコマンドを入力します。

    ypwhich

    これで、あなたのコンピュータが今接続している NIS サーバの名前を見ることが出来ます。

  5. では NIS データベースに接続しましょう。NIS サーバが提供しているであろう group の名前の NIS マップを参照してみます。このマップにはローカルネットワークで利用されているユーザグループの一覧が記述されているでしょう。以下のコマンドを使います。

    ypcat group

    全ての NIS ユーザグループの一覧が表示されます。

    注意: マップの名前は実際には、"group.byname"です。"group" はNISが認識できる省略語です。

期待通りに動作しているのならば、本格的にシステム設定を変更してもよいでしょう。


確認に失敗したら

NIS の確認に失敗したときだけここを読む必要があります。NIS のインストールを続けるには、次の章へ進んでください。

もう一度 ypbind を使います。何が起こっているのかデバッグモードで使用します。

ypbind -d

ypbind の動作状況が表示され、なぜ失敗したのかを見ることが出来るでしょう。以下に予想されるエラーメッセージと典型的なケースについて述べます。


hostconfig file を編集する

上記の確認作業では一時的な NIS との接続を確立しただけです。Mac OS X を再起動してしまうと、全ての設定は無くなってしまいます。システムに2つのコマンド、"domainname" と "ypbind" を起動時に自動的に実行させるためには、/etc/hostconfig ファイルを編集しなければなりません。

  1. お好きなエディタで /etc/hostconfig ファイルを開きます。
    "# Services" のセクションを見ると以下のようになっていると思います。お使いのシステムと比べると、いくつかの行が無かったり、順番が異なっているかもしれません。

    # Services
    AFPSERVER=-NO-
    APPLETALK=-NO-
    AUTHSERVER=-NO-
    AUTOCONFIG=-YES-
    AUTODISKMOUNT=-REMOVABLE-
    AUTOMOUNT=-YES-
    CONFIGSERVER=-NO-
    IPFORWARDING=-NO-
    MAILSERVER=-NO-
    MANAGEMENTSERVER=-NO-
    NETBOOTSERVER=-NO-
    NETINFOSERVER=-NO-
    NISDOMAIN=-NO-
    RPCSERVER=-AUTOMATIC-
    TIMESYNC=-YES-
    SSHSERVER=-YES-
    QTSSERVER=-NO-
    WEBSERVER=-YES-

  2. NISDOMAIN の行を変更します。"-NO-" を削除します。そして所属しようとしている NIS ドメインの名前を入力します。先程の章で確認を済ませている場合は、この名前は domainname コマンドに続けて入力したものになります。例えば以下のようになります。

    NISDOMAIN=mydomain.nis

  3. Mac OS X 10.1 以降をお使いの場合は、コンピュータをRPCサーバーとして設定しなければなりません(Mac OS X 10.1よりも以前のバージョンをお使いの場合は、このステップを飛ばしてください)。Search for the line that has the RPCSERVER の行を探し、値を以下のように変更します。

    RPCSERVER=-YES-


    注意 Mac OS X 10.1アップデーターのバグのために、アップデーターはこの行を追加しません。このような場合は、ファイルにこの行を挿入してください。


  4. ファイルを保存します。

これであなたのマシンは起動時に NIS にバインドするようになりました。

熟練の UNIX 管理者向けノート: 一般的ではない設定が必要である場合、引数を渡して ypbind を呼び出すことも可能です。 Mac OS X Server 1.x は ypbind を起動時に /etc/startup/1100_DirectoryServices スクリプトから呼び出されます。これ以降のバージョンでは、/System/Library/StartupItems/DirectoryServices/DirectoryServices です。ypbind は以下のオプションを理解します。

-broadcast 特定の NIS サーバにバインドするための情報要求をブローキャストパケットで送信します。これは標準です。このオプションは ypbind の設定ファイルの内容よりも優先したい場合に使います(下記参照)。
-insecure ypbind は非特権ポートでの接続を許します。
-ypset 他のマシンからシステム管理者に ypset コマンドでのバインドする先の NIS の変更を許します。このオプションはセキュリティホールになります。
-ypsetme ローカルマシンのシステム管理者に ypsett コマンドでバインドする先の NIS の変更を許します。
-d デバッグモード:エラーメッセージを syslog ではなく stderr にリダイレクトします。


管理者によっては稼働している NIS サーバを見つけるためにブロードキャストを用いるのは安全ではないと思うでしょう。ネットワークへの侵入者は偽の情報を使って NIS サーバを構築できます。NIS へのバインドの確立するときにブロードキャストを用いるのを避けるために、/var/yp/binding/mydomain.nis.ypservers ファイルを作成します。このファイルにはあなたが接続すべきホスト IP アドレスの一覧が記載されています。


NIS 参照を設定する

NIS はシステムにネットワーク情報を追加します。システムにどのような順番でネットワーク情報を得させるかを決めます。これは lookupd プログラムのパラメータを変更することで可能です。このパラメータは NetInfo データベースに保管されます。

熟練の UNIX 管理者向けノート:これは SUN 系の Unix systems で /etc/nsswitch.conf を編集することと同等です。

ここでは、あなたのコンピュータは大きな NetInfo ネットワークのクライアントではなく、ローカルな NetInfo だけを利用している、という前提とします。(これは、あなたのコンピュータはそれ自体の NetInfo サーバであり、ローカルな NetInfo ドメイン "/" のクライアントであることを意味します。) この前提に合致しない場合、あなたの NetInfo 管理者に以下の lookupd パラメータの設定の仕方を問い合わせてください。

  1. 以下の設定ファイルをコピーし、エディタにペーストしてください。そしてテキストを保存してください。ファイルの名前は lookupd.txt ということにしましょう。このファイルをダウンロードすることもできます。

    {
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    "name" = ( "lookupd" );
    "MaxThreads" = ( "12" );
    CHILDREN = (
    {
    "name" = ( "groups" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    },
    {
    "name" = ( "users" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    },
    {
    "name" = ( "hosts" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent", "DNSAgent", "NILAgent" );
    },
    {
    "name" = ( "netgroups" );
    "LookupOrder" = ( "CacheAgent", "NIAgent", "YPAgent" );
    }
    )
    }

    警告: Mac OS X でお使いのウエブブラウザやエディタによっては、ダウンロードしたファイルの各行末の文字コードが UNIX コード (LF) から Macintosh コード (CR) に変換されてしまうかもしれません。以下のコマンドで行末コードが正しく保たれているかどうかを確認してください。

    cat lookupd.txt

    もし1行しかない場合は、そのファイルを使うべきではありません。コピーまたはダウンロードをしなおして、他の方法でファイルを保存してください。


  2. では NetInfo データベースにこのテキストの内容を入力します。次のコマンドを使います。

    niutil -create . /locations/lookupd

    そして

    niload -r /locations/lookupd . <lookupd.txt

    上に示したように正確に入力してください。それぞれのコマンドのピリオド "." は空白に挟まれていなければなりません。 手順(1)で別の名前でファイルに保存した場合は、lookupd.txt という部分をそのファイルの名前に置き換えてください。必要であればそのファイルへのパスも加えてください。

  3. この設定は多くのNISネットワークで動作するでしょう。しかし、NISの環境によってはもう少し調整を加える必要があるかもしれません。どのようになっていくか、そして正しくデータベースに取り込まれたことを確認するために、グラフィカルな NetInfo エディタを利用します。Mac OS X Server 1.x では、/System/Administration/NetInfoManager.app に、それ以降のバージョンでは /Applications/Utilities/NetInfo Managerにあります。
  4. /locations/lookupd を見ると、Mac OS X Server 1.x では次のようになっているでしょう。

    NetInfoManager: lookupd configuration

    ("mounts" エントリは無視します)

    最近のバージョンでは次のようになっているでしょう。

    NetInfo Manager Aqua

  5. /locations/lookupd の値を必要に応じて変更し、保存します。個々の値についての詳細は次の章をよくお読みください。

これらの変数が意味すること

MaxThreads の数字は lookupd が同時に実行するサービススレッドの最大数です。小さなネットワークであれば、12 という数字は十分です。もしあなたのコンピュータを DNS や WebObjects サーバとしてインターネットに接続している場合は、この数字は十分ではないでしょう。このような場合は、256 程度の大きな数字がよいでしょう(この値が小さい場合は間欠的に数分から数時間ハングするかもしれません)。

注意:Apple 社の公式な文書では、この値は 16 で"十分"だと述べています。しかし、インターネット上の多くの報告では、細い回線を介して多くの DNS への問い合わせを扱わなければならないシステムでは、これは正しくないと言われています。そして Apple 社はこの問題を解決してしまったようです。しかし、現在リリースされている Mac OS X を上記の条件で運用したときに本当に改修されているかどうかは、まだ知られていません。

lookupd プログラムは agents と呼ばれる異なったコンポーネントを利用してネットワーク情報を探します。ネットワーク情報を探すときにどのような順番で、そしてどの agent を使うべきかといったことは、LookupOrder に記述された内容を使って接続します。

注意:Apple 社の公式な文書では、/locations/lookupd/LookupOrder はどの agent を用いるかという標準的な順序を特定している、と述べています。これは正しいのですが、真実の一部でしかありません。この値は実際に呼び出される agent も特定しています。NIS に問い合わせるような YPAgent とといった標準ではない agent を利用したい場合には、ここに明記しなければなりません。そうしないとシステムは全くその agent を利用しません!

Mac OS X には以下の agent があります。

CacheAgent

よりよいパフォーマンスを得るために lookupd はキャッシュを利用します。 データベース項目への問い合わせがあると、まずその答えがキャッシュの中にないか探します。 情報がまだ新しい場合はキャッシュの情報は適当であるとなります。この確認はタイムスタンプとデータベースのシーケンシャル番号で行われます。キャッシュの情報が妥当でない場合、新しいコピーを回収し入れ替えます。

多くの場合、CacheAgent を最初に用いる agent にしておくことは良い結果を得るでしょう。

NIAgent NetInfo の agent です。先程の例では、この agent は2番目という高い優先順位にあります(cache agent の次です)。この方法では、NetInfo は他の情報よりも常に優先されます。Mac OS X に必要などんな情報も他の agent によって"隠されてしまう"ことはありません。
YPAgent NIS の agent です。先程の例では3番目に利用される agent です。この agent のより詳しい情報は後述します。
LDAPAgent LDA プロトコル用の agent です。("NIS の代わりになるものはありますか?"を参照してください。)
DNSAgent この agent は DNS (Domain Name Service) にアクセスします。この agent は host 名から IP アドレスや IP アドレスから host 名の解決だけに利用されます。
FFAgent 古典的な UNIX の "flat file" を参照することの出来る agent です。システムは /etc の中の設定ファイルを読んで情報を探します。例えば、/etc/group や /etc/hosts、 /etc/fstab などです。
NILAgent

NIL agent は常に否定的な反応をします。一見するとこれは意味を持たないように思えます。lookupd が何かを agent に問い合わせて、agent が何も見つけられなかった場合には "not found" というメッセージを受け取ります。 NILAgent を使うことでキャッシュの中に"否定的な項目"を置いておくことが出来ます。 その項目について再び lookupd が要求を受け取った時、直ちにその否定的な値を見つけて、他の agent に長い時間(無駄に)探させることを回避できます。

NILAgent は基本的に lookupd の処理を高速化します。もちろん、検索順序の最後に置かれるべきものです。

先程の例では、 "最初にキャッシュを探し、次に NetInfo データベースを検索し、それから NIS に問い合わせます"。 "標準的ではない YPAgent というコンポーネント"を呼び出しているということに留意してください。

また、"groups" や "users"、"hosts"、"netgroups" といったサブフォルダを含んでいます。これらのフォルダは特定のカテゴリの検索順序で上書きされます。例えば、"hosts" というカテゴリは、DNSAgent と NILAgent によって書き換えられます。

注意:hostsカテゴリーの検索順序に気をつけてください。我々の例では、YPAgentにDNSAgnetよりも優先権を持たせました。しかしお使いのネットワーク環境では別の検索順序にする必要があるかもしれません。例えば、NISによるhost検索をしないというネットワークポリシーを掲げるところでは、このhostsカテゴリーからYPAgentを削除しなければなりません。

また、起動時に複雑な依存関係になるかもしれません:Mac OS X はNISのサブシステムの起動前や起動中にホスト名解決をしなければならないようになっているかもしれません。これはデッドロックな状態です。ホスト名解決はNISがまだ起動していないのでできません。しかしホスト名解決ができるのを待っているため、NISを起動することができません。この問題を解決するには、必要なホストの情報をNetInfoに加えておくか、DNSサーバを用意して、DNSAgentとYPAgentの順番を入れかえます。

以下のサブフォルダは異なったカテゴリで標準ではない振る舞いをさせるように使うことが出来ます。

aliases e-mail エイリアスと配送一覧
bootp bootp エントリ
bootparams bootp のパラメータ
groups user のグループ
hosts host 名
mounts NFS マウントポイント
netgroups ネットワークホストのグループ
networks network の名前
printers ネットワークプリンタ
protocols IP プロトコル
rpcs remote procedure call プログラム
services IP サービスとポート番号、プロトコル
users user 情報

先程の例の中の "groups" や "users"、"netgroups" は本当は必要ないと気づかれたかもしれません。これらの情報は標準的な LookupOrder で得られるものとほとんど同じだからです。しかしこれらへの修正は将来必要かもしれませんので、異なったカテゴリの修正を行いやすくするためにも残しておくべきです。

警告: NIAgent やその他のagentを使用不可にする場合は、それが何を意味しどのような結果になるかを正確に理解していなければなりません。他の agent が望まない情報を供給する場合、NetInfo のデータは何も見つけることはありません。最悪の場合、あなたのコンピュータは起動中にハングアップするか締め出されてしまうでしょう。これは一切のユーザデータを得られないためです。

YPAgent は以下の NIS マップを理解します。

ethers.byaddr

MAC アドレスとホスト名の組み合わせ
bootptab.byaddr MAC アドレスと bootp データの組み合わせ
mail.aliases エイリアス名と e-mail エイリアスと配送一覧の組み合わせ
passwd.byname ログインネームとユーザ情報の組み合わせ
passwd.byuid user id とユーザ情報の組み合わせ
group.byname グループ名とグループ情報の組み合わせ
hosts.byname ホスト名と IP アドレスの組み合わせ
hosts.byaddr IP アドレスとホスト名の組み合わせ
networks.byname ネットワーク名と IP アドレスの組み合わせ
networks.byaddr IP アドレスとネットワーク名の組み合わせ
services.byname サービス名と IP サービス情報の組み合わせ
protocol.byname プロトコル名と IP プロトコル情報の組み合わせ
protocol.bynumber プロトコル番号と IP プロトコル情報の組み合わせ
rpc.byname プログラム名と remote procedure call program の組み合わせ
rpc.bynumber プログラム番号と remote procedure call program の組み合わせ
mounts.byname ファイルシステムマウントポイント一覧
printcap.byname プリンタ名とネットワークプリンタの組み合わせ
bootparams.byname 名前による bootparams エントリ
bootp.byip IP アドレスによる bootp エントリ
netgroup netgroup 一覧

"mounts.byname" のようなマップは、標準的な Linux やSolaris の NIS サーバには存在しません。NIS 管理者はこれらのマップを必要であれば作成しなければなりません。

 

インストールの確認

変更を有効にする

NetInfo データベースに変更項目が全て保存されていることを確認しましょう。少なくとも NIAgent についての注意事項を理解したことだけでも確認してください。変更項目を有効にするには、システムを再起動します。

熟練の UNIX 管理者向けノート: NIS ドメインの名前が domainname で設定されていて、ypbind が実行されている場合、lookupd に HUP シグナルを送ることで新しいパラメータを有効に出来ます。万一、lookupd を kill してしまったら、システムは数秒以内にクラッシュしてしまいますので、ご注意ください。

起動時に NIS が有効になっていることを確認するために、verbose モードでシステムを起動します。

System Ver. 方 法

Mac OS X Server 1.x
Mac OS X Public Beta

起動音が聞こえたら、最初のメッセージが表示されるまで "v" キーを押下します。
Mac OS X 10.0 起動音が聞こえたら、最初のメッセージが表示されるまで "Apple-v" キーを押下します。

Rhapsody for Intel
Darwin for Intel

boot プロンプトで "-v" を入力します。

何か問題があれば、NIS についてのエラーメッセージが表示されるでしょう。その問題を取り除いてください。

NIS が有効になりました。NFS サーバから共有ディレクトリをマウントしているのならば、共有ファイルのユーザとグループ情報は正しく表示されるでしょう。NIS のデータベースに登録されているユーザのホームディレクトリが Mac OS X コンピュータにある場合は、問題なくログインできるでしょう。しかし、ユーザが利用するホームディレクトリを automount で実現している場合、これはすぐには使えないでしょう。Mac OS X のautomounter は通常の NIS automounter と全く異なっています。このような場合は、automounterを使う を参照してください。


lookupd で詳細に診断する

NIS を正しく動作させているにもかかわらず、特定のネットワーク参照で問題がある場合は、システムに何が起きているのかを正確に見るために lookupd を debug モードで実行します。ローカルのシステム管理者(root)でログインし、 Terminal.app を起動します。次のコマンドを入力します。

lookupd -d

2つめの lookupd のインスタンスは debug モードで動作します。

注意:Mac OS X Public Beta や DP4 ではこの機能は壊れています。 DP4 の場合は、lookupd -D lookupd_debug と入力すると上手くいきます。

lookupd の prompt で以下のコマンドを入力します。

statisticsForAgent: YPAgent

注意:lookupd にはスペースバーを押下してコマンド名を補完する機能があります。 コロン(:)を入力することが出来ないので(訳注:Mac OS X 10.0.4 以降では可能)、この機能を使う必要があります。 "statisticsF" と入力し、スペースバーを押下してコマンド名を補完します。続けて "YPAgent" と入力します。

以下のような結果を返します。

Dictionary: "YPAgent statistics"
current_server: nisserver.mydomain.com
domain_name: mydomain.nis
information_system: Network_Information_Service

注意: NIS の統計機能は Mac OS X 10.1 から 10.1.2では壊れています。NISが動作しているいないに関わらず、常に "nil"という結果しか返しません。

どの NIS サーバで、そしてどの NIS ドメインに lookupd が接続しているかを知ることが出来ます。代わりに "nil" が表示された場合は、YPAgent は動作していません。この場合は、Netinfo データベースの lookupd パラメータを確認してください。

ある特定の項目を参照したときに問題があるとしましょう。例えば、"john" というユーザの NIS 項目を正しく引くことが出来ないとします。"john" というユーザ情報をどの agent が供給しているのかを確認します。次のようにコマンドを入力します。

userWithName: john

以下のような結果が返ると思います。

Dictionary: "YPAgent: user john"
_lookup_NIS_domain: mydomain.nis
_lookup_NIS_map: passwd.byname
_lookup_NIS_order: 962960668
_lookup_NIS_server: nisserver.mydomain.com
_lookup_info_system: NIS
gid: 100
home: /home/john
name: john
passwd: uPXu65uc.akEh
realname: John Smith
shell: /bin/bash
uid: 521
+ Category: user
+ Time to live: 43200
+ Age: 0 (expires in 43200 seconds)
+ Negative: No
+ Cache hits: 0
+ Retain count: 4

YPAgent が答えていることが分かると思います。"_" から始まっている行は、受け取ったユーザに関する情報です。"+"で始まっている行は現在のキャッシュの状態を示しています。

lookupd の全てのデバッグコマンドを見るには、 "help" と入力してください。そして "?" を入力します。help モードや debug モードから抜けるには、quit を入力します。


automounter を使う

automounter とは

NIS を利用しているネットワークでは NFS automounting という機能をよく併用します。 NIS の管理者は、ネットワーク上の NFS ファイルサーバで公開している共有フォルダの一覧を記述したマップを準備します。このマップには公開されているディレクトリの一覧だけでなく、マウントポイントの path 名も記載されています。マウントポイントとなっている path にユーザがアクセスすると、公開されている共有フォルダがマウントされます。

例えば、 "marvin" という NFS サーバがあって、"/disk5" というディレクトリを公開しているとします。NIS の管理者は、"marvin:/disk5"を NFS で公開されているものとして NIS マップを作成します。そして、"/import/public" というマウントポイントで提供することにしたとします。

NIS ネットワークにあるコンピュータで "/import/public" にアクセスをすると、自動的に "marvin:/disk5" は、マウントポイントの "/import/public" にマウントされます。そして、一定時間以上、例えば、10分間使われないと、そのディレクトリは自動的にアンマウントされます。

これはとても洗練された方法です。ローカルネットワークにある全てのコンピュータは disk5 のファイルに同じ path でアクセスできます。全ては必要になったときだけ自動的にマウントされます。automounting 機能はそれぞれのコンピュータが行うマウント操作の手順を減らしてくれます。共有部分は自動的にアンマウントもされるので、ファイルサーバが終了してしまっても、コンピュータがハングアップすることはありません。


Mac OS X の制限

UNIX システムでは2つの異なった automounter の標準、AMDautofs があります。 そして悪いことに、Mac OS X は AMD であっても autofs であっても、そのマップを理解しません。 代わりに、独自の BSD スタイルの書式で automounter の NIS マップを使います。 これだけが、Mac OS X の制限になります。Mac OS X は階層的なマウントマップやシンボリックな path のどちらも理解しません。そして、automounter は実行の途中でマウントマップに変更があったことに気づきません。単純に静的なマウントリストの一覧だけをサポートしています。

Mac OS X の automounter と一般的な NIS automounting に互換性はありません。

  • auto.master マップやあらゆる amd マップを読みません。
  • マップに変更が起きても、自動的にマウントテーブルを更新しません。この場合、 automounter を再起動するか、コンピュータを再起動しなければなりません。  
  • NIS の automounting を利用したい場合は、標準的ではない automount マップを NIS サーバに用意しなければなりません。

 

基本的には以下のオプションを付ける必要があります:


Mac OS X の automounter のオプションを変更する

必要に応じて automounter を起動するには、そのオプションを起動スクリプトを操作することで実現できます。 Mac OS X Server 1.x では、automounter は以下のスクリプトから呼び出されます。

/etc/startup/1500_NFS

それ以降の Mac OS X では、以下のスクリプトから呼び出されます。

/System/Library/StartupItems/NFS/NFS

次章で提案している NIS の利用方法を用いる場合は、何も変更する必要はありません。automounter についてのもっと詳しい説明は、"automount -help" で見ることが出来ます。

注意:初期の Mac OS X Server を利用している場合、システムに付属している automounter には "file maps" オプションを使うことが出来ないバグがあります。このバグのあるシステムで、automounter の機能を使いたい場合は、最新の automounter のソースコードを Darwin CVS site からダウンロードして、コンパイルし直してから使います。


NIS server の mount map と互換を図る

Mac OS X 用のマウントポイントを NIS を使って共有したい場合は、

mounts.byname

という名前の NIS マップを NIS のマスタサーバに作っておく必要があります。このマップは BSD-Unix の fstab ファイル(file-system テーブル)の書式でなければなりません。このテーブルは6つのカラムを空白で区切った書式になっています。以下の例では4つのマウントエントリを記述したものです。

##
#
# Network Information System Source File: BSD-fstab
#
# export             mount_point vfs_type options         dumpFreq passno
##
marvin:/home         /home       nfs      rw,resvport     0        0
marvin:/export/disk0 /import/d0  nfs      net,rw          0        0
marvin:/export/disk1 /import/d1  nfs      net,rw          0        0
marvin:/export/disk2 /import/d2  nfs      net,ro          0        0

それぞれのカラムには以下の意味を持ちます。

カラム

意味

1
NFS エクスポートエントリ
2
マウントポイント。このディレクトリは存在してなければなりません。もしなければマウントに失敗します。
3
file-system タイプ。これはネットワークマウントの時だけ意味を持ちます。通常 "nfs" とします。
4

カンマで区切られたマウントオプション。詳細は次表を参照してください。

5
ダンプ頻度。NFS マウントの場合は意味を持ちません。0 にしておくべきです。
6
file-system 確認順序。NFS マウントの場合は意味を持ちません。0 にしておくべきです。

 

この表は automounter が理解するオプションの一覧です。これらは、NIS マップの4番目のカラムに記述されなければなりません。

オプション

 説 明 

net

このオプションを付けること、あるいは付けないことで様々な結果を得ることになります。このオプションがあると、automounter はこのエントリをネットワークマウントであるものとして扱います。無い場合は、このエントリはそのまま静的な fstab のマウントポイントとして扱います。次項の ""net" オプションはなぜ重要か" に詳しい説明があります。

rw 読み書き可能なアクセスを許します。
ro 読み出しのみのアクセスを許します。これにはスーパーユーザも含まれます。
rdonly "ro" の別名。
suid set-user-identifier と set-group-identifier ビットを参照します。
nosuid set-user-identifier と set-group-identifier ビットを無視します。
exec マウントされたファイルシステムからバイナリファイルの実行を許します。
noexec マウントされてたファイルシステムからバイナリファイルの実行を許しません。異なる CPU アーキテクチャのファイルサーバからマウントしている時に便利です。
dev character または block スペシャルデバイスファイルへのアクセスを許します。
nodev haracter または block スペシャルデバイスファイルへのアクセスを禁止します。
union マウントポイントの名前空間を、すでにマウントされているファイルシステムと存在しているディレクトリと結合させる。最初にマウントしたファイルシステムを先に参照します、このファイルシステムに存在しないファイルを参照した場合、その下にあるディレクトリにアクセスします。全ての変更はマウントされたファイルシステムに起こります。
sync マウントしているファイルシステムへの全ての入出力は同期的に行われます。
soft 特定の再試行を行った場合に、ファイル操作は失敗したことになるという意味で、"soft" にマウントするということです。
intr マウント操作を割り込み可能にします。これは、ファイルサーバが応答しないためにマウント操作が遅れ、そして失敗するであろうというときに、そのプロセスに termination シグナルをおくることができます。
conn "noconn" の反対。次の項目を参照してください。
noconn サーバからマウントする connect call を使いません。複数の IP アドレスを持つ NFS サーバや、標準的な 2049 番のポートで listen していない NFS サーバを利用するときに必要になるでしょう。
nqnfs プロトコルバージョン2改訂の "Not Quite NFS" を使います。このオプションはキャッシュの一貫性を維持するためのリース拡張を有効にします。

最近の Mac OS X では、以下のオプションを利用することも可能です。

オプション  説 明 
hard soft の反対。この表の "soft" の項を参照してください。
nfsv2 NFS バージョン 2 プロトコルを使ってマウントします。
nfsv3 NFS バージョン 3 プロトコルを使ってマウントします。
kerb クライアントとサーバのユーザ認証のマッピングに Kerberos 認証を利用します。
dumbtimer dynamic retransmit timeout estimatorを切ります。 リトライが頻繁に起きる UDP によるマウントの時に使うとよいでしょう。
resvport NFS サーバに接続するときに特権ポート番号を常に使用します。多くの NFS サーバはこのオプションが有効になっていることを要求します。
rdirplus "ls-l" といった幾つかの ReaddirPlus 関数を使う操作でのパフォーマンスを最適化します。ReaddirPlus は属性と名前を先取りする操作を利用します。そして、RPC のトラフィックを少なくするようにします。これは帯域の遅延時間が大きくなった場合に意味を持ちます別の場合では、パフォーマンスが大きく下がった場合です。このパラメータは nqnfs と nfsv3 と同時に使う必要があります。
udp マウントプロトコルに UDP トランスポートを強制的に使用させます。古い NFS サーバを利用するときには必要になるかもしれません。
tcp マウントプロトコルに TCP トランスポートを強制的に使用させます。 これはクライアントと同じ LAN ケーブル上にない NFS サーバを利用するときには推奨されます。NFS サーバが BSD-UNIX ではない場合、これは機能しないでしょう。
-I=xxxx readdir の読込みサイズの値 xxxx を設定します。
-a=n read-ahead count の値 n を設定します。n は 0 - 4 の範囲である必要があります。
-g=xxxx 認証を必要とするグループリストの最大数を xxxx に設定します。16 のグループリストを扱うことの出来ない古いサーバをマウントする場合に必要になるでしょう。
wsize=xxxx write data サイズの値を xxxx に設定します。NEXTSTEP のファイルサーバをマウントする場合、 wsize=1024 を使うことを推奨します。
rsize=xxxx read data サイズの値を xxxx に設定します。NEXTSTEP のファイルサーバをマウントする場合、 rsize=1024 を使うことを推奨します。
timeo=xxxx 再配送のタイムアウトの値を xxxx に設定します。
retrans=xxxx ソフトマウントのための再配送のタイムアウトの回数を xxxx に設定します。
mnttimeo=xxxx global mount timeout の値を xxxx に設定します。
ttl=xxxx global time-to-live の値を xxxx に設定します。

注意:Mac OS X に同梱されている man では "resvport" (または -P)パラメータは現在無視される、とあります。これは正しくありません。

Mac OS X から NFS ファイルサーバにアクセスしようとして、ディレクトリを読もうとしたときに "permission denied" エラーが起きてしまうような場合、セキュアではないポートを使わせないというセキュリティ機能が NFS サーバで有効になっている場合がほとんどです。いくつかのバージョンの Solaris や最近の Linux ディストリビューションではこの機能が最初から有効になっています。これらのサーバから共有領域をマウントするには、resvport パラメータを使わなければなりませんFAQ の章も参照してください)。


fstab ファイルは NIS サーバのどこかにある必要があります。そしてサーバの yp-Makefile を新しい NIS マップを作るように修正しなければなりません。それぞれのデータベーステーブルには1つのキーカラムを追加する必要があります。最終的に表には7つのカラムがあることになるでしょう。 Mac OS X はこれらのキーの値を気にすることはありませんが、それぞれの値はユニークでなければなりません。単純な解決方法は fstab ファイルの最初のカラムを複製し。それをデータベースのキーにすることです。

次の SuSE-Linux 6.4 用に書かれたコードは、NIS の Makefile に新しい NIS マップを作らせるために何を追加すべきかを示す一つの例です。これは例示を目的にしているだけです! 異なる UNIX システムでの NIS の実装の違いは非常に大きいので、NIS の管理者は常に管理している環境の目的に合わせてスクリプトを修正する必要に迫られるでしょう。更なる情報は NIS サーバの文書を参照してください。

警告:これが何をしているか正確に分からないまま単純に以下のコードを Makefile にコピーしないでください。
---------------------------------------------------------------------

mounts.byname: $(AUTO_FSTAB) $(YPDIR)/Makefile
   @echo "Updating $@..."
   @$(AWK) '{ if($$1 !~ "#" && $$1 != "") { print $$1"\t"$$0    }}' \
   $(AUTO_FSTAB) | $(DBLOAD) -i $(AUTO_FSTAB) \
   -o $(YPMAPDIR)/$@ - $@
   @$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@

---------------------------------------------------------------------

Michael Thompson (miket@ilm.com) 氏は、SUN Solaris 8 用に以下のスクリプトを提供してくださいました。ありがとうございます。

---------------------------------------------------------------------
mounts.time: $(DIR)/mounts
   @(awk 'BEGIN { FS=" "; OFS="\t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }'\
   $(DIR)/mounts $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/mounts.byname;
   @touch mounts.time;
   @echo "updated mounts";
   @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) mounts.byname; fi
   @if [ ! $(NOPUSH) ]; then echo "pushed mounts"; fi
---------------------------------------------------------------------
警告: このコードをMakefileのテンプレートとしてコピーしたときは、各行末が正しいことを確認してください(line feed 改行文字)。そして"@"の前の空白は1つのTAB文字であることを確認してください。空白文字であってはいけません!

なぜ "net" オプションが重要なのか

"net" オプションの背景にある考えは、ネットワーク接続によって得られるフォルダをマウントするユーザであることを示そうというものです。その裏側では、二つのエントリーは、net オプションのある、なしによってその働きが変わってしまいます。


マウントテーブルの1つのエントリに net オプションを指定した場合:

これは古い Mac OS システムや NEXTSTEP、OPENSTEP の動きに似ています。古い Mac OS システムでは、 アップルメニューにある"最近使ったサーバ"フォルダにマウントした共有ボリュームが集められていました。また、 NEXTSTEP や OPENSTEP では、これらのマウントポイントは /Net ディレクトリに集められていました。


マウントテーブルの1つのエントリに net オプションを指定しない場合:

注意: Mac OS X version 10.1 になって、これに変更がありました。 automounter は "net" オプションのあるなしに関係なく、全ての table-based のマウントを扱います。"net" オプションがないエントリーについては、"準静的な"マウントを行います。マウントポイントは考慮されますが、automounterが実際にマウントするのは、/private/automount の下です。マウントポイントはシンボリックリンクファイルに置き換えられ、それは実際のマウントポイントである /private/automountの中を指すようになります。

これは、"本当の静的な"NFSマウントが必要な場合は、automounterの再設定を行うか、コマンドラインからの操作を行わなければならないことを意味します。しかし、10.1では使うことができません。


"marvin:/home" を例にマウントマップの例を見てみましょう。このディレクトリは "/home" にマウントされることが期待されています。これは起動時に静的なマウントとして扱われて、マウントされるでしょう。NIS によってマウントテーブルが供給されていても、実際には、automounter はマウント操作を行いません。共有部分は期限切れになったり、管理者が意図的に行わないかぎり、アンマウントされることはありません。

"net" オプションをつけた場合、automounter は作動しますが、automounter はマウントポイントを無視し、以下の所にマウントします。

/private/Network/Servers/Marvin/home

そして、以下のところにリンクを追加します。

/Network/Servers/Marvin/home

これにより、Finder や Workspace Manager から、これがネットワークの一部であることが容易に可視化できるようになっています。

"/private" は automounter が利用する標準の基準ディレクトリです。このディレクトリを "-a" オプションを使って変更することができます。"Network/Servers" の部分は、automounter の "-m" オプションを使って指定できます。これらはシステムの startup script に見ることができます。

注意:automounter は1つのサーバから同時に全てのエクスポートをマウントします。これを1回に1つのマウントに制限したい場合は、"-1" オプションを使います。

automounter の基準ディレクトリに "/" を指定するべきではありません。このようなことをすると、再起動するまで、ルートのファイルシステムが見えなくなってしまいます! 両方の世界にとって最善の状態にするには、言い換えれば、ユーザに何が起きているかを分かるようにして、ネットワークマウントであるというマウントのラベル付けを行うことと、同時に古典的なマウントポイントに従いたい場合は、シンボリックリンクを利用すべきです。この例では、"net" オプションをつけた home のエントリを用意し、/home から /Network/Servers/Marvin/home にシンボリックリンクを作成します。

ln -s /Network/Servers/Marvin/home /home

In Mac OS X 10.1では、これは"net" オプションを省略することで自動的に行われます。標準では /automount が使われます。このディレクトリはautomounterの"-static" マップを特定する2番目の "-m" オプションで指定できます。

Mac OS X でネットワークの設定を行う場合、Mac OS X には同時に2つか3つの複数の異なるマウントメカニズムが動作していることに留意しておかなければなりません。


Developer Preview Versions での NIS

Mac OS X DP4 で NIS を使う

Mac OS X DP4 にある lookupd の Darwin バージョンは、NIS と正しく併用できないものです。lookupd のバージョンを "下げると"、NIS と一緒に上手く動作します。

lookupd for Mac OS X DP4 用の lookupd (gzip-compressed) はここからダウンロードできます。Darwin の netinfo パッケージ、バージョン167をベースに作成されています。

  1. 管理者または root でログインし、Terminal を起動します。

  2. オリジナルの lookupd をバックアップします。

    cd /usr/sbin
    mv lookupd lookupd.orig


  3. ダウンロードした lookupd を展開します。そして、/usr/sbin/lookupd にコピーします。

  4. 実行権限を正しく設定します。

    chmod 555 lookupd

  5. マシンを再起動します。

Rhapsody DR2 for Intel で NIS を使う

Intel ベースの PC で動作する Mac OS X ライクなシステムの(Apple 以外から入手できる)最後のバージョンであるため、現在も Rhapsody DR2 を使っている人たちがいます。

Rhapsody DR2 に付属する ypbind プログラムは正しく動作しません。正しく動作するバージョンはここからダウンロードできます。これは intel 用のバイナリで、gzip 圧縮されています。これは、Darwin network_cmds パッケージのバージョン67をベースに作成されています。

  1. root でログインし、Terminal.app を起動します。

  2. オリジナルの ypbind をバックアップします。

    cd /usr/bin
    mv ypbind ypbind.orig


  3. ダウンロードした ypbind を展開します。そして、/usr/sbin/ypbind にコピーします。

  4. 実行権限を正しく設定します。

    chmod 555 ypbind

  5. マシンを再起動します。

よくある質問とその回答(FAQ)

Mac OS X 10.0 で Group の参照を正しく行わない。

Mac OS X 10.0の一部として提供される Darwin の lookup デーモンのバージョン208には NIS からグループを正しく参照できないという深刻な欠点があります。NIS サーバで定義されているユーザグループをオペレーティングシステムは見つけることができません。一時的にはこのグループの情報を複製し、NetInfo データベースに登録しているのです。

この問題を解決するには、Mac OS X 10.1にアップデートします。

Mac OS X 10.1にアップデートをしたら NIS を使えなくなりました。どうして?

セキュリティ的な理由から、Mac OS X では NIS サーバと通信するRPC portmapが使えないようになっています。これを使うには、 /etc/hostconfigでRPCSERVERを有効にしなければなりません。詳しい情報は、「hostconfig fileを編集する」を参照してください。


NISサーバに今どきのUnixをインストールしました。Mac OS X は接続できるのですが、NISアカウントでログインできません。

現在のMac OS XではパスワードをDES方式で暗号化しています。いくつかのUNIXでは現代的なMD5方式を標準で使っています。NISサーバがMD5方式で暗号化を行ってしまうと、Mac OS Xとの語感がなくなります。この問題が起きているかどうかを調べるには、以下のコマンドを入力します。

ypcat passwd | tail

NISクライアントでは、ユーザデータベースの終わりの数行が表示されます。その時の各行は以下のような書式になっているはずです。

guest:Cl/pdFPSstxJ2:596:100:Guest User:/home/guest:/bin/tcsh

最初のコロン(:)と2番目のコロンの間の部分が、ユーザの暗号化されたパスワードです。この部分が13文字よりも長い、または"$1"で始まっている場合、それはDES方式で暗号化されたものではないため、互換を失っています。この状態の典型的な例は以下のようになります。

guest:$1$tJ2gSlhl$awGvwSsuXUP0jmkJmgDgK.:596:100:Guest User:/home/guest:/bin/tcsh

万一このような状態になっていた場合は、NISサーバでDES方式に暗号化方式を変更するより他に解決策はありません。この変更の方法はお使いのNISサーバのドキュメントに書かれていると思います。


NISとautomountのオプションで遊んでいました。 私がログインすると、Finderは全てのアプリケーションをフォルダで表示して、Dockはまともに動作しません。助けて! システムを再インストールしなければいけませんか?

いいえ。これはちょっとびっくりするようなものですが、これはFinderがあなたのHomeフォルダのデスクトップデータベースに書き込めなくなっているという症状が現れたに過ぎません。NISに接続したときに、以下の問題があると思われます。

NISの設定をローカルアカウントで確認してください。ローカルアカウントは、起動ディスクにホームフォルダを持っているので、正常に動作するはずです。もしうまく行かないようなら、ここに説明されているようにNIS参照を無効にしてください。


NIS がごく短い時間しか動作しません。突然NISサーバとの接続が切られてしまいます。マシンがハングアップしてしまうのです。どうしたらいい?

この問題は、slaveサーバとして稼働しているSUNのSolarisのNISサーバを使っていて、それに接続している全てのMac OS X 10.0.xで起こることが知られています。RPC通信をサーバと行っている間、svc_getreqset() 関数にある問題がypbindをクラッシュさせます。この問題を解決するにはMac OS X 10.1 にアップデートすることです。



私のシステムはどこかおかしいので起動途中にハングアップします。どうしたらいい?

慌てないでください。以下のシステム設定のバックアップの手続きを踏んでいるのなら、 簡単に以前の状態に戻すことが可能です。

  1. シングルユーザモードでコンピュータを再起動します。

    システム 方 法
    Mac OS X Server 1.x
    Mac OS X Public Beta
    Mac の起動音が鳴ってから、"s" キーを押したままにします(最初のメッセージが表示されたら、キーを離しても構いません)。
    Mac OS X 10.0 Mac の起動音が鳴ってから、"Apple-s" キーを押したままにします(最初のメッセージが表示されたら、キーを離しても構いません)。
    Rhapsody for Intel
    Darwin for Intel
    ブートプロンプトで "-s" を入力します。


  2. 暫く経つと、以下のようなメッセージとともに、シングルユーザモードのプロンプトが表示されます。

    Singleuser boot -- fsck not done
    Root device is mounted read-only.
    If you want to make modifications to files,
    run '/sbin/fsck -y' first and then '/sbin/mount -uw /'

  3. ファイルシステムを検査するために、以下のように入力します。

    /sbin/fsck -y

    次にディスクを書き込み可能にします。

    /sbin/mount -uw /


  4. hostconfig ファイルを元に戻すために以下のコマンドを入力します。

    cp /etc/hostconfig.backup /etc/hostconfig


  5. NetInfo データベースを戻します。Rhapsody や Mac OS X Server 1.x では以下のようにします。

    mv /etc/netinfo/local.nidb /etc/netinfo/local.nidb.old
    cp -R /etc/netinfo/local.nidb.backup /etc/netinfo/local.nidb

    それ以外の最近のバージョンでは以下のようにします。

    mv /var/db/netinfo/local.nidb /var/db/netinfo/local.nidb.old
    cp -R /var/db/netinfo/local.nidb.backup /var/db/netinfo/local.nidb

  6. 以下のコマンドで再起動させます。

    reboot

これで以前の状態に戻りましたので、問題なく起動することでしょう。


NIS は正しく動作しているようです。でもNFSサーバに私がアクセスしようとすると "permission denied" というエラーが出てしまいます。

以下の2つの理由の一つが原因となっていると思われます。

a) NIS のネットグループまたはそれに類似した機能を使って、"known" ホストにだけファイルを公開している事が考えられます。ご使用のマシンはこのリストに含まれていないのでサーバへのアクセスが許されないのです。この場合、NFS サーバの管理者にご使用のホストでも利用できるように依頼してください。

この問題であるかどうかを以下のコマンドで確かめることができます。

showmount -e myserver

"myserver" という名前のホストで公開されている NFS の一覧を見ることができます。以下のような結果を得ることができるでしょう。

Exports list on myserver:
     /export/usr5/BootImages @stdhosts
     /export/disk1           @adminhosts
     /export/disk2           @adminhosts
     /home                   @allhosts
     /var                    @supervisor

これは使用されている UNIX のバージョンと NFS 管理者が採択しているセキュリティ基準によって大きく異なることに注意してください。この例では、"/home" はネットグループ "allhosts" のホストからはアクセスできる様にされています。そして、"/var" はネットグループ "supervisor" のホストからだけがアクセスできる様にされています。

ネットグループ "allhosts" にどんなホストが登録されているかを見るには以下のコマンドを使います。

ypmatch -k allhosts netgroup

b) 最近の UNIX システムはセキュリティ上の危険回避と言う理由でよく知られた communication ポートでしか NFS アクセスを受け付けません。しかし、Mac OS X は標準ではそうした安全なポートを利用しません。これを解決する2つの方法があります。

  1. Mac OS X に NFS マウントで安全なポートを使うように設定し直します。いくつかのバージョンの Mac OS X では正しく動作しないかもしれないことを留意してください。この場合解決策2しかありません。

  2. NFS サーバのセキュリティ機能を無効にします。これがよい解決策ではないのは明らかです。

解決策1:Mac OS X にセキュアポートを使用させる。

ポートの問題が本当に "permission denied" エラーを引き起こしているかどうかを確かめます。そしてこれは、お使いのMac OS X がセキュアポートの利用をサポートしているかを確かめることにもなります。まず手動でのマウントを試みてみましょう。 -P オプションを使います。

mount -o -P marvin:/home /mnt

これで成功した場合(例えば、"ls -l /mnt" としてディレクトリリストが表示されることを確認します)、P オプションがないことが原因だったことになります。この設定("-P" または "resvport")を NetInfo データベースか NIS の mounts.byname マップの適切な方に設定します。

解決策2:NFS サーバのポートセキュリティ機能を無効にする。

Linux の場合、共有する部分に設定することで可能です。Linux サーバ上の /etc/exports ファイルを修正し、全ての公開エントリで "insecure" オプションが有効になるようにします。これで、Mac OS X から利用できるようになるでしょう。例えば、以下のようにします。

    /home	   @mac-hosts(rw,no_root_squash,insecure)

Solaris の場合、サーバ全体に設定を行います。大抵の場合、/etc/system ファイルでこの機能が有効にされています。以下の行を探して、削除します。そして NFS サービスを再起動します。

set nfssrv:nfs_portmon=1

その他の UNIX システムの場合は、それぞれの NFS 管理マニュアルに従って設定の変更を行ってください。


なぜ NetInfo のことを話しているの? Mac OS X Server をインストールするときには「使用しない」にしたよ。

いいえ、無効にはなっていませんよ:-)。多分以下の Mac OS X Server のシステム設定アシスタントの質問のことを言っているのだと思います。

NetInfo Question Panel

このダイアログは少々誤解を招くものです。この質問が本当に意味することは、"あなたはこのコンピュータをすでにネットワークで稼働している NetInfo ドメインに参加させたいですか?" です。ここで "yes" と答えると、あなたのコンピュータは NetInfo クライアントになります。コンピュータは起動時に自動的に NetInfo サーバをネットワークから検出しようとします。これは NIS のバインドとよく似ています。

"no" と答えた場合でも、NetInfo は以前としてあなたのコンピュータ上で有効です。しかし、それは "local mode" です。あなたのコンピュータはそれ自身の NetInfo サーバになります。そして、そのコンピュータだけのNetInfo "/" に所属することになります。


Mac OS X Sever は、"Mac OS" や"webpage_authors" といった、NIS データベースにないユーザグループを使っています。NIS のユーザはこうしたグループのメンバーになれますか。それともこうしたユーザ情報を NetInfo データベースに複製する必要がありますか?

ユーザやグループを複製する必要はありません。Mac OS X は NetInfo だけが知っているユーザとグループ、そして NIS にだけ知られているユーザらを"混ぜて"使います。しかし、NIS のユーザを NetInfo のグループに加えることにNetworkManager プログラムを使うことは出来ません。そのかわり、NetInfoManager や NetInfo のコマンドツールを利用することが出来ます。

グループの情報は、NetInfo の /groups フォルダに見つけることが出来ます。それぞれのグループエントリは "users" という属性を持っています。この属性には、NIS のユーザ名を含めて、適切なユーザ名の一覧が記述されています。


私は Mac OS X system 群の管理者グループ "wheel" のメンバーになりたいのですが、私はただの NIS ユーザでしかありません。 NIS の管理者に wheel グループに入れてもらうよう依頼すべきですか?

いいえ、ほとんどの NIS の実装では、NIS の管理者はそのようなことは出来ません。なぜなら、全ての特別なグループ ID、100未満の番号を NIS で配付することが出来ないからです。しかし、これととても似ている状況があります。Mac OS X のシステムが一般的な NetInfo ドメインに接続していることを確認してください。そのドメインの /groups/wheel エントリに "users" 属性を作成してください。そしてそこにあなたの NIS ユーザ名を記入してください。

 

NIS はネットワークユーザを参照します。しかし、Mac OS X は home ディレクトリを自動的にマウントしません。

Mac OS X の automounter は標準的な NIS の automount 機能と互換はありません。お使いのネットワーク環境がユーザのhome ディレクトリの automount に依存している場合、Mac OS X クライアントのために特別の配慮をする必要があります。 "Mac OS X の制限"をお読みください。


NIS は正しく有効になりました。しかし、何人かの NIS ユーザはまだ Mac OS X にログインできません。

以下の項目を確認してください


Mac OS X 上で NIS を使うことについて、すでに知られている問題点はありますか?

「ある」とも言えますし、「ない」とも言えます。私たちがここで述べている NIS のサポートは Mac OS X の UNIX 基盤となっている Darwin に組み込まれているものです。Darwin それ自体では、Mac OS X version 10.1 に対応する version 1.4.1 でも NIS に関する機能は極めて良好に動作します。しかしながら、Mac OS X の上位層のいくつかの部分において、Darwinとの統合が正しく行われていません。その部分ではNISを利用することができないのです。以下の問題点に注意するとよいでしょう。

AFP サーバについては設計デザインによるものであり、その他はバグといってよいでしょう。私たちは、2001年の10月にアップルにこの問題を報告しました。


shadow passwords は Mac OS X の NIS で動作しますか?

いいえ。NIS 上で shadow passwords は意味を持ちません。なぜなら、覆い隠している(shadowing)ことで得られた全てのセキュリティを失うことになります。全てのユーザや侵入者は "ypcat shadow.byname" とタイプするだけで、password ファイルを見ることができます。YPAgent はshadow.byname NIS map を読みません。


Mac OS X DP4 でものすごい量の ypbind errors に出くわしました。

"Mac OS X DP4 で NIS を使う"の項をお読みください。



Copyright © 2000, 2002 by Marcel Bresink Software-Systeme. All rights reserved.

$Id: nis-ja.html,v 1.4 2002/04/07 03:59:03 hoi Exp $