Solaris Resource Manager 1.1 のシステム管理

PAM サブシステム

Solaris 2.6 システムは Pluggable Authentication Module (PAM) をサポートします。ユーザー識別情報の変更や設定が必要になる操作 (システムへのログイン、rcprsh などの r コマンドの呼び出し、ftp の使用、su の使用など) をユーザーが要求すると、一連の構成可能モジュールを使って、認証、アカウント管理、資格管理、およびセッション管理が行われます。Solaris Resource Manager には、ログインのアカウント処理を行い、su の動作を変更するモジュールがあります。

この操作を要求するときに使用するプログラムをサービスといいます。

PAM システム全体の説明は、pam(3)pam.conf(4)pam_unix(5)pam_srm(5SRM) のマニュアルページを参照してください。

Solaris Resource Manager の PAM モジュールには、アカウント管理とセッション管理の機能があります。PAM の動作を制御するには /etc/pam.conf ファイルを編集します。通常の Solaris Resource Manager の動作の場合は、Solaris Resource Manager の PAM モジュールを、セッション管理に対するすべてのログイン系サービスの requisite として、およびすべての PAM サービスに対するアカウント管理の requisite として構成する必要があります。通常、Solaris Resource Manager のモジュールは、他のすべての required および requisite モジュールの後、他の sufficient または optional モジュールの前に置きます。

Solaris Resource Manager は、インストール時に /etc/pam.conf を編集して、適切な動作を行えるようにします。Solaris Resource Manager は、セッション管理またはアカウント管理がすでに構成されているサービス (other を含む) ごとに次のような行を追加します。

login account requisite pam_srm.so.1 nolnode=/etc/srm/nolnode 
login session requisite pam_srm.so.1
other account requisite pam_srm.so.1 nolnode=/etc/srm/nolnode

最初の行では、サービスログインの場合、モジュール pam_srm.so.1 を使ってアカウント管理を行い、ログインが成功するためにはログインを許可する必要があることを指定します。さらに、引数 nolnode=/etc/srm/nolnode を渡します。制御フラグ (requiredrequisiteoptional、および sufficient) の詳細は、pam.conf(4) のマニュアルページを参照してください。

2 行目では、ログインサービスがセッション管理に pam_srm.so.1 モジュールを使用することを指定します。

Solaris Resource Manager のアカウント管理とセッション管理のモジュールに対してサポートされる引数については、pam_srm(5SRM) のマニュアルページを参照してください。

アカウント管理

Solaris Resource Manager のアカウント管理 PAM モジュールは、制御されると次のことをします。

  1. Solaris Resource Manager がインストールされ、有効になっているかどうかを判定します。Solaris Resource Manager がインストールされていなかったり、有効でない場合は、このモジュールを無視するように PAM システムに通知します。

  2. ユーザーに l ノードがあるかどうかを判定し、ない場合は管理者による構成が可能な nolnode スクリプトを呼び出します。

  3. ユーザーが要求するサービスとデバイスのアクセス権がユーザーにあるかどうかを判定します。

  4. ユーザーが警告限度を超過しているかどうかを判定し、超過している場合は、ログインを許可しません。

  5. 管理者による構成が可能な every login スクリプトを呼び出します。

いずれかの手順が失敗すると、残りの手順は行われません。Solaris Resource Manager のアカウント管理 PAM モジュールはサービスの使用を拒否します。可能であれば、メッセージがこのサービスを経由してユーザーに渡されます。

スクリプト

