書式
#include <pwauth.h>int pw_auth (char *command, char *user, int reason, char *input);
説明
pw_auth は、与えられたユーザに対して管理者が設定した関数を呼び出す。command は認証プログラムの名前である。 これはパスワードファイルに記されたそのユーザの情報から決定される。 この文字列はセミコロンで区切られた一つ以上の実行ファイル名からなる。 各々のプログラムは記されている順に実行される。 以下に記述するそれぞれの reason に応じて、コマンドライン引数が与えられる。
user は認証されるユーザ名で、 /etc/passwd ファイル中のものに対応する。 ユーザエントリはユーザ名で指定される。 したがってユーザ ID には重なっているものがあっても良く、 そのユーザ ID に結びつけられた異なるユーザ名の各々に対して、 異なる認証プログラムと認証情報とを指定できる。
使用できる各々の認証方法は、異なる方法で取り扱われることがある。 特に記されていない場合は、標準的な ファイルディスクリプタ 0, 1, 2 を使ってユーザと通信できる。 実ユーザIDを用いて、 認証を要請したユーザの身元 (identity) を決めることもできる。 reason は以下のいずれかである。
- PW_SU
- 指定されたユーザの実ユーザ ID に切り替えようとしている、 現在の実ユーザ ID に対して認証を行う。 -s オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_LOGIN
- 新たにログインセッションを作り出そうとしている 指定されたユーザを認証する。 -l オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_ADD
- 指定されたユーザに対して新たなエントリを作る。 これにより、認証プログラムは新規ユーザ用の記憶領域を準備できる。 -a オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_CHANGE
- 指定されたユーザの既存のエントリを変更する。 これにより、認証プログラムは既存のユーザの認証情報を変更できる。 -c オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_DELETE
- 指定されたユーザの認証情報を消去する。 これにより、認証プログラムは今後認証することが無くなった ユーザ用の記憶領域を再利用できる。 -d オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_TELNET
- telnet コマンドを用いてシステムに接続して来たユーザの認証を行う。 -t オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_RLOGIN
- rlogin コマンドを用いてシステムに接続して来たユーザの認証を行う。 -r オプションの後にユーザ名を指定して認証プログラムが呼び出される。
- PW_FTP
- ftp コマンドを用いてシステムに接続して来たユーザの認証を行う。 -f オプションの後にユーザ名を指定して認証プログラムが呼び出される。 標準のファイルディスクリプタを用いてユーザと通信することはできない。 標準の入力ファイルディスクリプタは親プロセスに接続されており、 他の二つの出力ファイルディスクリプタは /dev/null に接続されている。 pw_auth 関数はファイルディスクリプタ 0 を用いて一行のデータを認証プログラムにパイプする。
- PW_REXEC
- rexec コマンドを用いてシステムに接続して来たユーザの認証を行う。 -x オプションの後にユーザ名を指定して認証プログラムが呼び出される。 標準のファイルディスクリプタを用いてユーザと通信することはできない。 標準の入力ファイルディスクリプタは親プロセスに接続されており、 他の二つの出力ファイルディスクリプタは /dev/null に接続されている。 pw_auth 関数はファイルディスクリプタ 0 を用いて一行のデータを認証プログラムにパイプする。
最後の引数は PW_FTP 及び PW_REXEC の方法で用いられる認証データであり、 一行のテキストとして扱われ、認証プログラムにパイプされる。 reason が PW_CHANGE のときは、ユーザ名が変更される場合には input の内容は以前用いていたユーザ名である。
警告
この関数は実際のセッションを作り出すことはしない。 指定されたユーザのセッションを作り出す事を許可するか否かを答えるだけである。まだネットワークオプションはテストしていない。