.\" Copyright (c) 2002 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
+.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
.\"
.\" 6 Aug 2002 - Initial Creation
.\" Modified 2003-05-23, Michael Kerrisk, <mtk.manpages@gmail.com>
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH CAPABILITIES 7 2012\-04\-15 Linux "Linux Programmer's Manual"
+.TH CAPABILITIES 7 2013\-04\-17 Linux "Linux Programmer's Manual"
.SH 名前
capabilities \- Linux のケーパビリティ (capability) の概要
.SH 説明
\fBCAP_AUDIT_WRITE\fP (Linux 2.6.11 以降)
カーネル監査のログにレコードを書き込む。
.TP
+\fBCAP_BLOCK_SUSPEND\fP (Linux 3.5 以降)
+システムのサスペンドをブロックできる機能を使用する (\fBepoll\fP(7) \fBEPOLLWAKEUP\fP,
+\fI/proc/sys/wake_lock\fP)。
+.TP
\fBCAP_CHOWN\fP
ファイルの UID とGID を任意に変更する (\fBchown\fP(2) 参照)。
.TP
.TP
\fBCAP_SYS_PTRACE\fP
\fBptrace\fP(2) を使って任意のプロセスをトレースする。 任意のプロセスに \fBget_robust_list\fP(2) を適用する。
+\fBkcmp\fP(2) を使ってプロセス内部を調査する。
.TP
\fBCAP_SYS_RAWIO\fP
+.PD 0
+.RS
+.IP * 2
I/O ポート操作を実行する (\fBiopl\fP(2)、 \fBioperm\fP(2))。
+.IP *
\fI/proc/kcore\fP にアクセスする。
+.IP *
\fBFIBMAP\fP \fBioctl\fP(2) 操作を使用する。
+.IP *
+x86 モデルに固有のレジスタ (MSR レジスタ群、 \fBmsr\fP(4) 参照) にアクセスするためのデバイスをオープンする。
+.IP *
+\fI/proc/sys/vm/mmap_min_addr\fP を更新する。
+.IP *
+\fI/proc/sys/vm/mmap_min_addr\fP で指定された値よりも小さなアドレスにメモリマッピングを作成する。
+.IP *
+\fI/proc/bus/pci\fP にあるファイルをマップする。
+.IP *
+\fI/dev/mem\fP や \fI/dev/kmem\fP をオープンする。
+.IP *
+各種の SCSI デバイスコマンドを実行する。
+.IP *
+\fBhpsa\fP(4) デバイスや \fBcciss\fP(4) デバイスの特定の操作を実行する。
+.IP *
+他のデバイスに対して各種のデバイス固有命令を実行する。
+.RE
+.PD
.TP
\fBCAP_SYS_RESOURCE\fP
.PD 0
上限 \fI/proc/sys/fs/mqueue/queues_max\fP を上書きする
(\fBmq_overview\fP(7) 参照)。
.IP *
-\fBprctl\fP(2) の \fBPR_SET_MM\fP 操作を使用する。
+\fBprctl\fP(2) \fBPR_SET_MM\fP 操作を使用する。
+.IP *
+\fBCAP_SYS_RESOURCE\fP を持ったプロセスによって最後に設定された値よりも小さな値を \fI/proc/PID/oom_score_adj\fP
+に設定する。
.RE
.PD
.TP
特権が必要な仮想端末に関する各種の \fBioctl\fP(2) 操作を利用できる。
.TP
\fBCAP_SYSLOG\fP (Linux 2.6.37 以降)
+.IP * 3
特権が必要な \fBsyslog\fP(2) 操作を実行できる。
どの操作が特権が必要かについての情報は \fBsyslog\fP(2) を参照。
+.IP *
+\fI/proc/sys/kernel/kptr_restrict\fP の値が 1 の場合、 \fI/proc\fP
+や他のインターフェース経由で公開されているカーネルアドレスを参照する (\fBproc\fP(5) の \fIkptr_restrict\fP の議論を参照)。
.TP
\fBCAP_WAKE_ALARM\fP (Linux 3.0 以降)
.\"
\fBfork\fP(2) で作成される子プロセスは、親のケーパビリティセットのコピーを継承する。 \fBexecve\fP(2)
中のケーパビリティの扱いについては下記を参照のこと。
.PP
-.\"
\fBcapset\fP(2) を使うと、プロセスは自分自身のケーパビリティセット を操作することができる (下記参照)。
+.PP
+.\" commit 73efc0394e148d0e15583e13712637831f926720
+.\"
+Linux 3.2 以降では、 ファイル \fI/proc/sys/kernel/cap_last_cap\fP で、
+実行中のカーネルでサポートされているケーパビリティの最大値を参照できる。 この情報を使って、
+ケーパビリティセットに設定される可能性がある最上位ビットを判定することができる。
.SS ファイルケーパビリティ
カーネル 2.6.24 以降では、 \fBsetcap\fP(8) を使って実行ファイルにケーパビリティセットを対応付けることができる。
ファイルケーパビリティセットは \fIsecurity.capability\fP という名前の拡張属性に保存される (\fBsetxattr\fP(2)
呼び出し側が \fBCAP_SETPCAP\fP ケーパビリティを持っていない場合、新しい継承可能セットは、 既存の継承可能セットと許可セットの積集合
(AND) の部分集合で なければならない。
.IP 2.
-(カーネル 2.6.25 以降) 新しい継承可能セットは、既存の継承可能セットとケーパビリティ・ バウンディングセットの積集合 (AND)
+(Linux 2.6.25 以降) 新しい継承可能セットは、既存の継承可能セットとケーパビリティ・ バウンディングセットの積集合 (AND)
の部分集合でなければならない。
.IP 3.
新しい許可セットは、既存の許可セットの部分集合でなければならない (つまり、そのスレッドが現在持っていない許可ケーパビリティを
.SH 準拠
.PP
ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった POSIX.1e 草案に基づいて実装されている。
-\fIhttp://wt.xpilot.org/publications/posix.1e/\fP を参照。
+.UR http://wt.xpilot.org\:/publications\:/posix.1e/
+.UE
+を参照。
.SH 注意
カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となっており、カーネル設定オプション
CONFIG_SECURITY_CAPABILITIES により有効/無効を切り替えることができる。
+.\" 7b9a7ec565505699f503b4fcf61500dceb36e744
\fI/proc/PID/task/TID/status\fP ファイルを使うと、スレッドのケーパビリティセットを見ることができる。
-\fI/proc/PID/status\fP ファイルには、プロセスのメインスレッドのケーパビリティセットが表示される。
+\fI/proc/PID/status\fP ファイルには、プロセスのメインスレッドのケーパビリティセットが表示される。 Linux 3.8 より前では、
+これらのケーパビリティセットの表示で、 存在しないケーパビリティはすべて有効 (1) として表示される。 Linux 3.8 以降では、
+存在しないケーパビリティはすべて無効 (0) として表示される。 (\fBCAP_LAST_CAP\fP
+より大きい値を持つケーパビリティが存在しないケーパビリティである)。
\fIlibcap\fP パッケージは、ケーパビリティを設定・取得するための ルーチン群を提供している。これらのインタフェースは、 \fBcapset\fP(2)
と \fBcapget\fP(2) が提供するインターフェースと比べて、より使いやすく、変更される可能性が少ない。 このパッケージでは、
\fBsetcap\fP(8), \fBgetcap\fP(8) というプログラムも提供されている。 パッケージは以下で入手できる。
.br
-\fIhttp://www.kernel.org/pub/linux/libs/security/linux\-privs\fP
+.UR http://www.kernel.org\:/pub\:/linux\:/libs\:/security\:/linux\-privs
+.UE .
バージョン 2.6.24 より前、およびファイルケーパビリティが 有効になっていない2.6.24 以降のカーネルでは、 \fBCAP_SETPCAP\fP
ケーパビリティを持ったスレッドは自分以外のスレッドの ケーパビリティを操作できる。 しかしながら、これは理論的に可能というだけである。
\fBcap_get_proc\fP(3), \fBcap_init\fP(3), \fBcapgetp\fP(3), \fBcapsetp\fP(3),
\fBlibcap\fP(3), \fBcredentials\fP(7), \fBpthreads\fP(7), \fBgetcap\fP(8), \fBsetcap\fP(8)
.PP
-カーネルソース内の \fIinclude/linux/capability.h\fP に
-各種のケーパビリティの目的についてのコメント
+Linux カーネルソース内の \fIinclude/linux/capability.h\fP
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。