yassy's note

なんかかきます

PAM認証設定ファイルについて

はじめに

PAM認証について調べた。
LPIC2で結構手こずった記憶があるのだが、意外とあっさり理解できた。

何よりも先に

発行日が2000年と少し古いが、これを読もう。
というか、これだけで大丈夫。
http://linuxjf.osdn.jp/JFdocs/User-Authentication-HOWTO/index.html

PAMの設定ファイルについて

PAMの設定ファイルは、/etc/pam.dディレクトリに認証を行うプログラムごとに配置されている。
自分のところでは、こんな感じ。

[root@localhost ~]# ls /etc/pam.d/
chfn                 httpd             polkit-1      runuser-l          su              systemd-user
chsh                 login             postlogin     smartcard-auth     su-l            vlock
config-util          other             postlogin-ac  smartcard-auth-ac  sudo            vmtoolsd
crond                passwd            pwauth        smtp               sudo-i
fingerprint-auth     password-auth     remote        smtp.postfix       system-auth
fingerprint-auth-ac  password-auth-ac  runuser       sshd               system-auth-ac

各ファイルの書式は以下である。

<モジュールタイプ> <コントロール> <モジュールパス> <モジュールの引数>

モジュールタイプは、後続のモジュールパスがどういったときに認証するのかを記載する。
よく使われる型は以下の4つ。

  • auth
    ユーザが本物かどうかを認証する。

  • account
    ユーザがアクセスを許可されているか、パスワードが期限切れになっていないかを確認する。

  • password
    パスワードの設定・変更時の処理。

  • session
    ユーザの認証前後で実行したい処理がある場合に書く。
    ディレクトリのマウントや、ログの記録を行いたい場合に使用する。

コントロールは認証が成功・失敗したときにPAMにどう動けばいいかを指定する。

  • requisite
    このモジュールでの認証に失敗した場合、即認証を拒否する。

  • required
    認証に失敗した場合、認証を拒否するが、すぐには拒否しないところがrequisiteと異なる。
    同じタイプの認証をすべて完了後、認証を拒否するため、ユーザはどの認証で失敗したのかが分からない。
    そういった意味で、セキュリティは高いと言える。

  • sufficient
    認証に成功し、かつそれまでのrequired型モジュールがすべて成功している場合、認証される。
    sufficientがタイプの一番上に記載されていた場合は、このモジュールの認証に成功さえすれば、その型については認証は成功する。

  • optional
    他モジュールの認証対象にならなかった場合、このモジュールで認証される。
    モジュールパスは他のPAM設定や、/lib64/security/以下のモジュールを指定する。
    モジュールの格納場所は環境によって異なるものもある。

モジュールの引数はそのままの意味。それぞれのモジュールが持つ引数を指定する。