この記事は会員限定です。会員登録すると全てご覧いただけます。
Red Hatディストリビューションでは、ユーザー認証のためにPAM(Pluggable Authentication Modules)と呼ばれるモジュールが用意されている。
通常、サーバに接続する際には認証プログラムが動作して各サービスへ接続される。この認証部分のみを独立させることで各サービス(ftpdなど)ごとに基本的な認証設定をしなくて済むよう配慮されているのだ。各サーバソフトをリコンパイルする必要なく、PAMサポートという形で共通のユーザー認証が実現できる。
認証に関わる設定ファイルは、/etc/pam.d/下に用意されている。プログラムに認証モジュールをプラグインする形で制御を行っているのだ。下のファイル構成例は、Red Hat Linux 6.2のものである。
$ ls -l /etc/pam.d/ total 19 -rw-r--r-- 1 root root 336 Sep91999 chfn -rw-r--r-- 1 root root 336 Sep91999 chsh -rw-r--r-- 1 root root 116 Jun 101999 imap -rw-r--r-- 1 root root 157 Sep91999 kbdrate -rw-r--r-- 1 root root 116 Dec 151999 linuxconf -rw-r--r-- 1 root root 545 Dec 151999 linuxconf-pair -rw-r--r-- 1 root root 437 Mar 282000 login -rw-r--r-- 1 root root 210 Sep 251999 other -rw-r--r-- 1 root root 250 Mar 282000 passwd -rw-r--r-- 1 root root 116 Jun 101999 pop -rw-r--r-- 1 root root 116 Oct 172000 pop3 -rw-r--r-- 1 root root 155 Sep 201999 ppp -rw-r--r-- 1 root root 216 Jul 311999 rexec -rw-r--r-- 1 root root 443 Mar 282000 rlogin -rw-r--r-- 1 root root 204 Jul 311999 rsh -rw-r--r-- 1 root root 97 Sep 261999 samba -rw------- 1 root root 410 Jul 162000 sshd -rw-r----- 1 root root 330 Jul 262000 su -rw-r--r-- 1 root root 70 Feb92000 vlock
この中で例えば、Sambaの認証ファイルを見てみよう。ここでのポイントは、2つの種類の認証がされていることである。さらに「auth」、「account」、「required」の文字列の意味を理解できればSambaでのPAM認証プロセスが分かるだろう。
$ cat /etc/pam.d/samba auth required /lib/security/pam_pwdb.so nullok shadow account required /lib/security/pam_pwdb.so
PAMには次の4つのモジュールタイプがある。このタイプ別に定義することで、特定のサービスへのアクセスを制御するのだ。
記号 | 設定内容 |
---|---|
auth | 大元となる認証チェック(パスワードの要求および真偽のチェック)を行い、グループ属性による制限、またはKerberos「チケット」などの「証明書」も設定を行う |
account | 認証が許可されることをチェックする(アカウントの期限切れ、ユーザーがログインする時間帯に制限がないかなどを確認するのだ) |
password | パスワード設定に使用される |
session | ユーザーが認証された後で使用される指定。sessionモジュールによってユーザーが自分のアカウントを使用できるようになるのだ(たとえば、ユーザーのホームディレクトリをマウントしたり、メールボックスを利用できるようになります) |
PAM認証モジュール |
記号 | 設定内容 |
---|---|
required | 許可される認証順序で完全にチェックされなければならない。このモジュールでのチェックが失敗すると、同じタイプのほかのモジュールがチェックされるまではユーザーへ通知がされない状態になる |
requisite | 許可される認証順序で完全にチェックされなければならない。ただし、このモジュールのチェックが失敗した場合では、requiredまたはrequisitが最初に失敗したことを知らせるメッセージが通知される |
sufficient | このチェックが失敗した場合には、認証そのものが破棄される。ただし、このフラグチェックが成功してrequiredフラグも認証された場合には、このタイプのほかのモジュールはチェックされず成功したものと判断される |
session | このタイプのフラグは真偽が重要ではない。このタイプのモジュール以外すべてが成功、または失敗した際に意味を成すフラグである。この際には、成功または失敗したフラグによってモジュールタイプ全体のPAM認証が決定されるのだ |
PAM制御フラグ |
Copyright © ITmedia, Inc. All Rights Reserved.