ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- プロセス特権セットおよび属性の検査または変更
/usr/bin/ppriv -e [-D | -N] [-M] [-s spec] command [arg]...
/usr/bin/ppriv [-v] [-S] [-D | -N] [-s spec] [pid | core]...
/usr/bin/ppriv -l [-v] [privilege-specification]...
ppriv コマンドの最初の呼び出しでは、コマンド行の引数に従って変更された特権セットとフラグが指定された command が実行されます。
2 番目の呼び出しでは、実行中のプロセスとコアファイルの特権の状態を検査または変更します。
3 番目の呼び出しでは、定義されている特権および指定された特権または特権セットの指定に関する情報を一覧表示します。
次のオプションがサポートされています。
指定されたプロセスまたはコマンドの特権のデバッグを有効にします。
残りの引数をコマンド行として解釈し、指定された特権の属性およびセットでコマンド行を実行します。
現在定義されている特権をすべて標準出力に書き込みます。
システムが Trusted Extensions で構成されている場合、このオプションを使用すると、NET_MAC_AWARE および NET_MAC_AWARE_INHERIT プロセス属性が有効になります。
これらの属性と net_mac_aware 特権を持つプロセスは、より低いレベルのリモートピアと通信できます。
指定されたプロセスまたはコマンドの特権のデバッグを無効にします。
スペース文字を含まない [AEILP][+-=]privsetspec という形式の指定である spec に従ってプロセスの特権セットを変更します。
変更する特権セットを示す 1 文字以上の文字を示します。これらは大文字と小文字の区別がなく、たとえば、a または A のいずれもすべての特権セットを示します。
特権セットの単一文字省略名の定義については、privileges(5) を参照してください。
リストされた特権を privsetspec で指定されたセットに、それぞれ追加 (+)、削除 (-)、または割り当て (=) する修飾子を示します。
priv_str_to_set(3C) で説明されている、コンマで区切られた特権セットの指定 (priv1,priv2 など) を示します。
個々のセットにそれぞれ 1 つの割り当てを行うか、任意の数の追加および削除を行うかのいずれかであれば、同じセットを複数の -s オプションで変更することは可能です。つまり、単一のセットに対する割り当てと、追加または削除は相互に排他的です。
短い。可能なかぎり短い出力文字列でセットを報告します。デフォルトは移植性のある出力形式です。priv_str_to_set(3C) を参照してください。
冗長。特権名を使用して特権セットを報告します。
ppriv ユーティリティーは、プロセスとコアファイルを検査し、それらの特権セットを出力または変更します。
ppriv は、特権のデバッグを有効または無効にして、あるいは呼び出すプロセスよりも少ない特権でコマンドを実行できます。
サブプロセスを実行する場合、変更できるセットは L と I のみです。ppriv が P=E=I で起動された場合、特権を削除できるのは L と I からのみです。
ppriv は、プロセスから特権を削除する場合、または別のプロセスに特権を委譲する場合にも使用できます。プロセスを制御するには、ppriv ユーティリティーの実効セットは、制御されるプロセスの E、I、および P の上位集合である必要があります。ユーティリティーの制限セットは、ターゲットの制限セットの上位集合である必要があります。ターゲットプロセスのユーザー ID が一致しない場合は、ユーティリティーの実効セットで {PRIV_PROC_OWNER} 特権を表明する必要があります。制御されるプロセスが値 0 のユーザー ID を持つ場合、さらに制限が存在する可能性があります。privileges(5) を参照してください。
例 1 現在のシェルに対するプロセスの特権の取得
次の例では、現在のシェルに対するプロセスの特権を取得します。
example$ ppriv $$ 387: -sh flags = <none> E: basic I: basic P: basic L: all
例 2 シェルの継承可能な実効セットからの特権の削除
次の例では、シェルの継承可能な実効セットから特権を削除します。
example$ ppriv -s EI-proc_session $$
サブプロセスはまだ親シェルを検査できますが、親に影響を及ぼすことはできません。親は ppriv の子プロセスよりも多い特権を Permitted セットに持っているためです。
example$ truss -p $$ truss: permission denied: 387 example$ ppriv $$ 387: -sh flags = <none> E: basic,!proc_session I: basic,!proc_session P: basic L: all
例 3 特権のデバッグを使用したプロセスの実行
次の例では、特権のデバッグを有効にしてプロセスを実行します。
example$ ppriv -e -D cat /etc/shadow cat[418]: missing privilege “file_dac_read” (euid = 21782), needed at ufs_access+0x3c cat: cannot open /etc/shadow
特権のデバッグのエラーメッセージは、現在のプロセスの制御端末に送信されます。needed at アドレス指定は、カーネル実装のアーティファクトであり、ソフトウェアの更新後にいつでも変更できます。
システムコール番号は、/etc/name_to_sysnum を使用するとシステムコールにマップできます。
例 4 現在のゾーンで使用可能な特権の一覧表示
次の例では、現在のゾーンで使用可能な特権を一覧表示します (zones(5) を参照)。大域ゾーンで実行すると、定義されているすべての特権が一覧表示されます。
example$ ppriv -l zone ... listing of all privileges elided ...
例 5 特権に対応したプロセスの検査
次の例では、特権に対応したプロセスを検査します。
example$ ppriv -S ‘pgrep rpcbind‘ 928: /usr/sbin/rpcbind flags = PRIV_AWARE E: net_privaddr,proc_fork,sys_nfs I: none P: net_privaddr,proc_fork,sys_nfs L: none
フラグの説明については、setpflags(2) を参照してください。
次の終了値が返されます。
正常終了。
エラーが発生しました。
プロセスファイル
システムコール名と番号のマッピング
属性についての詳細は、attributes(5) を参照してください。
|
呼び出しは「確実」です。出力は「不確実」です。
gcore(1), truss(1), setpflags(2), priv_str_to_set(3C), proc(4), attributes(5), privileges(5), zones(5)