OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man7 / credentials.7
1 .\" Copyright (c) 2007 by Michael Kerrisk <mtk.manpages@gmail.com>
2 .\"
3 .\" Permission is granted to make and distribute verbatim copies of this
4 .\" manual provided the copyright notice and this permission notice are
5 .\" preserved on all copies.
6 .\"
7 .\" Permission is granted to copy and distribute modified versions of this
8 .\" manual under the conditions for verbatim copying, provided that the
9 .\" entire resulting derived work is distributed under the terms of a
10 .\" permission notice identical to this one.
11 .\"
12 .\" Since the Linux kernel and libraries are constantly changing, this
13 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
14 .\" responsibility for errors or omissions, or for damages resulting from
15 .\" the use of the information contained herein.  The author(s) may not
16 .\" have taken the same level of care in the production of this manual,
17 .\" which is licensed free of charge, as they might when working
18 .\" professionally.
19 .\"
20 .\" Formatted or processed versions of this manual, if unaccompanied by
21 .\" the source, must acknowledge the copyright and authors of this work.
22 .\"
23 .\" 2007-06-13 Creation
24 .\"
25 .\"*******************************************************************
26 .\"
27 .\" This file was generated with po4a. Translate the source file.
28 .\"
29 .\"*******************************************************************
30 .TH CREDENTIALS 7 2008\-06\-03 Linux "Linux Programmer's Manual"
31 .SH 名前
32 credentials \- 認証に用いられるプロセスの識別子
33 .SH 説明
34 .SS "プロセスID (PID)"
35 各プロセスは、負でない整数の一意な識別子を持つ。 この識別子は \fBfork\fP(2)  を使ってプロセスが生成される際に割り当てられる。 プロセスは
36 \fBgetpid\fP(2)  を使って自分の PID を取得できる。 PID は \fIpid_t\fP 型で表現される (\fIpid_t\fP は
37 \fI<sys/types.h>\fP で定義されている)。
38
39 .\" .BR sched_rr_get_interval (2),
40 .\" .BR sched_getaffinity (2),
41 .\" .BR sched_setaffinity (2),
42 .\" .BR sched_getparam (2),
43 .\" .BR sched_setparam (2),
44 .\" .BR sched_setscheduler (2),
45 .\" .BR sched_getscheduler (2),
46 .\" .BR getsid (2),
47 .\" .BR waitid (2),
48 .\" .BR wait4 (2),
49 PID は各種のシステムコールでそのシステムコールが作用するプロセスを 特定するために使用される。以下に例を挙げる: \fBkill\fP(2),
50 \fBptrace\fP(2), \fBsetpriority\fP(2), \fBsetpgid\fP(2), \fBsetsid\fP(2),
51 \fBsigqueue\fP(3), \fBwaitpid\fP(2).
52
53 プロセスの PID は \fBexecve\fP(2)  の前後で不変である。
54 .SS "親プロセス ID (PPID)"
55 プロセスの親プロセスの ID は、 \fBfork\fP(2)  を使ってそのプロセスを生成したプロセスを示す。 プロセスは \fBgetppid\fP(2)
56 を使って自分の PPID を取得できる。 PPID は \fIpid_t\fP 型で表現される。
57
58 プロセスの PPID は \fBexecve\fP(2)  の前後で不変である。
59 .SS "プロセスグループ ID とセッション ID"
60 各プロセスはセッション ID とプロセスグループ ID を持つ。 これらの ID はどちらも \fIpid_t\fP 型で表現される。 プロセスは、それぞれ
61 \fBgetsid\fP(2), \fBgetpgrp\fP(2)  を使って自分のセッション ID、プロセスグループ ID を取得できる。
62
63 \fBfork\fP(2)  で生成された子プロセスは親プロセスのセッション ID とプロセスグループ ID を継承する。プロセスのセッション ID
64 とプロセスグループ ID は \fBexecve\fP(2)  の前後で不変である。
65
66 セッションとプロセスグループの概念は、シェルのジョブ制御を行うために 考案されたものである。 プロセスグループ (時には「ジョブ」と呼ばれることもある)
67 は、 同じプロセスグループ ID を共有するプロセスの集まりである。 シェルは、一つのコマンドもしくはパイプラインの実行に使われるプロセス群に
68 対して一つのプロセスグループを生成する (例えば、コマンド "ls\ |\ wc" を実行するために生成される二つのプロセスは
69 同じプロセスグループに置かれる)。 所属するプロセスグループは \fBsetpgid\fP(2)  を使って設定できる。 自身のプロセス ID
70 がプロセスグループ ID と同じプロセスは、 そのグループの「プロセスグループ・リーダー」である。
71
72 セッションは、同じセッション ID を共有するプロセスの集まりである。 ある一つのプロセスグループの全メンバーは同じセッション ID を持つ
73 (つまり、一つのプロセスグループのメンバーは全て同じセッションに所属し、 これにより、セッションとプロセスグループで二階層のプロセス階層が形成できる)。
74 新たなセッションの生成はプロセスが \fBsetsid\fP(2)  を呼び出すことで行う。 \fBsetsid\fP(2)  は、 \fBsetsid\fP(2)
75 を呼び出したプロセスの PID と同じ値のセッション ID を持つ 新たなセッションを生成する。
76 セッションの生成者は「セッション・リーダー」と呼ばれる。
77 .SS "ユーザ ID とグループ ID"
78 各プロセスは、数種類のユーザ ID とグループ ID を持つ。 ユーザ ID、グループ ID は整数で、それぞれ \fIuid_t\fP, \fIgid_t\fP
79 型で表現される (これらは \fI<sys/types.h>\fP で定義されている)。
80
81 Linux では、各プロセスは以下のような種類のユーザ ID とグループ ID を持つ。
82 .IP * 3
83 実ユーザ ID と実グループ ID。 これらの ID によりプロセスの所有者が決定される。 プロセスが自分の実ユーザ ID、実グループ ID
84 を取得するには、それぞれ \fBgetuid\fP(2), \fBgetgid\fP(2)  を使用する。
85 .IP *
86 実効ユーザ ID と実効グループ ID。 これらの ID は、メッセージキュー、共有メモリ、セマフォなどの
87 共有リソースにアクセスしようとした際にそのプロセスがアクセス許可を 持っているかをカーネルが判定するのに使用される。 ほとんどの UNIX
88 システムでは、これらの ID はファイルへのアクセス時の アクセス許可の判定にも使用される。 しかしながら、Linux
89 ではファイルへのアクセス許可の判定には 後述のファイルシステム ID が使用される。 プロセスが自分の実効ユーザ ID、実効グループ ID
90 を取得するには、それぞれ \fBgeteuid\fP(2), \fBgetegid\fP(2)  を使用する。
91 .IP *
92 保存 (saved) set\-user\-ID と保存 set\-group\-ID。 これらの ID は、set\-user\-ID や
93 set\-group\-ID されたプログラムにおいて、 プログラムの実行時に設定された実効 ID のコピーを保存するために 使用される
94 (\fBexecve\fP(2)  参照)。 set\-user\-ID プログラムは、実効ユーザ ID を実ユーザID と保存 set\-user\-ID
95 の間で行ったり来たり切り替えることで、特権を得たり落としたりできる。 この切り替えは \fBseteuid\fP(2), \fBsetreuid\fP(2),
96 \fBsetresuid\fP(2)  を呼び出すことで実行できる。 set\-group\-ID プログラムは、 \fBsetegid\fP(2),
97 \fBsetregid\fP(2), \fBsetresgid\fP(2)  を使って同様のことができる。 プロセスが自分の保存 set\-user\-ID、保存
98 set\-group\-ID を取得するには、 \fBgetresuid(2),\fP \fBgetresgids\fP(2)  をそれぞれ使用する。
99 .IP *
100 ファイルシステム・ユーザ ID とファイルシステム・グループ ID (Linux 固有)。 これらの ID は、後述の補助グループ ID
101 と組み合わせて使用され、 ファイルへのアクセス権の決定に利用される。詳細は \fBpath_resolution\fP(7)  を参照。 プロセスの実効 ID
102 (ユーザ ID や グループ ID) が変更されるたびに、 カーネルは自動的に対応するファイルシステム ID を同じ値に変更する。
103 その結果、ファイルシステム ID は通常は対応する実効 ID と同じ値となり、 ファイルのアクセス権のチェック方法は Linux と他の UNIX
104 システムで同じである。 ファイルシステム ID は実効 ID とは異なる値にすることができ、 変更は \fBsetfsuid\fP(2)  と
105 \fBsetfsgid\fP(2)  を呼び出して行う。
106 .IP *
107 .\" Since kernel 2.6.4, the limit is visible via the read-only file
108 .\" /proc/sys/kernel/ngroups_max.
109 .\" As at 2.6.22-rc2, this file is still read-only.
110 補助グループ ID。 この ID は、ファイルや他の共有リソースへのアクセス時にアクセス許可の チェックに使用される、追加のグループ ID
111 の集合である。 カーネル 2.6.4 より前の Linux では、一つのプロセスあたりの 補助グループのメンバー数は最大で 32 である。 カーネル
112 2.6.4 以降では、一つのプロセスあたりの 補助グループのメンバー数は最大で 65536 である。
113 \fIsysconf(_SC_NGROUPS_MAX)\fP を呼び出すことで、あるプロセスがメンバーとなることができる可能性のある
114 補助グループ数を知ることができる。 プロセスは、自分の補助グループ ID の集合を \fBgetgroups\fP(2)  で取得でき、
115 \fBsetgroups\fP(2)  で集合を変更できる。
116 .PP
117 \fBfork\fP(2)  で生成された子プロセスは親プロセスのユーザ ID とグループ ID を継承する。 \fBexecve\fP(2)
118 の間、プロセスの実ユーザ/グループ ID と補助グループ ID 集合は不変である。 実効 ID と保存セット ID は変更される可能性がある
119 (\fBexecve\fP(2)  で説明されている)。
120
121 上記の目的以外にも、プロセスのユーザ ID は他の様々な場面で利用される。
122 .IP * 3
123 シグナルを送る許可の判定時\(em \fBkill\fP(2)  参照。
124 .IP *
125 プロセスのスケジューリング関連のパラメータ (nice 値、 リアルタイム・スケジューリングポリシーや優先度、CPU affinity、 入出力優先度)
126 の設定許可の判定時。 スケジューリング関連のパラメータ設定には \fBsetpriority\fP(2), \fBsched_setaffinity\fP(2),
127 \fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBioprio_set\fP(2)  が使用される。
128 .IP *
129 リソース上限のチェック時。 \fBgetrlimit\fP(2)  参照。
130 .IP *
131 プロセスが生成できる inotify インスタンス数の上限のチェック時。 \fBinotify\fP(7)  参照。
132 .SH 準拠
133 プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は POSIX.1\-2001 で規定されている。 実 ID、実効
134 ID、保存セット ID のユーザ ID / グループ ID および 補助グループ ID は POSIX.1\-2001 で規定されている。
135 ファイルシステム・ユーザ ID / グループ ID は Linux による拡張である。
136 .SH 注意
137 POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで 共有されることを求めている。 しかしながら、カーネルのレベルでは、Linux
138 はスレッド毎に別々の ユーザとグループに関する識別子を管理している。 NPTL スレッド実装が、(例えば \fBsetuid\fP(2),
139 \fBsetresuid\fP(2)  などの呼び出しによる) ユーザやグループに関する識別子に対する変更が プロセス内の全ての POSIX
140 スレッドに対して反映されることを保証する ための処理を行っている。
141 .SH 関連項目
142 \fBbash\fP(1), \fBcsh\fP(1), \fBps\fP(1), \fBaccess\fP(2), \fBexecve\fP(2),
143 \fBfaccessat\fP(2), \fBfork\fP(2), \fBgetpgrp\fP(2), \fBgetpid\fP(2), \fBgetppid\fP(2),
144 \fBgetsid\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), \fBsetegid\fP(2), \fBseteuid\fP(2),
145 \fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetgid\fP(2), \fBsetgroups\fP(2),
146 \fBsetresgid\fP(2), \fBsetresuid\fP(2), \fBsetuid\fP(2), \fBwaitpid\fP(2),
147 \fBeuidaccess\fP(3), \fBinitgroups\fP(3), \fBtcgetpgrp\fP(3), \fBtcsetpgrp\fP(3),
148 \fBcapabilities\fP(7), \fBpath_resolution\fP(7), \fBunix\fP(7)