The Linux NIS(YP)/NYS/NIS+ HOWTO Thorsten Kukuk 中野武雄 (日本語訳) v1.1.1, 18 November 2000 HOWTOs!NIS HOWTOs!YP HOWTOs!NYS HOWTOs!NIS+ この文書では Linux を NIS(YP) または NIS+ のクライアントに設定する方法、 および NIS サーバをインストールする方法について述べます。 はじめに Linux マシンはどんどんネットワークに接続されるようになってきました。 またネットワーク管理の簡略化のために、ほとんどのネットワーク (特に Sun がベースになっているネットワーク) では NIS が動いています。 Linux マシンでは、これらの NIS サービスを余すところなく受けたり、 また提供したりすることができます。 また Linux マシンは、完全に機能する NIS+ クライアントとして動作させることもできます。 ただしこちらはまだベータの段階です。 この文書は Linux マシンに NIS(YP) と NIS+ をセットアップする方法について記述したものです。 いずれを採用するにしても は必ず読んで下さい。 NIS-HOWTO は Thorsten Kukuk kukuk@suse.de によって編集・管理されています。 以前の NIS-HOWTO は、以下の人々によって執筆されました。彼らに感謝します。 Andrea Dell'Amico<adellam@ZIA.ms.it> Mitchum DSouza<Mitch.DSouza@NetComm.IE> Erwin Embsen<erwin@nioz.nl> Peter Eriksson<peter@ifm.liu.se> 訳注: v0.2 の日本語訳は根岸良征さんによって公開されました。 0.6 への追随と以降の管理は中野武雄が行っています。 この文書の最新版 この文書の最新版はいつでも WWW で閲覧することができます。 URL は http://www.suse.de/~kukuk/nis-howto/HOWTO/NIS-HOWTO.html です。 このドキュメントの最新版は、 Linux 関連の WWW サイトや FTP サイトにも登録されます。 もちろん LDP のホームページにもあります。 翻訳文書へのリンクは http://www.suse.de/~kukuk/nis-howto/ に集められています。 訳注: 日本語版の文書の最新版は JF Project のページ に置かれます。 免責 この文章は私の知識を最大限集めて書いたつもりですが、 正確でない部分もあるかもしれません。 この文書で紹介しているプログラムについては、 それぞれに付属している README ファイルを必ず読んで下さい。 それらにはより詳しい説明やより正確な情報が書かれているはずですので。 もちろんこのドキュメントも できるだけ間違いのないものにしていきたいと考えています。 フィードバックと今後の改版 この文書に関する質問やコメントがありましたら、お気軽に Thorsten Kukuk までメールを下さい。アドレスは kukuk@suse.de です。提案や批判も歓迎します。 この文書に誤りを見つけたら、私に連絡して下されば次の版で訂正します。 よろしくお願いします。 訳注:翻訳に対するコメントは中野武雄 nakano@apm.seikei.ac.jp までお願いします。 なお、あなたの Linux 配布パッケージに特有の問題に関しては 私にメールを送らないで下さい! 私はすべての配布パッケージを知っている訳ではありません。 ただ、もし解決法も送っていただければ、文書に追加したいとは思っています。 謝辞 このドキュメントを作成するにあたって、直接的あるいは間接的にお世話になり ました以下の方々に感謝します。アルファベット順に: Byron A Jeff<byron@cc.gatech.edu> Markus Rex<msrex@suse.de> Miquel van Smoorenburg<miquels@cistron.nl> Dan York<dyork@lodestar2.com> yp-clients のオリジナルコードは Theo de Raadt によって作成されました。 Swen Thuemmler yp-clients のコードを Linux に移植し、 yp 関連のルーチン (これも Theo の仕事) を libc に移植しました。 Thorsten Kukuk は GNU libc 2.x 向けの NIS(YP) と NIS+ のルーチンをスクラッチから書きました。 訳注:日本語訳にあたっては、詳細な校正をして下さった 松本庄司さん・武井伸光さんをはじめ、 JF メーリングリストの皆さんにお世話になりました。 用語集と一般的な情報 用語集 <IndexTerm><Primary>NIS!glossary</Primary></IndexTerm> <IndexTerm><Primary>YP!glossary</Primary></IndexTerm> <IndexTerm><Primary>NYS!glossary</Primary></IndexTerm> <IndexTerm><Primary>NIS+!glossary</Primary></IndexTerm> <IndexTerm><Primary>glossary!NIS/NYS/YP/NIS+</Primary></IndexTerm> このドキュメント中では多くの省略語が使われています。 以下に重要なものの説明を簡単に挙げておきます。 DBM データベースマネジメント (DataBase Management)。 検索キーとデータとのペアを管理するデータベース機能を 持ったライブラリのこと。 DLL 動的リンクライブリ (Dynamically Linked Library)。 プログラムの実行時にリンクされるライブラリのこと。 domainname NIS サーバが発行するキーワード。 NIS クライアント側が使用する NIS サーバを特定するのに用いられる。 この domainname は DNS の "domain" と 同じものにする必要はなく、むしろ別にすべきである。 FTP ファイル転送プロトコル (File Transfer Protocol)。 コンピュータ間でファイルを転送する時に用いられるプロトコルの一つ。 libnsl ネームサービスライブラリ (Name services libraly)。 SVR4 Unix におけるネームサービス関連の命令 (getpwnam, getservbyname など) のライブラリ。 GNU libc では NIS (YP) および NIS+ 機能にこのライブラリを用いる。 libsocket SVR4 Unix で、 ソケット関係のシステムコール (socket, bind, listen など) を提供するライブラリ。 NIS ネットワーク情報サービス (Network Information Service)。 ネットワーク上のすべての計算機で必要な情報を共有するサービスのこと。 Linux の標準 libc ライブラリには NIS のサポートが含まれており、 これをこの文書では "trad-NIS" と記す。 (訳注:原文では "traditional NIS" でしたが、長いので訳者が 勝手に造語しました) NIS+ Network Information Service (Plus)。 基本的には NIS を機能アップしたもの。 NIS+ は Sun Microsystems Inc. によって設計され、 NIS を後継するものとされている。 セキュリティが強化され、 大きなシステムに導入するのが容易になっている。 NYS NYS は「NIS+, YP, Switch」を表すプロジェクト名である。 Peter Eriksson pen@signum.se が管理している。 このプロジェクトでは NIS(=YP) のコードを 0 から再実装しており、 NYS ライブラリのネームサービススイッチ機能を利用するようになっている。 NSS ネームサービススイッチ (Name Service Switch)。 /etc/nsswitch.conf ファイルによって、 各種の情報のリクエストに対してどんな順番で検索を行うかを決定する。 RPC リモートプロシジャーコール (Remote Procedure Call)。 C プログラム内で RPC ルーチンを利用すれば、 ネットワーク上にある他の計算機上の手続き (サブルーチン) を呼びだすことができる。 通常の文脈においては Sun の RPC 実装の意味で用いられることが多い。 YP イエローページ (Yellow Pages (TM)) Yellow Pages は 英国 British Telecom 社の登録商標。 TCP-IP Transmission Control Protocol/Internet Protocol の略。 TCP/IP は Unix で非常によく使われているデータ通信プロトコルである。 一般的な情報 <IndexTerm><Primary>NIS!general information</Primary></IndexTerm> <IndexTerm><Primary>YP!general information</Primary></IndexTerm> <IndexTerm><Primary>NYS!general information</Primary></IndexTerm> <IndexTerm><Primary>NIS+!general information</Primary></IndexTerm> 以下の内容は Sun(tm) System & Network Administration Manual からの引用です。
NIS はかつて サン・イエローページ (Sun Yellow Pages, YP) と呼ばれていました。 しかし「Yellow Pages」は英国 British Telecom 社の登録商標で、 許可無く使用することができませんので、NIS と呼ぶことにしました。
NIS は Network Information Service の略です。 ネットワーク上のすべての計算機で共有すべき情報を提供するために用いられます。 NIS で提供される情報とは、例えば以下のようなものです。 ログイン名、パスワード、ホームディレクトリ (/etc/passwd) グループ情報 (/etc/group) 例えば、あなたのパスワードが NIS のパスワードデータベースに登録されているとしましょう。 するとあなたは、 そこで NIS のクライアントプログラムが動いていれば、 ネットワーク上のどの計算機にもログインすることができるようになるのです。 Sun は Sun Microsystems 社の商標であり、 SunSoft 社にライセンス供与されています。
NIS か NYS か NIS+ か libc 4/5 では trad-NIS か、それとも NYS ライブラリか? <IndexTerm><Primary >libc4/5, use with NIS/NYS</Primary></IndexTerm> <IndexTerm><Primary >NIS/NYS, use with libc4/5</Primary></IndexTerm> trad-NIS を用いるか NYS ライブラリの NIS コードを用いるかは、 「低機能だが安定」をとるか「柔軟だが冒険」をとるかの選択と言えます。 trad-NIS のコードは標準 C ライブラリに入ってからだいぶ経っています。 生まれが古い分、やや柔軟性に欠けるところがあります。 一方 NYS ライブラリの NIS コードを用いるには、 libc ライブラリを再コンパイルして libnsl のコードを libc の中に含める必要があります (そのようにコンパイルされた libc ライブラリを入手できるかもしれません)。 また trad-NIS のコードでは NIS のネットグループ機能が使えますが、 NYS のコードには実装されていません。逆に NYS のコードでは Shadow Password を透過的に扱うことができるようになっていますが、 trad-NIS のコードは NIS 上での Shadow パスワードをサポートしていません。 glibc 2 と NIS/NIS+ <IndexTerm><Primary >glibc2, use with NIS/NIS+</Primary></IndexTerm> <IndexTerm><Primary >NIS/NIS+, use with glibc2</Primary></IndexTerm> GNU C Library 2.x (libc6) を使っている場合は、 以上の全ては忘れて下さい。 libc6 では NSS (ネームスイッチサービス) を完全にサポートしており、 非常に柔軟な運用ができるようになっています。 また以下の NIS/NIS+ マップがサポートされています: aliases, ethers, group, hosts, netgroups, networks, protocols, publickey, passwd, rpc, services, shadow. GNU C Library では、 shadow パスワードを NIS でまったく問題なく扱うことができます。 NIS か NIS+ か? <IndexTerm><Primary >NIS vs. NIS+</Primary></IndexTerm> どちらを選ぶか悩む必要はありません。 特にセキュリティに過敏になる必要がなかったり、 NIS+ を使わねばならない理由がないのなら、NIS を使いましょう。 NIS+ の管理はずっと大変です (クライアント側ではそれほどでもありませんが、サーバー管理は地獄です)。 それに Linux 上での NIS+ はまだ開発段階なのです。 利用するには最新版の glibc 2.1 が必要があります。 ちょっと試してみたい場合には、glibc の NIS+ サポートを libc5 に移植したものも存在します (ただしこれは未サポート)。 動作原理 NIS の動作原理 <IndexTerm><Primary >NIS/YP, theory of operation</Primary></IndexTerm> 少なくとも 1 台の NIS のサーバーがネットワーク上に必要です。 複数のサーバを稼動させることもできます。 この場合はそれぞれを異なった NIS 「ドメイン」のサーバとするか、 あるいは 2 台のサーバをひとつのドメイン上で協調して動作させることになります。 後者の構成では 1 台のサーバが「マスターサーバ」となり、 その他のサーバは全て「スレーブサーバ」と呼ばれます (1 つの「ドメイン」に対する構成です)。 ドメインを複数、それぞれに対するサーバも複数、 といったような構成も可能です。 スレーブサーバは、 マスターサーバの NIS データベースのコピー保持だけをします。 マスターサーバの NIS データベースが変更されると、逐一それを受け取ります。 ネットワークに接続されている計算機の台数とネットワークの信頼性を考慮し、 スレーブサーバをインストールするかどうか (インストールする場合はその台数) を決めて下さい。 NIS クライアントは、NIS サーバが「落ちて」いたり、 レスポンスが遅かったりする場合には、 落ちていないサーバやもっとレスポンスの速いサーバとの接続を試みます。 NIS データベースは ASCII 形式のデータベースから変換された、 いわゆる DBM フォーマットになっています。例えば /etc/passwd/etc/group といったファイルは、 ASCII-DBM 変換プログラム (makedbm: サーバソフトに入っています) を使って直接 DBMフォーマットに変換できます。 NIS のマスターサーバは、 ASCII 形式と DBM 形式のデータベースとの両方を持っていなくてはなりません。 スレーブサーバは NIS マップが変更されると通知を受けます (yppush プログラムが用いられます)。 するとスレーブサーバは必要な変更を行い、 データベースを同期させます。 NIS クライアントにこのような作業をする必要はありません。 クライアントは常に最新の DBM データベースの内容を NIS サーバに読みに行くからです。 ypbind の古いバージョンでは、 動作中の NIS サーバを探すのにブロードキャストを用いていました。 これにはセキュリティ上の問題がありました。 なぜなら誰かが NIS サーバをインストールして、 ブロードキャストの問い合わせに答えるようにできるからです。 新しいバージョンの ypbind (ypbind-3.3 または ypbind-mt) では、 サーバを設定ファイルから取得できます - したがってブロードキャストは不要です。 NIS+ の動作原理 <IndexTerm><Primary >NIS+!theory of operation</Primary></IndexTerm> NIS+ は Sun による新しいネットワークインフォメーションサービスです。 NIS と NIS+ の最も大きな違いは、NIS+ ではデータの暗号化と secure RPC を通した認証とが可能になっている点です。 NIS+ の命名モデルはツリー構造に基づいています。 ツリーのそれぞれのノードが NIS+ のオブジェクトに対応しており、 これには六つのタイプがあります。 ディレクトリ (directory) エントリ (entry) グループ (group) リンク (link) テーブル (table) プライベート (private) です。 NIS+ の名前空間でルートとなる NIS+ ディレクトリは root ディレクトリと呼ばれます。 NIS+ には二つの特別なディレクトリが存在します。 org_dirgroups_dir です。 org_dir ディレクトリにはすべての管理テーブルが含まれます。 例えば passwd, hosts, mail_aliases などです。 groups_dir ディレクトリにはアクセスコントロールに用いられる NIS+ グループオブジェクトが含まれます。 org_dirgroups_dir およびそれらの親ディレクトリを集めたものが NIS+ ドメインとして参照されます。 RPC ポートマッパ <IndexTerm><Primary >RPC portmapper</Primary></IndexTerm> <IndexTerm><Primary >portmapper, RPC</Primary></IndexTerm> <IndexTerm><Primary >NIS!use of RPC portmapper</Primary></IndexTerm> これから説明していくソフトウェアを動かすためには、まず /usr/sbin/rpc.portmap を動作させておく必要があります。 Linux の配布パッケージの中には、 このデーモンを立ち上げるためのコマンドが /sbin/init.d//etc/rc.d/ に書き込んであるものもありますので、 その場合は該当部分をアンコメントしてリブートするだけです。 実際のやり方はディストリビューションのドキュメントを読みましょう。 RPC ポートマッパ (portmap(8)) は、 RPC プログラム番号を TCP/IP ポート番号に変換するサーバプログラムです。 NIS クライアントプログラムがやっているように、 RPC サーバ (NIS サーバなど) に RPC 呼びだしを行うには、 RPC ポートマッパが動いている必要があります。 RPC サーバプログラムは、 監視する TCP/IP ポート番号とデータを提供する RPC プログラム番号を、 起動時にポートマッパに伝えます。 クライアントプログラムが、 ある RPC プログラム番号にコールを行う際には、 まずサーバマシン上の RPC ポートマッパと交信して、 どの TCP/IP ポート番号に RPC のパケットを送れば良いのかを決定します。 RPC サーバプログラムは inetd(8) からも起動できますが、 その場合は inetd より前に RPC ポートマッパを起動するようにして下さい。 secure RPC を用いる場合には、ポートマッパは time サービスを必要とします。 すべてのホストの /etc/inetd.conf で、 以下のように time サービスが利用可能になっていることを確認して下さい。 # # Time service is used for clock syncronization. # time stream tcp nowait root internal time dgram udp wait root internal 重要:設定ファイル変更したあと inetd を再起動するのを忘れないこと! NIS の設定 <IndexTerm><Primary >NIS!setting up</Primary></IndexTerm> マスターサーバ、スレーブサーバ、クライアントを決める <IndexTerm><Primary >NIS!determining system type</Primary></IndexTerm> まず以下の二つの場合を考える必要があります。 接続するネットワーク上に NIS サーバがある場合。 接続するネットワーク上に NIS サーバがない場合。 最初のケースでは ypbind, ypwhich, ypcat, yppoll, ypmatch といったクライアントプログラムを起動するだけで 使えるようになります。一番重要なのは ypbind で、 このプログラムは常に実行されている必要があります (つまり ps コマンドを実行したときにプロセステーブルに表示されなければなりません)。 ypbind はいわゆるデーモンプロセスで、 システムのスタートアップファイルから起動する必要があります (つまり /etc/init.d/nis, /sbin/init.d/ypclient, /etc/rc.d/init.d/ypbind, /etc/rc.local など)。 ypbind が起動されれば、 その計算機は その時点から NIS クライアントとなります。 二番目のケース、つまり NIS サーバがない場合には、 NIS サーバプログラム (通常は ypserv) も必要となります。 この文書の では、この ypserv デーモンを用いて Linux マシンを NIS サーバに設定する方法について説明しています。 ソフトウェア <IndexTerm><Primary >NIS!library requirements</Primary></IndexTerm> バージョン 4.4.2 以降のシステムライブラリ /usr/lib/libc.a もしくは共有ライブラリ /lib/libc.so.x には、 NIS のクライアント・サーバプログラムのコンパイルに必要なシステムコールが すべて含まれています。 GNU C Library 2 (glibc 2.x) では /lib/libnsl.so.1 も必要です。 NIS は /usr/lib/libc.a のバージョン 4.5.21 以上でしか動かないという報告がありますので、 安全のためには古いものは使わない方が良いでしょう。 NIS のクライアントプログラムは以下で入手できます。 Site and Directory Filename ftp.kernel.org:/pub/linux/utils/net/NIS yp-tools-2.4.tar.gz ypbind-mt-1.7.tar.gz ypbind-3.3.tar.gz ypbind-3.3-glibc5.diff.gz ソフトを手に入れたら、同梱されている説明にしたがって下さい。 yp-clients 2.2 は libc4 または 5.4.20 までの libc5 と共に用いて下さい。 libc 5.4.21 以降と glibc 2.x には yp-tools 1.4.1 以降が必要です。 新しい yp-tools のバージョン 2.4 は、すべての Linux libc で動作します。 5.4.21 から 5.4.35 までの libc は、 NIS のコードにバグがあるので使わない方が良いでしょう。 libc 5.4.36 以降を使わないと、ほとんどの YP プログラムは動作しないでしょう。 ypbind 3.3 もすべてのライブラリで動作します。 gcc 2.8.x 以降か egcs、 glibc 2.x を利用している場合は、 ypbind-3.3-glibc5.diff パッチを ypbind 3.3 に当てる必要があります。 セキュリティに問題があるので、 可能なら ypbind 3.3 は使わないほうが良いでしょう。 ypbind-mt は、新しく開発されたマルチスレッドのデーモンです。 これには Linux 2.2 カーネルと glibc 2.1 以降が必要です。 NIS クライアントの設定 ypbind デーモン <IndexTerm><Primary >NIS!ypbind daemon</Primary></IndexTerm> <IndexTerm><Primary >ypbind NIS daemon</Primary></IndexTerm> <IndexTerm><Primary >daemon!ypbind</Primary></IndexTerm> ソフトウェアがうまくコンパイルできたらインストールしましょう。 ypbind デーモンは /usr/sbin ディレクトリに入れると良いでしょう。 NYS のシステムでは ypbind は必要ないと言う人がいるようですが、 これは間違っています。 ypwhichypcat は、 かならず ypbind を必要とします。 ypbind のインストールはもちろんスーパーユーザで行う必要があります。 他のバイナリ (ypwhich, ypcat, yppoll, ypmatch) はすべてのユーザーからアクセス可能なディレクトリに置きましょう。 通常は /usr/bin が良いでしょう。 最近の ypbind には設定ファイル /etc/yp.conf があります。 ここに NIS サーバを直に書いておくこともできます。 詳しくは ypbind(8) のマニュアルを読んで下さい。 このファイルは NYS でも必要です。以下は例です。 ypserver 10.10.0.1 ypserver 10.0.100.8 ypserver 10.3.1.1 NIS なしでもホスト名の解決ができるシステムでは、 IP アドレスでなく名前を用いることができます。 そうでなければ IP アドレスを用います。 ypbind 3.3 にはバグがあり、最後のエントリ (上記の例では ypserver 10.3.1.1) しか用いられず、 他は全て無視されます。 ypbind-mt では正しく扱うことができ、 最初に返事したサーバが用いられます。 ypbind をスタートアップファイルに入れる前に テストしておくことをお勧めします。 ypbind のテストは以下のようにして行います。 YP のドメインネームが設定されていることを確認して下さい。 設定されていない場合は以下のようにします。 /bin/domainname nis.domain nis.domain は通常適当な文字列で、 あなたのマシンの DNS ドメインネームとは違うものにすべきです。 こうしておけば、外部のクラッカーがサーバから NIS パスワードデータベースを盗んでいくのがわずかながら困難になります。 NIS ドメイン名を知らない場合は システム管理者かネットワーク管理者に尋ねて下さい。 /usr/sbin/rpc.portmap が起動されていなければ起動します。 /var/yp というディレクトリがなければ作成します。 /usr/sbin/ypbind を起動します。 ypbind がサービス内容をポートマッパに登録できたかどうか確かめるために、 rpcinfo localhost というコマンドを実行して下さい。 以下のような出力が現われるはずです。 program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind あるいは使っているバージョンによっては program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 758 ypbind 100007 1 udp 758 ypbind 100007 2 tcp 761 ypbind 100007 1 tcp 761 ypbind のようになるかもしれません。 rpcinfo localhost ypbind も実行してみて下さい。以下のような表示が出るはずです。 program 100007 version 2 ready and waiting あるいはインストールした ypbind のバージョンによっては program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting のような出力になるかもしれません。 重要なのは "version 2" のメッセージだけです。 ここまで来れば ypcat のような NIS クライアントプログラムを実行できるはずです。 例えば NIS のパスワードデータベースを参照したい場合には、 ypcat passwd.byname とします。 重要: もし上述の ypbind のテストを省略した場合、 少なくともドメインネームが設定してあることと /var/yp という名前のディレクトリが作ってあることを確認して下さい。 /var/yp がないと ypbind は正常に起動できません。 ドメインネームの設定が正しいかどうかをチェックするには、 yp-tools 2.2 の /bin/ypdomainname を使って下さい。 このプログラムは yp_get_default_domain() 関数を使うので、 より厳しいチェックができます。 例えば Linux でデフォルトになっている (そして多くの問題の原因になっている) "(none)" のようなドメイン名は、 このプログラムでは許可されません。 テストがうまくいったらスタートアップファイルを変更して、ブート時に ypbind が起動されるようにしておくと良いでしょう。 自動的に NIS クライアントとしての活動が開始されます。 ypbind の起動前に、 ドメインネームが設定されるようにするのも忘れないこと。 以上で設定は終了しました。リブートして、ブートメッセージで ypbind が正常に動作しているかどうか確認して下さい。 trad-NIS を用いた NIS クライアントをセットアップする <IndexTerm><Primary >NIS!client setup</Primary></IndexTerm> ホストの名前解決に NIS を用いるには、 /etc/host.conf ファイルで解決順を指定する行に "nis" を指定 (または追加) して下さい。 詳細に付いては resolv+(8) のマニュアルを読んで下さい。 以下の行を NIS クライアントの /etc/passwd に追加して下さい。 +:::::: + や - といった文字を使えば、 ユーザーを追加/削除したり状態を変更したりできます。 例えばユーザ guest を削除したいなら /etc/passwd ファイルに -guest を追加すれば OK です。 ユーザ "linux" に違ったシェル (例えば ksh) を使わせたいですって? 大丈夫、"+linux::::::/bin/ksh" を /etc/passwd に追加するだけです (引用符は取って下さい)。 変更したくないフィールドは空のままにしておく必要があります。 ユーザのコントロールにはネットグループを用いることもできます。 例えば「ログインアクセスを miquiels, dth, ed とネットグループ sysadmin のメンバーだけに限りたいが、アカウントデータは他のユーザ全員分が必要」 というような場合は以下のようになります。 +miquels::::::: +ed::::::: +dth::::::: +@sysadmins::::::: -ftp +:*::::::/etc/NoShell Linux ではパスワードのフィールドも上書きできることに注意して下さい。や り方は今の例と全く同じです。この例では "ftp" のログインも 削除しています。従ってこのユーザは存在しなくなり、 anonymous ftp は機能しなくなります。 /etc/netgroup ファイルは以下のようになっていると思います。 sysadmins (-,software,) (-,kukuk,) 重要:ネットグループの機能は libc 4.5.26 から実装されました。 4.5.26 以前の libc を使っている Linux マシンで ypbind を実行すると、 NIS のパスワードデータベースにエントリを持つすべてのユーザは そのマシンにアクセスできてしまいます! NYS を用いた NIS クライアントをセットアップする <IndexTerm><Primary >NYS!client setup</Primary></IndexTerm> 必要なのは NIS の設定ファイル (/etc/yp.conf) で正しいサーバ(群)から情報をもらえるようにしておくこと、 そしてネームサービススイッチの設定ファイル (/etc/nsswitch.conf) を正しく設定することです。 ypbind もインストールしておきましょう。 libc には必要ありませんが、 NIS(YP) の各ツールにはこれが必要になります。 ユーザの追加・排除機能 (+/-guest/+@admins) を用いたい場合は、 "passwd: compat" と "group: compat" を nsswitch.conf で指定する必要があります。 "shadow: compat" という指定はありません。 この場合は "shadow: files nis" のようにして下さい。 NYS のソースは libc 5 のソースに同梱されています。 configure を実行し、 "Values correct" の問いに対して一度目は "NO" と答えて下さい。そして "Build a NYS libc from nys" に対して "YES" と答えて下さい。 glibc 2.x を用いた NIS クライアントをセットアップする <IndexTerm><Primary >NIS!client setup!using glibc 2.x</Primary></IndexTerm> glibc は trad-NIS を利用します。従って ypbind を起動する必要があります。 またネームサービススイッチの設定ファイル (/etc/nsswitch.conf) も正しく設定する必要があります。 passwd/, shadow, group に compat モードを使う場合は、これらのファイルの最後に "+" を追加する必要があります。 ユーザの追加・削除機能を用いることもできます。 設定は Solaris 2.x のものとまったく同じです。 nsswitch.conf ファイル <IndexTerm><Primary >nsswitch.conf file</Primary></IndexTerm> <IndexTerm><Primary >NIS!nsswitch.conf file</Primary></IndexTerm> ネットワークサービススイッチのファイル /etc/nsswitch.conf は、 情報へのアクセス要求が来たときに行う検索の順番を決定するものです。 ホスト名の検索で用いられる /etc/host.conf ファイルと似ています。 例えばこのファイルにおいて hosts: files nis dns と指定すれば、ホスト名の検索機能はまずローカルの /etc/hosts ファイルを探し、 次に NIS、そしてドメインネームサービス (/etc/resolv.confnamed) という順番で検索を行います。 最後までマッチするものがなければ、 エラーが返されることになります。このファイルは全てのユーザから 読み取り可能でなければなりません!より詳細な情報は nsswitch.5 か nsswitch.conf.5 のマニュアルページを見てください。 NIS 用の /etc/nsswitch.conf ファイルとしては、 以下のようなものが良いでしょう。 # # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # The entry '[NOTFOUND=return]' means that the search for an # entry should stop if the search in the previous entry turned # up nothing. Note that if the search failed due to some other reason # (like no NIS server responding) then the search continues with the # next entry. # # Legal entries are: # # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat group: compat # For libc5, you must use shadow: files nis shadow: compat passwd_compat: nis group_compat: nis shadow_compat: nis hosts: nis files dns services: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files netgroup: nis bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files automount: files aliases: nis [NOTFOUND=return] files passwd_compat, group_compat, shadow_compat は glibc 2.x でのみサポートされています。 /etc/nsswitch.conf に shadow ルールがなければ、 glibc はパスワードの検索に passwd ルールを用います。 glibc 用の検索モジュールとして、 hesoid のようなものも存在しています。 これについては glibc の文書を読んでください。 Shadow パスワードと NIS <IndexTerm><Primary >NIS!shadow passwords</Primary></IndexTerm> NIS に shadow パスワードを流通させるのは良い考えではありません。 shadow システムのメリットであるセキュリティが失われてしまうからです。 それにこれがサポートされている Linux C ライブラリは少数に過ぎません。 NIS 上に shadow を流さないようにするには、 ローカルシステムのユーザだけを /etc/shadow に登録することです。 NIS に流すユーザエントリを shadow データベースから削除し、 それらのパスワードは passwd に書いて下さい。 こうすれば root ログインには shadow を、 一般の NIS ユーザには passwd を用いることができるようになります。 この方法なら、すべての NIS クライアントでうまく動作します。 Linux NIS で shadow パスワードを用いることができる唯一の Linux libc は GNU C Library 2.x です。 Linux libc5 はこれをサポートしていません。 Linux libc5 を NYS と一緒にコンパイルした場合は、 多少のコードが含まれることにはなります。 でもこのコードは状況によってはひどく壊れてしまい、 shadow エントリが全て正しい場合でも動作しないことがあります。 Solaris Solaris は NIS 上での shadow パスワードをサポートしていません。 PAM <IndexTerm><Primary >PAM!shadow passwords</Primary></IndexTerm> PAM は NIS 上での shadow パスワードをサポートしません。 特に pam_pwdb/libpwdb がだめなんです。 これは RedHat 5.x ユーザにとって大きな問題です。 glibc と PAM を使っている場合は、 /etc/pam.d/* のエントリを変更する必要があります。 pam_unix_* モジュールにある pam_pwdb のルールを置き換えて下さい。 しかし pam_unix_auth.so モジュールにはバグがあるので、 これは必ず動作するとは限りません。 /etc/pam.d/login の例を以下にあげます。 #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_unix.so auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix.so password required /lib/security/pam_unix.so session required /lib/security/pam_unix.so NIS+ の設定 ソフトウェア <IndexTerm><Primary >NIS+!software required</Primary></IndexTerm> Linux の NIS+ クライアントコードは GNU C ライブラリのバージョン 2 用に 開発されてきました。これを libc5 へ移植したものもあります。 商用アプリケーションのほとんどは libc5 にリンクされていますし、 これらアプリケーションを glibc 向けに再コンパイルすることはできませんから。 ただし libc5 と NIS+ を同時に使う際には問題があります。 スタティックなプログラムは libc5 にリンクすることはできませんし、 このライブラリでコンパイルしたプログラムは 他のバージョンの libc5 では動作しません。 GNU C Library 2.1 を手に入れ、コンパイルする必要があります。 64bit プラットフォームなら GNU C Library 2.1.1 です。 ベースのシステムとして、 glibc ベースの配布パッケージも 必要になります。 Debian, RedHat, SuSE Linux などです。 どのディストリビューションでも、 gcc/g++ コンパイラ、 libstdc++, ncurses を再コンパイルしなければなりません。 Redhat では PAM の設定を大幅に変更しなければなりません。 SuSE Linux 6.0 では shadow パッケージを再コンパイルしなければなりません。 NIS+ クライアントのソフトウェアは以下から入手できます。 Site and Directory Filename ftp.funet.fi:/pub/gnu/funet libc-* glibc-crypt-* glibc-linuxthreads-* ftp.kernel.org:/pub/linux/utils/net/NIS+ nis-utils-1.3.tar.gz http://www.suse.de/~kukuk/nisplus/ には、より詳細な情報と最新のソースがあります。 NIS+ クライアントのセットアップ <IndexTerm><Primary >NIS+!client setup</Primary></IndexTerm> 重要: NIS+ クライアントをセットアップする前に、 Solaris の NIS+ ドキュ メントを読んでサーバ側で必要な作業を行って下さい。この文書ではクライア ント側でどうすればよいかについてしか述べていません! 新しい libc と nis-tools をインストールしたら、 NIS+ サーバ上でこの新たなクライアント用の信任証 (credential) を作成します。 portmap が動作していることを確認するようにして下さい。 次にクライアントにする Linux PC の時刻が NIS+ サーバと一致しているかチェックして下さい。 secure RPC の場合は、信任証の有効期間は 3 分しかありません。すべてのホストで xntpd を走らせるのが良いでしょう。 これらが確認できたら以下を実行します。 domainname nisplus.domain. nisinit -c -H <NIS+ server> これによって cold スタートファイルが初期化されます。 他のオプションについては nisinit のマニュアルページを読んで下さい。 ドメインネームはリブートのたびに設定されるようにしておいて下さい。 あなたのネットワークの NIS+ ドメインネームがわからない場合は、 システムかネットワークの管理者に尋ねて下さい。 次に /etc/nsswitch.conf ファイルを変更します。 publickey に書けるサービスは nisplus だけ ("publickey: nisplus") で、 他のものは書いてはならないことに注意して下さい。 次に keyserv を起動して下さい。これはブート時に、 必ず portmap の直後に起動されるようにしておいて下さい。こうして keylogin -r とすればシステムの root の秘密鍵が保管されます (もうこの新しいホストの公開鍵は NIS+ のサーバに追加しましたよね?)。 niscat passwd.org_dir とすれば、 passwd データベースのすべてのエントリを見ることができるはずです。 NIS+, keylogin, login および PAM <IndexTerm><Primary >NIS+!use of PAM with</Primary></IndexTerm> ログインしたときに、ユーザは自分の秘密鍵を keyserv にセットする必要があります。 これには keylogin を用います。 glibc 2.1 とコンパイルされた場合には、 shadow パッケージの login はこれをユーザの代わりに実行してくれます。 PAM を認識する login を用意するには、 pam_keylogin-1.2.tar.gz をインストールし、 /etc/pam.d/login ファイルを変更して pwdb の代わりに pam&_unix_auth を使うようにする必要があります (pwdb は NIS+ をサポートしません)。例を示します。 #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_unix2.so set_secrpc auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix2.so password required /lib/security/pam_unix2.so session required /lib/security/pam_unix2.so nsswitch.conf ファイル <IndexTerm><Primary >nsswitch.conf file</Primary></IndexTerm> <IndexTerm><Primary >NIS+!nsswitch.conf file</Primary></IndexTerm> ネットワークサービススイッチのファイル /etc/nsswitch.conf は、 情報へのアクセス要求が来たときに行う検索の順番を決定するものです。 ホスト名の検索で用いられる /etc/host.conf ファイルと似ています。 例えばこのファイルにおいて hosts: files nisplus dns と指定すれば、ホスト名の検索機能はまずローカルの /etc/hosts ファイルを探し、次に NIS+、そしてドメインネームサービス (/etc/resolv.confnamed) と言う順番で検索を行います。 最後までマッチするものがなければエラーが返されることになります。 NIS+ 用の /etc/nsswitch.conf ファイルは、 以下のようなものにしておけば良いでしょう。 # # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # The entry '[NOTFOUND=return]' means that the search for an # entry should stop if the search in the previous entry turned # up nothing. Note that if the search failed due to some other reason # (like no NIS server responding) then the search continues with the # next entry. # # Legal entries are: # # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat group: compat shadow: compat passwd_compat: nisplus group_compat: nisplus shadow_compat: nisplus hosts: nisplus files dns services: nisplus [NOTFOUND=return] files networks: nisplus [NOTFOUND=return] files protocols: nisplus [NOTFOUND=return] files rpc: nisplus [NOTFOUND=return] files ethers: nisplus [NOTFOUND=return] files netmasks: nisplus [NOTFOUND=return] files netgroup: nisplus bootparams: nisplus [NOTFOUND=return] files publickey: nisplus automount: files aliases: nisplus [NOTFOUND=return] files NIS サーバの設定 <IndexTerm><Primary >NIS!server setup</Primary></IndexTerm> サーバプログラム ypserv <IndexTerm><Primary >ypserv!setup</Primary></IndexTerm> <IndexTerm><Primary >NIS!ypserv setup</Primary></IndexTerm> この文書では、 NIS サーバとしては "ypserv" の 設定方法のみを記します。 NIS サーバのソフトは以下にあります。 Site and Directory Filename ftp.kernel.org:/pub/linux/utils/net/NIS ypserv-1.3.11.tar.gz http://www.suse.de/~kukuk/nis/ に、より詳しい情報があります。 サーバのセットアップ方法は trad-NIS / NYS どちらの場合でも同じです。 コンパイルして ypservmakedbm を作ります。 securenets ファイルを使うか tcp_wrapper を使うかを設定できます。 tcp_wrapper の方がずっと柔軟ですが、 これが問題の原因となる場合も多く知られています。 tcp_wrapper は設定ファイルの書き方によってはメモリーリークを起こすこともあります。 もし tcp_wrapper を使うように ypserv をコンパイルして問題が起こった場合には、 securenets ファイルを 用いるようにコンパイルしなおしてください。 ypserv とすれば どちらのバージョンを使っているか分かります。 サーバをマスターとして起動する場合は、 NIS を用いて共有させるファイルを決めてください。 そして /var/yp/Makefile の "all" ルールに必要なものを加えたり、不要なものを削除したりしてください。 また Makefile の先頭の方も必ず見て、 オプションを自分の環境にあわせて編集しておくべきです。 ypserv 1.1 と ypserv 1.2 との間では、大きな変更が行われました。 1.2 以降では、ファイルハンドルがキャッシュされるようになったのです。 これにより、新しいマップを生成するときには必ず makedbm に -c オプションをつけなければならなくなりました。 /var/yp/Makefile が ypserv 1.2 以降に付属のものであることを確認して下さい。 あるいは Makefile 中の makedbm に、手で -c フラグを加えて下さい。 これを忘れると、ypserv は更新されたマップではなく、 古いマップを使い続けてしまいます。 次に /var/yp/securenets/etc/ypserv.conf を編集します。 詳細は ypserv(8) と ypserv.conf(5) のマニュアルページを読んで下さい。 ポートマッパ (rpc.portmap) が動いているか確認して下さい。 確認できたら ypserv を動かします。 % rpcinfo -u localhost ypserv というコマンドを実行してみて、 program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting と出力されることを確認して下さい。 "version 1" の行は、 ypserv のバージョンや用いた設定によっては 出ないかもしれません。これが必要になるのは昔の SunOS 4.x を クライアントとして使う場合だけです。 ここで NIS (YP) データを作成します。 マスターサーバで以下を実行して下さい。 % /usr/lib/yp/ypinit -m スレーブサーバでは、 ypwhich が機能することを確認して下さい。 つまりスレーブにするホストは、まず NIS クライアントとして動作できなけ ればならないのです。 確認できたら以下を実行して、このホストを NIS スレーブにします。 % /usr/lib/yp/ypinit -s masterhost これでおしまい、サーバは動作しているはずです。 何か大きな問題が生じたら、 ypservypbind を別の xterm からデバッグモードで起動してみましょう。 デバッグ出力から何が問題なのかが判断できるはずです。 マップを更新する必要が生じた場合は、 NIS マスターの /var/yp ディレクトリで make を実行してください。 ソースファイルが新しい場合にはマップが更新され、スレーブサーバに push されます。マップの更新には ypinit は用いないようにしてください。 「スレーブ」サーバ上では root の crontab を編集し、 以下のような行を追加しておくと良いかもしれません。 20 * * * * /usr/lib/yp/ypxfr_1perhour 40 6 * * * /usr/lib/yp/ypxfr_1perday 55 6,18 * * * /usr/lib/yp/ypxfr_2perday 万が一マスタサーバでの更新の際にスレーブがダウンしていてデータを 受け損なっても,これによって NIS マップを最新に保つことができます。 スレーブはいつでも追加することができます。 まず新しくインストールしたスレーブサーバが NIS マスターに接続する許可を持っているかを確認しましょう。 次に % /usr/lib/yp/ypinit -s masterhost を新しいスレーブで実行します。 マスターサーバでは、この新しいスレーブサーバの名前を /var/yp/ypservers に追加し、 /var/ypmake を実行してマップを更新します。 NIS サーバへのユーザアクセスを制限したい場合は、 NIS サーバのホストをクライアントとしても実行する必要があります。 つまり ypbind を実行して "+" の付いたエントリをパスワードファイル /etc/passwd の半ばに追加します。 ライブラリ関数は NIS エントリ以降に置かれた通常のエントリを全て無視し、 残りを NIS を通して取得します。このようにすると NIS のアクセスルールを 管理することができます。例を示します。 root:x:0:0:root:/root:/bin/bash daemon:*:1:1:daemon:/usr/sbin: bin:*:2:2:bin:/bin: sys:*:3:3:sys:/dev: sync:*:4:100:sync:/bin:/bin/sync games:*:5:100:games:/usr/games: man:*:6:100:man:/var/catman: lp:*:7:7:lp:/var/spool/lpd: mail:*:8:8:mail:/var/spool/mail: news:*:9:9:news:/var/spool/news: uucp:*:10:50:uucp:/var/spool/uucp: nobody:*:65534:65534:noone at all,,,,:/dev/null: +miquels:::::: +:*:::::/etc/NoShell [ All normal users AFTER this line! ] tester:*:299:10:Just a test account:/tmp: miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh このようにユーザ "tester" は存在しますが、シェルが /etc/NoShell になります。 miquels は通常のアクセス権を持つことになります。 あるいは /var/yp/Makefile ファイルを編集し、 NIS が使うパスワードファイルを別に指定することができます。 大きなシステムでは、NIS のパスワードファイルとグループファイルは通常 /var/yp/ypfiles に置くことが多いようです。 このようにするとパスワードファイル関連の管理ツールは使えなくなります。 つまり passwd, chfn, adduser などに対し、特別なツールが必要になります。 しかし yppasswd, ypchsh, ypchfn は当然動作します。 サーバプログラム yps <IndexTerm><Primary >NIS!yps server</Primary></IndexTerm> <IndexTerm><Primary >yps NIS server</Primary></IndexTerm> NIS サーバ yps の設定は 前のセクションを参考にして下さい。 大体似ていますが完全に同じではないので、 ypserv の説明を適用する際には注意して下さい。 yps はもはや誰もサポートしていませんし、 いくつかセキュリティホールも存在しています。使うべきではありません! yps のソフトは以下のサイトにあります。 Site and Directory Filename ftp.lysator.liu.se:/pub/NYS/servers yps-0.21.tar.gz ftp.kernel.org:/pub/linux/utils/net/NIS yps-0.21.tar.gz rpc.ypxfrd プログラム <IndexTerm><Primary >NIS|rpc.ypxfrd daemon</Primary></IndexTerm> <IndexTerm><Primary >rpc.ypxfrd daemon</Primary></IndexTerm> rpc.ypxfrd は非常に大きな NIS マップを NIS マスターから NIS スレーブサーバーに転送する際に、転送を高速化するために 用いられます。 NIS スレーブサーバーは、新しいマップがあるというメッセージを 受け取ると、そのマップを取得するために ypxfr を起動します。 ypxfr は yp_all() 関数を用いてマップの内容をマスターサーバー から読み込もうとします。この情報はデーターベースライブラリを 通して保存されるため、マップのサイズが非常に大きくなると、 このプロセスは数分もかかってしまうことがあります。 rpc.ypxfrd サーバーは、 NIS スレーブサーバーにマスターの マップファイルを単純にコピーさせ、転送プロセスを高速化します。 スレーブサーバーがゼロから自前のマップを生成するのに比べ、 これはずっと短時間ですみます。 rpc.ypxfrd は RPC ベースの転送プロトコルを用いるので、 新しいマップを生成する必要はありません。 rpc.ypxfrd は inetd から起動することもできますが、 起動には時間がかかるので、 ypserv と一緒にデーモンとして 起動しておくほうがいいでしょう。 rpc.ypxfrd は NIS マスターサーバでだけ起動しておけば OK です。 rpc.yppasswdd プログラム <IndexTerm><Primary >NIS!rpc.yppasswdd daemon</Primary></IndexTerm> <IndexTerm><Primary >rpc.yppasswdd daemon</Primary></IndexTerm> ユーザがパスワードを変更したときには、 NIS のパスワードデータベースや、 それに依存した他の NIS データベースも変更されなければなれません。 これを行なうのが rpc.yppasswdd です。 このプログラムはパスワード変更を取り扱い、 NIS の情報が正しく更新されるようにします。 現在 rpc.yppasswddypserv の一部となっています。 別パッケージになっている yppasswd-0.9.tar.gzyppasswd-0.10.tar.gz などは古いので使う必要はありませんし、また今後使うべきではありません。 ypserv 1.3.2 の rpc.yppasswdd は shadow を完全にサポートしています。 yppasswdyp-tools-2.2.tar.gz に入っています。 rpc.yppasswdd を実行するのは NIS マスターサーバのみです。デフォルトで は、ユーザーはフルネームやログインシェルを変更することができないように なっています。これを許可するには、それぞれ -e chfn および -e chsh オプ ションを指定します。 passwd と shadow ファイルが /etc 以外にある場合は、 -D オプションを 指定する必要があります。例えば全てのソースファイルを /etc/yp に置いて、ユーザにシェルの変更を可能にしたい場合は、 rpc.yppasswdd を以下のパラメータで実行しなければなりません: # rpc.yppasswdd -D /etc/yp -e chsh または # rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh でも OK です。 他には特にすることはありません。ただ、 rpc.yppasswdd/var/yp/Makefile と同じファイルを使っているかどうかは気をつけておいてください。 エラーは syslog を通して記録されます。 NIS/NYS インストールのチェック <IndexTerm><Primary >NIS!verification of operation</Primary></IndexTerm> <IndexTerm><Primary >NYS!verification of operation</Primary></IndexTerm> すべてがうまく行ったら、 簡単なコマンドを使ってインストールのチェックを行って下さい。 例えばパスワードファイルが NIS/NYS で共有されている場合は、 % ypcat passwd というコマンドで NIS のパスワードファイルの内容が見られるはずです。 また % ypmatch userid passwd とすれば、 指定したユーザのエントリがパスワードファイルから取り出されて表示されます (userid には適当なユーザのログイン名を入れます)。 なお ypcatypmatch は、 trad-NIS や NYS の配布パッケージに入っています。 ユーザーによるログインができない場合には、 以下のプログラムをクライアントで実行してみて下さい。 #include <stdio.h> #include <pwd.h> #include <sys/types.h> int main(int argc, char *argv[]) { struct passwd *pwd; if(argc != 2) { fprintf(stderr,"Usage: getwpnam username\n"); exit(1); } pwd=getpwnam(argv[1]); if(pwd != NULL) { printf("name.....: [%s]\n",pwd->pw_name); printf("password.: [%s]\n",pwd->pw_passwd); printf("user id..: [%d]\n", pwd->pw_uid); printf("group id.: [%d]\n",pwd->pw_gid); printf("gecos....: [%s]\n",pwd->pw_gecos); printf("directory: [%s]\n",pwd->pw_dir); printf("shell....: [%s]\n",pwd->pw_shell); } else fprintf(stderr,"User \"%s\" not found!\n",argv[1]); exit(0); } このプログラムをユーザ名をパラメータとして実行しますと、 そのユーザに対して getpwnam 関数が返す情報が全て表示されます。 これによって、どのエントリが間違っているかがわかるでしょう。 よくある間違いとしては、パスワードのフィールドが "*" によって上書きされている、などがあります。 GNU C Library 2.1 (glibc 2.1) には getent というツールがついてきます。 そのようなシステムでは、上記の代わりにこちらを使いましょう。 % getent passwd % getent passwd login のように試してみましょう。 再起動時の自動実行 NIS がサーバやクライアントで正しく設定できたら、 この設定が起動時にも正しく反映されるかを確認しなければなりません。 チェックする点は 2 つあります。 起動スクリプトがあるかどうかと、 NIS ドメイン名が正しい場所に保存されているかどうか、です。 NIS 用の起動スクリプト あなたの使っている Linux での 起動スクリプトの置場所になっているディレクトリを調べましょう。 /etc/init.d /etc/rc.d/init.d /sbin/init.d などになっていると思います。 NIS の起動スクリプトがあるかどうか確認しましょう。 ファイルの名前はふつう ypbind とか ypclient となっているようです。 NIS ドメイン名 おそらくある種の人々にとって、 NIS を使う上での最大の難関は、 NIS ドメイン名を再起動後にも取得できるようにすることでしょう。 Solaris 2.x では、NIS ドメイン名は /etc/defaultdomain に 1 行で書かれていました。 しかし、ほとんどの Linux ディストリビューションでは このファイルは使っていないようです。 ディストリビューション固有の話題 現在のところ、 いろいろな Linux ディストリビューションにおける NIS ドメイン名の保管場所は、以下のようになっているようです。 Caldera 2.<emphasis>x</emphasis> Caldera は /etc/nis.conf ファイルを用いているようです。書式は通常の /etc/yp.conf と同じです。 Debian Debian は Sun と同じく /etc/defaultdomain を使っているようです。 Red Hat 6.<emphasis>x</emphasis>, 7.<emphasis>x</emphasis> /etc/sysconfig/network ファイルの NISDOMAIN 変数を (なければ作成して) 修正してください。 SuSE Linux /etc/rc.config ファイルの YP_DOMAINNAME 変数を修正して、 SuSEconfig コマンドを実行してください。 NIS でよくおこる問題とその解決方法 <IndexTerm><Primary >NIS!troubleshooting</Primary></IndexTerm> <IndexTerm><Primary >NIS!problems with</Primary></IndexTerm> 以下のような問題が多くのユーザから報告されています。 バージョン 4.5.19 のライブラリは壊れており NIS は動作しません。 ライブラリを 4.5.19 から 4.5.24 にアップグレードすると su コマンドが使えなくなります。 この場合は su コマンドを Slackware 1.2.0 から入手します。ついでに最新のライブラリも導入してしまうと良いでしょう。 NIS サーバを再起動させた際、ypbind yp_match: clnt_call: RPC: Unable to receive; errno = Connection refused のようなメッセージを表示し、 NIS のデータベースに登録されている人がログインできなくなることがあります。 root でログインして ypbind を kill し、ypbind を起動しなおしてみて下さい。 ypbind 3.3 以降にアップデートしても解決できると思います。 libc を 5.4.20 以上の版にアップグレードすると、 YP tools が動作しなくなります。 libc >= 5.4.21 および glibc 2.x には yp-tools 1.2 が必要です。 それ以前の版の libc には yp-clients 2.2 が必要です。 yp-tools 2.x ならすべてのライブラリで動作します。 libc 5.4.21-5.4.35 の yp_maplist は壊れています。 yp-tools 1.x を用いるには 5.4.36 以降が必要です。 さもないと ypwhich などの YP プログラムは segfault してしまうはずです。 libc5 と trad-NIS は shadow パスワードの NIS での配布をサポートしていません。 libc5 + NYS または glibc 2.x を用いる必要があります。 ypcat shadow doesn't show the shadow map. This is correct, the name of the shadow map is shadow.byname, not shadow. Solaris は必ずしも特権ポートを用いません。従って Solaris のクライアントがある場合はパスワード mangling を用いては いけません。 よくある質問 (FAQ) <IndexTerm><Primary >NIS!frequently asked questions</Primary></IndexTerm> あなたが疑問に思っていたことはここまでに大部分が解決されたことと思いま すが、まだ疑問点が残っていましたら、 comp.os.linux.networking などに質問すると良いと思います。 訳注:日本語のニュースグループとしては fj.os.linux japan.comp.linux などが良いでしょう。 訳者のページ (http://surf.ap.seikei.ac.jp/~nakano/linux/NIS-j.html) には、個人的なインストール体験記が書いてあるほか、 この文書で紹介されているソフトウェア入手先のミラーのうち、 国内のものを紹介しています。