.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH CAPABILITIES 7 2013\-07\-21 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
+.\" Translated 2005-03-09, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2005-11-04, Akihiro MOTOKI
+.\" Updated 2006-04-16, Akihiro MOTOKI, LDP v2.29
+.\" Updated 2006-07-20, Akihiro MOTOKI, LDP v2.34
+.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43
+.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.15
+.\" Updated 2009-02-27, Akihiro MOTOKI, LDP v3.19
+.\" Updated 2010-04-11, Akihiro MOTOKI, LDP v3.24
+.\" Updated 2012-05-31, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-08-16, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH CAPABILITIES 7 2015\-02\-01 Linux "Linux Programmer's Manual"
.SH 名前
capabilities \- Linux のケーパビリティ (capability) の概要
.SH 説明
-権é\99\90ã\81®ã\83\81ã\82§ã\83\83ã\82¯ã\82\92è¡\8cã\81\86観ç\82¹ã\81\8bã\82\89è¦\8bã\82\8bã\81¨ã\80\81ä¼\9dçµ±ç\9a\84ã\81ª UNIX ã\81®å®\9fè£\85ã\81§ã\81¯ ã\83\97ã\83ã\82»ã\82¹ã\81¯äº\8cã\81¤ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«å\88\86é¡\9eã\81§ã\81\8dã\82\8b: \fIç\89¹æ¨©\fP ã\83\97ã\83ã\82»ã\82¹ (å®\9få\8a¹ã\83¦ã\83¼ã\82¶ID ã\81\8c
-0 のプロセス。ユーザID 0 は スーパーユーザや root と呼ばれる) と \fI非特権\fP プロセス (実効ユーザID が 0 以外のプロセス)
-である。 非特権プロセスでは、プロセスの資格情報 (通常は、実効UID 、実効GID と追加のグループリスト) に基づく権限チェックが行われるのに対し、
-特権プロセスでは全てのカーネルの権限チェックがバイパスされる。
+権é\99\90ã\81®ã\83\81ã\82§ã\83\83ã\82¯ã\82\92è¡\8cã\81\86観ç\82¹ã\81\8bã\82\89è¦\8bã\82\8bã\81¨ã\80\81ä¼\9dçµ±ç\9a\84ã\81ª UNIX ã\81®å®\9fè£\85ã\81§ã\81¯ ã\83\97ã\83ã\82»ã\82¹ã\81¯äº\8cã\81¤ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼ã\81«å\88\86é¡\9eã\81§ã\81\8dã\82\8b: \fIç\89¹æ¨©\fP ã\83\97ã\83ã\82»ã\82¹ (å®\9få\8a¹ã\83¦ã\83¼ã\82¶ã\83¼ID
+が 0 のプロセス。ユーザーID 0 は スーパーユーザーや root と呼ばれる) と \fI非特権\fP プロセス (実効ユーザーID が 0
+以外のプロセス) である。 非特権プロセスでは、プロセスの資格情報 (通常は、実効UID 、実効GID と追加のグループリスト)
+に基づく権限チェックが行われるのに対し、 特権プロセスでは全てのカーネルの権限チェックがバイパスされる。
.\"
-バージョン 2.2 以降の Linux では、 これまでスーパーユーザに結び付けられてきた権限を、 いくつかのグループに分割している。これらのグループは
-\fIケーパビリティ\fP(capability) と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケーパビリティはスレッド単位の属性である。
+バージョン 2.2 以降の Linux では、 これまでスーパーユーザーに結び付けられてきた権限を、
+いくつかのグループに分割している。これらのグループは \fIケーパビリティ\fP(capability)
+と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケーパビリティはスレッド単位の属性である。
.SS ケーパビリティのリスト
以下のリストは、 Linux で実装されているケーパビリティと 各ケーパビリティが許可する操作と動作をまとめたものである。
.TP
\fBCAP_AUDIT_CONTROL\fP (Linux 2.6.11 以降)
カーネル監査 (audit) の有効無効の切り替え、 監査のフィルタルールの変更、 監査の状況やフィルタルールの取得ができる。
.TP
+\fBCAP_AUDIT_READ\fP (Linux 3.16 以降)
+.\" commit a29b694aa1739f9d76538e34ae25524f9c549d59
+.\" commit 3a101b8de0d39403b2c7e5c23fd0b005668acf48
+マルチキャスト netlink ソケット経由で監査ログの読み出しができる。
+.TP
\fBCAP_AUDIT_WRITE\fP (Linux 2.6.11 以降)
カーネル監査のログにレコードを書き込む。
.TP
.PD 0
.RS
.IP * 2
-Bypass file read permission checks and directory read and execute permission
-checks;
+ファイルの読み出し権限のチェックとディレクトリの読み出しと実行 の権限チェックをバイパスする。
.IP *
-Invoke \fBopen_by_handle_at\fP(2).
+\fBopen_by_handle_at\fP(2) を起動する。
.RE
.PD
GID と追加の GID のいずれとも GID が一致しないファイルに対して set\-group\-ID ビットを設定する。
.TP
\fBCAP_IPC_LOCK\fP
-.\" FIXME As at Linux 3.2, there are some strange uses of this capability
+.\" FIXME . As at Linux 3.2, there are some strange uses of this capability
.\" in other places; they probably should be replaced with something else.
メモリーのロック (\fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2), \fBshmctl\fP(2)) を行う。
.TP
System V IPC オブジェクトに対する操作に関して権限チェックをバイパスする。
.TP
\fBCAP_KILL\fP
-.\" FIXME CAP_KILL also has an effect for threads + setting child
+.\" FIXME . CAP_KILL also has an effect for threads + setting child
.\" termination signal to other than SIGCHLD: without this
.\" capability, the termination signal reverts to SIGCHLD
.\" if the child does an exec(). What is the rationale
.TP
\fBCAP_LINUX_IMMUTABLE\fP
.\" These attributes are now available on ext2, ext3, Reiserfs, XFS, JFS
-拡張ファイル属性 \fBFS_APPEND_FL\fP と \fBFS_IMMUTABLE_FL\fP を設定する (\fBchattr\fP(1) 参照)。
+inode フラグ \fBFS_APPEND_FL\fP と \fBFS_IMMUTABLE_FL\fP を設定する (\fBchattr\fP(1) 参照)。
.TP
\fBCAP_MAC_ADMIN\fP (Linux 2.6.25 以降)
強制アクセス制御 (MAC) を上書きする。 Smack Linux Security Module (LSM) 用に実装されている。
.TP
\fBCAP_SETGID\fP
プロセスの GID と追加の GID リストに対する任意の操作を行う。 UNIX ドメインソケット経由でソケットの資格情報 (credential)
-を渡す際に 偽の GID を渡すことができる。
+を渡す際に 偽の GID を渡すことができる。 ユーザー名前空間にグループ ID マッピングを書き込むことができる
+(\fBuser_namespaces\fP(7) 参照)。
.TP
\fBCAP_SETFCAP\fP (Linux 2.6.24 以降)
ファイルケーパビリティを設定する。
.\" FIXME CAP_SETUID also an effect in exec(); document this.
プロセスの UID に対する任意の操作 (\fBsetuid\fP(2), \fBsetreuid\fP(2), \fBsetresuid\fP(2),
\fBsetfsuid\fP(2)) を行う。 UNIX ドメインソケット経由でソケットの資格情報 (credential) を渡す際に 偽の UID
-を渡すことができる。
+を渡すことができる。 ユーザー名前空間にユーザー ID マッピングを書き込むことができる (\fBuser_namespaces\fP(7) 参照)。
.TP
\fBCAP_SYS_ADMIN\fP
.PD 0
.IP *
任意の System V IPC オブジェクトに対する \fBIPC_SET\fP と \fBIPC_RMID\fP 操作を実行する。
.IP *
+\fBRLIMIT_NPROC\fP リソース制限を上書きする。
+.IP *
拡張属性 \fItrusted\fP と \fIsecurity\fP に対する操作を実行する (\fBattr\fP(5) 参照)。
.IP *
\fBlookup_dcookie\fP(2) を呼び出す。
\fBIOPRIO_CLASS_IDLE\fP を割り当てる (\fBIOPRIO_CLASS_IDLE\fP は Linux 2.6.25
より前のバージョンのみ)。
.IP *
-ソケットの資格情報 (credential) を渡す際に偽の UID を渡す。
+UNIX ドメインソケットでソケットの資格情報 (credential) を渡す際に偽の UID を渡す。
.IP *
ファイルをオープンするシステムコール (例えば \fBaccept\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBpipe\fP(2))
でシステム全体でオープンできるファイル数の上限 \fI/proc/sys/fs/file\-max\fP を超過する。
.IP *
-\fBclone\fP(2) と \fBunshare\fP(2) で新しい名前空間を作成する \fBCLONE_*\fP
-フラグを利用する。
+\fBclone\fP(2) と \fBunshare\fP(2) で新しい名前空間を作成する \fBCLONE_*\fP フラグを利用する (ただし、 Linux
+3.8 以降では、ユーザー名前空間の作成にどのケーパビリティも必要としない)。
.IP *
\fBperf_event_open\fP(2) を呼び出す。
.IP *
特権が必要な \fIperf\fP イベントの情報にアクセスする。
.IP *
-\fBsetns\fP(2) を呼び出す。
+\fBsetns\fP(2) を呼び出す (\fItarget\fP 名前空間での \fBCAP_SYS_ADMIN\fP が必要)。
.IP *
\fBfanotify_init\fP(2) を呼び出す。
.IP *
プロセスの nice 値の引き上げ (\fBnice\fP(2), \fBsetpriority\fP(2)) や、任意のプロセスの nice 値の変更を行う。
.IP *
呼び出し元プロセスに対するリアルタイムスケジューリングポリシーと、 任意のプロセスに対するスケジューリングポリシーと優先度を設定する
-(\fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2))。
+(\fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBshed_setattr\fP(2))。
.IP *
任意のプロセスに対する CPU affinity を設定できる (\fBsched_setaffinity\fP(2))。
.IP *
.\" migrate_pages(2):
.\" do_migrate_pages(mm, &old, &new,
.\" capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
+.\" Document this.
\fBmigrate_pages\fP(2) を任意のプロセスに適用し、プロセスを任意のノードに移動する。
.IP *
\fBmove_pages\fP(2) を任意のプロセスに対して行う。
\fBacct\fP(2) を呼び出す。
.TP
\fBCAP_SYS_PTRACE\fP
-\fBptrace\fP(2) を使って任意のプロセスをトレースする。 任意のプロセスに \fBget_robust_list\fP(2) を適用する。
+.PD 0
+.RS
+.IP * 3
+\fBptrace\fP(2) を使って任意のプロセスをトレースする。
+.IP *
+\fBget_robust_list\fP(2) を任意のプロセスに対して行う。
+.IP *
+\fBprocess_vm_readv\fP(2) と \fBprocess_vm_writev\fP(2)
+を使って任意のプロセスのメモリーとの間でデータの送受信を行う。
+.IP *
\fBkcmp\fP(2) を使ってプロセス内部を調査する。
+.RE
+.PD
.TP
\fBCAP_SYS_RAWIO\fP
.PD 0
.IP *
\fBFIBMAP\fP \fBioctl\fP(2) 操作を使用する。
.IP *
-x86 モデルに固有のレジスタ (MSR レジスタ群、 \fBmsr\fP(4) 参照) にアクセスするためのデバイスをオープンする。
+x86 モデルに固有のレジスター (MSR レジスター群、 \fBmsr\fP(4) 参照) にアクセスするためのデバイスをオープンする。
.IP *
\fI/proc/sys/vm/mmap_min_addr\fP を更新する。
.IP *
-\fI/proc/sys/vm/mmap_min_addr\fP で指定された値よりも小さなアドレスにメモリマッピングを作成する。
+\fI/proc/sys/vm/mmap_min_addr\fP ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\82\88ã\82\8aã\82\82å°\8fã\81\95ã\81ªã\82¢ã\83\89ã\83¬ã\82¹ã\81«ã\83¡ã\83¢ã\83ªã\83¼ã\83\9eã\83\83ã\83\94ã\83³ã\82°ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\80\82
.IP *
\fI/proc/bus/pci\fP にあるファイルをマップする。
.IP *
特権が必要な仮想端末に関する各種の \fBioctl\fP(2) 操作を利用できる。
.TP
\fBCAP_SYSLOG\fP (Linux 2.6.37 以降)
+.RS
+.PD 0
.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 の議論を参照)。
+.PD
+.RE
.TP
\fBCAP_WAKE_ALARM\fP (Linux 3.0 以降)
.\"
.SS ケーパビリティと、ルートによるプログラムの実行
\fBexecve\fP(2) 時に、ケーパビリティセットを使って、全ての権限を持った \fIroot\fP を実現するには、以下のようにする。
.IP 1. 3
-set\-user\-ID\-root プログラムが実行される場合、 またはプロセスの実ユーザ ID が 0 (root) の場合、
+set\-user\-ID\-root プログラムが実行される場合、 またはプロセスの実ユーザー ID が 0 (root) の場合、
ファイルの継承可能セットと許可セットを全て 1 (全てのケーパビリティが有効) に定義する。
.IP 2.
set\-user\-ID\-root プログラムが実行される場合、 ファイルの実効ケーパビリティビットを 1 (enabled) に定義する。
する場合、または実効 UID が 0 のプロセスがプログラムを \fBexecve\fP(2) する場合、許可と実効のケーパビリティセットの全ケーパビリティ
(正確には、ケーパビリティバウンディングセットによるマスクで除外されるもの 以外の全てのケーパビリティ) を取得するということである。
これにより、伝統的な UNIX システムと同じ振る舞いができるようになっている。
-.SS ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88
-ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88 (capability bounding set) ã\81¯ã\80\81 \fBexecve\fP(2)
+.SS ケーパビリティバウンディングセット
+ケーパビリティバウンディングセット (capability bounding set) は、 \fBexecve\fP(2)
時に獲得できるケーパビリティを制限するために使われる セキュリティ機構である。 バウンディングセットは以下のように使用される。
.IP * 2
-\fBexecve\fP(2) å®\9fè¡\8cæ\99\82ã\81«ã\80\81ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¨ ã\83\95ã\82¡ã\82¤ã\83«ã\81®è¨±å\8f¯ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\82»ã\83\83ã\83\88ã\81®è«\96ç\90\86å\92\8c (AND) ã\82\92å\8f\96ã\81£ã\81\9fã\82\82ã\81®ã\81\8cã\80\81
-ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81®è¨±å\8f¯ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\82»ã\83\83ã\83\88ã\81«å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\82\8bã\80\82 ã\81¤ã\81¾ã\82\8aã\80\81ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¯ã\80\81
+\fBexecve\fP(2) 実行時に、ケーパビリティバウンディングセットと ファイルの許可ケーパビリティセットの論理和 (AND) を取ったものが、
+そのスレッドの許可ケーパビリティセットに割り当てられる。 つまり、ケーパビリティバウンディングセットは、
実行ファイルが認めている許可ケーパビリティに対して 制限を課す働きをする。
.IP *
-(Linux 2.6.25 以é\99\8d) ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¯ã\80\81ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c \fBcapset\fP(2)
+(Linux 2.6.25 以降) ケーパビリティバウンディングセットは、スレッドが \fBcapset\fP(2)
により自身の継承可能セットに追加可能なケーパビリティの母集団を 制限する役割を持つ。
スレッドに許可されたケーパビリティであっても、バウンディングセットに 含まれていなければ、スレッドはそのケーパビリティは自身の継承可能セットに
追加できず、その結果、継承可能セットにそのケーパビリティを含むファイルを \fBexecve\fP(2)
あるスレッドの継承可能セットにそのスレッドのバウンディングセットに 存在しないケーパビリティが含まれている場合、そのスレッドは、
継承可能セットに含まれるケーパビリティを持つファイルを実行することにより、 許可セットに含まれるケーパビリティも獲得できるということである。
.PP
-ã\82«ã\83¼ã\83\8dã\83«ã\81®ã\83\90ã\83¼ã\82¸ã\83§ã\83³ã\81«ã\82\88ã\82\8aã\80\81ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¯ ã\82·ã\82¹ã\83\86ã\83 å\85±é\80\9aã\81®å±\9eæ\80§ã\81®å ´å\90\88ã\81¨ã\80\81ã\83\97ã\83ã\82»ã\82¹å\8d\98ä½\8dã\81®å±\9eæ\80§ã\81®å ´å\90\88ã\81\8cã\81\82ã\82\8bã\80\82
+カーネルのバージョンにより、ケーパビリティバウンディングセットは システム共通の属性の場合と、プロセス単位の属性の場合がある。
.PP
-\fBLinux 2.6.25 ã\82\88ã\82\8aå\89\8dã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88\fP
+\fBLinux 2.6.25 より前のケーパビリティバウンディングセット\fP
.PP
-2.6.25 ã\82\88ã\82\8aå\89\8dã\81®ã\82«ã\83¼ã\83\8dã\83«ã\81§ã\81¯ã\80\81ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¯ ã\82·ã\82¹ã\83\86ã\83 å\85±é\80\9aã\81®å±\9eæ\80§ã\81§ã\80\81ã\82·ã\82¹ã\83\86ã\83 ä¸\8aã\81®å\85¨ã\81¦ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81«é\81©ç\94¨ã\81\95ã\82\8cã\82\8bã\80\82
+2.6.25 より前のカーネルでは、ケーパビリティバウンディングセットは システム共通の属性で、システム上の全てのスレッドに適用される。
バウンディングセットは \fI/proc/sys/kernel/cap\-bound\fP ファイル経由で参照できる。
-(間違えやすいが、このビットマスク形式のパラメータは、 \fI/proc/sys/kernel/cap\-bound\fP では符号付きの十進数で表現される。)
+(間違えやすいが、このビットマスク形式のパラメーターは、 \fI/proc/sys/kernel/cap\-bound\fP
+では符号付きの十進数で表現される。)
-\fBinit\fP ã\83\97ã\83ã\82»ã\82¹ã\81 ã\81\91ã\81\8cã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81§ ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\81\9dã\82\8c以å¤\96ã\81§ã\81¯ã\80\81ã\82¹ã\83¼ã\83\91ã\83¼ã\83¦ã\83¼ã\82¶
+\fBinit\fP ã\83\97ã\83ã\82»ã\82¹ã\81 ã\81\91ã\81\8cã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81§ ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\81\9dã\82\8c以å¤\96ã\81§ã\81¯ã\80\81ã\82¹ã\83¼ã\83\91ã\83¼ã\83¦ã\83¼ã\82¶ã\83¼
(より正確には、 \fBCAP_SYS_MODULE\fP ケーパビリティを持ったプログラム) が、
-ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\81®ã\82¯ã\83ªã\82¢ã\81\8c ã\81§ã\81\8dã\82\8bã\81 ã\81\91ã\81§ã\81\82ã\82\8bã\80\82
+ケーパビリティバウンディングセットのケーパビリティのクリアが できるだけである。
-é\80\9a常ã\81®ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81¯ã\80\81ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¯ã\80\81 \fBCAP_SETPCAP\fP ã\81\8cç\84¡å\8a¹ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\80\82 ã\81\93ã\81®å\88¶é\99\90ã\82\92å\8f\96ã\82\8aå\8e»ã\82\8bã\81«ã\81¯
+通常のシステムでは、ケーパビリティバウンディングセットは、 \fBCAP_SETPCAP\fP が無効になっている。 この制限を取り去るには
(取り去るのは危険!)、 \fIinclude/linux/capability.h\fP 内の \fBCAP_INIT_EFF_SET\fP
の定義を修正し、カーネルを再構築する必要がある。
.\"
-ã\82·ã\82¹ã\83\86ã\83 å\85±é\80\9aã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88æ©\9fè\83½ã\81¯ã\80\81 ã\82«ã\83¼ã\83\8dã\83« 2.2.11 以é\99\8dã\81§ Linux ã\81«è¿½å\8a ã\81\95ã\82\8cã\81\9fã\80\82
+システム共通のケーパビリティバウンディングセット機能は、 カーネル 2.2.11 以降で Linux に追加された。
.PP
-\fBLinux 2.6.25 以é\99\8dã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88\fP
+\fBLinux 2.6.25 以降のケーパビリティバウンディングセット\fP
.PP
-Linux 2.6.25 以é\99\8dã\81§ã\81¯ã\80\81 ã\80\8cã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\80\8dã\81¯ã\82¹ã\83¬ã\83\83ã\83\89å\8d\98ä½\8dã\81®å±\9eæ\80§ã\81§ã\81\82ã\82\8b
-(ã\82·ã\82¹ã\83\86ã\83 å\85±é\80\9aã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81¯ã\82\82ã\81¯ã\82\84å\98å\9c¨ã\81\97ã\81ªã\81\84)ã\80\82
+Linux 2.6.25 以降では、 「ケーパビリティバウンディングセット」はスレッド単位の属性である
+(システム共通のケーパビリティバウンディングセットはもはや存在しない)。
バウンディングセットは \fBfork\fP(2) 時にはスレッドの親プロセスから継承され、 \fBexecve\fP(2) の前後では保持される。
スレッドが \fBCAP_SETPCAP\fP ケーパビリティを持っている場合、そのスレッドは \fBprctl\fP(2) の
-\fBPR_CAPBSET_DROP\fP æ\93\8dä½\9cã\82\92使ã\81£ã\81¦è\87ªèº«ã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88ã\81\8bã\82\89 ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\82\92å\89\8aé\99¤ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82
+\fBPR_CAPBSET_DROP\fP 操作を使って自身のケーパビリティバウンディングセットから ケーパビリティを削除することができる。
いったんケーパビリティをバウンディングセットから削除してしまうと、 スレッドはそのケーパビリティを再度セットすることはできない。 \fBprctl\fP(2)
の \fBPR_CAPBSET_READ\fP 操作を使うことで、スレッドがあるケーパビリティが自身のバウンディングセット
に含まれているかを知ることができる。
バウンディングセットからのケーパビリティの削除がサポートされるのは、
カーネルのコンパイル時にファイルケーパビリティが有効になっている場合
だけである。Linux 2.6.33 より前のカーネルでは、ファイルケーパビリティは
-設定オプション CONFIG_SECURITY_FILE_CAPABILITIES で切り替えられる追加の
+設定オプション \fBCONFIG_SECURITY_FILE_CAPABILITIES\fP で切り替えられる追加の
機能であった。Linux 2.6.33 以降では、この設定オプションは削除され、
ファイルケーパビリティは常にカーネルに組込まれるようになった。
ファイルケーパビリティがカーネルにコンパイル時に組み込まれている場合、
.\"
バウンディングセットからケーパビリティを削除しても、 スレッドの継承可能セットからはそのケーパビリティは削除されない。
しかしながら、バウンディングセットからの削除により、 この先そのケーパビリティをスレッドの継承可能セットに追加すること はできなくなる。
-.SS "ユーザ ID 変更のケーパビリティへの影響"
-ユーザ ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、 スレッドの実 UID、実効 UID、保存
+.SS "ユーザー ID 変更のケーパビリティへの影響"
+ユーザー ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、 スレッドの実 UID、実効 UID、保存
set\-user\-ID、ファイルシステム UID が (\fBsetuid\fP(2), \fBsetresuid\fP(2) などを使って)
変更された際に、カーネルはそのスレッドのケーパビリティセットに 以下の変更を行う:
.IP 1. 3
ファイルシステム UID が 0 から 0 以外に変更された場合 (\fBsetfsuid\fP(2)
参照)、実効ケーパビリティセットの以下のケーパビリティがクリアされる: \fBCAP_CHOWN\fP, \fBCAP_DAC_OVERRIDE\fP,
\fBCAP_DAC_READ_SEARCH\fP, \fBCAP_FOWNER\fP, \fBCAP_FSETID\fP, \fBCAP_LINUX_IMMUTABLE\fP
-(Linux 2.2.30 以降), \fBCAP_MAC_OVERRIDE\fP, \fBCAP_MKNOD\fP (Linux 2.2.30 以降)。
+(Linux 2.6.30 以降), \fBCAP_MAC_OVERRIDE\fP, \fBCAP_MKNOD\fP (Linux 2.6.30 以降)。
ファイルシステム UID が 0 以外から 0 に変更された場合、 上記のケーパビリティのうち許可ケーパビリティセットで有効になっているものが
実効ケーパビリティセットで有効にされる。
.PP
呼び出し側が \fBCAP_SETPCAP\fP ケーパビリティを持っていない場合、新しい継承可能セットは、 既存の継承可能セットと許可セットの積集合
(AND) の部分集合で なければならない。
.IP 2.
-(Linux 2.6.25 以降) 新しい継承可能セットは、既存の継承可能セットとケーパビリティ・ バウンディングセットの積集合 (AND)
+(Linux 2.6.25 以降) 新しい継承可能セットは、既存の継承可能セットとケーパビリティ バウンディングセットの積集合 (AND)
の部分集合でなければならない。
.IP 3.
新しい許可セットは、既存の許可セットの部分集合でなければならない (つまり、そのスレッドが現在持っていない許可ケーパビリティを
.TP
\fBSECBIT_NO_SETUID_FIXUP\fP
このフラグをセットすると、スレッドの実効 UID とファイルシステム UID が 0 と 0 以外の間で切り替わった場合に、
-カーネルはケーパビリティセットの調整を行わなくなる (「ユーザ ID 変更のケーパビリティへの影響」の節を参照)。
+カーネルはケーパビリティセットの調整を行わなくなる (「ユーザー ID 変更のケーパビリティへの影響」の節を参照)。
.TP
\fBSECBIT_NOROOT\fP
このビットがセットされている場合、 set\-user\-ID\-root プログラムの実行時や、 実効 UID か 実 UID が 0 のプロセスが
SECBIT_NOROOT_LOCKED);
.fi
.in
+.SS ユーザー名前空間との相互作用
+ケーパリビティとユーザー名前空間の相互の影響に関する議論は \fBuser_namespaces\fP(7) を参照。
.SH 準拠
.PP
ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった POSIX.1e 草案に基づいて実装されている。
を参照。
.SH 注意
カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となっており、カーネル設定オプション
-CONFIG_SECURITY_CAPABILITIES により有効/無効を切り替えることができる。
+\fBCONFIG_SECURITY_CAPABILITIES\fP により有効/無効を切り替えることができる。
.\" 7b9a7ec565505699f503b4fcf61500dceb36e744
\fI/proc/PID/task/TID/status\fP ファイルを使うと、スレッドのケーパビリティセットを見ることができる。
存在しないケーパビリティはすべて無効 (0) として表示される。 (\fBCAP_LAST_CAP\fP
より大きい値を持つケーパビリティが存在しないケーパビリティである)。
-\fIlibcap\fP パッケージは、ケーパビリティを設定・取得するための ルーチン群を提供している。これらのインタフェースは、 \fBcapset\fP(2)
+\fIlibcap\fP ã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81¯ã\80\81ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\82\92è¨å®\9aã\83»å\8f\96å¾\97ã\81\99ã\82\8bã\81\9fã\82\81ã\81® ã\83«ã\83¼ã\83\81ã\83³ç¾¤ã\82\92æ\8f\90ä¾\9bã\81\97ã\81¦ã\81\84ã\82\8bã\80\82ã\81\93ã\82\8cã\82\89ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81¯ã\80\81 \fBcapset\fP(2)
と \fBcapget\fP(2) が提供するインターフェースと比べて、より使いやすく、変更される可能性が少ない。 このパッケージでは、
\fBsetcap\fP(8), \fBgetcap\fP(8) というプログラムも提供されている。 パッケージは以下で入手できる。
.br
ケーパビリティを持ったスレッドは自分以外のスレッドの ケーパビリティを操作できる。 しかしながら、これは理論的に可能というだけである。
以下のいずれかの場合においても、どのスレッドも \fBCAP_SETPCAP\fP ケーパビリティを持つことはないからである。
.IP * 2
-2.6.25 ã\82\88ã\82\8aå\89\8dã\81®å®\9fè£\85ã\81§ã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 å\85±é\80\9aã\81®ã\82±ã\83¼ã\83\91ã\83\93ã\83ªã\83\86ã\82£ã\83»ã\83\90ã\82¦ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82»ã\83\83ã\83\88 \fI/proc/sys/kernel/cap\-bound\fP
+2.6.25 より前の実装では、システム共通のケーパビリティバウンディングセット \fI/proc/sys/kernel/cap\-bound\fP
ではこのケーパビリティは常に無効になっており、 ソースを変更してカーネルを再コンパイルしない限り、 これを変更することはできない。
.IP *
現在の実装ではファイルケーパビリティが無効になっている場合、 プロセス毎のバウンディングセットからこのケーパビリティを抜いて \fBinit\fP
は開始され、 システム上で生成される他の全てのプロセスでこのバウンディングセットが 継承される。
.SH 関連項目
-\fBcapget\fP(2), \fBprctl\fP(2), \fBsetfsuid\fP(2), \fBcap_clear\fP(3),
+\fBcapsh\fP(1), \fBsetpriv\fP(2), \fBprctl\fP(2), \fBsetfsuid\fP(2), \fBcap_clear\fP(3),
\fBcap_copy_ext\fP(3), \fBcap_from_text\fP(3), \fBcap_get_file\fP(3),
\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)
+\fBlibcap\fP(3), \fBcredentials\fP(7), \fBuser_namespaces\fP(7), \fBpthreads\fP(7),
+\fBgetcap\fP(8), \fBsetcap\fP(8)
.PP
Linux カーネルソース内の \fIinclude/linux/capability.h\fP
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。