この章の内容は次のとおりです。
特権の使用方法については、第 11 章特権 (手順)を参照してください。概要については、「特権 (概要)」を参照してください。
次の表では、特権を扱うために使用可能なコマンドを一覧表示します。
表 12–1 特権を扱うためのコマンド
目的 |
コマンド |
マニュアルページ |
---|---|---|
プロセスの特権を検査します |
ppriv -v pid | |
プロセスの特権を設定します |
ppriv -s spec |
|
システム上の特権を一覧表示します |
ppriv -l |
|
特権とその説明を一覧表示します |
ppriv -lv priv |
|
特権の障害をデバッグします |
ppriv -eD failed-operation |
|
特権を新しいローカルユーザーに割り当てます |
useradd | |
特権を既存のローカルユーザーに追加します |
usermod | |
特権をネームサービスのユーザーに割り当てます |
smuser | |
特権を新しいローカル役割に割り当てます |
roleadd | |
特権を既存のローカル役割に追加します |
rolemod | |
特権をネームサービスの役割に割り当てます |
smrole | |
デバイスポリシーを表示します |
getdevpolicy | |
デバイスポリシーを設定します |
devfsadm | |
オープンデバイスでのデバイスポリシーを更新します |
update_drv -p policy driver | |
デバイスポリシーをデバイスに追加します |
add_drv -p policy driver |
コマンド、ユーザー、および役割への特権の割り当ては、Solaris 管理コンソールの GUI で行うことをお勧めします。詳細については、「Solaris 管理コンソールで役割を引き受ける方法」を参照してください。
exec_attr および user_attr データベースは直接編集しないでください。特権を管理するには、Solaris 管理コンソールまたは smuser などのコマンドを使用します。詳細は、smc(1M) および smuser(1M) のマニュアルページを参照してください。手順については、「特権の管理 (作業マップ)」を参照してください。
特権の使用は監査することができます。プロセスで特権が使用される場合は常に、upriv 監査トークン内の監査トレールに特権の使用が記録されます。特権の名前がレコードに含まれる場合、テキスト形式が使用されます。次の監査イベントにより、特権の使用が記録されます。
AUE_SETPPRIV 監査イベント – 特権セットが変更されたときに監査記録を生成します。AUE_SETPPRIV 監査イベントは pm クラスにあります。
AUE_MODALLOCPRIV 監査イベント – カーネル外から特権が追加されたときに監査記録を生成します。AUE_MODALLOCPRIV 監査イベントは ad クラスにあります。
AUE_MODDEVPLCY 監査イベント – デバイスポリシーが変更されたときに監査記録を生成します。AUE_MODDEVPLCY 監査イベントは ad クラスにあります。
AUE_prof_cmd 監査イベント – コマンドがプロファイルシェルで実行されたときに監査記録を生成します。AUE_prof_cmd 監査イベントは as および ua 監査クラスにあります。特権の名前は、監査レコードに含まれます。
基本セットに含まれる特権が正常に使用される場合は、監査されません。ユーザーの基本セットから削除された基本特権の使用を試みる場合、監査されます。
Solaris カーネルは特権エスカレーションを防ぎます。特権エスカレーションとは、特権によってプロセスがその範囲を越えたことを行えるようになることです。プロセスが特権の範囲を越えることを防ぐために、一定のシステム変更を行うには特権の完全セットが必要です。たとえば、root (UID=0) が所有するファイルまたはプロセスは、特権の完全セットを備えたプロセスによってのみ変更できます。root ユーザーは、特権がなくても root が所有するファイルを変更することができます。しかし、root ユーザー以外は、root が所有するファイルを変更するにはすべての特権が必要です。
同様に、デバイスへのアクセスを提供する操作には、有効なセットのすべての特権が必要です。
file_chown_self および proc_owner は、特権エスカレーションが生じやすい特権です。file_chown_self は、プロセスがそのファイルを渡せるようにする特権です。proc_owner は、プロセス自身が所有しないプロセスを調査できるようにする特権です。
file_chown_self 特権は、rstchown システム変数によって制限されます。rstchown 変数が 0 に設定されると、file_chown_self 特権は、システムおよび全ユーザーの初期の継承可能セットから削除されます。rstchown システム変数の詳細については、chown(1) のマニュアルページを参照してください。
file_chown_self 特権のコマンドへの割り当て、プロファイルへの配置、およびプロファイルシェルで使用するための役割への割り当ては最も安全に行います。
proc_owner 特権は、プロセス UID を 0 にするには十分ではありません。任意の UID のプロセスを UID=0 にするには、すべての特権が必要です。proc_owner 特権はシステム上のすべてのファイルに無制限の読み取りアクセス権を与えるので、この特権のコマンドへの割り当て、プロファイルへの配置、およびプロファイルシェルで使用するための役割への割り当ては最も安全に行います。
file_chown_self 特権または proc_owner 特権がユーザーの初期の継承可能セットに含まれるようにユーザーのアカウントを変更することができます。これらの強力な特権を任意のユーザー、役割、またはシステムに対する特権の継承可能セットに配置するには、セキュリティー上の相応の理由がなければなりません。
デバイスに対する特権エスカレーションを防ぐ方法の詳細については、「特権とデバイス」を参照してください。
レガシーアプリケーションに対応するために、特権の実装はスーパーユーザーモデルと特権モデルで動作します。カーネルは、プログラムが特権で動作するように設計されていること示す PRIV_AWARE フラグを自動的に追跡します。特権を認識しない子プロセスについて検討してください。親プロセスから継承された特権はどれも、子の許可されたセットおよび有効なセットで使用可能です。子プロセスで UID が 0 に設定されていると、子プロセスが完全なスーパーユーザー機能を持たない場合があります。プロセスの有効なセットおよび許可されたセットは、子の制限セットの特権に限定されます。このように、特権を認識するプロセスの制限セットによって、特権を認識しない子プロセス root 特権が制限されます。