よくわかんないので表にしてみた
| 継続されるか | 後続モジュール | |||
| success | fail | |||
| required | success | yes | success | fail |
| fail | yes | fail | fail | |
| requisite | success | yes | success | fail |
| fail | no | - | - | |
| sufficient | success | no | - | - |
| fail | yes | success | fail | |
| binding | success | no | - | - |
| fail | yes | fail | fail | |
| optional | success | yes | success | fail |
| fail | yes | success | fail | |
例えばFreeBSDの/etc/pam.d/sshdはこうなってる。
auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local auth required pam_unix.so no_warn try_first_pass
1行目。OPIEを有効にしているユーザーであれば、OPIEの認証に成功すればそこでおしまい。失敗したら先に進む。OPIEを有効にしていないユーザーは失敗するので先に進む。
2行目。詳しくはman pam_opieaccessなんだけどデフォルトではOPIEを有効にしているユーザーは失敗してそこでおしまい。OPIEを有効にしているユーザーは成功するので先に進む
3行目。UNIXアカウント認証に成功すれば成功。sufficient(fail)->requisite(success)->required(success)と北野で最終結果は成功。
- required
- そのモジュールが成功しない限り全体が失敗するが、処理は続く。(失敗しても処理を続ける意味はよくわからない。pam_execとかでプログラム動かしてなんかするときのため?)
- requisite
- そのモジュールが成功しない限り全体が失敗する。失敗したときに後続を動かしたくないときはこれ。(例えば後ろにpam_unix.soがいるとrequiredだとプロンプトが出るがrequisiteだとでない)
- sufficient
- これが成功すれば(前段で失敗条件を満たしていなければ)認証成功。失敗しても後続で救済
- biding
- これが成功すれば(前段で失敗条件を満たしていなければ)認証成功。失敗したら全体が失敗。
- optional
- 成功しようとしまいと結果は後続次第。
この記事へのトラックバック