rpc.yppasswdd(8) NIS パスワード更新デーモン

書式

rpc.yppasswdd [-D directory] [-e chsh|chfn] [--port number]
rpc.yppasswdd [-s shadow] [-p passwd] [-e chsh|chfn] [--port number]
rpc.yppasswdd -x program|-E program [-e chsh|chfn] [--port number]

説明

rpc.yppasswdd は RPC のサーバーで、 NIS (YP) 環境下でユーザーによるパスワード変更を可能にする。 必ず NIS ドメインの NIS マスターサーバーで起動する。

yppasswd(1) クライアントはサーバーに接続すると、 古いユーザーパスワードと新しいパスワードを送信する。 rpc.yppasswdd はシステムの passwd ファイルからそのユーザーの名前を探し、古いパスワードがマッチしているか どうかを確認し、エントリを更新する。 指定されたユーザーが存在しなかったり、 パスワード, UID, GID のいずれかが パスワードファイルの情報とマッチしなかった場合には、 更新要求は拒否され、 クライアントにエラーが返される。

このサーバーは、コンパイルの時に CHECKROOT=1 オプションを指定すると、 システムの root のパスワードに対しても、パスワードチェックを行うようになる。

passwd ファイルの更新とクライアントへの成功通知がすむと、 rpc.yppasswddpwupdate スクリプトを実行して、 NIS サーバーの passwd.* マップと shadow.byname マップを更新する。 このスクリプトでは、すべての NIS マップが /var/yp/nisdomain ディレクトリ以下に保存されており、 その NIS ドメイン向けにカスタマイズされた Makefile もそこに置かれていることを仮定している。 そのような Makefile がない場合には、スクリプトは /var/yp にあるジェネリックな Makefile を用いる。

オプション

以下のオプションが指定できる。
-D directory
passwdshadow ファイルが指定したディレクトリに置かれる。 これが指定されると、 rpc.yppasswdd/etc/passwd/etc/shadow を使わない。 NIS データーベースに存在するユーザーすべてに、 NIS サーバーへの アクセスを自動的には付与したくない場合に有効である。
-E program
rpc.yppasswdd に passwd ファイルや shadow ファイルを直接編集させず、 指定したプログラムを実行して編集を行わせる。 以下の環境変数が設定され、指定プログラムに渡される: YP_PASSWD_OLD, YP_PASSWD_NEW, YP_USER, YP_GECOS, YP_SHELL。 プログラムは変更が成功裏に終了したら 0 を返し、 変更は成功裏に終了したが pwupdate を実行しなくて良い場合は 1 を返し、 変更に失敗した場合はその他の値を返すようにしなければならない。
-p passwdfile
rpc.yppasswdd に、 /etc/passwd の代わりに用いるソースファイルを伝える。 NIS データーベースに存在するユーザーすべてに、 NIS サーバーへの アクセスを自動的には付与したくない場合に有効である。
-s shadowfile
rpc.yppasswdd に、 /etc/shadow の代わりに用いるソースファイルを伝える。 shadow サポートに関しては、以下で簡単に説明している。
-e [chsh|chfn]
デフォルトでは、 rpc.yppasswddpasswd エントリにおけるシェルや GECOS フィールドのユーザーによる変更を許さない。 -e オプションを用いると、これらのそれぞれを有効にできる。 ypchsh(1) のサポートを有効にした場合には、ユーザーが選択できるシェルをすべて /etc/shells に記述する必要があることに注意すること。
-x program
-x オプションが指定されると、 rpc.yppasswdd は自分自身では一切の ファイルを変更せず、指定されたプログラムを起動し、その標準入力に 要求された操作に関する情報を渡そうとする。この外部プログラムとの 通信にはプロトコルが定義されており、変更要求をどのように伝播するかに ついては最大限の自由度が確保されている。これに関する詳細は 以降を参照のこと。
-m
単に無視される。 Solaris との互換性のためにだけ用意されたオプションである。
--port number
rpc.yppasswd はこのポートに登録しようとする。 これを用いると、ルータによって NIS のポートへのパケットをフィルタできるようになる。
-v --version
バージョン番号を表示する。また、このパッケージのコンパイル時に、 CHECKROOT オプションが有効にされたかどうかも表示する。

その他

shadow パスワード

shwdow パスワードを NIS と共に用いてもあまり意味がない。 なぜなら本来アクセス不可能であるべきパスワードが、単に ypcat(1) を実行すれば NIS では読めてしまうからである。

rpc.yppasswdd における shadow のサポートは、この問題を賢く解決する方法を提供する わけではない。単にパスワードエントリをシステムの shadow ファイルから読めるようにする、というだけのことである。 これを用いるには、 shadow.byname という NIS マップを作って、 NIS クライアントにパスワード情報を 知らせる必要がある。 rpc.yppasswdd はまず /etc/passwd ファイルからユーザーのパスワードを検索する。ユーザーが見つかり、 かつパスワードが "x" で、さらに /etc/shadow ファイルが存在していた場合は、 shadow マップの パスワードが更新される。

-x オプションの使い方

プログラムは標準入力から一行を読むようにする。フォーマットは以下の通り。

<username> o:<oldpass> p:<password> s:<shell> g:<gcos>\n

[p, s, g] の 3 つのフィールドは、いずれもあってもなくてもかまわない。

このプログラムは、操作が成功したら標準出力に "OK\n" を返すようにする。 それ以外の場合は、 rpc.yppasswdd はクライアントに失敗したと報告する。

-x オプションで指定したプログラムは NIS の make とビルドを行わねばならず、 また与えられたシェルと gecos フィールドの情報が正当なものかのチェックも このプログラムの役割である。クライアントに与えられるパスワードは UNIX crypt() フォーマットになる。

ログ記録

rpc.yppasswdd はすべてのパスワード更新要求を syslogd(8) の auth facility を通して記録する。ログ情報は要求元ホストの IP アドレスと、 その要求に含まれていたユーザー名および UID である。 ユーザーによって与えられたパスワードそのものは記録されない。

セキュリティ

作者が完全に問題を解決するまでは、 rpc.yppasswdd はシンプルなパスワード認証に依存するプログラムと同程度のセキュリティ しか持たない (バージョン 0.5 以前では良かったのだが)。 これが充分でないと思う場合は、新しい portmap(8) バージョン 3 の `securenets' 機能を用いて、 rpc.yppasswdd をアクセス外に置くことをすすめる。あるいは Kerberos を使えば さらに良いかも知れない。 rpc.yppasswdd

著作権

rpc.yppasswdd is copyright (C) Olaf Kirch. You can use and distribute it under the GNU General Public License Version 2. Note that it does not contain any code from the shadow password suite.

ファイル

/usr/sbin/rpc.yppasswdd
/usr/lib/yp/pwupdate
/etc/passwd
/etc/shadow

作者

Olaf Kirch, <[email protected]>
Thorsten Kukuk, <[email protected]>