X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman2%2Fcapget.2;h=ba9bb8386a6716a67ecac4e5e2242a9c3a6ca6ef;hb=bb92023e2caf6dc30bd3a8f07877ec870c853e23;hp=4a543be60a83e455dc588dabb227afc6f7e2abc5;hpb=ce024239a1d8e74a7a44f7c24cee4375cb13b3ef;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man2/capget.2 b/release/man2/capget.2 index 4a543be6..ba9bb838 100644 --- a/release/man2/capget.2 +++ b/release/man2/capget.2 @@ -1,5 +1,9 @@ .\" written by Andrew Morgan +.\" +.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" may be distributed as per GPL +.\" %%%LICENSE_END +.\" .\" Modified by David A. Wheeler .\" Modified 2004-05-27, mtk .\" Modified 2004-06-21, aeb @@ -8,68 +12,40 @@ .\" 64-bit capability sets in kernel 2.6.2[45]. .\" Modified 2009-01-26, andi kleen .\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-12-26, HANATAKA Shinya -.\" Updated & Modified 2005-02-03, Yuichi SATO -.\" Updated & Modified 2006-01-31, Akihiro MOTOKI -.\" Updated & Modified 2006-07-23, Akihiro MOTOKI, LDP v2.36 -.\" Updated & Modified 2008-08-11, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2009-02-24, Akihiro MOTOKI, LDP v3.19 +.\"******************************************************************* .\" -.\"WORD: capability ケーパビリティ -.\"WORD: effective capability 実効ケーパビリティ -.\"WORD: inheritable capabilit 継承可能ケーパビリティ -.\"WORD: permitted capabily 許可ケーパビリティ +.\" This file was generated with po4a. Translate the source file. .\" -.TH CAPGET 2 2010-09-20 "Linux" "Linux Programmer's Manual" +.\"******************************************************************* +.TH CAPGET 2 2013\-03\-11 Linux "Linux Programmer's Manual" .SH 名前 capget, capset \- スレッドのケーパビリティを設定/取得する .SH 書式 -.B #include +\fB#include \fP .sp -.BI "int capget(cap_user_header_t " hdrp ", cap_user_data_t " datap ); +\fBint capget(cap_user_header_t \fP\fIhdrp\fP\fB, cap_user_data_t \fP\fIdatap\fP\fB);\fP .sp -.BI "int capset(cap_user_header_t " hdrp ", const cap_user_data_t " datap ); +\fBint capset(cap_user_header_t \fP\fIhdrp\fP\fB, const cap_user_data_t +\fP\fIdatap\fP\fB);\fP .SH 説明 -Linux 2.2 で、スーパーユーザー (root) の権限は、個別のケーパビリティ -(capabilities) へと分割され、その集合として表現されるようになった。 -各スレッドは「実効ケーパビリティ (effective capability) の集合」を持ち、 -それによって現在どの操作が実行可能かを識別できる。 -また、各スレッドは、 -「継承可能ケーパビリティ (inheritable capability) の集合」と -「許可ケーパビリティ (permitted capability) の集合」を持つ。 -「継承可能ケーパビリティの集合」は -.BR execve (2) -を通じて渡すことができるケーパビリティの集合であり、 -「許可ケーパビリティ (permitted capability) の集合」は -実効ケーパビリティや継承可能ケーパビリティとして有効にできる -ケーパビリティを規定するものである。 +Linux 2.2 で、スーパーユーザー (root) の権限は、個別のケーパビリティ (capabilities) +へと分割され、その集合として表現されるようになった。 各スレッドは「実効ケーパビリティ (effective capability) の集合」を持ち、 +それによって現在どの操作が実行可能かを識別できる。 また、各スレッドは、 「継承可能ケーパビリティ (inheritable capability) +の集合」と 「許可ケーパビリティ (permitted capability) の集合」を持つ。 「継承可能ケーパビリティの集合」は +\fBexecve\fP(2) を通じて渡すことができるケーパビリティの集合であり、 「許可ケーパビリティ (permitted capability) +の集合」は 実効ケーパビリティや継承可能ケーパビリティとして有効にできる ケーパビリティを規定するものである。 .PP -この二つの関数はスレッドのケーパビリティを取得したり設定したりするための -生のカーネルインターフェースである。 -これらのシステムコールは Linux 特有であるというだけでなく、 -カーネル API は変更されるかもしれず、これらの -関数の使用法 (特に -.I cap_user_*_t -型という書式) はカーネルのリビジョン毎に拡張されるかもしれないが、 -以前のプログラムはそのまま動作する。 +These two system calls are the raw kernel interface for getting and setting +thread capabilities. Not only are these system calls specific to Linux, but +the kernel API is likely to change and use of these system calls (in +particular the format of the \fIcap_user_*_t\fP types) is subject to extension +with each kernel revision, but old programs will keep working. .sp -移植性のあるインターフェースは -.BR cap_set_proc (3) -と -.BR cap_get_proc (3) -である。 -可能ならばアプリケーションはこれらの関数を使用すべきである。 -アプリケーションに Linux 拡張を使用したい場合には、より簡単に -使えるインターフェースである -.BR capsetp (3) -と -.BR capgetp (3) -を使用すべきである。 +移植性のあるインターフェースは \fBcap_set_proc\fP(3) と \fBcap_get_proc\fP(3) である。 +可能ならばアプリケーションはこれらの関数を使用すべきである。 アプリケーションに Linux 拡張を使用したい場合には、より簡単に +使えるインターフェースである \fBcapsetp\fP(3) と \fBcapgetp\fP(3) を使用すべきである。 .SS 現在の詳細 -現在のカーネルの詳細について注意を述べておく。 -構造体は以下のように定義される。 +現在のカーネルの詳細について注意を述べておく。 構造体は以下のように定義される。 .sp .nf .in +4n @@ -92,158 +68,78 @@ typedef struct __user_cap_data_struct { .fi .in -4n .sp -.I effective, permitted, inheritable -は、 -.BR capability (7) -で定義されるケーパビリティのビットマスクである。 -.I CAP_* -はビット番号を表すインデックス値であり、 -ビットフィールドに OR を行う前に -.I CAP_* -の値の分だけビットシフトを行う必要がある。 -typedef の方はポインタなので、 -このシステムコールに渡す構造体を定義するには、 -.I struct __user_cap_header_struct -と -.I struct __user_cap_data_struct -という名前を使用しなければならない。 +The \fIeffective\fP, \fIpermitted\fP, and \fIinheritable\fP fields are bit masks of +the capabilities defined in \fIcapability(7).\fP Note the \fBCAP_*\fP values are +bit indexes and need to be bit\-shifted before ORing into the bit fields. To +define the structures for passing to the system call you have to use the +\fIstruct __user_cap_header_struct\fP and \fIstruct __user_cap_data_struct\fP +names because the typedefs are only pointers. -カーネル 2.6.25 より前では、バージョン -.B _LINUX_CAPABILITY_VERSION_1 -の 32 ビットケーパビリティが推奨である。 -カーネル 2.6.25 以降では、バージョン -.B _LINUX_CAPABILITY_VERSION_2 -の 64 ビットケーパビリティが推奨である。 -64 ビットケーパビリティでは -.IR datap [0] -と -.IR datap [1] -が使用されるのに対し、 -32 ビットケーパビリティでは -.IR datap [0] -だけが使用される。 +カーネル 2.6.25 より前では、バージョン \fB_LINUX_CAPABILITY_VERSION_1\fP の 32 +ビットケーパビリティが推奨である。 カーネル 2.6.25 以降では、バージョン \fB_LINUX_CAPABILITY_VERSION_2\fP の 64 +ビットケーパビリティが推奨である。 64 ビットケーパビリティでは \fIdatap\fP[0] と \fIdatap\fP[1] が使用されるのに対し、 32 +ビットケーパビリティでは \fIdatap\fP[0] だけが使用される。 .sp -これらのシステムコールの挙動に影響があるもう一つの変更点は、 -ファイルケーパビリティ (file capabilities) のカーネルによるサポート -(VFS ケーパビリティのサポート) である。 -VFS ケーパビリティのサポートは現在のところコンパイル時のオプションである -(カーネル 2.6.24 で追加された)。 +これらのシステムコールの挙動に影響があるもう一つの変更点は、 ファイルケーパビリティ (file capabilities) のカーネルによるサポート +(VFS ケーパビリティのサポート) である。 VFS ケーパビリティのサポートは現在のところコンパイル時のオプションである (カーネル 2.6.24 +で追加された)。 .sp -.BR capget () -では、 -.I hdrp->pid -のフィールド値にケーパビリティを知りたいプロセスのプロセス ID を +\fBcapget\fP() では、 \fIhdrp\->pid\fP のフィールド値にケーパビリティを知りたいプロセスのプロセス ID を 指定することで、任意のプロセスのケーパビリティを調べることができる。 -.SS VFS ケーパビリティがサポートされている場合 -VFS ケーパビリティのサポートでは、特権実行ファイルにケーパビリティを -追加するためのファイル属性メソッドが作成された。 -この特権モデルの導入により、あるプロセスにより別のプロセスのケーパビリティ -を非同期に設定する機能のカーネルによるサポートは廃止される。 -つまり、VFS サポートでは、 -.BR capset () -を呼び出す際に -.I hdrp->pid -の値として許されるのは 0 と -.BR getpid (2) +.SS "With VFS capability support" +VFS ケーパビリティのサポートでは、特権実行ファイルにケーパビリティを 追加するためのファイル属性メソッドが作成された。 +この特権モデルの導入により、あるプロセスにより別のプロセスのケーパビリティ を非同期に設定する機能のカーネルによるサポートは廃止される。 つまり、VFS +サポートでは、 \fBcapset\fP() を呼び出す際に \fIhdrp\->pid\fP の値として許されるのは 0 と \fBgetpid\fP(2) が返す値だけとなる (どちらの値でも等価である)。 -.SS VFS ケーパビリティがサポートされていない場合 -カーネルが VFS ケーパビリティをサポートしていない場合、 -.I hdrp -の -.I pid -フィールドが 0 以外であれば、 -.BR capset () -の操作対象は -.I pid -で指定されたスレッドのケーパビリティになる。 -.I pid -が 0 の場合は呼び出し元のスレッドのケーパビリティが操作対象となる。 -.I pid -がシングルスレッド・プロセスを参照している場合、 -.I pid -は以前から使われているプロセスID を使って指定できる。 -マルチスレッド・プロセス内のあるスレッドを対象にする場合は、 -.BR gettid (2) -が返すスレッドID を用いて指定する必要がある。 -また、 -.BR capset () -では \-1 や \-1 より小さな値を指定することもできる。 -\-1 は呼び出し元と -.BR init (8) -を除く全てのスレッドを対象として変更を行うことを、 -\-1 より小さな値は ID が \-\fIpid\fP のプロセスグループの全メンバ -を対象として変更を行うことを意味する。 +.SS "Without VFS capability support" +カーネルが VFS ケーパビリティをサポートしていない場合、 \fIhdrp\fP の \fIpid\fP フィールドが 0 以外であれば、 \fBcapset\fP() +の操作対象は \fIpid\fP で指定されたスレッドのケーパビリティになる。 \fIpid\fP が 0 +の場合は呼び出し元のスレッドのケーパビリティが操作対象となる。 \fIpid\fP がシングルスレッド・プロセスを参照している場合、 \fIpid\fP +は以前から使われているプロセスID を使って指定できる。 マルチスレッド・プロセス内のあるスレッドを対象にする場合は、 \fBgettid\fP(2) +が返すスレッドID を用いて指定する必要がある。 また、 \fBcapset\fP() では \-1 や \-1 より小さな値を指定することもできる。 \-1 +は呼び出し元と \fBinit\fP(8) を除く全てのスレッドを対象として変更を行うことを、 \-1 より小さな値は ID が \-\fIpid\fP +のプロセスグループの全メンバ を対象として変更を行うことを意味する。 -このデータの詳細は -.BR capabilities (7) -を参照すること。 +このデータの詳細は \fBcapabilities\fP(7) を参照すること。 .SH 返り値 -成功した場合には 0 を返す。エラーの場合には \-1 を返し、 -.I errno -を適切に設定する。 +成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.I hdrp -のフィールド -.I version -にサポートされていない値が指定された場合、 -呼び出しはエラー -.B EINVAL -で失敗し、 -.I version -にカーネル推奨の -.B _LINUX_CAPABILITY_VERSION_? -を設定する。 -このようにして、現在の推奨ケーパビリティ・リビジョンが何かを -調べることができる。 +\fIhdrp\fP のフィールド \fIversion\fP にサポートされていない値が指定された場合、 呼び出しはエラー \fBEINVAL\fP で失敗し、 +\fIversion\fP にカーネル推奨の \fB_LINUX_CAPABILITY_VERSION_?\fP を設定する。 +このようにして、現在の推奨ケーパビリティ・リビジョンが何かを 調べることができる。 .SH エラー -.TP -.B EFAULT -不正なメモリアドレス。 -.I hdrp -は NULL であってはならない。 -.I datap -に NULL を指定してよいのは、ユーザがカーネルがサポートしている -推奨のケーパビリティ・バージョンを判定しようとしているときだけである。 -.TP -.B EINVAL +.TP +\fBEFAULT\fP +不正なメモリアドレス。 \fIhdrp\fP は NULL であってはならない。 \fIdatap\fP に NULL +を指定してよいのは、ユーザがカーネルがサポートしている 推奨のケーパビリティ・バージョンを判定しようとしているときだけである。 +.TP +\fBEINVAL\fP 引き数のどれかが無効である。 -.TP -.B EPERM -「許可ケーパビリティセット」にケーパビリティを追加しようとしているか、 -もしくは「許可ケーパビリティセット」に含まれないケーパビリティを -「実効ケーパビリティセット」や「継承可能ケーパビリティセット」に -セットしようとしている。 -.TP -.B EPERM -呼び出し元が自分以外のスレッドのケーパビリティを -.BR capset () -を使って修正しようとしたが、十分な特権がなかった。 -VFS ケーパビリティをサポートしているカーネルでは、 -この操作が許可されることは決してない。 -VFS ケーパビリティをサポートしていないカーネルでは、 -.B CAP_SETPCAP -ケーパビリティが必要である。 -(バージョン 2.6.11 より前のカーネルには、 -このケーパビリティを持たないスレッドが -.I pid -フィールドに 0 でない値 (つまり、0 の代わりに -.BR getpid (2) -が返す値) を指定して自分自身のケーパビリティを変更しようとした場合にも、 -このエラーが発生するというバグがあった。) -.TP -.B ESRCH +.TP +\fBEPERM\fP +「許可ケーパビリティセット」にケーパビリティを追加しようとしているか、 もしくは「許可ケーパビリティセット」に含まれないケーパビリティを +「実効ケーパビリティセット」や「継承可能ケーパビリティセット」に セットしようとしている。 +.TP +\fBEPERM\fP +呼び出し元が自分以外のスレッドのケーパビリティを \fBcapset\fP() を使って修正しようとしたが、十分な特権がなかった。 VFS +ケーパビリティをサポートしているカーネルでは、 この操作が許可されることは決してない。 VFS ケーパビリティをサポートしていないカーネルでは、 +\fBCAP_SETPCAP\fP ケーパビリティが必要である。 (バージョン 2.6.11 より前のカーネルには、 このケーパビリティを持たないスレッドが +\fIpid\fP フィールドに 0 でない値 (つまり、0 の代わりに \fBgetpid\fP(2) が返す値) +を指定して自分自身のケーパビリティを変更しようとした場合にも、 このエラーが発生するというバグがあった。) +.TP +\fBESRCH\fP そのようなスレッドが存在しない。 .SH 準拠 これらのシステムコールは Linux 独自である。 -.SH 備考 -ケーパビリティを設定したり取得したりする機能のための移植性ある -インターフェースは -.I libcap -ライブラリによって提供される。 +.SH 注意 +ケーパビリティを設定したり取得したりする機能のための移植性ある インターフェースは \fIlibcap\fP ライブラリによって提供される。 このライブラリは以下から入手できる: .br -http://www.kernel.org/pub/linux/libs/security/linux-privs +.UR http://git.kernel.org/cgit\:/linux\:/kernel\:/git\:/morgan\:\:/libcap.git +.UE .SH 関連項目 -.BR clone (2), -.BR gettid (2), -.BR capabilities (7) +\fBclone\fP(2), \fBgettid\fP(2), \fBcapabilities\fP(7) +.SH この文書について +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。