\documentstyle[a4j]{jarticle} \topmargin -50pt \oddsidemargin -20pt \evensidemargin -20pt \textwidth 480pt \textheight 750pt \begin{document} \title{NIS} \author{牧之内研 修士1年 兼子 譲} \date{2002年7月4日} \maketitle \section{NISとは?} NIS(Network Information Service)は、ある計算機(NISサーバ)が管理するファ イルの内容を、その他の計算機(NISクライアント)に配布する仕組みです。 以下はNISで管理できるファイルの例です。 \begin{itemize} \item パスワードファイル \item /etc/hosts \item /etc/services \item amdのマップファイル \end{itemize} 牧之内研究室では、NISによって個人のログイン名とパスワードを管理すること によって、研究室内のマシンなら、自分のマシン以外にも、すべて同じログイン 名とパスワードでログインすることができ、一台一台にユーザを登録しなくても 利用することができます。 \section{NISドメイン} NISによって一元管理するファイルを利用するUNIX計算機の集まりをNISドメイン と呼びます。NISドメインはドメイン名によって区別します。 NISドメイン名がわかるとNISで管理している情報を簡単に取得されます。そこで \begin{itemize} \item NISのドメインは簡単に想像できるようなものは避ける \item NISのドメインは知られてはいけない \item 外部の人に端末を触られないようにする \end{itemize} \section{NISサーバ} NISを運用するためには、サーバとなるコンピュータが少なくとも1台は必要です。 これをNISサーバと呼び、NISドメインにおける情報を一括して管理する役割を持 ちます。NISサーバは同一ドメイン内に複数台設置することができます。 複数のNISサーバの内1台はマスターサーバとして動作させ、残りはスレーブサー バとして動作させます。マスターサーバはすべてのNISクライアントで利用され るファイルを保守し、NISクライアントが参照するファイルが置かれてあります。 スレーブサーバはNISマスターサーバのデータファイルのコピーをdbm(database management)フォーマットで保持します。 マスターサーバは定期的にNISデータベースのコピーをスレーブサーバに送りま す。一方、NISクライアントは、マスターまたはスレーブの全てのサーバから、 最初にレスポンスを返したサーバに接続します。 \section{NIS関係のコマンド} \begin{itemize} \item ypserv\\ NISサーバプログラム。サーバでのみ実行。 \item ypbind\\ NISクライアントプログラム。 \item yppasswd\\ NISサーバで管理するpasswdファイルの変更。 \item ypcat\\ NISの配っている情報を見る。例えばpasswdなら \begin{verbatim} % ypcat passwd \end{verbatim} \item ypinit\\ NISデータベースの作成とインストール。マスターとスレーブで引数が違 う。 \item ypwhich\\ NISサービスを与えているサーバ名を返す。 \item domainname\\ NISドメイン名を設定、表示する。引数なしで表示。ルートなら引数にド メイン名を与えて設定。 \end{itemize} \section{研究室の設定} \begin{itemize} \item NISマスターサーバ\\ moon \item NISスレーブサーバ\\ yoda(luke)\\ ami(yumi) \end{itemize} NISドメインネームは秘密なのでここには書きませんがdomainnameコマンドを実 行することでわかります。 \subsection{NISのデータを更新するには?} 実際のデータはマスターサーバがテキストの形で保持している。これを変更する と、マスターの持っているdbm形式のデータを変更し、スレーブに再度配布しな ければならない。 実際のデータは/var/yp/nis.inputs/以下にある。 例えば、新しいユーザを追加する場合 \begin{enumerate} \item NISマスターサーバmoonにloginする \item /var/yp/nis.inputs/master.passwdにエントリ追加 \item /var/yp/でmake \end{enumerate} \subsection{クライアントでNISの設定を有効にするには?} \begin{itemize} \item 起動時にNISドメイン名をセットし、ypbindを起動させるために /etc/rc.confに以下の行を書きます。\\ nisdomainname="×××"\\ nis\_client\_enable="YES"\\ これはdomainnameでドメイン名を設定し、ypbindを動かすのと同じです。 NISサーバの場合にはさらに以下の行が必要です。(サーバはクライアン トでもあるので上の行はもちろん必要)\\ nis\_server\_enable="YES"\\ nis\_yppasswdd\_enable="YES" \item NISサーバにあるすべてのパスワードエントリを取り込むため、vipwコマ ンドで以下の行を/etc/master.passwdに追加します。\\ +:::::::::\\ この際必ずvipwを使いましょう。 \item 今度はviを用いて/etc/groupに以下の行を追加します。\\ +::: \item 同様に/etc/passwdに以下の行を追加します。\\ +:*::::: \end{itemize} \section{本日の課題} NISのスレーブサーバを立ち上げよう。 \begin{itemize} \item ルートでログイン \item ypinit -s moon.db.is.kyushu-u.ac.jp\\ 何か聞かれたらn \item ypserv \item ps -ax $|$ grep yp \item kill ypbindのプロセス番号 \item ypbind -ypset \item ypset あなたのマシン名 \item ypwhichで自分のマシンに聞きにいっているのを確認 \item ypcat お好みの情報\\ いろいろ試してみよう \item ps -ax $|$ grep yp \item kill ypservのプロセス番号 \item kill ypbindのプロセス番号 \item ypbind \item rm -r /var/yp/NISドメイン名のディレクトリ \item ypwhichでyumiになっていればOK \end{itemize} \subsection*{注意すべき点} 本来なら/etc/rc.confに変更を加え、再起動の際ypservが立ち上がるようにしな ければならない。また、moon(マスターサーバ)でypinit -mを実行し、新たなスレー ブを登録しなければ、データベースが更新されたとき新しいデータベースが送ら れてこない。 今回は実習なのでこれらを実施しない。 \section{Reference} \begin{verbatim} 最新UNIXハンドブック、伊藤 和人著 フリーUNIXで作るネットワークサーバ構築ガイド、國安和広+秀和システム出版編集部編著 http://www.freebsd.org/ja/handbook/nis.html http://www.kuis.kyoto-u.ac.jp/imel/tebiki/rvsettei/node2.html \end{verbatim} \end{document}