JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... やグループ ID に関わらず、 プロセスにはその名前空間におけるすべてのケーパビリティが認められる。 マルチスレッドのプロセスは setns () でユーザー名前空間を変更できない。 setns () を使って、呼び出し元が現在のユーザー名前空間に再度入ることは認められていない ... 。 これにより、 いくつかのケーパビリティを外した呼び出し元が setns () を呼び出すことでそれらのケーパビリティを再度得ることを防ぐことができる。 セキュリティ上の理由から、 ファイルシステム関連 ... を持っていなければならない。 ユーザー名前空間とマウント名前空間の関係の詳細は user_namespaces (7) を参照。 返り値 成功すると setns () は 0 を返す。 失敗すると、 -1 が返され、 errno にエラーを示す値が設定される。 エラー EBADF fd が有効なファイルディスクリ ... ... oc/[pid]/ns/pid ファイルに対してオープンしたファイルディスクリプターを使って、 "init" プロセスが終了した後にその名前空間に setns (2) を行った場合に起こり得る。 unshare (2) を呼び出した後にも、この状況は起こり得る。 それ以降に fork (2) で作成された最初 ... セス (すなわち PID 1 を持つ init (1) プロセス) の親プロセスは必然的に別の名前空間に属すことになる。 同様に、 あるプロセスが setns (2) を使って子プロセスを PID 名前空間に参加させた場合、 子プロセスは setns (2) の呼び出し元とは異なる PID 名前空間に属す。 ... 子プロセスで getppid (2) を呼び出すと 0 が返される。 プロセスは ( setns (2) を CLONE_NEWPID で使うなどで) 子供の PID 名前空間に自由に入ることができるが、 逆の方向には移動できない。 つまり、 プロ ... ... ーザー名前空間のメンバーとなる。 シングルスレッドのプログラムは、 変更先のユーザー名前空間で CAP_SYS_ADMIN を持っていれば、 setns (2) を使って別のユーザー名前空間に参加することができる。 変更時に、 変更後の名前空間ですべてのケーパビリティを獲得する。 C ... 名前空間ですべてのケーパビリティを持った状態で開始される。 同様に、 unshare (2) を使って新しいユーザー名前空間を作成したり、 setns (2) を使って既存のユーザー名前空間に参加したりしたプロセスは、 その名前空間ですべてのケーパビリティを獲得する。 一方、 その ... プロセスは、親のユーザー名前空間 ( clone (2) の場合) や直前のユーザー名前空間 ( unshare (2) や setns (2) の場合) では、 root ユーザー (root 名前空間のユーザー ID 0 のプロセス) により新しい名前空間の作成や参加が行われた場合で ... ... 成され、 子プロセスはこれらの名前空間のメンバーになる。 (このシステムコールは名前空間とは関係のない機能も多数実装している。) setns (2) setns (2) システムコールを使うと、呼び出したプロセスを既存の名前空間に参加させることができる。 参加する名前空間は、 以 ... が不要である。 /proc/[pid]/ns/ ディレクトリ 各プロセスには /proc/[pid]/ns/ サブディレクトリがあり、 このサブディレクトリには setns (2) での操作がサポートされている名前空間単位にエントリーが存在する。 $ ls -l /proc/$$/ns total 0 lrwxrwxrwx. 1 mtk mtk 0 J ... 限り、 その名前空間のすべてのプロセスが終了した場合であっても、 その名前空間は存在し続ける。 このファイルディスクリプターは setns (2) に渡すことができる。 Linux 3.7 以前では、これらのファイルはハードリンクとして見えていた。 Linux 3.8 以降では、これらは ... ... スト名を表示し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については setns (2) を参照。 プログラムのソース #define _GNU_SOURCE #include < sys/wait.h > #include < sys/utsname.h > #include < sched.h ... EXIT_SUCCESS); } 関連項目 fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait (2), capabilities (7), namespaces (7), pthreads (7) この文書について この man ページは L ... ... スト名を表示し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については setns (2) を参照。 プログラムのソース #define _GNU_SOURCE #include < sys/wait.h > #include < sys/utsname.h > #include < sched.h ... EXIT_SUCCESS); } 関連項目 fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait (2), capabilities (7), namespaces (7), pthreads (7) この文書について この man ページは L ... ... スト名を表示し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については setns (2) を参照。 プログラムのソース #define _GNU_SOURCE #include < sys/wait.h > #include < sys/utsname.h > #include < sched.h ... EXIT_SUCCESS); } 関連項目 fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait (2), capabilities (7), namespaces (7), pthreads (7) この文書について この man ページは L ... ... スト名を表示し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については setns (2) を参照。 プログラムのソース #define _GNU_SOURCE #include < sys/wait.h > #include < sys/utsname.h > #include < sched.h ... EXIT_SUCCESS); } 関連項目 fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait (2), capabilities (7), namespaces (7), pthreads (7) この文書について この man ページは L ... ... "unshare"); execvp(argv[optind], &argv[optind]); errExit("execvp"); } 関連項目 unshare (1), clone (2), fork (2), kcmp (2), setns (2), vfork (2), namespaces (7) Linux カーネルソース内の Documentation/userspace-api/unshare.rst (Linux 4.12 より前では Doc ... ... 2.4 setgroups (2) 1.0 setgroups32 (2) 2.4 sethae (2) 2.0 Alpha のみ; 「注意」を参照 sethostname (2) 1.0 setitimer (2) 1.0 setns (2) 3.0 setpgid (2) 1.0 setpgrp (2) 2.0 Alternative name for setpgid (2) on Alpha setpriority (2) 1.0 setregid (2) 1.0 set ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。