目的
新規パスワードの品質を検査します。
構文
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;
}
関連情報