pwauth -
管理者の設定したパスワード認証ルーチン
#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
の内容は以前用いていたユーザ名である。
この関数は実際のセッションを作り出すことはしない。
指定されたユーザのセッションを作り出す事を許可するか否かを答えるだけである。
まだネットワークオプションはテストしていない。
返り値¶
pw_auth
関数は、認証プログラムが終了コード
0 で終了した場合は 0
を、
それ以外の場合はゼロ以外の値を返す。
関連項目¶
login(1),
passwd(1),
su(1),
useradd(8),
userdel(8),
usermod(8)
Julianne Frances Haugh (jockgrrl@ix.netcom.com)