.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH SETNS 2 2014\-09\-21 Linux "Linux Programmer's Manual"
+.TH SETNS 2 2015\-01\-10 Linux "Linux Programmer's Manual"
.SH 名前
setns \- スレッドに名前空間を関連付けしなおす
.SH 書式
\fBint setns(int \fP\fIfd\fP\fB, int \fP\fInstype\fP\fB);\fP
.fi
.SH 説明
-名前空間を参照するファイルディスクリプタを指定すると、
+å\90\8då\89\8d空é\96\93ã\82\92å\8f\82ç\85§ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81¨ã\80\81
呼び出したスレッドにその名前空間を関連付けしなおす。
-\fIfd\fP 引き数は、 \fI/proc/[pid]/ns/\fP ディレクトリ内の名前空間エントリ
-のいずれかを参照するファイルディスクリプタである。
+\fIfd\fP 引き数は、 \fI/proc/[pid]/ns/\fP ディレクトリ内の名前空間エントリー
+ã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\82\92å\8f\82ç\85§ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82
\fI/proc/[pid]/ns/\fP の詳細は \fBnamespaces\fP(7) を参照。
\fInstype\fP 引き数で指定された制限の範囲内で、
呼び出したスレッドに \fIfd\fP に対応する名前空間を関連付けしなおす。
\fIfd\fP はマウント名前空間を参照していなければならない。
.TP
\fBCLONE_NEWPID\fP (Linux 3.8 以降)
-\fIfd\fP は PID 名前空間を参照していなければならない。
+\fIfd\fP は子孫の PID 名前空間を参照していなければならない。
.TP
\fBCLONE_NEWUSER\fP (Linux 3.8 以降)
\fIfd\fP はユーザー名前空間を参照していなければならない。
(もしくは気にする必要がない) 場合には、 \fInstype\fP に 0 を指定すれば十分
である。呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを
知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、
-\fInstype\fP に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の
+\fInstype\fP ã\81« 0 以å¤\96ã\81®å\80¤ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81¨ã\82\88ã\81\84ã\80\82 (ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\88¥ã\81®
プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し
側に渡された場合などでは、呼び出し側が \fIfd\fP がどのタイプの名前空間を
参照しているかを知らない可能性がある。)
-\fBCLONE_NEWPID\fP behaves somewhat differently from the other \fInstype\fP
-values: reassociating the calling thread with a PID namespace only changes
-the PID namespace that child processes of the caller will be created in; it
-does not change the PID namespace of the caller itself. Reassociating with
-a PID namespace is only allowed if the PID namespace specified by \fIfd\fP is a
-descendant (child, grandchild, etc.) of the PID namespace of the caller.
-For further details on PID namespaces, see \fBpid_namespaces\fP(7).
+\fBCLONE_NEWPID\fP は他の \fInstype\fP 値の場合と少し違った動作をする。 呼び出し元スレッドを PID 名前空間に関連付けし直すと、
+呼び出し元の子プロセスが作成される PID 名前空間が変更されるだけである。 呼び出し元自身の PID 名前空間は変更されない。 PID
+名前空間を関連付けし直すことができるのは、 \fIfd\fP で指定された PID 名前空間が呼び出し元の PID 名前空間の子孫
+(子プロセス、孫プロセスなど) の場合だけである。 PID 名前空間の詳細は \fBpid_namespaces\fP(7) を参照。
.\" See kernel/user_namespace.c:userns_install() [3.8 source]
.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
.\" https://lwn.net/Articles/543273/
-A process reassociating itself with a user namespace must have the
-\fBCAP_SYS_ADMIN\fP capability in the target user namespace. Upon successfully
-joining a user namespace, a process is granted all capabilities in that
-namespace, regardless of its user and group IDs. A multithreaded process
-may not change user namespace with \fBsetns\fP(). It is not permitted to use
-\fBsetns\fP() to reenter the caller's current user namespace. This prevents a
-caller that has dropped capabilities from regaining those capabilities via a
-call to \fBsetns\fP(). For security reasons, a process can't join a new user
-namespace if it is sharing filesystem\-related attributes (the attributes
-whose sharing is controlled by the \fBclone\fP(2) \fBCLONE_FS\fP flag) with
-another process. For further details on user namespaces, see
-\fBuser_namespaces\fP(7).
+プロセスが自分自身をユーザー名前空間に再関連付けするには、 そのプロセスは変更後のユーザー名前空間において \fBCAP_SYS_ADMIN\fP
+ケーパビリティを持っていなければならない。 ユーザー名前空間への参加に成功すると、 そのユーザー ID やグループ ID に関わらず、
+プロセスにはその名前空間におけるすべてのケーパビリティが認められる。 マルチスレッドのプロセスは \fBsetns\fP()
+でユーザー名前空間を変更できない。 \fBsetns\fP() を使って、呼び出し元が現在のユーザー名前空間に再度入ることは認められていない。 これにより、
+いくつかのケーパビリティを外した呼び出し元が \fBsetns\fP() を呼び出すことでそれらのケーパビリティを再度得ることを防ぐことができる。
+セキュリティ上の理由から、 ファイルシステム関連の属性 (共有が \fBclone\fP(2) \fBCLONE_FS\fP フラグで制御される属性)
+を別のプロセスと共有している場合、 プロセスは新しいユーザー名前空間に参加できない。 ユーザー名前空間の詳細は
+\fBuser_namespaces\fP(7) を参照。
.\" Above check is in fs/namespace.c:mntns_install() [3.8 source]
-A process may not be reassociated with a new mount namespace if it is
-multithreaded. Changing the mount namespace requires that the caller
-possess both \fBCAP_SYS_CHROOT\fP and \fBCAP_SYS_ADMIN\fP capabilities in its own
-user namespace and \fBCAP_SYS_ADMIN\fP in the target mount namespace. See
-\fBuser_namespaces\fP(7) for details on the interaction of user namespaces and
-mount namespaces.
+プロセスがマルチスレッドの場合、そのプロセスを新しいマウント名前空間に関連付けし直すことは許可されていない。
+マウント名前空間を変更するには、呼び出し元のプロセスが、 自分自身のユーザー名前空間において \fBCAP_SYS_CHROOT\fP と
+\fBCAP_SYS_ADMIN\fP の両方のケーパビリティを持っており、 変更後のマウント名前空間で \fBCAP_SYS_ADMIN\fP
+ケーパビリティを持っていなければならない。 ユーザー名前空間とマウント名前空間の関係の詳細は \fBuser_namespaces\fP(7) を参照。
.SH 返り値
-成功すると \fIsetns\fP() は 0 を返す。
-失敗すると、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
+成功すると \fBsetns\fP() は 0 を返す。 失敗すると、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
.SH エラー
.TP
\fBEBADF\fP
-\fIfd\fP が有効なファイルディスクリプタではない。
+\fIfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81¯ã\81ªã\81\84ã\80\82
.TP
\fBEINVAL\fP
\fIfd\fP が \fInstype\fP で指定されたタイプと一致しない名前空間を参照している。
\fBEINVAL\fP
スレッドを指定された名前空間に関連付けし直す際に問題が発生した。
.TP
+.\" See kernel/pid_namespace.c::pidns_install() [kernel 3.18 sources]
\fBEINVAL\fP
-The caller attempted to join the user namespace in which it is already a
-member.
+呼び出し元が先祖 (親や親の親など) の PID 名前空間に参加しようとした。
+.TP
+\fBEINVAL\fP
+自分がすでにメンバーとなっているユーザー名前空間に参加しようとした。
.TP
\fBEINVAL\fP
.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
-The caller shares filesystem (\fBCLONE_FS\fP) state (in particular, the root
-directory) with other processes and tried to join a new user namespace.
+呼び出し元が他のプロセスとファイルシステム状態 (特に root ディレクトリ) を共有していて (\fBCLONE_FS\fP)、
+新しいユーザー名前空間に参加しようとした。
.TP
\fBEINVAL\fP
.\" See kernel/user_namespace.c::userns_install() [kernel 3.15 sources]
-The caller is multithreaded and tried to join a new user namespace.
+呼び出し元プロセスがマルチスレッドで、新しいユーザー名前空間に参加しようとした。
.TP
\fBENOMEM\fP
-指定された名前空間に変更するのに必要なメモリが割り当てられない。
+æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\81«å¤\89æ\9b´ã\81\99ã\82\8bã\81®ã\81«å¿\85è¦\81ã\81ªã\83¡ã\83¢ã\83ªã\83¼ã\81\8cå\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\81ªã\81\84ã\80\82
.TP
\fBEPERM\fP
呼び出し元スレッドはこの操作を行うのに必要なケーパビリティを持っていなかった。
exit(EXIT_FAILURE);
}
- fd = open(argv[1], O_RDONLY); /* 名前空間のディスクリプタを取得 */
+ fd = open(argv[1], O_RDONLY); /* å\90\8då\89\8d空é\96\93ã\81®ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92å\8f\96å¾\97 */
if (fd == \-1)
errExit("open");
\fBclone\fP(2), \fBfork\fP(2), \fBunshare\fP(2), \fBvfork\fP(2), \fBnamespaces\fP(7),
\fBunix\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。