PAM(8)

名称
PAM - プラグ可能認証モジュール群

書式
/etc/pam.conf

解説
本マニュアルの目的は、 PAM のクイックイントロダクションです。 更なる情報は、 Linux-PAM system administrators' guide を御覧ください。

PAM は、システム上でアプリケーション (サービス) の認証作業を行う ライブラリシステムです。 本ライブラリは、 一般的な不変のインタフェース (アプリケーションプログラミングインタフェース - API) を提供します。 (login(1) や su(1) のような) 特権許可プログラム がこの API に従うことで、 標準の認証作業を遂行するようになります。

PAM アプローチの基本的な特徴は、認証作業の性質を動的に設定可能とすることです。 言い換えると、個々のサービス提供アプリケーションがユーザを認証する方法を、 システム管理者は自由に選択できます。 この動的設定は、単一の PAM 設定ファイル /etc/pam.conf の内容で設定されます。 また、ディレクトリ /etc/pam.d/ に個々の設定ファイルを置くことで、設定を行うこともできます。 このディレクトリがあると PAM は /etc/pam.conf を無視します。

このマニュアルが対象とするシステム管理者にとっては、 PAM ライブラリの内部動作を理解することは最重要ではありません。 理解すべき重要なことは、設定ファイルがアプリケーション (サービス) と実際に認証作業を行うプラグ可能認証モジュール (PAM) との間の接続を 定義する ことです。

PAM は、 認証 作業を次の 4 個の独立した管理グループに分割します: account management (アカウント管理); authentication management (認証管理); password management (パスワード管理); session management (セッション管理)。 (設定ファイルでグループを表すために使用する短縮形を目立たさせています。)

簡単に言うと、これらのグループは、 それぞれ、 ある制限されたサービスに対する典型的なユーザ要求が持つ、異なった側面の 面倒をみています。

account - アカウント証明型のサービスを提供します。 「ユーザのパスワードが期限切れになったか？」 「このユーザは、要求するサービスにアクセスを許されているか？」 といった事柄を扱います。
authentication - ユーザが名乗っている人物本人であることを確定します。 この確定は、通常は、ユーザが満すべき「挑戦 - 応答」の要求で実現されます。 例えば「あなたが名乗っているその人本人であるなら、 あなたのパスワードを入力してください。」が該当します。 全部の認証がこの型であるわけではなく、 (スマートカードや生物測定学デバイスなどを使用する) ハードウェアベースの認証方法があり、 適切なモジュールを使用することで、 より標準的な認証アプローチをシームレスに置き換え可能です - これが PAM の柔軟性です。
password - このグループの責任は、認証機構を更新することです。 このようなサービスは auth グループのサービスと強く結び付いているのが普通です。 認証機構によっては、自己の更新をこの機能に任せているものがあります。 標準の UN*X のパスワードベースのアクセスは、明らかな例です。 「代わりのパスワードを入力してください。」がこれに該当します。
session - このグループの仕事は、サービス提供の前後に実行されるべきことをカバーします。 このような作業には、認証記録の維持と、 ユーザのホームディレクトリのマウントが含まれます。 開始時と終了時に ユーザが利用可能なサービスに影響を与える モジュールへのフックを提供するので、 session 管理グループは重要です。

設定ファイル
PAM を意識した特権許可アプリケーションは、 開始時に PAM-API への取り付けを起動します。 この起動により多くの作業が行われますが、 最重要事項は設定ファイル /etc/pam.conf の読み込みです。 これは、 /etc/pam.d/ ディレクトリの内容であることもあります。 これらのファイルは、このサービスが要求する認証作業を行う PAM の一覧と、個々の PAM が失敗したときの PAM-API の適切な動作の一覧をリストします。

/etc/pam.conf 設定ファイルの文法は次の通りです。 ファイルはルールのリストから構成されます。 個々のルールは普通は単一行ですが、 `\<LF>' で行末をエスケープすることで複数行に渡ることが可能です。 コメントは、前に `#' マークを置き、行末まで続きます。

各ルールは、空白で区切ったトークンの集合です。 最初の 3 つは大文字小文字を区別します:

service type control module-path module-arguments

/etc/pam.d/ ディレクトリ中のファイルの文法は、 service フィールドが無い以外は同じです。 この場合、 service は /etc/pam.d/ ディレクトリ中のファイルの名前です。 このファイル名は小文字であることが必要です。

PAM の重要機能は、 ある認証作業用に多くの PAM のサービスを組合せる目的で、多くのルールを 積み重ね可能 ということです。

service は、普通は、対応するアプリケーションの親しみのある名前です。 login や su は良い例です。 service 名 other は デフォルト ルールを与えるために予約されています。 現在のサービスに関して言及する行のみが (そのような行が存在しない場合は other エントリが)、指定したアプリケーションに関連付けられます。

type は、そのルールに対応する管理グループです。 後続するモジュールをどの管理グループに関連付けるべきかを 指定するために使用されます。 有効なエントリは account; auth; password; session です。 これらのトークンの意味は前述してあります。

第 3 のフィールド control は、PAM-API がこの認証作業に失敗したときにどうすべきかを示します。 有効な control の値は次の通りです。 requisite - この PAM が失敗すると、認証処理は即ちに終了します; required - この PAM が失敗すると、究極的には PAM-API は失敗を返しますが、 それはこの (service および type の) 積み重なっているモジュールの残りが呼び出されたあとです; sufficient - この種のモジュールが成功すると、 モジュールの積み重ねの認証条件を満します (これより前の required モジュールが失敗していた場合、このモジュールの成功は 無視 されます); optional - この service+type に関連付けられているモジュールの積み重ねにおける唯一のモジュールである 場合のみ、このモジュールの成否は意味を持ちます。

module-path - アプリケーションが使用する PAM の完全なファイル名です。

module-arguments - 空白で区切られたトークンのリストであり、 指定した PAM の特定の動作を修正するために使用可能です。 引数については、個々のモジュールについて記述されているでしょう。

関連ファイル
/etc/pam.conf - 設定ファイル。
/etc/pam.d/ - PAM の設定ディレクトリ。本ディレクトリが存在する場合、 /etc/pam.conf ファイルは無視されます。
/usr/lib/libpam.so.X - 動的ライブラリ。
/usr/lib/pam_*.so - PAM。

エラー
ライブラリの PAM システムが発生する典型的なエラーは、 syslog(3) に書き込まれます。

準拠
DCE-RFC 86.0, October 1995.
現在 DCE-RFC 委員会で検討されている追加機能も含まれています。

バグ

知られているものはありません。

関連項目
システム管理者用、 モジュール開発者用、 アプリケーション開発者用 の、3 つの Linux-PAM ガイド。