デフォルトの missing lnode スクリプトでは、ユーザーの l ノードを作成し、そのことを知らせるメールをシステム管理者に送ります。このデフォルトスクリプトは /etc/srm/nolnode です。このスクリプトを変更するには、ファイル /etc/pam.conf を編集して、Solaris Resource Manager アカウント管理モジュールの行で nolnode オプションの値を変更します。every login スクリプトは通常構成されていません。これを変更する場合は、/etc/pam.conf のいずれかの Solaris Resource Manager アカウント管理モジュールに [everylogin=pathname] オプションを追加します。スクリプトは root ユーザーで呼び出されます。標準の入力、出力、およびエラー処理はクローズされます。スクリプトがゼロ以外で終了すると、アクセスは拒否されます。すべての情報は環境変数として渡されますが、これらの環境変数は、サービスから PAM に渡される情報から直接抽出されます。

USER

プログラムに渡されるログイン名。この名前は、パスワードマップの検索によってすでに認証されています。この名前がない場合は、アカウント管理モジュールがすでにエラーコードを PAM に返しています。

UID

認証されているユーザーのユーザー ID。ユーザー ID を変更するサービス (su など) の場合、これはサービスを呼び出すユーザーのユーザー ID です。ユーザー ID を設定するサービス (login など) の場合、これはターゲットユーザー ID (USER のユーザー ID) です。

RHOST

ネットワークを介するアクセスの場合は、アクセスを要求しているホスト名です。それ以外の場合、この値は実装によって異なります。

SERVICE

アクセスサービスの名前 (rshloginftp など)。

TTY

サービスを呼び出す TTY の名前。厳密な意味で制御端末がないサービス (ftp など) のうち、一部のものはこの変数にプロセス情報を入れます (たとえば、ftp12345 など。12345ftpd のプロセス識別子 (PID))。制御端末がないサービスのうち、それ以外のものは、この変数に何も入れないか、サービス名を入れます。

DEBUG

pam.conf ファイルでデバッグを指定すると、DEBUG が真に設定されます。この指定をしなければ、偽に設定されます。他の環境変数は設定されないので、必要な場合は、どのスクリプトも独自の PATH 変数を指定する必要があります。

デフォルトの「no lnode」スクリプトは、l ノードをデフォルトのスケジューリンググループ (そのようなユーザーがパスワードマップに存在する場合は other、存在しない場合は root) に作成します。そして、システム管理者にメッセージをメールして、新しい l ノードをスケジューリング階層の適切な場所に移す必要があることを知らせます。スクリプトの例については、「デフォルトの「no lnode」スクリプト」を参照してください。

PAM とデバイスグループとの相互作用

Solaris Resource Manager の PAM モジュールは、デバイス階層の端末名とサービス名を検索し、制限値を超過しているか、デバイスフラグが set に評価されると、呼び出し側に「permission denied (アクセス権がありません)」というメッセージを返します。

調べるデバイスカテゴリは、端末名に対しては terminal、要求された種類のサービスに対しては services です。たとえば、rlogin を行うときにネットワークデバイスグループのファイルを使用することがあります。このユーザーに対しては次のフラグがこの順に検査されます (すべてのフラグが group として設定されているとします)。

これらがすべて set と評価されたときだけアクセスが許可されます。さらに、対応するカテゴリ (terminalservices) の制限値が検査されます。

セッション管理

ログインのようなサービス (utmp ファイルにエントリを作成したもの) では、PAM のセッション管理機能とアカウント管理機能が両方とも /etc/pam.conf に構成されていれば、これらが呼び出されます。

Solaris Resource Manager 製品のセッション管理では、デバイスに対する課金処理をします。接続時間の制限値を超えたかどうかや、onelogin フラグが設定されていて、ユーザーがすでにログインしているかどうかを調べ、該当する場合には、ログインを拒否します。

ログイン可能な場合には、セッション管理機能により、limdaemon プロセスへのメッセージが生成され、ログイン可能であることと、ログインに使用する端末の構成コストがこのプロセスに知らされます。次に、現在のプロセスが login header process (ログインヘッダープロセス) であることと、セッション管理が終了した場合には limdaemon プロセスに知らせる必要があることがカーネルに通知されます。

limdaemon プロセスは接続時間の制限値を監視し、超過しそうになると、警告を出します。