目的
新規パスワードの品質を検査します。
構文
kpwvalid コマンドは、 kpasswd コマンド、または、 kas setpassword コマンドから渡される、新規パスワードの品質を検査します。このコマンドはオプションです。このコマンドを使用する場合は、kpasswd および、 kas コマンド組のバイナリーと同じ、 AFS ディレクトリーに常駐させる (つまりこのディレクトリーに、クライアント・マシンのローカル・ディスクから、記号リンクを作成する) 必要があります。このディレクトリーの ACL は、 a (管理) および、 w (書き込み) アクセス権を、 system:administrators グループにのみ、許可しなければなりません。これらの要件により、非許可ユーザーが、代わりに疑似 kpwvalid バイナリー・ファイルを使用することが、できなくなります。
AFS 配布物には、パスワードの長さが少なくとも 8 文字であることを検査する、 kpwvalid プログラムの例が組み込まれています。そのためのコードを、次の例のセクションで示しています。
スクリプトまたはプログラムは、標準入力ストリームで、パスワード文字列の順序を、1 行に 1 つずつ、受け入れなければなりません。最初の行は現行パスワードで、無視されます。それに続く各文字列が、検査対象となるパスワードの候補です。プログラムでは、各パスワードの標準出力ストリームに対し、以下の情報を書き込まなければなりません。
さらに、標準エラー・ストリームにのみ、エラー・メッセージを書き込まなければなりません。標準出力ストリームには、書き込む必要はありません。
例
以下に示したプログラム例は、AFS 配布物に組み込まれ、要求されたパスワードが 8 文字以上であるかどうかを検査します。
#include <stdio.h> /* prints 0 if the password is long enough, otherwise non-zero */ main() { char oldpassword[512]; char password[512]; if (fgets(oldpassword, 512, stdin)) while (fgets(password, 512, stdin)) { if (strlen(password) > 8) { /* password includes a newline */ fputs("0\n",stdout); fflush(stdout); } else { fputs("Passwords must contain at least 8 characters.\n", stderr); fputs("1\n",stdout); fflush(stdout); } return 0; }
関連情報