Note to Self

公開する緊張感で、読み返した時に??にならない自分用メモです

PAM認証の仕組み

PAMとは

PAM [Pluggable Authentication Modules]

  • Linuxやアプリケーションでユーザ認証を行うためのAPI
  • 個々のアプリケーションから独立して、ライブラリや各種モジュールを備えLinuxOSやアプリケーションは、PAMを利用することでユーザ認証を行うことができる

PAM関連ファイル

設定ファイル

/etc/pam.d 配下に保存

構成
  [module interface] [control flag] [module name] [module arguments]

  第一パラメータ:モジュールタイフ゜
  第二パラメータ:処理制御フラグ
  第三ぷらメータ:実行モジュール

module interface (PAMモジュールインターフェース: 第一パラメータ)

モジュールタイフ゜ 説明
auth ユーザ認証(パスワードの検証)
認証の許可、認証の方法などに関するモジュール
account アクセスが許可されたかを確認
アカウント有効期間や有効性に関するモジュール
password ユーザのパスワード変更
パスワードの設定、確認に関するモジュール
session ユーザセッションの設定・管理
|ユーザセッションを設定、管理に関するモジュール

ユーザ認証の流れ
「auth」でユーザの確認が成功
  ↓
「account」でアカウントの有効性が確認される
  ↓
「password」でパスワードを確認
  ↓
「session」で接続許可するパスを確認

control flag (制御フラグ 第二パラメータ)

処理制御フラグ 説明
required このモジュールが成功しないと全体は認証されない。ただし失敗しても、後続に実行予定のモジュール処理が全て終わるまでは、利用者に結果が通知されない。
requisite このモジュールが成功しないと全体は認証されない。失敗した時点で次を参照すること無くエラーになる。先にrequiredが失敗していればrequired。このフラグで初めて失敗すればrequisiteエラーになる。
sufficient 他のモジュールが成功し、このモジュールも成功すると、移行のモジュールは参照せず認証される。失敗した場合optionalエラーになる。
optional 他に参照すべきモジュールがない場合だけ、認証成功のために便宜的に必要となるフラグ。その他のモジュールがある場合は無視される。
include モジュール結果の処理は関係しないフラグ。第三パラメータで指定されたPAMモジュールの内のパラメータのうち、第一パラメータで指定されたモジュールタイフ゜と合致するもの全てを、パラメータに追加する。
substack includeとほぼ同じだが、includeでは第三パラメータで指定したPAMモジュールの記載内容をそのまま持ってくるだけなのに対し、substackでは指定したPAMモジュール内で処理を実行し、結果だけをもってくるという違いがある。

include 例)
 /etc/pam.d/login にいかが記載されていた場合
 session include system-auth
system-authというPAMモジュールファイルに記載のある各行のうち、モジュールタイフ゜がsessionの行すべてを、/etc/pam.d/loginにも適用するという意味。

module name (モジュール名)
  • 64bitの場合:/lib64/security にあるモジュールを指定
  • 32bitの場合:/lib/security にあるモジュールを指定

module arguments (モジュールの引数)

  • ユーザIDが何番以上
  • 再度パスワードを要求
  • パスワードなしでも許可

PAMファイル設定の注意点

設定ファイルの直接編集は非推奨。 authconfigコマント゛を利用することが推奨されている。