checkpassword (8) プログラムは、
ファイルの終わりまで記述子 3 を読み込み、
記述子 3 をクローズします。
ファイルの終わりより前に、
データの最大 512 バイトが存在しなければなりません。
記述子 3 で提供される情報は、
0 で終わる長い名前、0 で終わるパスワード、0 で終わるタイムスタンプ、
それに、できる限り多くのデータなどです。
ログイン名、パスワード、タイムスタンプの形式上で、
他のの制約はありません。
パスワードが受け入れられない場合、
checkpassword は終了コード 1 で終了します。
checkpassword が誤用された場合、
終了コード 2 で終了します。
パスワードをチェックする際に一時的な問題が存在する場合、
checkpassword は終了コード 111 で終了します。
パスワードが容認された場合、
checkpassword は、
与えられた引数でサブプログラムを走らせるために、
execvp を使用します。
● checkpassword 互換ツール
checkpassword と同じインターフェースを提供する他のツールがあります。
checkpassword を使用するアプリケーションは、
checkpassword が引数として指定したものを取得することを推奨されます。
このため、
異なる checkpassword 互換ツールで使用されることができます。
これらのツールは、
getopt インターフェースを受け入れないことに注意してください。
選択的な特徴は、
などを通じて制御されます。
● パスワード・データベース
checkpassword は、/etc/passwd に対して、
オペレーティング・システムの getpwnam と crypt 関数を用いて、
ログイン名とパスワードをチェックします。
checkpassword は、空のパスワードでのアカウントは拒絶します。
checkpassword は、タイムスタンプを無視します。
他の checkpassword 互換ツールは、
ログイン名、パスワード、タイムスタンプなどについて
異なる解釈を持ちます。
ログイン名とパスワードの両方は、
アプリケーションが checkpassword 呼び出すことで、
秘密として扱われます。
ただ異なる点は、管理上の利便性です。
timestamp は、
パスワードがベースとされたその他の情報を含みます。
例えば、
APOP のような challenge-response システム中の challenge です。
警告
getpwnam() 関数は、基本的に信頼できません。
一時的なエラーと存在しないユーザーの区別に失敗します。
getpwnam の将来のバージョンでは、
一時エラーを表すために ETXTBSY を、
存在しないユーザーを表すために ESRCH を返すでしょう。
● 処理状態の変更
サブプログラムを呼び出す前に、
checkpassword は、
- 環境変数 $USER
- 環境変数 $HOME
- 環境変数 $SHELL
- 追加のグループ(supplementary groups)
- そのグループID
- そのユーザーID
- そのワーキング・ディレクトリ
などを設定します。
他の checkpassword 互換ツールは、
プロセスの状態に異なる変更を加えてもかまいません。
これらの効果は、立証されなければなりません。
アプリケーションは、それらの要求事項において異なるでしょう。