PAM (Pluggable Authentication Modules)

アプリケーションが使用する共通の認証用モジュール

アプリケーションごとに毎回認証機能を実装するのめんどくさいよねってことでモジュール化したもの。様々なアプリケーションに認証機能を追加したり削除したりできる(Pluggableな)モジュール。

設定ファイル /etc/pam.conf または /etc/pam.d/* (/etc/pam.confより優先)
/etc/pam.d/ディレクトリにはアプリケーションごとに設定ファイルがある。

$ ls /etc/pam.d/
(中略)
smtp.postfix
sudo
passwd
sshd

設定ファイルの書式は次の通り
<モジュールタイプ> <制御フラグ> <モジュール><引数>

$ cat /etc/pam.d/sshd
auth required pam_sepermit.so
##<タイプ>=auth, <制御フラグ>=required, <モジュール>=pam_sepermit

auth substack password-auth
##/etc/pam.d/password-authを参照する

account required pam_nologin.so
account include password-auth

password include password-auth

# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
##認証後でもpam_selinux.soをみるよ
(中略)


*<モジュールタイプ>*

auth ユーザ 認証
account アカウントのチェック
password パスワードの設定
session ロギングを含む認証後の処理

*<制御フラグ>*

required
指定した<モジュール>で成功しないと認証が失敗。失敗した際に以降のモジュールを参照する。

requisite
指定した<モジュール>で成功しないと認証が失敗。失敗した際に以降のモジュールを参照しない。

sufficient
全ての制御フラグが立ったモジュールが成功かつ、sufficientが成功の時、当該タイプは成功と判定。sufficientを失敗した時は以降のモジュールを参照する。

optional
他に参照するモジュールがない場合(ignoreになった場合)、このモジュールが成功すると認証が成功する。

include
<引数>で指定したファイルを読み込み、記述に従って処理する。

substack
<引数>で指定したファイルを読み込み、記述に従って処理する。 Includeと違い、認証の成否がファイル内で完結する

*<モジュール>*
/lib64/security/ディレクトリ配下にある。

/lib64/security/ にShared Objectファイルがある。
$ ls /lib64/security/
pam_access.so
pam_ftp.so
pam_unix.so
(中略)



この記事が気に入ったらサポートをしてみませんか?