rpc.yppasswdd - 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.yppasswdd は
pwupdate
スクリプトを実行して、
NIS サーバーの
passwd.*
マップと
shadow.byname
マップを更新する。
このスクリプトでは、すべての
NIS マップが
/var/yp/nisdomain
ディレクトリ以下に保存されており、
その NIS
ドメイン向けにカスタマイズされた
Makefile
もそこに置かれていることを仮定している。
そのような
Makefile
がない場合には、スクリプトは
/var/yp
にあるジェネリックな
Makefile を用いる。
以下のオプションが指定できる。
-
-D directory
-
passwd と shadow
ファイルが指定したディレクトリに置かれる。
これが指定されると、
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.yppasswdd は passwd
エントリにおけるシェルや
GECOS
フィールドのユーザーによる変更を許さない。
-e
オプションを用いると、これらのそれぞれを有効にできる。
ypchsh(1)
のサポートを有効にした場合には、ユーザーが選択できるシェルをすべて
/etc/shells
に記述する必要があることに注意すること。
- -x program
- -x
オプションが指定されると、
rpc.yppasswdd
は自分自身では一切の
ファイルを変更せず、指定されたプログラムを起動し、その標準入力に
要求された操作に関する情報を渡そうとする。この外部プログラムとの
通信にはプロトコルが定義されており、変更要求をどのように伝播するかに
ついては最大限の自由度が確保されている。これに関する詳細は
以降を参照のこと。
- -m
- 単に無視される。
Solaris
との互換性のためにだけ用意されたオプションである。
- --port number
- rpc.yppasswd
はこのポートに登録しようとする。
これを用いると、ルータによって
NIS
のポートへのパケットをフィルタできるようになる。
- -v --version
- バージョン番号を表示する。また、このパッケージのコンパイル時に、
CHECKROOT
オプションが有効にされたかどうかも表示する。
shwdow パスワードを NIS
と共に用いてもあまり意味がない。
なぜなら本来アクセス不可能であるべきパスワードが、単に
ypcat(1) を実行すれば NIS
では読めてしまうからである。
rpc.yppasswdd における shadow
のサポートは、この問題を賢く解決する方法を提供する
わけではない。単にパスワードエントリをシステムの
shadow
ファイルから読めるようにする、というだけのことである。
これを用いるには、
shadow.byname という NIS
マップを作って、 NIS
クライアントにパスワード情報を
知らせる必要がある。
rpc.yppasswdd はまず
/etc/passwd
ファイルからユーザーのパスワードを検索する。ユーザーが見つかり、
かつパスワードが "x"
で、さらに
/etc/shadow
ファイルが存在していた場合は、
shadow マップの
パスワードが更新される。
プログラムは標準入力から一行を読むようにする。フォーマットは以下の通り。
<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
passwd(5),
shadow(5),
passwd(1),
yppasswd(1),
ypchsh(1),
ypchfn(1),
ypserv(8),
ypcat(1)
Network Information Service (NIS) は、以前は Sun
Yellow Pages (YP).
と呼ばれていた。
この両者の機能はまったく同じものであり、名前が違うだけである。
Yellow Pages
という名前は、英国で
British Telecommunications plc
の登録商標となっており、
許可を得ずに用いることはできない。
Olaf Kirch, <
[email protected]>
Thorsten Kukuk, <
[email protected]>