OSDN Git Service

Update drafts based on the previous PO changes
[linuxjm/LDP_man-pages.git] / po4a / process / po / ja.po
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2015-01-04 23:49+0900\n"
10 "PO-Revision-Date: 2015-01-05 01:16+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/acct.2:31 build/C/man5/acct.5:25
20 #, no-wrap
21 msgid "ACCT"
22 msgstr "ACCT"
23
24 #. type: TH
25 #: build/C/man2/acct.2:31
26 #, no-wrap
27 msgid "2008-06-16"
28 msgstr "2008-06-16"
29
30 #. type: TH
31 #: build/C/man2/acct.2:31 build/C/man5/acct.5:25
32 #: build/C/man7/capabilities.7:48 build/C/man2/capget.2:15
33 #: build/C/man7/cpuset.7:25 build/C/man7/credentials.7:27
34 #: build/C/man2/getgid.2:25 build/C/man2/getgroups.2:31
35 #: build/C/man2/getpid.2:25 build/C/man2/getpriority.2:45
36 #: build/C/man2/getresuid.2:28 build/C/man2/getrlimit.2:64
37 #: build/C/man2/getrusage.2:39 build/C/man2/getsid.2:26
38 #: build/C/man2/getuid.2:26 build/C/man2/iopl.2:33
39 #: build/C/man2/ioprio_set.2:24 build/C/man2/ipc.2:25
40 #: build/C/man7/namespaces.7:27 build/C/man7/pid_namespaces.7:27
41 #: build/C/man2/seteuid.2:29 build/C/man2/setfsgid.2:31
42 #: build/C/man2/setfsuid.2:31 build/C/man2/setgid.2:29
43 #: build/C/man2/setpgid.2:48 build/C/man2/setresuid.2:26
44 #: build/C/man2/setreuid.2:45 build/C/man2/setsid.2:31
45 #: build/C/man2/setuid.2:30 build/C/man7/svipc.7:40 build/C/man3/ulimit.3:27
46 #: build/C/man7/user_namespaces.7:27
47 #, no-wrap
48 msgid "Linux"
49 msgstr "Linux"
50
51 #. type: TH
52 #: build/C/man2/acct.2:31 build/C/man5/acct.5:25
53 #: build/C/man7/capabilities.7:48 build/C/man2/capget.2:15
54 #: build/C/man7/cpuset.7:25 build/C/man7/credentials.7:27
55 #: build/C/man2/getgid.2:25 build/C/man2/getgroups.2:31
56 #: build/C/man2/getpid.2:25 build/C/man2/getpriority.2:45
57 #: build/C/man2/getresuid.2:28 build/C/man2/getrlimit.2:64
58 #: build/C/man2/getrusage.2:39 build/C/man2/getsid.2:26
59 #: build/C/man2/getuid.2:26 build/C/man3/group_member.3:25
60 #: build/C/man2/iopl.2:33 build/C/man2/ioprio_set.2:24 build/C/man2/ipc.2:25
61 #: build/C/man7/namespaces.7:27 build/C/man7/pid_namespaces.7:27
62 #: build/C/man2/seteuid.2:29 build/C/man2/setfsgid.2:31
63 #: build/C/man2/setfsuid.2:31 build/C/man2/setgid.2:29
64 #: build/C/man2/setpgid.2:48 build/C/man2/setresuid.2:26
65 #: build/C/man2/setreuid.2:45 build/C/man2/setsid.2:31
66 #: build/C/man2/setuid.2:30 build/C/man7/svipc.7:40 build/C/man3/ulimit.3:27
67 #: build/C/man7/user_namespaces.7:27
68 #, no-wrap
69 msgid "Linux Programmer's Manual"
70 msgstr "Linux Programmer's Manual"
71
72 #. type: SH
73 #: build/C/man2/acct.2:32 build/C/man5/acct.5:26
74 #: build/C/man7/capabilities.7:49 build/C/man2/capget.2:16
75 #: build/C/man7/cpuset.7:26 build/C/man7/credentials.7:28
76 #: build/C/man2/getgid.2:26 build/C/man2/getgroups.2:32
77 #: build/C/man2/getpid.2:26 build/C/man2/getpriority.2:46
78 #: build/C/man2/getresuid.2:29 build/C/man2/getrlimit.2:65
79 #: build/C/man2/getrusage.2:40 build/C/man2/getsid.2:27
80 #: build/C/man2/getuid.2:27 build/C/man3/group_member.3:26
81 #: build/C/man2/iopl.2:34 build/C/man2/ioprio_set.2:25 build/C/man2/ipc.2:26
82 #: build/C/man7/namespaces.7:28 build/C/man7/pid_namespaces.7:28
83 #: build/C/man2/seteuid.2:30 build/C/man2/setfsgid.2:32
84 #: build/C/man2/setfsuid.2:32 build/C/man2/setgid.2:30
85 #: build/C/man2/setpgid.2:49 build/C/man2/setresuid.2:27
86 #: build/C/man2/setreuid.2:46 build/C/man2/setsid.2:32
87 #: build/C/man2/setuid.2:31 build/C/man7/svipc.7:41 build/C/man3/ulimit.3:28
88 #: build/C/man7/user_namespaces.7:28
89 #, no-wrap
90 msgid "NAME"
91 msgstr "名前"
92
93 #. type: Plain text
94 #: build/C/man2/acct.2:34
95 msgid "acct - switch process accounting on or off"
96 msgstr "acct - プロセス・アカウントのオンとオフを切り換える"
97
98 #. type: SH
99 #: build/C/man2/acct.2:34 build/C/man5/acct.5:28 build/C/man2/capget.2:18
100 #: build/C/man2/getgid.2:28 build/C/man2/getgroups.2:34
101 #: build/C/man2/getpid.2:28 build/C/man2/getpriority.2:48
102 #: build/C/man2/getresuid.2:31 build/C/man2/getrlimit.2:67
103 #: build/C/man2/getrusage.2:42 build/C/man2/getsid.2:29
104 #: build/C/man2/getuid.2:29 build/C/man3/group_member.3:28
105 #: build/C/man2/iopl.2:36 build/C/man2/ioprio_set.2:27 build/C/man2/ipc.2:28
106 #: build/C/man2/seteuid.2:32 build/C/man2/setfsgid.2:34
107 #: build/C/man2/setfsuid.2:34 build/C/man2/setgid.2:32
108 #: build/C/man2/setpgid.2:51 build/C/man2/setresuid.2:29
109 #: build/C/man2/setreuid.2:48 build/C/man2/setsid.2:34
110 #: build/C/man2/setuid.2:33 build/C/man7/svipc.7:43 build/C/man3/ulimit.3:30
111 #, no-wrap
112 msgid "SYNOPSIS"
113 msgstr "書式"
114
115 #. type: Plain text
116 #: build/C/man2/acct.2:38
117 #, no-wrap
118 msgid "B<#include E<lt>unistd.hE<gt>>\n"
119 msgstr "B<#include E<lt>unistd.hE<gt>>\n"
120
121 #. type: Plain text
122 #: build/C/man2/acct.2:40
123 #, no-wrap
124 msgid "B<int acct(const char *>I<filename>B<);>\n"
125 msgstr "B<int acct(const char *>I<filename>B<);>\n"
126
127 #. type: Plain text
128 #: build/C/man2/acct.2:46 build/C/man2/getgroups.2:48
129 #: build/C/man2/getrlimit.2:84 build/C/man2/getsid.2:37
130 #: build/C/man3/group_member.3:36 build/C/man2/seteuid.2:44
131 #: build/C/man2/setpgid.2:71 build/C/man2/setreuid.2:60
132 msgid ""
133 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
134 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7)  参照):"
135
136 #. type: Plain text
137 #: build/C/man2/acct.2:50
138 msgid ""
139 "B<acct>(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E<lt>\\ 500)"
140 msgstr ""
141 "B<acct>(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E<lt>\\ 500)"
142
143 #. type: SH
144 #: build/C/man2/acct.2:50 build/C/man5/acct.5:30
145 #: build/C/man7/capabilities.7:51 build/C/man2/capget.2:24
146 #: build/C/man7/cpuset.7:28 build/C/man7/credentials.7:30
147 #: build/C/man2/getgid.2:36 build/C/man2/getgroups.2:52
148 #: build/C/man2/getpid.2:36 build/C/man2/getpriority.2:56
149 #: build/C/man2/getresuid.2:39 build/C/man2/getrlimit.2:88
150 #: build/C/man2/getrusage.2:48 build/C/man2/getsid.2:50
151 #: build/C/man2/getuid.2:37 build/C/man3/group_member.3:40
152 #: build/C/man2/iopl.2:40 build/C/man2/ioprio_set.2:35 build/C/man2/ipc.2:34
153 #: build/C/man7/namespaces.7:30 build/C/man7/pid_namespaces.7:30
154 #: build/C/man2/seteuid.2:53 build/C/man2/setfsgid.2:38
155 #: build/C/man2/setfsuid.2:38 build/C/man2/setgid.2:38
156 #: build/C/man2/setpgid.2:100 build/C/man2/setresuid.2:37
157 #: build/C/man2/setreuid.2:70 build/C/man2/setsid.2:41
158 #: build/C/man2/setuid.2:39 build/C/man7/svipc.7:49 build/C/man3/ulimit.3:34
159 #: build/C/man7/user_namespaces.7:30
160 #, no-wrap
161 msgid "DESCRIPTION"
162 msgstr "説明"
163
164 #. type: Plain text
165 #: build/C/man2/acct.2:60
166 msgid ""
167 "The B<acct>()  system call enables or disables process accounting.  If "
168 "called with the name of an existing file as its argument, accounting is "
169 "turned on, and records for each terminating process are appended to "
170 "I<filename> as it terminates.  An argument of NULL causes accounting to be "
171 "turned off."
172 msgstr ""
173 "B<acct>()  システムコールは、プロセス・アカウントの有効・無効を切り替える。 "
174 "既存のファイルの名前を引き数に指定して呼び出されたら、 アカウント (account) "
175 "が有効になり、 終了したプロセスの記録が I<filename> に追記される。 NULL を引"
176 "き数として呼び出されたらアカウントをオフにする。"
177
178 #. type: SH
179 #: build/C/man2/acct.2:60 build/C/man2/capget.2:160
180 #: build/C/man2/getgroups.2:92 build/C/man2/getpriority.2:104
181 #: build/C/man2/getresuid.2:50 build/C/man2/getrlimit.2:461
182 #: build/C/man2/getrusage.2:188 build/C/man2/getsid.2:58
183 #: build/C/man3/group_member.3:48 build/C/man2/iopl.2:66
184 #: build/C/man2/ioprio_set.2:149 build/C/man2/seteuid.2:67
185 #: build/C/man2/setfsgid.2:68 build/C/man2/setfsuid.2:68
186 #: build/C/man2/setgid.2:53 build/C/man2/setpgid.2:195
187 #: build/C/man2/setresuid.2:64 build/C/man2/setreuid.2:93
188 #: build/C/man2/setsid.2:54 build/C/man2/setuid.2:70 build/C/man3/ulimit.3:67
189 #, no-wrap
190 msgid "RETURN VALUE"
191 msgstr "返り値"
192
193 #. type: Plain text
194 #: build/C/man2/acct.2:65 build/C/man2/capget.2:165
195 #: build/C/man2/getresuid.2:55 build/C/man2/getrusage.2:193
196 #: build/C/man2/iopl.2:71 build/C/man2/seteuid.2:72 build/C/man2/setgid.2:58
197 #: build/C/man2/setresuid.2:69 build/C/man2/setreuid.2:98
198 #: build/C/man2/setuid.2:75
199 msgid ""
200 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
201 "appropriately."
202 msgstr ""
203 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
204 "定される。"
205
206 #. type: SH
207 #: build/C/man2/acct.2:65 build/C/man2/capget.2:179 build/C/man7/cpuset.7:1100
208 #: build/C/man2/getgid.2:42 build/C/man2/getgroups.2:106
209 #: build/C/man2/getpid.2:44 build/C/man2/getpriority.2:117
210 #: build/C/man2/getresuid.2:55 build/C/man2/getrlimit.2:466
211 #: build/C/man2/getrusage.2:193 build/C/man2/getsid.2:63
212 #: build/C/man2/getuid.2:43 build/C/man2/iopl.2:71
213 #: build/C/man2/ioprio_set.2:169 build/C/man2/seteuid.2:79
214 #: build/C/man2/setgid.2:58 build/C/man2/setpgid.2:216
215 #: build/C/man2/setresuid.2:76 build/C/man2/setreuid.2:105
216 #: build/C/man2/setsid.2:61 build/C/man2/setuid.2:82 build/C/man3/ulimit.3:74
217 #, no-wrap
218 msgid "ERRORS"
219 msgstr "エラー"
220
221 #. type: TP
222 #: build/C/man2/acct.2:66 build/C/man7/cpuset.7:1116
223 #: build/C/man7/cpuset.7:1123 build/C/man7/cpuset.7:1129
224 #: build/C/man7/cpuset.7:1137 build/C/man7/cpuset.7:1144
225 #: build/C/man2/getpriority.2:137 build/C/man2/setpgid.2:217
226 #, no-wrap
227 msgid "B<EACCES>"
228 msgstr "B<EACCES>"
229
230 #. type: Plain text
231 #: build/C/man2/acct.2:77
232 msgid ""
233 "Write permission is denied for the specified file, or search permission is "
234 "denied for one of the directories in the path prefix of I<filename> (see "
235 "also B<path_resolution>(7)), or I<filename> is not a regular file."
236 msgstr ""
237 "指定したファイルへの書き込み許可がなく、書き込みが拒否された。 または "
238 "I<filename> のディレクトリ部分の何れかのディレクトリに検索許可がなく拒否され"
239 "た (B<path_resolution>(7)  も参照すること)。 または I<filename> が通常 "
240 "(regular) のファイルでない。"
241
242 #. type: TP
243 #: build/C/man2/acct.2:77 build/C/man2/capget.2:180 build/C/man7/cpuset.7:1172
244 #: build/C/man2/getgroups.2:107 build/C/man2/getresuid.2:56
245 #: build/C/man2/getrlimit.2:467 build/C/man2/getrusage.2:194
246 #, no-wrap
247 msgid "B<EFAULT>"
248 msgstr "B<EFAULT>"
249
250 #. type: Plain text
251 #: build/C/man2/acct.2:81
252 msgid "I<filename> points outside your accessible address space."
253 msgstr "アクセスできるアドレス空間の外を I<filename> が指している。"
254
255 #. type: TP
256 #: build/C/man2/acct.2:81 build/C/man7/cpuset.7:1238
257 #: build/C/man7/cpuset.7:1246
258 #, no-wrap
259 msgid "B<EIO>"
260 msgstr "B<EIO>"
261
262 #. type: Plain text
263 #: build/C/man2/acct.2:85
264 msgid "Error writing to the file I<filename>."
265 msgstr "I<filename> への書き込みにエラーが発生した。"
266
267 #. type: TP
268 #: build/C/man2/acct.2:85
269 #, no-wrap
270 msgid "B<EISDIR>"
271 msgstr "B<EISDIR>"
272
273 #. type: Plain text
274 #: build/C/man2/acct.2:89
275 msgid "I<filename> is a directory."
276 msgstr "I<filename> がディレクトリである。"
277
278 #. type: TP
279 #: build/C/man2/acct.2:89
280 #, no-wrap
281 msgid "B<ELOOP>"
282 msgstr "B<ELOOP>"
283
284 #. type: Plain text
285 #: build/C/man2/acct.2:93
286 msgid "Too many symbolic links were encountered in resolving I<filename>."
287 msgstr "I<filename> の実体にたどり着くまでのシンボリックリンクの数が多すぎる。"
288
289 #. type: TP
290 #: build/C/man2/acct.2:93 build/C/man7/cpuset.7:1251
291 #: build/C/man7/cpuset.7:1258 build/C/man7/cpuset.7:1263
292 #, no-wrap
293 msgid "B<ENAMETOOLONG>"
294 msgstr "B<ENAMETOOLONG>"
295
296 #. type: Plain text
297 #: build/C/man2/acct.2:97
298 msgid "I<filename> was too long."
299 msgstr "I<filename> が長すぎる。"
300
301 #. type: TP
302 #: build/C/man2/acct.2:97
303 #, no-wrap
304 msgid "B<ENFILE>"
305 msgstr "B<ENFILE>"
306
307 #. type: Plain text
308 #: build/C/man2/acct.2:100
309 msgid "The system limit on the total number of open files has been reached."
310 msgstr "オープンされたファイルの総数がシステム制限に達した。"
311
312 #. type: TP
313 #: build/C/man2/acct.2:100 build/C/man7/cpuset.7:1275
314 #: build/C/man7/cpuset.7:1280
315 #, no-wrap
316 msgid "B<ENOENT>"
317 msgstr "B<ENOENT>"
318
319 #. type: Plain text
320 #: build/C/man2/acct.2:103
321 msgid "The specified filename does not exist."
322 msgstr "指定されたファイルが存在しない。"
323
324 #. type: TP
325 #: build/C/man2/acct.2:103 build/C/man7/cpuset.7:1287
326 #: build/C/man2/getgroups.2:127
327 #, no-wrap
328 msgid "B<ENOMEM>"
329 msgstr "B<ENOMEM>"
330
331 #. type: Plain text
332 #: build/C/man2/acct.2:106 build/C/man2/getgroups.2:130
333 msgid "Out of memory."
334 msgstr "メモリ不足。"
335
336 #. type: TP
337 #: build/C/man2/acct.2:106 build/C/man2/iopl.2:76
338 #, no-wrap
339 msgid "B<ENOSYS>"
340 msgstr "B<ENOSYS>"
341
342 #. type: Plain text
343 #: build/C/man2/acct.2:112
344 msgid ""
345 "BSD process accounting has not been enabled when the operating system kernel "
346 "was compiled.  The kernel configuration parameter controlling this feature "
347 "is B<CONFIG_BSD_PROCESS_ACCT>."
348 msgstr ""
349 "カーネルをコンパイルした時に BSD プロセス・アカウントが有効になっていない。 "
350 "この機能はカーネルのコンフィグの B<CONFIG_BSD_PROCESS_ACCT> パラメータによっ"
351 "て制御される。"
352
353 #. type: TP
354 #: build/C/man2/acct.2:112 build/C/man7/cpuset.7:1314
355 #, no-wrap
356 msgid "B<ENOTDIR>"
357 msgstr "B<ENOTDIR>"
358
359 #. type: Plain text
360 #: build/C/man2/acct.2:117
361 msgid ""
362 "A component used as a directory in I<filename> is not in fact a directory."
363 msgstr ""
364 "I<filename> の中でディレクトリして扱われている要素が、 実際はディレクトリでな"
365 "い。"
366
367 #. type: TP
368 #: build/C/man2/acct.2:117 build/C/man2/capget.2:191 build/C/man2/capget.2:196
369 #: build/C/man7/cpuset.7:1319 build/C/man2/getgroups.2:130
370 #: build/C/man2/getpriority.2:149 build/C/man2/getrlimit.2:483
371 #: build/C/man2/getsid.2:64 build/C/man2/iopl.2:79
372 #: build/C/man2/ioprio_set.2:179 build/C/man2/seteuid.2:83
373 #: build/C/man2/setgid.2:64 build/C/man2/setpgid.2:231
374 #: build/C/man2/setresuid.2:103 build/C/man2/setreuid.2:132
375 #: build/C/man2/setsid.2:62 build/C/man2/setuid.2:110 build/C/man3/ulimit.3:75
376 #, no-wrap
377 msgid "B<EPERM>"
378 msgstr "B<EPERM>"
379
380 #. type: Plain text
381 #: build/C/man2/acct.2:123
382 msgid ""
383 "The calling process has insufficient privilege to enable process "
384 "accounting.  On Linux the B<CAP_SYS_PACCT> capability is required."
385 msgstr ""
386 "呼び出したプロセスにはプロセス・アカウントを有効にするのに十分な特権がない。 "
387 "Linux では B<CAP_SYS_PACCT> ケーパビリティ (capability) が必要である。"
388
389 #. type: TP
390 #: build/C/man2/acct.2:123
391 #, no-wrap
392 msgid "B<EROFS>"
393 msgstr "B<EROFS>"
394
395 #. type: Plain text
396 #: build/C/man2/acct.2:127
397 msgid "I<filename> refers to a file on a read-only filesystem."
398 msgstr ""
399 "読み込みだけのファイルシステム上のファイルを I<filename> が参照している。"
400
401 #. type: TP
402 #: build/C/man2/acct.2:127
403 #, no-wrap
404 msgid "B<EUSERS>"
405 msgstr "B<EUSERS>"
406
407 #. type: Plain text
408 #: build/C/man2/acct.2:130
409 msgid "There are no more free file structures or we ran out of memory."
410 msgstr "使用可能なファイル構造体がないか、メモリが足りない。"
411
412 #. type: SH
413 #: build/C/man2/acct.2:130 build/C/man5/acct.5:153
414 #: build/C/man7/capabilities.7:1120 build/C/man2/capget.2:218
415 #: build/C/man7/credentials.7:287 build/C/man2/getgid.2:44
416 #: build/C/man2/getgroups.2:133 build/C/man2/getpid.2:46
417 #: build/C/man2/getpriority.2:157 build/C/man2/getresuid.2:67
418 #: build/C/man2/getrlimit.2:504 build/C/man2/getrusage.2:202
419 #: build/C/man2/getsid.2:79 build/C/man2/getuid.2:45
420 #: build/C/man3/group_member.3:55 build/C/man2/iopl.2:87
421 #: build/C/man2/ioprio_set.2:196 build/C/man2/ipc.2:45
422 #: build/C/man7/namespaces.7:359 build/C/man7/pid_namespaces.7:341
423 #: build/C/man2/seteuid.2:99 build/C/man2/setfsgid.2:75
424 #: build/C/man2/setfsuid.2:75 build/C/man2/setgid.2:71
425 #: build/C/man2/setpgid.2:250 build/C/man2/setresuid.2:109
426 #: build/C/man2/setreuid.2:148 build/C/man2/setsid.2:68
427 #: build/C/man2/setuid.2:117 build/C/man3/ulimit.3:78
428 #: build/C/man7/user_namespaces.7:645
429 #, no-wrap
430 msgid "CONFORMING TO"
431 msgstr "準拠"
432
433 #.  SVr4 documents an EBUSY error condition, but no EISDIR or ENOSYS.
434 #.  Also AIX and HP-UX document EBUSY (attempt is made
435 #.  to enable accounting when it is already enabled), as does Solaris
436 #.  (attempt is made to enable accounting using the same file that is
437 #.  currently being used).
438 #. type: Plain text
439 #: build/C/man2/acct.2:137
440 msgid "SVr4, 4.3BSD (but not POSIX)."
441 msgstr "SVr4, 4.3BSD (POSIX ではない)。"
442
443 #. type: SH
444 #: build/C/man2/acct.2:137 build/C/man5/acct.5:157
445 #: build/C/man7/capabilities.7:1126 build/C/man2/capget.2:220
446 #: build/C/man7/cpuset.7:1341 build/C/man7/credentials.7:293
447 #: build/C/man2/getgid.2:46 build/C/man2/getgroups.2:141
448 #: build/C/man2/getpid.2:48 build/C/man2/getpriority.2:160
449 #: build/C/man2/getresuid.2:70 build/C/man2/getrlimit.2:527
450 #: build/C/man2/getrusage.2:213 build/C/man2/getsid.2:81
451 #: build/C/man2/getuid.2:47 build/C/man2/iopl.2:91
452 #: build/C/man2/ioprio_set.2:198 build/C/man2/ipc.2:49
453 #: build/C/man2/seteuid.2:101 build/C/man2/setfsgid.2:79
454 #: build/C/man2/setfsuid.2:79 build/C/man2/setgid.2:73
455 #: build/C/man2/setpgid.2:272 build/C/man2/setresuid.2:112
456 #: build/C/man2/setreuid.2:154 build/C/man2/setsid.2:70
457 #: build/C/man2/setuid.2:122 build/C/man7/user_namespaces.7:648
458 #, no-wrap
459 msgid "NOTES"
460 msgstr "注意"
461
462 #. type: Plain text
463 #: build/C/man2/acct.2:140
464 msgid ""
465 "No accounting is produced for programs running when a system crash occurs.  "
466 "In particular, nonterminating processes are never accounted for."
467 msgstr ""
468 "システムがクラッシュした時に実行中だったプログラムのアカウントは生成されな"
469 "い。 特に、終了しないプログラムがアカウントされることはない。"
470
471 #. type: Plain text
472 #: build/C/man2/acct.2:143
473 msgid ""
474 "The structure of the records written to the accounting file is described in "
475 "B<acct>(5)."
476 msgstr ""
477 "アカウント用ファイルに書き込まれるレコードの構造体については B<acct>(5)  に説"
478 "明がある。"
479
480 #. type: SH
481 #: build/C/man2/acct.2:143 build/C/man5/acct.5:174
482 #: build/C/man7/capabilities.7:1183 build/C/man2/capget.2:228
483 #: build/C/man7/cpuset.7:1488 build/C/man7/credentials.7:304
484 #: build/C/man2/getgid.2:62 build/C/man2/getgroups.2:178
485 #: build/C/man2/getpid.2:100 build/C/man2/getpriority.2:232
486 #: build/C/man2/getresuid.2:86 build/C/man2/getrlimit.2:759
487 #: build/C/man2/getrusage.2:253 build/C/man2/getsid.2:84
488 #: build/C/man2/getuid.2:73 build/C/man3/group_member.3:57
489 #: build/C/man2/iopl.2:100 build/C/man2/ioprio_set.2:346 build/C/man2/ipc.2:57
490 #: build/C/man7/namespaces.7:364 build/C/man7/pid_namespaces.7:346
491 #: build/C/man2/seteuid.2:141 build/C/man2/setfsgid.2:123
492 #: build/C/man2/setfsuid.2:131 build/C/man2/setgid.2:83
493 #: build/C/man2/setpgid.2:340 build/C/man2/setresuid.2:132
494 #: build/C/man2/setreuid.2:194 build/C/man2/setsid.2:93
495 #: build/C/man2/setuid.2:145 build/C/man7/svipc.7:335 build/C/man3/ulimit.3:83
496 #: build/C/man7/user_namespaces.7:1011
497 #, no-wrap
498 msgid "SEE ALSO"
499 msgstr "関連項目"
500
501 #. type: Plain text
502 #: build/C/man2/acct.2:145
503 msgid "B<acct>(5)"
504 msgstr "B<acct>(5)"
505
506 #. type: SH
507 #: build/C/man2/acct.2:145 build/C/man5/acct.5:179
508 #: build/C/man7/capabilities.7:1205 build/C/man2/capget.2:232
509 #: build/C/man7/cpuset.7:1506 build/C/man7/credentials.7:340
510 #: build/C/man2/getgid.2:67 build/C/man2/getgroups.2:186
511 #: build/C/man2/getpid.2:111 build/C/man2/getpriority.2:241
512 #: build/C/man2/getresuid.2:92 build/C/man2/getrlimit.2:777
513 #: build/C/man2/getrusage.2:260 build/C/man2/getsid.2:88
514 #: build/C/man2/getuid.2:78 build/C/man3/group_member.3:62
515 #: build/C/man2/iopl.2:104 build/C/man2/ioprio_set.2:354 build/C/man2/ipc.2:70
516 #: build/C/man7/namespaces.7:377 build/C/man7/pid_namespaces.7:355
517 #: build/C/man2/seteuid.2:149 build/C/man2/setfsgid.2:128
518 #: build/C/man2/setfsuid.2:136 build/C/man2/setgid.2:90
519 #: build/C/man2/setpgid.2:347 build/C/man2/setresuid.2:142
520 #: build/C/man2/setreuid.2:203 build/C/man2/setsid.2:100
521 #: build/C/man2/setuid.2:153 build/C/man7/svipc.7:353 build/C/man3/ulimit.3:88
522 #: build/C/man7/user_namespaces.7:1027
523 #, no-wrap
524 msgid "COLOPHON"
525 msgstr "この文書について"
526
527 #. type: Plain text
528 #: build/C/man2/acct.2:153 build/C/man5/acct.5:187
529 #: build/C/man7/capabilities.7:1213 build/C/man2/capget.2:240
530 #: build/C/man7/cpuset.7:1514 build/C/man7/credentials.7:348
531 #: build/C/man2/getgid.2:75 build/C/man2/getgroups.2:194
532 #: build/C/man2/getpid.2:119 build/C/man2/getpriority.2:249
533 #: build/C/man2/getresuid.2:100 build/C/man2/getrlimit.2:785
534 #: build/C/man2/getrusage.2:268 build/C/man2/getsid.2:96
535 #: build/C/man2/getuid.2:86 build/C/man3/group_member.3:70
536 #: build/C/man2/iopl.2:112 build/C/man2/ioprio_set.2:362 build/C/man2/ipc.2:78
537 #: build/C/man7/namespaces.7:385 build/C/man7/pid_namespaces.7:363
538 #: build/C/man2/seteuid.2:157 build/C/man2/setfsgid.2:136
539 #: build/C/man2/setfsuid.2:144 build/C/man2/setgid.2:98
540 #: build/C/man2/setpgid.2:355 build/C/man2/setresuid.2:150
541 #: build/C/man2/setreuid.2:211 build/C/man2/setsid.2:108
542 #: build/C/man2/setuid.2:161 build/C/man7/svipc.7:361 build/C/man3/ulimit.3:96
543 #: build/C/man7/user_namespaces.7:1035
544 msgid ""
545 "This page is part of release 3.76 of the Linux I<man-pages> project.  A "
546 "description of the project, information about reporting bugs, and the latest "
547 "version of this page, can be found at \\%http://www.kernel.org/doc/man-"
548 "pages/."
549 msgstr ""
550 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.76 の一部\n"
551 "である。プロジェクトの説明とバグ報告に関する情報は\n"
552 "http://www.kernel.org/doc/man-pages/ に書かれている。"
553
554 #. type: TH
555 #: build/C/man5/acct.5:25
556 #, no-wrap
557 msgid "2008-06-15"
558 msgstr "2008-06-15"
559
560 #. type: Plain text
561 #: build/C/man5/acct.5:28
562 msgid "acct - process accounting file"
563 msgstr "acct - プロセス・アカウンティング・ファイル"
564
565 #. type: Plain text
566 #: build/C/man5/acct.5:30
567 msgid "B<#include E<lt>sys/acct.hE<gt>>"
568 msgstr "B<#include E<lt>sys/acct.hE<gt>>"
569
570 #. type: Plain text
571 #: build/C/man5/acct.5:36
572 msgid ""
573 "If the kernel is built with the process accounting option enabled "
574 "(B<CONFIG_BSD_PROCESS_ACCT>), then calling B<acct>(2)  starts process "
575 "accounting, for example:"
576 msgstr ""
577 "カーネルがプロセス・アカウンティングのオプション "
578 "(B<CONFIG_BSD_PROCESS_ACCT>)  を有効にして作成されていると、以下のように "
579 "B<acct>(2)  を呼び出すとプロセス・アカウンティングが開始される。"
580
581 #. type: Plain text
582 #: build/C/man5/acct.5:39
583 msgid "acct(\"/var/log/pacct\");"
584 msgstr "acct(\"/var/log/pacct\");"
585
586 #. type: Plain text
587 #: build/C/man5/acct.5:47
588 msgid ""
589 "When process accounting is enabled, the kernel writes a record to the "
590 "accounting file as each process on the system terminates.  This record "
591 "contains information about the terminated process, and is defined in "
592 "I<E<lt>sys/acct.hE<gt>> as follows:"
593 msgstr ""
594 "プロセス・アカウンティングが有効になっていると、カーネルは システム上の各プロ"
595 "セスが終了するたびにアカウンティングファイルに レコードを書き込む。 このレ"
596 "コードは、終了したプロセスに関する情報を保持するもので、 I<E<lt>sys/acct."
597 "hE<gt>> で以下のように定義されている。"
598
599 #. type: Plain text
600 #: build/C/man5/acct.5:51
601 #, no-wrap
602 msgid "#define ACCT_COMM 16\n"
603 msgstr "#define ACCT_COMM 16\n"
604
605 #. type: Plain text
606 #: build/C/man5/acct.5:53
607 #, no-wrap
608 msgid "typedef u_int16_t comp_t;\n"
609 msgstr "typedef u_int16_t comp_t;\n"
610
611 #. type: Plain text
612 #: build/C/man5/acct.5:77
613 #, no-wrap
614 msgid ""
615 "struct acct {\n"
616 "    char ac_flag;           /* Accounting flags */\n"
617 "    u_int16_t ac_uid;       /* Accounting user ID */\n"
618 "    u_int16_t ac_gid;       /* Accounting group ID */\n"
619 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
620 "    u_int32_t ac_btime;     /* Process creation time\n"
621 "                               (seconds since the Epoch) */\n"
622 "    comp_t    ac_utime;     /* User CPU time */\n"
623 "    comp_t    ac_stime;     /* System CPU time */\n"
624 "    comp_t    ac_etime;     /* Elapsed time */\n"
625 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
626 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
627 "    comp_t    ac_rw;        /* Blocks read or written (unused) */\n"
628 "    comp_t    ac_minflt;    /* Minor page faults */\n"
629 "    comp_t    ac_majflt;    /* Major page faults */\n"
630 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
631 "    u_int32_t ac_exitcode;  /* Process termination status\n"
632 "                               (see wait(2)) */\n"
633 "    char      ac_comm[ACCT_COMM+1];\n"
634 "                            /* Command name (basename of last\n"
635 "                               executed command; null-terminated) */\n"
636 "    char      ac_pad[I<X>];    /* padding bytes */\n"
637 "};\n"
638 msgstr ""
639 "struct acct {\n"
640 "    char ac_flag;           /* Accounting flags */\n"
641 "    u_int16_t ac_uid;       /* Accounting user ID */\n"
642 "    u_int16_t ac_gid;       /* Accounting group ID */\n"
643 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
644 "    u_int32_t ac_btime;     /* Process creation time\n"
645 "                               (seconds since the Epoch) */\n"
646 "    comp_t    ac_utime;     /* User CPU time */\n"
647 "    comp_t    ac_stime;     /* System CPU time */\n"
648 "    comp_t    ac_etime;     /* Elapsed time */\n"
649 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
650 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
651 "    comp_t    ac_rw;        /* Blocks read or written (unused) */\n"
652 "    comp_t    ac_minflt;    /* Minor page faults */\n"
653 "    comp_t    ac_majflt;    /* Major page faults */\n"
654 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
655 "    u_int32_t ac_exitcode;  /* Process termination status\n"
656 "                               (see wait(2)) */\n"
657 "    char      ac_comm[ACCT_COMM+1];\n"
658 "                            /* Command name (basename of last\n"
659 "                               executed command; null-terminated) */\n"
660 "    char      ac_pad[I<X>];    /* padding bytes */\n"
661 "};\n"
662
663 #. type: Plain text
664 #: build/C/man5/acct.5:84
665 #, no-wrap
666 msgid ""
667 "enum {          /* Bits that may be set in ac_flag field */\n"
668 "    AFORK = 0x01,           /* Has executed fork, but no exec */\n"
669 "    ASU   = 0x02,           /* Used superuser privileges */\n"
670 "    ACORE = 0x08,           /* Dumped core */\n"
671 "    AXSIG = 0x10            /* Killed by a signal */\n"
672 "};\n"
673 msgstr ""
674 "enum {          /* Bits that may be set in ac_flag field */\n"
675 "    AFORK = 0x01,           /* Has executed fork, but no exec */\n"
676 "    ASU   = 0x02,           /* Used superuser privileges */\n"
677 "    ACORE = 0x08,           /* Dumped core */\n"
678 "    AXSIG = 0x10            /* Killed by a signal */\n"
679 "};\n"
680
681 #. type: Plain text
682 #: build/C/man5/acct.5:94
683 msgid ""
684 "The I<comp_t> data type is a floating-point value consisting of a 3-bit, "
685 "base-8 exponent, and a 13-bit mantissa.  A value, I<c>, of this type can be "
686 "converted to a (long) integer as follows:"
687 msgstr ""
688 "データ型 I<comp_t> は浮動小数点値で、3 ビット幅の基数が 8 の指数部と 13 ビッ"
689 "ト幅の仮数部から 構成される。 I<comp_t> 型の値 I<c> は以下のようにして (long "
690 "型の) 整数に変換できる。"
691
692 #. type: Plain text
693 #: build/C/man5/acct.5:97
694 #, no-wrap
695 msgid "    v = (c & 0x1fff) E<lt>E<lt> (((c E<gt>E<gt> 13) & 0x7) * 3);\n"
696 msgstr "    v = (c & 0x1fff) E<lt>E<lt> (((c E<gt>E<gt> 13) & 0x7) * 3);\n"
697
698 #. type: Plain text
699 #: build/C/man5/acct.5:107
700 msgid ""
701 "The I<ac_utime>, I<ac_stime>, and I<ac_etime> fields measure time in \"clock "
702 "ticks\"; divide these values by I<sysconf(_SC_CLK_TCK)> to convert them to "
703 "seconds."
704 msgstr ""
705 "フィールド I<ac_utime>, I<ac_stime>, I<ac_etime> は \"clock ticks\" 単位で計"
706 "測した時間である。 これらの値を I<sysconf(_SC_CLK_TCK)> で割ると、秒に変換で"
707 "きる。"
708
709 #. type: SS
710 #: build/C/man5/acct.5:107
711 #, no-wrap
712 msgid "Version 3 accounting file format"
713 msgstr "バージョン 3 のアカウンティングファイルのフォーマット"
714
715 #. type: Plain text
716 #: build/C/man5/acct.5:122
717 msgid ""
718 "Since kernel 2.6.8, an optional alternative version of the accounting file "
719 "can be produced if the B<CONFIG_BSD_PROCESS_ACCT_V3> option is set when "
720 "building the kernel.  With this option is set, the records written to the "
721 "accounting file contain additional fields, and the width of I<c_uid> and "
722 "I<ac_gid> fields is widened from 16 to 32 bits (in line with the increased "
723 "size of UID and GIDs in Linux 2.4 and later).  The records are defined as "
724 "follows:"
725 msgstr ""
726 "カーネル 2.6.8 以降では、 別のバージョンのアカウンティングファイルを生成する"
727 "ことができ、 これを使うにはカーネル構築時に B<CONFIG_BSD_PROCESS_ACCT_V3> オ"
728 "プションが有効になっている必要がある。 このオプションが設定されると、アカウン"
729 "ティングファイルに書き込まれる レコードにフィールドが追加される。 また、"
730 "フィールド I<c_uid> と I<ac_gid> の幅が 16 ビットから 32 ビットに拡張される "
731 "(これは Linux 2.4 以降で UID と GID のサイズが増えているのに 対応したものであ"
732 "る)。 このレコードは以下のように定義されている。"
733
734 #. type: Plain text
735 #: build/C/man5/acct.5:147
736 #, no-wrap
737 msgid ""
738 "struct acct_v3 {\n"
739 "    char      ac_flag;      /* Flags */\n"
740 "    char      ac_version;   /* Always set to ACCT_VERSION (3) */\n"
741 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
742 "    u_int32_t ac_exitcode;  /* Process termination status */\n"
743 "    u_int32_t ac_uid;       /* Real user ID */\n"
744 "    u_int32_t ac_gid;       /* Real group ID */\n"
745 "    u_int32_t ac_pid;       /* Process ID */\n"
746 "    u_int32_t ac_ppid;      /* Parent process ID */\n"
747 "    u_int32_t ac_btime;     /* Process creation time */\n"
748 "    float     ac_etime;     /* Elapsed time */\n"
749 "    comp_t    ac_utime;     /* User CPU time */\n"
750 "    comp_t    ac_stime;     /* System time */\n"
751 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
752 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
753 "    comp_t    ac_rw;        /* Blocks read or written\n"
754 "                               (unused) */\n"
755 "    comp_t    ac_minflt;    /* Minor page faults */\n"
756 "    comp_t    ac_majflt;    /* Major page faults */\n"
757 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
758 "    char      ac_comm[ACCT_COMM]; /* Command name */\n"
759 "};\n"
760 msgstr ""
761 "struct acct_v3 {\n"
762 "    char      ac_flag;      /* Flags */\n"
763 "    char      ac_version;   /* Always set to ACCT_VERSION (3) */\n"
764 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
765 "    u_int32_t ac_exitcode;  /* Process termination status */\n"
766 "    u_int32_t ac_uid;       /* Real user ID */\n"
767 "    u_int32_t ac_gid;       /* Real group ID */\n"
768 "    u_int32_t ac_pid;       /* Process ID */\n"
769 "    u_int32_t ac_ppid;      /* Parent process ID */\n"
770 "    u_int32_t ac_btime;     /* Process creation time */\n"
771 "    float     ac_etime;     /* Elapsed time */\n"
772 "    comp_t    ac_utime;     /* User CPU time */\n"
773 "    comp_t    ac_stime;     /* System time */\n"
774 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
775 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
776 "    comp_t    ac_rw;        /* Blocks read or written\n"
777 "                               (unused) */\n"
778 "    comp_t    ac_minflt;    /* Minor page faults */\n"
779 "    comp_t    ac_majflt;    /* Major page faults */\n"
780 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
781 "    char      ac_comm[ACCT_COMM]; /* Command name */\n"
782 "};\n"
783
784 #. type: SH
785 #: build/C/man5/acct.5:149 build/C/man7/cpuset.7:1338
786 #: build/C/man2/getresuid.2:60 build/C/man2/getrlimit.2:499
787 #: build/C/man2/getsid.2:75 build/C/man2/ioprio_set.2:193
788 #: build/C/man2/setfsgid.2:71 build/C/man2/setfsuid.2:71
789 #: build/C/man2/setresuid.2:107
790 #, no-wrap
791 msgid "VERSIONS"
792 msgstr "バージョン"
793
794 #. type: Plain text
795 #: build/C/man5/acct.5:153
796 msgid "The I<acct_v3> structure is defined in glibc since version 2.6."
797 msgstr "I<acct_v3> 構造体はバージョン 2.6 以降の glibc で定義されている。"
798
799 #. type: Plain text
800 #: build/C/man5/acct.5:157
801 msgid ""
802 "Process accounting originated on BSD.  Although it is present on most "
803 "systems, it is not standardized, and the details vary somewhat between "
804 "systems."
805 msgstr ""
806 "プロセスアカウンティングは BSD 由来である。 この機能はほとんどのシステムに存"
807 "在するが、標準化されておらず、 その詳細はシステムによりいくらか異なる。"
808
809 #. type: Plain text
810 #: build/C/man5/acct.5:160
811 msgid ""
812 "Records in the accounting file are ordered by termination time of the "
813 "process."
814 msgstr "アカウンティングファイルのレコードは、プロセスの終了時刻の順序となる。"
815
816 #. type: Plain text
817 #: build/C/man5/acct.5:167
818 msgid ""
819 "In kernels up to and including 2.6.9, a separate accounting record is "
820 "written for each thread created using the NPTL threading library; since "
821 "Linux 2.6.10, a single accounting record is written for the entire process "
822 "on termination of the last thread in the process."
823 msgstr ""
824 "バージョン 2.6.9 以前のカーネルでは、 NPTL スレッドライブラリを使って作成され"
825 "たスレッドでは スレッド毎に別々のアカウンティングレコードが書き込まれてい"
826 "た。 Linux 2.6.10 以降では、プロセス内の最後のスレッドが終了すると、 プロセス"
827 "全体についてのアカウンティングレコードが一つだけ書き込まれる。"
828
829 #. type: Plain text
830 #: build/C/man5/acct.5:174
831 msgid ""
832 "The I<proc/sys/kernel/acct> file, described in B<proc>(5), defines settings "
833 "that control the behavior of process accounting when disk space runs low."
834 msgstr ""
835 "I<proc/sys/kernel/acct> ファイル (B<proc>(5)  で説明されている) は、ディスク"
836 "容量の残りが少なくなった際の プロセス・アカウンティングの動作を制御する設定を"
837 "保持している。"
838
839 #. type: Plain text
840 #: build/C/man5/acct.5:179
841 msgid "B<lastcomm>(1), B<acct>(2), B<accton>(8), B<sa>(8)"
842 msgstr "B<lastcomm>(1), B<acct>(2), B<accton>(8), B<sa>(8)"
843
844 #. type: TH
845 #: build/C/man7/capabilities.7:48
846 #, no-wrap
847 msgid "CAPABILITIES"
848 msgstr "CAPABILITIES"
849
850 #. type: TH
851 #: build/C/man7/capabilities.7:48 build/C/man2/getpid.2:25
852 #: build/C/man7/namespaces.7:27 build/C/man7/pid_namespaces.7:27
853 #: build/C/man2/seteuid.2:29 build/C/man2/setgid.2:29
854 #: build/C/man2/setresuid.2:26 build/C/man2/setreuid.2:45
855 #: build/C/man2/setuid.2:30 build/C/man7/svipc.7:40
856 #: build/C/man7/user_namespaces.7:27
857 #, no-wrap
858 msgid "2014-09-21"
859 msgstr "2014-09-21"
860
861 #. type: Plain text
862 #: build/C/man7/capabilities.7:51
863 msgid "capabilities - overview of Linux capabilities"
864 msgstr "capabilities - Linux のケーパビリティ (capability) の概要"
865
866 #. type: Plain text
867 #: build/C/man7/capabilities.7:63
868 msgid ""
869 "For the purpose of performing permission checks, traditional UNIX "
870 "implementations distinguish two categories of processes: I<privileged> "
871 "processes (whose effective user ID is 0, referred to as superuser or root), "
872 "and I<unprivileged> processes (whose effective UID is nonzero).  Privileged "
873 "processes bypass all kernel permission checks, while unprivileged processes "
874 "are subject to full permission checking based on the process's credentials "
875 "(usually: effective UID, effective GID, and supplementary group list)."
876 msgstr ""
877 "権限のチェックを行う観点から見ると、伝統的な UNIX の実装では プロセスは二つの"
878 "カテゴリに分類できる: I<特権> プロセス (実効ユーザID が 0 のプロセス。ユーザ"
879 "ID 0 は スーパーユーザや root と呼ばれる) と I<非特権> プロセス (実効ユーザ"
880 "ID が 0 以外のプロセス) である。 非特権プロセスでは、プロセスの資格情報 (通常"
881 "は、実効UID 、実効GID と追加のグループリスト) に基づく権限チェックが行われる"
882 "のに対し、 特権プロセスでは全てのカーネルの権限チェックがバイパスされる。"
883
884 #. type: Plain text
885 #: build/C/man7/capabilities.7:70
886 msgid ""
887 "Starting with kernel 2.2, Linux divides the privileges traditionally "
888 "associated with superuser into distinct units, known as I<capabilities>, "
889 "which can be independently enabled and disabled.  Capabilities are a per-"
890 "thread attribute."
891 msgstr ""
892 "バージョン 2.2 以降の Linux では、 これまでスーパーユーザに結び付けられてきた"
893 "権限を、 いくつかのグループに分割している。これらのグループは I<ケーパビリ"
894 "ティ>(capability)  と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケー"
895 "パビリティはスレッド単位の属性である。"
896
897 #. type: SS
898 #: build/C/man7/capabilities.7:70
899 #, no-wrap
900 msgid "Capabilities list"
901 msgstr "ケーパビリティのリスト"
902
903 #. type: Plain text
904 #: build/C/man7/capabilities.7:73
905 msgid ""
906 "The following list shows the capabilities implemented on Linux, and the "
907 "operations or behaviors that each capability permits:"
908 msgstr ""
909 "以下のリストは、 Linux で実装されているケーパビリティと 各ケーパビリティが許"
910 "可する操作と動作をまとめたものである。"
911
912 #. type: TP
913 #: build/C/man7/capabilities.7:73
914 #, no-wrap
915 msgid "B<CAP_AUDIT_CONTROL> (since Linux 2.6.11)"
916 msgstr "B<CAP_AUDIT_CONTROL> (Linux 2.6.11 以降)"
917
918 #. type: Plain text
919 #: build/C/man7/capabilities.7:77
920 msgid ""
921 "Enable and disable kernel auditing; change auditing filter rules; retrieve "
922 "auditing status and filtering rules."
923 msgstr ""
924 "カーネル監査 (audit) の有効無効の切り替え、 監査のフィルタルールの変更、 監査"
925 "の状況やフィルタルールの取得ができる。"
926
927 #. type: TP
928 #: build/C/man7/capabilities.7:77
929 #, no-wrap
930 msgid "B<CAP_AUDIT_READ> (since Linux 3.16)"
931 msgstr "B<CAP_AUDIT_READ> (Linux 3.16 以降)"
932
933 #.  commit a29b694aa1739f9d76538e34ae25524f9c549d59
934 #.  commit 3a101b8de0d39403b2c7e5c23fd0b005668acf48
935 #. type: Plain text
936 #: build/C/man7/capabilities.7:82
937 msgid "Allow reading the audit log via a multicast netlink socket."
938 msgstr ""
939
940 #. type: TP
941 #: build/C/man7/capabilities.7:82
942 #, no-wrap
943 msgid "B<CAP_AUDIT_WRITE> (since Linux 2.6.11)"
944 msgstr "B<CAP_AUDIT_WRITE> (Linux 2.6.11 以降)"
945
946 #. type: Plain text
947 #: build/C/man7/capabilities.7:85
948 msgid "Write records to kernel auditing log."
949 msgstr "カーネル監査のログにレコードを書き込む。"
950
951 #. type: TP
952 #: build/C/man7/capabilities.7:85
953 #, no-wrap
954 msgid "B<CAP_BLOCK_SUSPEND> (since Linux 3.5)"
955 msgstr "B<CAP_BLOCK_SUSPEND> (Linux 3.5 以降)"
956
957 #. type: Plain text
958 #: build/C/man7/capabilities.7:91
959 msgid ""
960 "Employ features that can block system suspend (B<epoll>(7)  B<EPOLLWAKEUP>, "
961 "I</proc/sys/wake_lock>)."
962 msgstr ""
963 "システムのサスペンドをブロックできる機能を使用する (B<epoll>(7)  "
964 "B<EPOLLWAKEUP>, I</proc/sys/wake_lock>)。"
965
966 #. type: TP
967 #: build/C/man7/capabilities.7:91
968 #, no-wrap
969 msgid "B<CAP_CHOWN>"
970 msgstr "B<CAP_CHOWN>"
971
972 #. type: Plain text
973 #: build/C/man7/capabilities.7:95
974 msgid "Make arbitrary changes to file UIDs and GIDs (see B<chown>(2))."
975 msgstr "ファイルの UID とGID を任意に変更する (B<chown>(2)  参照)。"
976
977 #. type: TP
978 #: build/C/man7/capabilities.7:95
979 #, no-wrap
980 msgid "B<CAP_DAC_OVERRIDE>"
981 msgstr "B<CAP_DAC_OVERRIDE>"
982
983 #. type: Plain text
984 #: build/C/man7/capabilities.7:99
985 msgid ""
986 "Bypass file read, write, and execute permission checks.  (DAC is an "
987 "abbreviation of \"discretionary access control\".)"
988 msgstr ""
989 "ファイルの読み出し、書き込み、実行の権限チェックをバイパスする (DAC は "
990 "\"discretionary access control (任意のアクセス制御)\" の略である)。"
991
992 #. type: TP
993 #: build/C/man7/capabilities.7:99
994 #, no-wrap
995 msgid "B<CAP_DAC_READ_SEARCH>"
996 msgstr "B<CAP_DAC_READ_SEARCH>"
997
998 #. type: IP
999 #: build/C/man7/capabilities.7:103 build/C/man7/capabilities.7:106
1000 #: build/C/man7/capabilities.7:116 build/C/man7/capabilities.7:126
1001 #: build/C/man7/capabilities.7:130 build/C/man7/capabilities.7:132
1002 #: build/C/man7/capabilities.7:134 build/C/man7/capabilities.7:204
1003 #: build/C/man7/capabilities.7:206 build/C/man7/capabilities.7:208
1004 #: build/C/man7/capabilities.7:210 build/C/man7/capabilities.7:212
1005 #: build/C/man7/capabilities.7:214 build/C/man7/capabilities.7:216
1006 #: build/C/man7/capabilities.7:218 build/C/man7/capabilities.7:220
1007 #: build/C/man7/capabilities.7:244 build/C/man7/capabilities.7:246
1008 #: build/C/man7/capabilities.7:296 build/C/man7/capabilities.7:306
1009 #: build/C/man7/capabilities.7:312 build/C/man7/capabilities.7:317
1010 #: build/C/man7/capabilities.7:323 build/C/man7/capabilities.7:327
1011 #: build/C/man7/capabilities.7:334 build/C/man7/capabilities.7:337
1012 #: build/C/man7/capabilities.7:345 build/C/man7/capabilities.7:347
1013 #: build/C/man7/capabilities.7:356 build/C/man7/capabilities.7:365
1014 #: build/C/man7/capabilities.7:368 build/C/man7/capabilities.7:372
1015 #: build/C/man7/capabilities.7:380 build/C/man7/capabilities.7:383
1016 #: build/C/man7/capabilities.7:390 build/C/man7/capabilities.7:395
1017 #: build/C/man7/capabilities.7:401 build/C/man7/capabilities.7:405
1018 #: build/C/man7/capabilities.7:409 build/C/man7/capabilities.7:413
1019 #: build/C/man7/capabilities.7:417 build/C/man7/capabilities.7:444
1020 #: build/C/man7/capabilities.7:449 build/C/man7/capabilities.7:455
1021 #: build/C/man7/capabilities.7:458 build/C/man7/capabilities.7:461
1022 #: build/C/man7/capabilities.7:471 build/C/man7/capabilities.7:475
1023 #: build/C/man7/capabilities.7:492 build/C/man7/capabilities.7:495
1024 #: build/C/man7/capabilities.7:499 build/C/man7/capabilities.7:504
1025 #: build/C/man7/capabilities.7:513 build/C/man7/capabilities.7:518
1026 #: build/C/man7/capabilities.7:521 build/C/man7/capabilities.7:526
1027 #: build/C/man7/capabilities.7:529 build/C/man7/capabilities.7:532
1028 #: build/C/man7/capabilities.7:535 build/C/man7/capabilities.7:538
1029 #: build/C/man7/capabilities.7:543 build/C/man7/capabilities.7:545
1030 #: build/C/man7/capabilities.7:551 build/C/man7/capabilities.7:559
1031 #: build/C/man7/capabilities.7:561 build/C/man7/capabilities.7:565
1032 #: build/C/man7/capabilities.7:567 build/C/man7/capabilities.7:570
1033 #: build/C/man7/capabilities.7:574 build/C/man7/capabilities.7:576
1034 #: build/C/man7/capabilities.7:578 build/C/man7/capabilities.7:580
1035 #: build/C/man7/capabilities.7:589 build/C/man7/capabilities.7:596
1036 #: build/C/man7/capabilities.7:601 build/C/man7/capabilities.7:606
1037 #: build/C/man7/capabilities.7:611 build/C/man7/capabilities.7:636
1038 #: build/C/man7/capabilities.7:643 build/C/man7/capabilities.7:844
1039 #: build/C/man7/capabilities.7:852 build/C/man7/capabilities.7:1172
1040 #: build/C/man7/capabilities.7:1177 build/C/man7/cpuset.7:540
1041 #: build/C/man7/cpuset.7:545 build/C/man7/cpuset.7:550
1042 #: build/C/man7/cpuset.7:726 build/C/man7/cpuset.7:730
1043 #: build/C/man7/cpuset.7:927 build/C/man7/cpuset.7:930
1044 #: build/C/man7/cpuset.7:934 build/C/man7/cpuset.7:938
1045 #: build/C/man7/cpuset.7:942 build/C/man7/credentials.7:177
1046 #: build/C/man7/credentials.7:183 build/C/man7/credentials.7:195
1047 #: build/C/man7/credentials.7:217 build/C/man7/credentials.7:234
1048 #: build/C/man7/credentials.7:266 build/C/man7/credentials.7:269
1049 #: build/C/man7/credentials.7:280 build/C/man7/credentials.7:283
1050 #: build/C/man2/getrlimit.2:683 build/C/man2/getrlimit.2:686
1051 #: build/C/man7/namespaces.7:212 build/C/man7/namespaces.7:215
1052 #: build/C/man7/namespaces.7:228 build/C/man7/pid_namespaces.7:223
1053 #: build/C/man7/pid_namespaces.7:231 build/C/man7/pid_namespaces.7:242
1054 #: build/C/man7/user_namespaces.7:261 build/C/man7/user_namespaces.7:266
1055 #: build/C/man7/user_namespaces.7:272 build/C/man7/user_namespaces.7:285
1056 #: build/C/man7/user_namespaces.7:306 build/C/man7/user_namespaces.7:474
1057 #: build/C/man7/user_namespaces.7:477 build/C/man7/user_namespaces.7:479
1058 #: build/C/man7/user_namespaces.7:492 build/C/man7/user_namespaces.7:505
1059 #: build/C/man7/user_namespaces.7:532 build/C/man7/user_namespaces.7:541
1060 #, no-wrap
1061 msgid "*"
1062 msgstr "*"
1063
1064 #. type: Plain text
1065 #: build/C/man7/capabilities.7:106
1066 msgid ""
1067 "Bypass file read permission checks and directory read and execute permission "
1068 "checks;"
1069 msgstr ""
1070 "ファイルの読み出し権限のチェックとディレクトリの読み出しと実行 の権限チェック"
1071 "をバイパスする。"
1072
1073 #. type: Plain text
1074 #: build/C/man7/capabilities.7:109
1075 msgid "Invoke B<open_by_handle_at>(2)."
1076 msgstr "B<open_by_handle_at>(2) を起動する。"
1077
1078 #. type: TP
1079 #: build/C/man7/capabilities.7:112
1080 #, no-wrap
1081 msgid "B<CAP_FOWNER>"
1082 msgstr "B<CAP_FOWNER>"
1083
1084 #. type: Plain text
1085 #: build/C/man7/capabilities.7:126
1086 msgid ""
1087 "Bypass permission checks on operations that normally require the filesystem "
1088 "UID of the process to match the UID of the file (e.g., B<chmod>(2), "
1089 "B<utime>(2)), excluding those operations covered by B<CAP_DAC_OVERRIDE> and "
1090 "B<CAP_DAC_READ_SEARCH>;"
1091 msgstr ""
1092 "通常、プロセスのファイルシステム UID がファイルの UID に一致することが 要求さ"
1093 "れる操作 (例えば B<chmod>(2), B<utime>(2))  における権限チェックをバイパスす"
1094 "る。 但し、 B<CAP_DAC_OVERRIDE> か B<CAP_DAC_READ_SEARCH> によりチェックが行"
1095 "われる操作は除く。"
1096
1097 #. type: Plain text
1098 #: build/C/man7/capabilities.7:130
1099 msgid "set extended file attributes (see B<chattr>(1))  on arbitrary files;"
1100 msgstr ""
1101 "任意のファイルに対して拡張ファイル属性を設定する (B<chattr>(1)  参照)。"
1102
1103 #. type: Plain text
1104 #: build/C/man7/capabilities.7:132
1105 msgid "set Access Control Lists (ACLs) on arbitrary files;"
1106 msgstr "任意のファイルに対してアクセス制御リスト (ACL) を設定する。"
1107
1108 #. type: Plain text
1109 #: build/C/man7/capabilities.7:134
1110 msgid "ignore directory sticky bit on file deletion;"
1111 msgstr "ファイルの削除の際にディレクトリのスティッキービットを無視する。"
1112
1113 #. type: Plain text
1114 #: build/C/man7/capabilities.7:141
1115 msgid ""
1116 "specify B<O_NOATIME> for arbitrary files in B<open>(2)  and B<fcntl>(2)."
1117 msgstr ""
1118 "B<open>(2)  や B<fcntl>(2)  で任意のファイルに対して B<O_NOATIME> を指定す"
1119 "る。"
1120
1121 #. type: TP
1122 #: build/C/man7/capabilities.7:143
1123 #, no-wrap
1124 msgid "B<CAP_FSETID>"
1125 msgstr "B<CAP_FSETID>"
1126
1127 #. type: Plain text
1128 #: build/C/man7/capabilities.7:149
1129 msgid ""
1130 "Don't clear set-user-ID and set-group-ID permission bits when a file is "
1131 "modified; set the set-group-ID bit for a file whose GID does not match the "
1132 "filesystem or any of the supplementary GIDs of the calling process."
1133 msgstr ""
1134 "ファイルが変更されたときに set-user-ID とset-group-ID の許可ビットをクリア し"
1135 "ない。呼び出し元プロセスのファイルシステム GID と追加の GID のいずれとも GID "
1136 "が一致しないファイルに対して set-group-ID ビットを設定する。"
1137
1138 #. type: TP
1139 #: build/C/man7/capabilities.7:149
1140 #, no-wrap
1141 msgid "B<CAP_IPC_LOCK>"
1142 msgstr "B<CAP_IPC_LOCK>"
1143
1144 #.  FIXME . As at Linux 3.2, there are some strange uses of this capability
1145 #.  in other places; they probably should be replaced with something else.
1146 #. type: Plain text
1147 #: build/C/man7/capabilities.7:158
1148 msgid "Lock memory (B<mlock>(2), B<mlockall>(2), B<mmap>(2), B<shmctl>(2))."
1149 msgstr ""
1150 "メモリーのロック (B<mlock>(2), B<mlockall>(2), B<mmap>(2), B<shmctl>(2))  を"
1151 "行う。"
1152
1153 #. type: TP
1154 #: build/C/man7/capabilities.7:158
1155 #, no-wrap
1156 msgid "B<CAP_IPC_OWNER>"
1157 msgstr "B<CAP_IPC_OWNER>"
1158
1159 #. type: Plain text
1160 #: build/C/man7/capabilities.7:161
1161 msgid "Bypass permission checks for operations on System V IPC objects."
1162 msgstr ""
1163 "System V IPC オブジェクトに対する操作に関して権限チェックをバイパスする。"
1164
1165 #. type: TP
1166 #: build/C/man7/capabilities.7:161
1167 #, no-wrap
1168 msgid "B<CAP_KILL>"
1169 msgstr "B<CAP_KILL>"
1170
1171 #.  FIXME . CAP_KILL also has an effect for threads + setting child
1172 #.        termination signal to other than SIGCHLD: without this
1173 #.        capability, the termination signal reverts to SIGCHLD
1174 #.        if the child does an exec().  What is the rationale
1175 #.        for this?
1176 #. type: Plain text
1177 #: build/C/man7/capabilities.7:174
1178 msgid ""
1179 "Bypass permission checks for sending signals (see B<kill>(2)).  This "
1180 "includes use of the B<ioctl>(2)  B<KDSIGACCEPT> operation."
1181 msgstr ""
1182 "シグナルを送信する際に権限チェックをバイパスする (B<kill>(2)  参照)。これに"
1183 "は B<ioctl>(2)  の B<KDSIGACCEPT> 操作の使用も含まれる。"
1184
1185 #. type: TP
1186 #: build/C/man7/capabilities.7:174
1187 #, no-wrap
1188 msgid "B<CAP_LEASE> (since Linux 2.4)"
1189 msgstr "B<CAP_LEASE> (Linux 2.4 以降)"
1190
1191 #. type: Plain text
1192 #: build/C/man7/capabilities.7:178
1193 msgid "Establish leases on arbitrary files (see B<fcntl>(2))."
1194 msgstr "任意のファイルに対して ファイルリースを設定する (B<fcntl>(2)  参照)。"
1195
1196 #. type: TP
1197 #: build/C/man7/capabilities.7:178
1198 #, no-wrap
1199 msgid "B<CAP_LINUX_IMMUTABLE>"
1200 msgstr "B<CAP_LINUX_IMMUTABLE>"
1201
1202 #.  These attributes are now available on ext2, ext3, Reiserfs, XFS, JFS
1203 #. type: Plain text
1204 #: build/C/man7/capabilities.7:187
1205 msgid ""
1206 "Set the B<FS_APPEND_FL> and B<FS_IMMUTABLE_FL> inode flags (see "
1207 "B<chattr>(1))."
1208 msgstr "inode フラグ B<FS_APPEND_FL> と B<FS_IMMUTABLE_FL> を設定する (B<chattr>(1)  参照)。"
1209
1210 #. type: TP
1211 #: build/C/man7/capabilities.7:187
1212 #, no-wrap
1213 msgid "B<CAP_MAC_ADMIN> (since Linux 2.6.25)"
1214 msgstr "B<CAP_MAC_ADMIN> (Linux 2.6.25 以降)"
1215
1216 #. type: Plain text
1217 #: build/C/man7/capabilities.7:191
1218 msgid ""
1219 "Override Mandatory Access Control (MAC).  Implemented for the Smack Linux "
1220 "Security Module (LSM)."
1221 msgstr ""
1222 "強制アクセス制御 (MAC) を上書きする。 Smack Linux Security Module (LSM) 用に"
1223 "実装されている。"
1224
1225 #. type: TP
1226 #: build/C/man7/capabilities.7:191
1227 #, no-wrap
1228 msgid "B<CAP_MAC_OVERRIDE> (since Linux 2.6.25)"
1229 msgstr "B<CAP_MAC_OVERRIDE> (Linux 2.6.25 以降)"
1230
1231 #. type: Plain text
1232 #: build/C/man7/capabilities.7:195
1233 msgid ""
1234 "Allow MAC configuration or state changes.  Implemented for the Smack LSM."
1235 msgstr "MAC の設定や状態を変更する。 Smack LSM 用に実装されている。"
1236
1237 #. type: TP
1238 #: build/C/man7/capabilities.7:195
1239 #, no-wrap
1240 msgid "B<CAP_MKNOD> (since Linux 2.4)"
1241 msgstr "B<CAP_MKNOD> (Linux 2.4 以降)"
1242
1243 #. type: Plain text
1244 #: build/C/man7/capabilities.7:199
1245 msgid "Create special files using B<mknod>(2)."
1246 msgstr ""
1247 "(Linux 2.4 以降)  B<mknod>(2)  を使用してスペシャルファイルを作成する。"
1248
1249 #. type: TP
1250 #: build/C/man7/capabilities.7:199
1251 #, no-wrap
1252 msgid "B<CAP_NET_ADMIN>"
1253 msgstr "B<CAP_NET_ADMIN>"
1254
1255 #. type: Plain text
1256 #: build/C/man7/capabilities.7:202
1257 msgid "Perform various network-related operations:"
1258 msgstr "各種のネットワーク関係の操作を実行する:"
1259
1260 #. type: Plain text
1261 #: build/C/man7/capabilities.7:206
1262 msgid "interface configuration;"
1263 msgstr "インターフェースの設定"
1264
1265 #. type: Plain text
1266 #: build/C/man7/capabilities.7:208
1267 msgid "administration of IP firewall, masquerading, and accounting;"
1268 msgstr "IP のファイアウォール、マスカレード、アカウンティング"
1269
1270 #. type: Plain text
1271 #: build/C/man7/capabilities.7:210
1272 msgid "modify routing tables;"
1273 msgstr "ルーティングテーブルの変更"
1274
1275 #. type: Plain text
1276 #: build/C/man7/capabilities.7:212
1277 msgid "bind to any address for transparent proxying;"
1278 msgstr "透過的プロキシでの任意のアドレスの割り当て (bind)"
1279
1280 #. type: Plain text
1281 #: build/C/man7/capabilities.7:214
1282 msgid "set type-of-service (TOS)"
1283 msgstr "サービス種別 (type-of-service; TOS) のセット"
1284
1285 #. type: Plain text
1286 #: build/C/man7/capabilities.7:216
1287 msgid "clear driver statistics;"
1288 msgstr "ドライバの統計情報のクリア"
1289
1290 #. type: Plain text
1291 #: build/C/man7/capabilities.7:218
1292 msgid "set promiscuous mode;"
1293 msgstr "promiscuous モードをセットする"
1294
1295 #. type: Plain text
1296 #: build/C/man7/capabilities.7:220
1297 msgid "enabling multicasting;"
1298 msgstr "マルチキャストを有効にする"
1299
1300 #. type: Plain text
1301 #: build/C/man7/capabilities.7:231
1302 msgid ""
1303 "use B<setsockopt>(2)  to set the following socket options: B<SO_DEBUG>, "
1304 "B<SO_MARK>, B<SO_PRIORITY> (for a priority outside the range 0 to 6), "
1305 "B<SO_RCVBUFFORCE>, and B<SO_SNDBUFFORCE>."
1306 msgstr ""
1307 "B<setsockopt>(2) を使って以下のソケットオプションを設定する:\n"
1308 "B<SO_DEBUG>, B<SO_MARK>, \n"
1309 "B<SO_PRIORITY> (優先度を 0 から 6 以外に設定する場合),\n"
1310 "B<SO_RCVBUFFORCE>, and B<SO_SNDBUFFORCE>"
1311
1312 #. type: TP
1313 #: build/C/man7/capabilities.7:233
1314 #, no-wrap
1315 msgid "B<CAP_NET_BIND_SERVICE>"
1316 msgstr "B<CAP_NET_BIND_SERVICE>"
1317
1318 #. type: Plain text
1319 #: build/C/man7/capabilities.7:237
1320 msgid ""
1321 "Bind a socket to Internet domain privileged ports (port numbers less than "
1322 "1024)."
1323 msgstr ""
1324 "インターネットドメインの特権ポート (ポート番号が 1024 番未満)  をバインドでき"
1325 "る。"
1326
1327 #. type: TP
1328 #: build/C/man7/capabilities.7:237
1329 #, no-wrap
1330 msgid "B<CAP_NET_BROADCAST>"
1331 msgstr "B<CAP_NET_BROADCAST>"
1332
1333 #. type: Plain text
1334 #: build/C/man7/capabilities.7:240
1335 msgid "(Unused)  Make socket broadcasts, and listen to multicasts."
1336 msgstr ""
1337 "(未使用) ソケットのブロードキャストと、マルチキャストの待ち受けを行う。"
1338
1339 #. type: TP
1340 #: build/C/man7/capabilities.7:240
1341 #, no-wrap
1342 msgid "B<CAP_NET_RAW>"
1343 msgstr "B<CAP_NET_RAW>"
1344
1345 #. type: Plain text
1346 #: build/C/man7/capabilities.7:246
1347 msgid "use RAW and PACKET sockets;"
1348 msgstr "RAW ソケットと PACKET ソケットを使用する。"
1349
1350 #. type: Plain text
1351 #: build/C/man7/capabilities.7:248
1352 msgid "bind to any address for transparent proxying."
1353 msgstr "透過的プロキシでの任意のアドレスの割り当て (bind)"
1354
1355 #. type: TP
1356 #: build/C/man7/capabilities.7:251
1357 #, no-wrap
1358 msgid "B<CAP_SETGID>"
1359 msgstr "B<CAP_SETGID>"
1360
1361 #. type: Plain text
1362 #: build/C/man7/capabilities.7:257
1363 msgid ""
1364 "Make arbitrary manipulations of process GIDs and supplementary GID list; "
1365 "forge GID when passing socket credentials via UNIX domain sockets; write a "
1366 "group ID mapping in a user namespace (see B<user_namespaces>(7))."
1367 msgstr ""
1368 "プロセスの GID と追加の GID リストに対する任意の操作を行う。 UNIX ドメインソ"
1369 "ケット経由でソケットの資格情報 (credential) を渡す際に 偽の GID を渡すことが"
1370 "できる。 ユーザー名前空間にグループ ID マッピングを書き込むことができる "
1371 "(B<user_namespaces>(7) 参照)。"
1372
1373 #. type: TP
1374 #: build/C/man7/capabilities.7:257
1375 #, no-wrap
1376 msgid "B<CAP_SETFCAP> (since Linux 2.6.24)"
1377 msgstr "B<CAP_SETFCAP> (Linux 2.6.24 以降)"
1378
1379 #. type: Plain text
1380 #: build/C/man7/capabilities.7:260
1381 msgid "Set file capabilities."
1382 msgstr "ファイルケーパビリティを設定する。"
1383
1384 #. type: TP
1385 #: build/C/man7/capabilities.7:260
1386 #, no-wrap
1387 msgid "B<CAP_SETPCAP>"
1388 msgstr "B<CAP_SETPCAP>"
1389
1390 #. type: Plain text
1391 #: build/C/man7/capabilities.7:271
1392 msgid ""
1393 "If file capabilities are not supported: grant or remove any capability in "
1394 "the caller's permitted capability set to or from any other process.  (This "
1395 "property of B<CAP_SETPCAP> is not available when the kernel is configured to "
1396 "support file capabilities, since B<CAP_SETPCAP> has entirely different "
1397 "semantics for such kernels.)"
1398 msgstr ""
1399 "ファイルケーパビリティがサポートされていない場合: 呼び出し元が許可されている"
1400 "ケーパビリティセットに含まれる任意のケーパビリティを、 他のプロセスに付与した"
1401 "り、削除したりできる。 (カーネルがファイルケーパビリティをサポートしている場"
1402 "合、 B<CAP_SETPCAP> はこの役割を持たない。 なぜなら、ファイルケーパビリティを"
1403 "サポートしているカーネルでは B<CAP_SETPCAP> は全く別の意味を持つからである。)"
1404
1405 #. type: Plain text
1406 #: build/C/man7/capabilities.7:281
1407 msgid ""
1408 "If file capabilities are supported: add any capability from the calling "
1409 "thread's bounding set to its inheritable set; drop capabilities from the "
1410 "bounding set (via B<prctl>(2)  B<PR_CAPBSET_DROP>); make changes to the "
1411 "I<securebits> flags."
1412 msgstr ""
1413 "ファイルケーパビリティがサポートされている場合: 呼び出し元スレッドのバウン"
1414 "ディングセットの任意のケーパビリティを 自身の継承可能ケーパビリティセットに追"
1415 "加できる。 (B<prctl>(2)  B<PR_CAPBSET_DROP> を使って)  バウンディングセットか"
1416 "らケーパビリティを削除できる。 I<securebits> フラグを変更できる。"
1417
1418 #. type: TP
1419 #: build/C/man7/capabilities.7:281
1420 #, no-wrap
1421 msgid "B<CAP_SETUID>"
1422 msgstr "B<CAP_SETUID>"
1423
1424 #.  FIXME CAP_SETUID also an effect in exec(); document this.
1425 #. type: Plain text
1426 #: build/C/man7/capabilities.7:292
1427 msgid ""
1428 "Make arbitrary manipulations of process UIDs (B<setuid>(2), B<setreuid>(2), "
1429 "B<setresuid>(2), B<setfsuid>(2)); forge UID when passing socket credentials "
1430 "via UNIX domain sockets; write a user ID mapping in a user namespace (see "
1431 "B<user_namespaces>(7))."
1432 msgstr ""
1433 "プロセスの UID に対する任意の操作 (B<setuid>(2), B<setreuid>(2), "
1434 "B<setresuid>(2), B<setfsuid>(2))  を行う。 UNIX ドメインソケット経由でソケッ"
1435 "トの資格情報 (credential) を渡す際に 偽の UID を渡すことができる。 ユーザー名"
1436 "前空間にユーザー ID マッピングを書き込むことができる (B<user_namespaces>(7) "
1437 "参照)。"
1438
1439 #. type: TP
1440 #: build/C/man7/capabilities.7:292
1441 #, no-wrap
1442 msgid "B<CAP_SYS_ADMIN>"
1443 msgstr "B<CAP_SYS_ADMIN>"
1444
1445 #. type: Plain text
1446 #: build/C/man7/capabilities.7:306
1447 msgid ""
1448 "Perform a range of system administration operations including: "
1449 "B<quotactl>(2), B<mount>(2), B<umount>(2), B<swapon>(2), B<swapoff>(2), "
1450 "B<sethostname>(2), and B<setdomainname>(2);"
1451 msgstr ""
1452 "以下のシステム管理用の操作を実行する: B<quotactl>(2), B<mount>(2), "
1453 "B<umount>(2), B<swapon>(2), B<swapoff>(2), B<sethostname>(2), "
1454 "B<setdomainname>(2)."
1455
1456 #. type: Plain text
1457 #: build/C/man7/capabilities.7:312
1458 msgid ""
1459 "perform privileged B<syslog>(2)  operations (since Linux 2.6.37, "
1460 "B<CAP_SYSLOG> should be used to permit such operations);"
1461 msgstr ""
1462 "特権が必要な B<syslog>(2) の操作を実行する\n"
1463 "(Linux 2.6.37 以降では、このような操作を許可するには\n"
1464 "B<CAP_SYSLOG> を使うべきである)"
1465
1466 #. type: Plain text
1467 #: build/C/man7/capabilities.7:317
1468 msgid "perform B<VM86_REQUEST_IRQ> B<vm86>(2)  command;"
1469 msgstr "B<VM86_REQUEST_IRQ> B<vm86>(2) コマンドを実行する。"
1470
1471 #. type: Plain text
1472 #: build/C/man7/capabilities.7:323
1473 msgid ""
1474 "perform B<IPC_SET> and B<IPC_RMID> operations on arbitrary System V IPC "
1475 "objects;"
1476 msgstr ""
1477 "任意の System V IPC オブジェクトに対する B<IPC_SET> と B<IPC_RMID> 操作を実行"
1478 "する。"
1479
1480 #. type: Plain text
1481 #: build/C/man7/capabilities.7:327 build/C/man7/capabilities.7:574
1482 msgid "override B<RLIMIT_NPROC> resource limit;"
1483 msgstr "B<RLIMIT_NPROC> リソース制限を上書きする。"
1484
1485 #. type: Plain text
1486 #: build/C/man7/capabilities.7:334
1487 msgid ""
1488 "perform operations on I<trusted> and I<security> Extended Attributes (see "
1489 "B<attr>(5));"
1490 msgstr ""
1491 "拡張属性 I<trusted> と I<security> に対する操作を実行する (B<attr>(5)  参"
1492 "照)。"
1493
1494 #. type: Plain text
1495 #: build/C/man7/capabilities.7:337
1496 msgid "use B<lookup_dcookie>(2);"
1497 msgstr "B<lookup_dcookie>(2)  を呼び出す。"
1498
1499 #. type: Plain text
1500 #: build/C/man7/capabilities.7:345
1501 msgid ""
1502 "use B<ioprio_set>(2)  to assign B<IOPRIO_CLASS_RT> and (before Linux "
1503 "2.6.25)  B<IOPRIO_CLASS_IDLE> I/O scheduling classes;"
1504 msgstr ""
1505 "B<ioprio_set>(2)  を使って I/O スケジューリングクラス B<IOPRIO_CLASS_RT>, "
1506 "B<IOPRIO_CLASS_IDLE> を割り当てる (B<IOPRIO_CLASS_IDLE> は Linux 2.6.25 より"
1507 "前のバージョンのみ)。"
1508
1509 #. type: Plain text
1510 #: build/C/man7/capabilities.7:347
1511 msgid "forge UID when passing socket credentials;"
1512 msgstr "ソケットの資格情報 (credential) を渡す際に偽の UID を渡す。"
1513
1514 #. type: Plain text
1515 #: build/C/man7/capabilities.7:356
1516 msgid ""
1517 "exceed I</proc/sys/fs/file-max>, the system-wide limit on the number of open "
1518 "files, in system calls that open files (e.g., B<accept>(2), B<execve>(2), "
1519 "B<open>(2), B<pipe>(2));"
1520 msgstr ""
1521 "ファイルをオープンするシステムコール (例えば B<accept>(2), B<execve>(2), "
1522 "B<open>(2), B<pipe>(2))  でシステム全体でオープンできるファイル数の上限 I</"
1523 "proc/sys/fs/file-max> を超過する。"
1524
1525 #. type: Plain text
1526 #: build/C/man7/capabilities.7:365
1527 msgid ""
1528 "employ B<CLONE_*> flags that create new namespaces with B<clone>(2)  and "
1529 "B<unshare>(2)  (but, since Linux 3.8, creating user namespaces does not "
1530 "require any capability);"
1531 msgstr ""
1532 "B<clone>(2) と B<unshare>(2) で新しい名前空間を作成する B<CLONE_*> フラグを利"
1533 "用する (ただし、 Linux 3.8 以降では、ユーザー名前空間の作成にどのケーパビリ"
1534 "ティも必要としない)。"
1535
1536 #. type: Plain text
1537 #: build/C/man7/capabilities.7:368
1538 msgid "call B<perf_event_open>(2);"
1539 msgstr "B<perf_event_open>(2) を呼び出す。"
1540
1541 #. type: Plain text
1542 #: build/C/man7/capabilities.7:372
1543 msgid "access privileged I<perf> event information;"
1544 msgstr "特権が必要な I<perf> イベントの情報にアクセスする。"
1545
1546 #. type: Plain text
1547 #: build/C/man7/capabilities.7:380
1548 msgid ""
1549 "call B<setns>(2)  (requires B<CAP_SYS_ADMIN> in the I<target> namespace);"
1550 msgstr ""
1551
1552 #. type: Plain text
1553 #: build/C/man7/capabilities.7:383
1554 msgid "call B<fanotify_init>(2);"
1555 msgstr "B<fanotify_init>(2) を呼び出す。"
1556
1557 #. type: Plain text
1558 #: build/C/man7/capabilities.7:390
1559 msgid "perform B<KEYCTL_CHOWN> and B<KEYCTL_SETPERM> B<keyctl>(2)  operations;"
1560 msgstr "B<keyctl>(2)  の B<KEYCTL_CHOWN> と B<KEYCTL_SETPERM> 操作を実行する。"
1561
1562 #. type: Plain text
1563 #: build/C/man7/capabilities.7:395
1564 msgid "perform B<madvise>(2)  B<MADV_HWPOISON> operation;"
1565 msgstr "B<madvise>(2)  の B<MADV_HWPOISON> 操作を実行する。"
1566
1567 #. type: Plain text
1568 #: build/C/man7/capabilities.7:401
1569 msgid ""
1570 "employ the B<TIOCSTI> B<ioctl>(2)  to insert characters into the input queue "
1571 "of a terminal other than the caller's controlling terminal;"
1572 msgstr ""
1573 "B<TIOCSTI> B<ioctl>(2) を使って、\n"
1574 "呼び出し元の制御端末以外の端末の入力キューに文字を挿入する。"
1575
1576 #. type: Plain text
1577 #: build/C/man7/capabilities.7:405
1578 msgid "employ the obsolete B<nfsservctl>(2)  system call;"
1579 msgstr "廃止予定の B<nfsservctl>(2) システムコールを使用する。"
1580
1581 #. type: Plain text
1582 #: build/C/man7/capabilities.7:409
1583 msgid "employ the obsolete B<bdflush>(2)  system call;"
1584 msgstr "廃止予定の B<bdflush>(2) システムコールを使用する。"
1585
1586 #. type: Plain text
1587 #: build/C/man7/capabilities.7:413
1588 msgid "perform various privileged block-device B<ioctl>(2)  operations;"
1589 msgstr ""
1590 "特権が必要なブロックデバイスに対する各種の B<ioctl>(2) 操作を\n"
1591 "実行する。"
1592
1593 #. type: Plain text
1594 #: build/C/man7/capabilities.7:417
1595 msgid "perform various privileged filesystem B<ioctl>(2)  operations;"
1596 msgstr ""
1597 "特権が必要なファイルシステムに対する各種の B<ioctl>(2) 操作を\n"
1598 "実行する。"
1599
1600 #. type: Plain text
1601 #: build/C/man7/capabilities.7:419
1602 msgid "perform administrative operations on many device drivers."
1603 msgstr "多くのデバイスドライバに対する管理命令を実行する。"
1604
1605 #. type: TP
1606 #: build/C/man7/capabilities.7:421
1607 #, no-wrap
1608 msgid "B<CAP_SYS_BOOT>"
1609 msgstr "B<CAP_SYS_BOOT>"
1610
1611 #. type: Plain text
1612 #: build/C/man7/capabilities.7:427
1613 msgid "Use B<reboot>(2)  and B<kexec_load>(2)."
1614 msgstr "B<reboot>(2)  と B<kexec_load>(2)  を呼び出す。"
1615
1616 #. type: TP
1617 #: build/C/man7/capabilities.7:427
1618 #, no-wrap
1619 msgid "B<CAP_SYS_CHROOT>"
1620 msgstr "B<CAP_SYS_CHROOT>"
1621
1622 #. type: Plain text
1623 #: build/C/man7/capabilities.7:431
1624 msgid "Use B<chroot>(2)."
1625 msgstr "B<chroot>(2).  を呼び出す。"
1626
1627 #. type: TP
1628 #: build/C/man7/capabilities.7:431
1629 #, no-wrap
1630 msgid "B<CAP_SYS_MODULE>"
1631 msgstr "B<CAP_SYS_MODULE>"
1632
1633 #. type: Plain text
1634 #: build/C/man7/capabilities.7:440
1635 msgid ""
1636 "Load and unload kernel modules (see B<init_module>(2)  and "
1637 "B<delete_module>(2)); in kernels before 2.6.25: drop capabilities from the "
1638 "system-wide capability bounding set."
1639 msgstr ""
1640 "カーネルモジュールのロード、アンロードを行う (B<init_module>(2)  と "
1641 "B<delete_module>(2)  を参照のこと)。 バージョン 2.6.25 より前のカーネルで、 "
1642 "システム全体のケーパビリティバウンディングセット (capability bounding set)  "
1643 "からケーパビリティを外す。"
1644
1645 #. type: TP
1646 #: build/C/man7/capabilities.7:440
1647 #, no-wrap
1648 msgid "B<CAP_SYS_NICE>"
1649 msgstr "B<CAP_SYS_NICE>"
1650
1651 #. type: Plain text
1652 #: build/C/man7/capabilities.7:449
1653 msgid ""
1654 "Raise process nice value (B<nice>(2), B<setpriority>(2))  and change the "
1655 "nice value for arbitrary processes;"
1656 msgstr ""
1657 "プロセスの nice 値の引き上げ (B<nice>(2), B<setpriority>(2))  や、任意のプロ"
1658 "セスの nice 値の変更を行う。"
1659
1660 #. type: Plain text
1661 #: build/C/man7/capabilities.7:455
1662 msgid ""
1663 "set real-time scheduling policies for calling process, and set scheduling "
1664 "policies and priorities for arbitrary processes (B<sched_setscheduler>(2), "
1665 "B<sched_setparam>(2), B<shed_setattr>(2));"
1666 msgstr ""
1667 "呼び出し元プロセスに対するリアルタイムスケジューリングポリシーと、 任意のプロ"
1668 "セスに対するスケジューリングポリシーと優先度を設定する "
1669 "(B<sched_setscheduler>(2), B<sched_setparam>(2), B<shed_setattr>(2))。"
1670
1671 #. type: Plain text
1672 #: build/C/man7/capabilities.7:458
1673 msgid "set CPU affinity for arbitrary processes (B<sched_setaffinity>(2));"
1674 msgstr ""
1675 "任意のプロセスに対する CPU affinity を設定できる (B<sched_setaffinity>(2))。"
1676
1677 #. type: Plain text
1678 #: build/C/man7/capabilities.7:461
1679 msgid ""
1680 "set I/O scheduling class and priority for arbitrary processes "
1681 "(B<ioprio_set>(2));"
1682 msgstr ""
1683 "任意のプロセスに対して I/O スケジューリングクラスと優先度を設定できる "
1684 "(B<ioprio_set>(2))。"
1685
1686 #.  FIXME CAP_SYS_NICE also has the following effect for
1687 #.  migrate_pages(2):
1688 #.      do_migrate_pages(mm, &old, &new,
1689 #.          capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
1690 #.  Document this.
1691 #. type: Plain text
1692 #: build/C/man7/capabilities.7:471
1693 msgid ""
1694 "apply B<migrate_pages>(2)  to arbitrary processes and allow processes to be "
1695 "migrated to arbitrary nodes;"
1696 msgstr ""
1697 "B<migrate_pages>(2)  を任意のプロセスに適用し、プロセスを任意のノードに移動す"
1698 "る。"
1699
1700 #. type: Plain text
1701 #: build/C/man7/capabilities.7:475
1702 msgid "apply B<move_pages>(2)  to arbitrary processes;"
1703 msgstr "B<move_pages>(2)  を任意のプロセスに対して行う。"
1704
1705 #. type: Plain text
1706 #: build/C/man7/capabilities.7:482
1707 msgid ""
1708 "use the B<MPOL_MF_MOVE_ALL> flag with B<mbind>(2)  and B<move_pages>(2)."
1709 msgstr ""
1710 "B<mbind>(2)  と B<move_pages>(2)  で B<MPOL_MF_MOVE_ALL> フラグを使用する。"
1711
1712 #. type: TP
1713 #: build/C/man7/capabilities.7:484
1714 #, no-wrap
1715 msgid "B<CAP_SYS_PACCT>"
1716 msgstr "B<CAP_SYS_PACCT>"
1717
1718 #. type: Plain text
1719 #: build/C/man7/capabilities.7:488
1720 msgid "Use B<acct>(2)."
1721 msgstr "B<acct>(2)  を呼び出す。"
1722
1723 #. type: TP
1724 #: build/C/man7/capabilities.7:488
1725 #, no-wrap
1726 msgid "B<CAP_SYS_PTRACE>"
1727 msgstr "B<CAP_SYS_PTRACE>"
1728
1729 #. type: Plain text
1730 #: build/C/man7/capabilities.7:495
1731 msgid "Trace arbitrary processes using B<ptrace>(2);"
1732 msgstr "B<ptrace>(2)  を使って任意のプロセスをトレースする。"
1733
1734 #. type: Plain text
1735 #: build/C/man7/capabilities.7:499
1736 msgid "apply B<get_robust_list>(2)  to arbitrary processes;"
1737 msgstr "B<get_robust_list>(2)  を任意のプロセスに対して行う。"
1738
1739 #. type: Plain text
1740 #: build/C/man7/capabilities.7:504
1741 msgid ""
1742 "transfer data to or from the memory of arbitrary processes using "
1743 "B<process_vm_readv>(2)  and B<process_vm_writev>(2)."
1744 msgstr ""
1745
1746 #. type: Plain text
1747 #: build/C/man7/capabilities.7:507
1748 msgid "inspect processes using B<kcmp>(2)."
1749 msgstr "B<kcmp>(2) を使ってプロセス内部を調査する。"
1750
1751 #. type: TP
1752 #: build/C/man7/capabilities.7:509
1753 #, no-wrap
1754 msgid "B<CAP_SYS_RAWIO>"
1755 msgstr "B<CAP_SYS_RAWIO>"
1756
1757 #. type: Plain text
1758 #: build/C/man7/capabilities.7:518
1759 msgid "Perform I/O port operations (B<iopl>(2)  and B<ioperm>(2));"
1760 msgstr "I/O ポート操作を実行する (B<iopl>(2)、 B<ioperm>(2))。"
1761
1762 #. type: Plain text
1763 #: build/C/man7/capabilities.7:521
1764 msgid "access I</proc/kcore>;"
1765 msgstr "I</proc/kcore> にアクセスする。"
1766
1767 #. type: Plain text
1768 #: build/C/man7/capabilities.7:526
1769 msgid "employ the B<FIBMAP> B<ioctl>(2)  operation;"
1770 msgstr "B<FIBMAP> B<ioctl>(2) 操作を使用する。"
1771
1772 #. type: Plain text
1773 #: build/C/man7/capabilities.7:529
1774 msgid ""
1775 "open devices for accessing x86 model-specific registers (MSRs, see B<msr>(4))"
1776 msgstr ""
1777 "x86 モデルに固有のレジスタ (MSR レジスタ群、 B<msr>(4) 参照) にアクセスするた"
1778 "めのデバイスをオープンする。"
1779
1780 #. type: Plain text
1781 #: build/C/man7/capabilities.7:532
1782 msgid "update I</proc/sys/vm/mmap_min_addr>;"
1783 msgstr "I</proc/sys/vm/mmap_min_addr> を更新する。"
1784
1785 #. type: Plain text
1786 #: build/C/man7/capabilities.7:535
1787 msgid ""
1788 "create memory mappings at addresses below the value specified by I</proc/sys/"
1789 "vm/mmap_min_addr>;"
1790 msgstr ""
1791 "I</proc/sys/vm/mmap_min_addr> で指定された値よりも小さなアドレスにメモリマッ"
1792 "ピングを作成する。"
1793
1794 #. type: Plain text
1795 #: build/C/man7/capabilities.7:538
1796 msgid "map files in I</proc/bus/pci>;"
1797 msgstr "I</proc/bus/pci> にあるファイルをマップする。"
1798
1799 #. type: Plain text
1800 #: build/C/man7/capabilities.7:543
1801 msgid "open I</dev/mem> and I</dev/kmem>;"
1802 msgstr "I</dev/mem> や I</dev/kmem> をオープンする。"
1803
1804 #. type: Plain text
1805 #: build/C/man7/capabilities.7:545
1806 msgid "perform various SCSI device commands;"
1807 msgstr "各種の SCSI デバイスコマンドを実行する。"
1808
1809 #. type: Plain text
1810 #: build/C/man7/capabilities.7:551
1811 msgid "perform certain operations on B<hpsa>(4)  and B<cciss>(4)  devices;"
1812 msgstr "B<hpsa>(4) デバイスや B<cciss>(4) デバイスの特定の操作を実行する。"
1813
1814 #. type: Plain text
1815 #: build/C/man7/capabilities.7:553
1816 msgid "perform a range of device-specific operations on other devices."
1817 msgstr "他のデバイスに対して各種のデバイス固有命令を実行する。"
1818
1819 #. type: TP
1820 #: build/C/man7/capabilities.7:555
1821 #, no-wrap
1822 msgid "B<CAP_SYS_RESOURCE>"
1823 msgstr "B<CAP_SYS_RESOURCE>"
1824
1825 #. type: Plain text
1826 #: build/C/man7/capabilities.7:561
1827 msgid "Use reserved space on ext2 filesystems;"
1828 msgstr "ext2 ファイルシステム上の予約されている領域を使用する。"
1829
1830 #. type: Plain text
1831 #: build/C/man7/capabilities.7:565
1832 msgid "make B<ioctl>(2)  calls controlling ext3 journaling;"
1833 msgstr "ext3 のジャーナル機能を制御する B<ioctl>(2)  を使用する。"
1834
1835 #. type: Plain text
1836 #: build/C/man7/capabilities.7:567
1837 msgid "override disk quota limits;"
1838 msgstr "ディスク quota の上限を上書きする。"
1839
1840 #. type: Plain text
1841 #: build/C/man7/capabilities.7:570
1842 msgid "increase resource limits (see B<setrlimit>(2));"
1843 msgstr "リソース上限を増やす (B<setrlimit>(2))。"
1844
1845 #. type: Plain text
1846 #: build/C/man7/capabilities.7:576
1847 msgid "override maximum number of consoles on console allocation;"
1848 msgstr "コンソール割り当てにおいてコンソールの最大数を上書きする。"
1849
1850 #. type: Plain text
1851 #: build/C/man7/capabilities.7:578
1852 msgid "override maximum number of keymaps;"
1853 msgstr "キーマップの最大数を上書きする。"
1854
1855 #. type: Plain text
1856 #: build/C/man7/capabilities.7:580
1857 msgid "allow more than 64hz interrupts from the real-time clock;"
1858 msgstr "リアルタイムクロックから秒間 64 回を越える回数の割り当てが許可する。"
1859
1860 #. type: Plain text
1861 #: build/C/man7/capabilities.7:589
1862 msgid ""
1863 "raise I<msg_qbytes> limit for a System V message queue above the limit in I</"
1864 "proc/sys/kernel/msgmnb> (see B<msgop>(2)  and B<msgctl>(2));"
1865 msgstr ""
1866 "メッセージキューに関する上限 I<msg_qbytes> を \n"
1867 "I</proc/sys/kernel/msgmnb> に指定されている上限よりも大きく設定する\n"
1868 "(B<msgop>(2) と B<msgctl>(2) 参照)。"
1869
1870 #. type: Plain text
1871 #: build/C/man7/capabilities.7:596
1872 msgid ""
1873 "override the I</proc/sys/fs/pipe-size-max> limit when setting the capacity "
1874 "of a pipe using the B<F_SETPIPE_SZ> B<fcntl>(2)  command."
1875 msgstr ""
1876 "B<F_SETPIPE_SZ> B<fcntl>(2) を使ってパイプの容量を設定する際に\n"
1877 "上限 I</proc/sys/fs/pipe-size-max> を上書きする。"
1878
1879 #. type: Plain text
1880 #: build/C/man7/capabilities.7:601
1881 msgid ""
1882 "use B<F_SETPIPE_SZ> to increase the capacity of a pipe above the limit "
1883 "specified by I</proc/sys/fs/pipe-max-size>;"
1884 msgstr ""
1885 "I</proc/sys/fs/pipe-max-size> に指定されている上限を超えてパイプの容量\n"
1886 "を増やすのに B<F_SETPIPE_SZ> を使用する。"
1887
1888 #. type: Plain text
1889 #: build/C/man7/capabilities.7:606
1890 msgid ""
1891 "override I</proc/sys/fs/mqueue/queues_max> limit when creating POSIX message "
1892 "queues (see B<mq_overview>(7));"
1893 msgstr ""
1894 "POSIX メッセージキューを作成する際に、\n"
1895 "上限 I</proc/sys/fs/mqueue/queues_max> を上書きする\n"
1896 "(B<mq_overview>(7) 参照)。"
1897
1898 #. type: Plain text
1899 #: build/C/man7/capabilities.7:611
1900 msgid "employ B<prctl>(2)  B<PR_SET_MM> operation;"
1901 msgstr "B<prctl>(2) B<PR_SET_MM> 操作を使用する。"
1902
1903 #. type: Plain text
1904 #: build/C/man7/capabilities.7:616
1905 msgid ""
1906 "set I</proc/PID/oom_score_adj> to a value lower than the value last set by a "
1907 "process with B<CAP_SYS_RESOURCE>."
1908 msgstr ""
1909 "B<CAP_SYS_RESOURCE> を持ったプロセスによって最後に設定された値よりも小さな値"
1910 "を I</proc/PID/oom_score_adj> に設定する。"
1911
1912 #. type: TP
1913 #: build/C/man7/capabilities.7:618
1914 #, no-wrap
1915 msgid "B<CAP_SYS_TIME>"
1916 msgstr "B<CAP_SYS_TIME>"
1917
1918 #. type: Plain text
1919 #: build/C/man7/capabilities.7:625
1920 msgid ""
1921 "Set system clock (B<settimeofday>(2), B<stime>(2), B<adjtimex>(2)); set real-"
1922 "time (hardware) clock."
1923 msgstr ""
1924 "システムクロックを変更する (B<settimeofday>(2), B<stime>(2), "
1925 "B<adjtimex>(2))。 リアルタイム (ハードウェア) クロックを変更する。"
1926
1927 #. type: TP
1928 #: build/C/man7/capabilities.7:625
1929 #, no-wrap
1930 msgid "B<CAP_SYS_TTY_CONFIG>"
1931 msgstr "B<CAP_SYS_TTY_CONFIG>"
1932
1933 #. type: Plain text
1934 #: build/C/man7/capabilities.7:632
1935 msgid ""
1936 "Use B<vhangup>(2); employ various privileged B<ioctl>(2)  operations on "
1937 "virtual terminals."
1938 msgstr ""
1939 "B<vhangup>(2) を使用する。\n"
1940 "特権が必要な仮想端末に関する各種の B<ioctl>(2) 操作を利用できる。"
1941
1942 #. type: TP
1943 #: build/C/man7/capabilities.7:632
1944 #, no-wrap
1945 msgid "B<CAP_SYSLOG> (since Linux 2.6.37)"
1946 msgstr "B<CAP_SYSLOG> (Linux 2.6.37 以降)"
1947
1948 #. type: Plain text
1949 #: build/C/man7/capabilities.7:643
1950 msgid ""
1951 "Perform privileged B<syslog>(2)  operations.  See B<syslog>(2)  for "
1952 "information on which operations require privilege."
1953 msgstr ""
1954 "特権が必要な B<syslog>(2) 操作を実行できる。\n"
1955 "どの操作が特権が必要かについての情報は B<syslog>(2) を参照。"
1956
1957 #. type: Plain text
1958 #: build/C/man7/capabilities.7:653
1959 msgid ""
1960 "View kernel addresses exposed via I</proc> and other interfaces when I</proc/"
1961 "sys/kernel/kptr_restrict> has the value 1.  (See the discussion of the "
1962 "I<kptr_restrict> in B<proc>(5).)"
1963 msgstr ""
1964 "I</proc/sys/kernel/kptr_restrict> の値が 1 の場合、 I</proc> や他のインター"
1965 "フェース経由で公開されているカーネルアドレスを参照する (B<proc>(5) の "
1966 "I<kptr_restrict> の議論を参照)。"
1967
1968 #. type: TP
1969 #: build/C/man7/capabilities.7:655
1970 #, no-wrap
1971 msgid "B<CAP_WAKE_ALARM> (since Linux 3.0)"
1972 msgstr "B<CAP_WAKE_ALARM> (Linux 3.0 以降)"
1973
1974 #. type: Plain text
1975 #: build/C/man7/capabilities.7:663
1976 msgid ""
1977 "Trigger something that will wake up the system (set B<CLOCK_REALTIME_ALARM> "
1978 "and B<CLOCK_BOOTTIME_ALARM> timers)."
1979 msgstr ""
1980 "システムを起こすトリガーを有効にする (タイマー B<CLOCK_REALTIME_ALARM>\n"
1981 "や B<CLOCK_BOOTTIME_ALARM> を設定する)。"
1982
1983 #. type: SS
1984 #: build/C/man7/capabilities.7:663
1985 #, no-wrap
1986 msgid "Past and current implementation"
1987 msgstr "過去と現在の実装"
1988
1989 #. type: Plain text
1990 #: build/C/man7/capabilities.7:665
1991 msgid "A full implementation of capabilities requires that:"
1992 msgstr "完全な形のケーパビリティを実装するには、以下の要件を満たす必要がある:"
1993
1994 #. type: IP
1995 #: build/C/man7/capabilities.7:665 build/C/man7/capabilities.7:816
1996 #: build/C/man7/capabilities.7:963 build/C/man7/capabilities.7:1016
1997 #: build/C/man7/user_namespaces.7:173 build/C/man7/user_namespaces.7:515
1998 #, no-wrap
1999 msgid "1."
2000 msgstr "1."
2001
2002 #. type: Plain text
2003 #: build/C/man7/capabilities.7:669
2004 msgid ""
2005 "For all privileged operations, the kernel must check whether the thread has "
2006 "the required capability in its effective set."
2007 msgstr ""
2008 "全ての特権操作について、カーネルはそのスレッドの実効ケーパビリティセットに 必"
2009 "要なケーパビリティがあるかを確認する。"
2010
2011 #. type: IP
2012 #: build/C/man7/capabilities.7:669 build/C/man7/capabilities.7:821
2013 #: build/C/man7/capabilities.7:969 build/C/man7/capabilities.7:1022
2014 #: build/C/man7/user_namespaces.7:189 build/C/man7/user_namespaces.7:521
2015 #, no-wrap
2016 msgid "2."
2017 msgstr "2."
2018
2019 #. type: Plain text
2020 #: build/C/man7/capabilities.7:672
2021 msgid ""
2022 "The kernel must provide system calls allowing a thread's capability sets to "
2023 "be changed and retrieved."
2024 msgstr ""
2025 "カーネルで、あるスレッドのケーパビリティセットを変更したり、 取得したりできる"
2026 "システムコールが提供される。"
2027
2028 #. type: IP
2029 #: build/C/man7/capabilities.7:672 build/C/man7/capabilities.7:972
2030 #: build/C/man7/capabilities.7:1026 build/C/man7/user_namespaces.7:193
2031 #: build/C/man7/user_namespaces.7:526
2032 #, no-wrap
2033 msgid "3."
2034 msgstr "3."
2035
2036 #. type: Plain text
2037 #: build/C/man7/capabilities.7:675
2038 msgid ""
2039 "The filesystem must support attaching capabilities to an executable file, so "
2040 "that a process gains those capabilities when the file is executed."
2041 msgstr ""
2042 "ファイルシステムが、実行可能ファイルにケーパビリティを付与でき、ファイル 実行"
2043 "時にそのケーパビリティをプロセスが取得できるような機能をサポートする。"
2044
2045 #. type: Plain text
2046 #: build/C/man7/capabilities.7:679
2047 msgid ""
2048 "Before kernel 2.6.24, only the first two of these requirements are met; "
2049 "since kernel 2.6.24, all three requirements are met."
2050 msgstr ""
2051 "カーネル 2.6.24 より前では、最初の 2つの要件のみが満たされている。 カーネル "
2052 "2.6.24 以降では、3つの要件すべてが満たされている。"
2053
2054 #. type: SS
2055 #: build/C/man7/capabilities.7:679
2056 #, no-wrap
2057 msgid "Thread capability sets"
2058 msgstr "スレッドケーパビリティセット"
2059
2060 #. type: Plain text
2061 #: build/C/man7/capabilities.7:682
2062 msgid ""
2063 "Each thread has three capability sets containing zero or more of the above "
2064 "capabilities:"
2065 msgstr ""
2066 "各スレッドは以下の 3種類のケーパビリティセットを持つ。各々のケーパビリティ"
2067 "セットは 上記のケーパビリティの組み合わせである (全てのケーパビリティが無効で"
2068 "もよい)。"
2069
2070 #. type: TP
2071 #: build/C/man7/capabilities.7:682
2072 #, no-wrap
2073 msgid "I<Permitted>:"
2074 msgstr "I<許可 (permitted)>:"
2075
2076 #. type: Plain text
2077 #: build/C/man7/capabilities.7:690
2078 msgid ""
2079 "This is a limiting superset for the effective capabilities that the thread "
2080 "may assume.  It is also a limiting superset for the capabilities that may be "
2081 "added to the inheritable set by a thread that does not have the "
2082 "B<CAP_SETPCAP> capability in its effective set."
2083 msgstr ""
2084 "そのスレッドが持つことになっている実効ケーパビリティの 限定的なスーパーセット"
2085 "である。 これは、実効ケーパビリティセットに B<CAP_SETPCAP> ケーパビリティを"
2086 "持っていないスレッドが継承可能ケーパビリティセットに 追加可能なケーパビリティ"
2087 "の限定的なスーパーセットでもある。"
2088
2089 #. type: Plain text
2090 #: build/C/man7/capabilities.7:696
2091 msgid ""
2092 "If a thread drops a capability from its permitted set, it can never "
2093 "reacquire that capability (unless it B<execve>(2)s either a set-user-ID-root "
2094 "program, or a program whose associated file capabilities grant that "
2095 "capability)."
2096 msgstr ""
2097 "許可ケーパビリティセットから削除してしまったケーパビリティは、 (set-user-ID-"
2098 "root プログラムか、 そのケーパビリティをファイルケーパビリティで許可している"
2099 "プログラムを B<execve>(2)  しない限りは) もう一度獲得することはできない。"
2100
2101 #. type: TP
2102 #: build/C/man7/capabilities.7:696
2103 #, no-wrap
2104 msgid "I<Inheritable>:"
2105 msgstr "I<継承可能 (inheritable)>:"
2106
2107 #. type: Plain text
2108 #: build/C/man7/capabilities.7:703
2109 msgid ""
2110 "This is a set of capabilities preserved across an B<execve>(2).  It provides "
2111 "a mechanism for a process to assign capabilities to the permitted set of the "
2112 "new program during an B<execve>(2)."
2113 msgstr ""
2114 "B<execve>(2)  を前後で保持されるケーパビリティセットである。 この仕組みを使う"
2115 "ことで、あるプロセスが B<execve>(2)  を行う際に新しいプログラムの許可ケーパビ"
2116 "リティセットとして 割り当てるケーパビリティを指定することができる。"
2117
2118 #. type: TP
2119 #: build/C/man7/capabilities.7:703 build/C/man7/capabilities.7:753
2120 #, no-wrap
2121 msgid "I<Effective>:"
2122 msgstr "I<実効 (effective)>:"
2123
2124 #. type: Plain text
2125 #: build/C/man7/capabilities.7:707
2126 msgid ""
2127 "This is the set of capabilities used by the kernel to perform permission "
2128 "checks for the thread."
2129 msgstr ""
2130 "カーネルがスレッドの権限 (permission) をチェックするときに 使用するケーパビリ"
2131 "ティセットである。"
2132
2133 #. type: Plain text
2134 #: build/C/man7/capabilities.7:713
2135 msgid ""
2136 "A child created via B<fork>(2)  inherits copies of its parent's capability "
2137 "sets.  See below for a discussion of the treatment of capabilities during "
2138 "B<execve>(2)."
2139 msgstr ""
2140 "B<fork>(2)  で作成される子プロセスは、親のケーパビリティセットのコピーを継承"
2141 "する。 B<execve>(2)  中のケーパビリティの扱いについては下記を参照のこと。"
2142
2143 #. type: Plain text
2144 #: build/C/man7/capabilities.7:717
2145 msgid ""
2146 "Using B<capset>(2), a thread may manipulate its own capability sets (see "
2147 "below)."
2148 msgstr ""
2149 "B<capset>(2)  を使うと、プロセスは自分自身のケーパビリティセット を操作するこ"
2150 "とができる (下記参照)。"
2151
2152 #.  commit 73efc0394e148d0e15583e13712637831f926720
2153 #. type: Plain text
2154 #: build/C/man7/capabilities.7:726
2155 msgid ""
2156 "Since Linux 3.2, the file I</proc/sys/kernel/cap_last_cap> exposes the "
2157 "numerical value of the highest capability supported by the running kernel; "
2158 "this can be used to determine the highest bit that may be set in a "
2159 "capability set."
2160 msgstr ""
2161 "Linux 3.2 以降では、 ファイル I</proc/sys/kernel/cap_last_cap> で、 実行中の"
2162 "カーネルでサポートされているケーパビリティの最大値を参照できる。 この情報を"
2163 "使って、 ケーパビリティセットに設定される可能性がある最上位ビットを判定するこ"
2164 "とができる。"
2165
2166 #. type: SS
2167 #: build/C/man7/capabilities.7:726
2168 #, no-wrap
2169 msgid "File capabilities"
2170 msgstr "ファイルケーパビリティ"
2171
2172 #. type: Plain text
2173 #: build/C/man7/capabilities.7:741
2174 msgid ""
2175 "Since kernel 2.6.24, the kernel supports associating capability sets with an "
2176 "executable file using B<setcap>(8).  The file capability sets are stored in "
2177 "an extended attribute (see B<setxattr>(2))  named I<security.capability>.  "
2178 "Writing to this extended attribute requires the B<CAP_SETFCAP> capability.  "
2179 "The file capability sets, in conjunction with the capability sets of the "
2180 "thread, determine the capabilities of a thread after an B<execve>(2)."
2181 msgstr ""
2182 "カーネル 2.6.24 以降では、 B<setcap>(8)  を使って実行ファイルにケーパビリティ"
2183 "セットを対応付けることができる。 ファイルケーパビリティセットは I<security."
2184 "capability> という名前の拡張属性に保存される (B<setxattr>(2)  参照)。この拡張"
2185 "属性への書き込みには B<CAP_SETFCAP> ケーパビリティが必要である。 ファイルケー"
2186 "パビリティセットとスレッドのケーパビリティセットの両方が 考慮され、 "
2187 "B<execve>(2)  後のスレッドのケーパビリティセットが決定される。"
2188
2189 #. type: Plain text
2190 #: build/C/man7/capabilities.7:743
2191 msgid "The three file capability sets are:"
2192 msgstr "3 つのファイルケーパビリティセットが定義されている。"
2193
2194 #. type: TP
2195 #: build/C/man7/capabilities.7:743
2196 #, no-wrap
2197 msgid "I<Permitted> (formerly known as I<forced>):"
2198 msgstr "I<許可 (Permitted)> (以前のI<強制 (Forced)>):"
2199
2200 #. type: Plain text
2201 #: build/C/man7/capabilities.7:747
2202 msgid ""
2203 "These capabilities are automatically permitted to the thread, regardless of "
2204 "the thread's inheritable capabilities."
2205 msgstr ""
2206 "スレッドの継承可能ケーパビリティに関わらず、そのスレッドに自動的に 認められる"
2207 "ケーパビリティ。"
2208
2209 #. type: TP
2210 #: build/C/man7/capabilities.7:747
2211 #, no-wrap
2212 msgid "I<Inheritable> (formerly known as I<allowed>):"
2213 msgstr "I<継承可能 (Inheritable)> (以前の I<許容 (Allowed)>):"
2214
2215 #. type: Plain text
2216 #: build/C/man7/capabilities.7:753
2217 msgid ""
2218 "This set is ANDed with the thread's inheritable set to determine which "
2219 "inheritable capabilities are enabled in the permitted set of the thread "
2220 "after the B<execve>(2)."
2221 msgstr ""
2222 "このセットと、スレッドの継承可能ケーパビリティセットとの 論理積 (AND) がとら"
2223 "れ、 B<execve>(2)  の後にそのスレッドの許可ケーパビリティセットで有効となる "
2224 "継承可能ケーパビリティが決定される。"
2225
2226 #. type: Plain text
2227 #: build/C/man7/capabilities.7:763
2228 msgid ""
2229 "This is not a set, but rather just a single bit.  If this bit is set, then "
2230 "during an B<execve>(2)  all of the new permitted capabilities for the thread "
2231 "are also raised in the effective set.  If this bit is not set, then after an "
2232 "B<execve>(2), none of the new permitted capabilities is in the new effective "
2233 "set."
2234 msgstr ""
2235 "これは集合ではなく、1 ビットの情報である。 このビットがセットされていると、 "
2236 "B<execve>(2)  実行中に、そのスレッドの新しい許可ケーパビリティが全て 実効ケー"
2237 "パビリティ集合においてもセットされる。 このビットがセットされていない場合、 "
2238 "B<execve>(2)  後には新しい許可ケーパビリティのどれも新しい実効ケーパビリティ"
2239 "集合 にセットされない。"
2240
2241 #. type: Plain text
2242 #: build/C/man7/capabilities.7:779
2243 msgid ""
2244 "Enabling the file effective capability bit implies that any file permitted "
2245 "or inheritable capability that causes a thread to acquire the corresponding "
2246 "permitted capability during an B<execve>(2)  (see the transformation rules "
2247 "described below) will also acquire that capability in its effective set.  "
2248 "Therefore, when assigning capabilities to a file (B<setcap>(8), "
2249 "B<cap_set_file>(3), B<cap_set_fd>(3)), if we specify the effective flag as "
2250 "being enabled for any capability, then the effective flag must also be "
2251 "specified as enabled for all other capabilities for which the corresponding "
2252 "permitted or inheritable flags is enabled."
2253 msgstr ""
2254 "ファイルの実効ケーパビリティビットを有効にするというのは、 B<execve>(2)  実行"
2255 "時に、ファイルの許可ケーパビリティと継承ケーパビリティに対応するものが スレッ"
2256 "ドの許可ケーパビリティセットとしてセットされるが、 これが実効ケーパビリティ"
2257 "セットにもセットされるということである (ケーパビリティの変換ルールは下記参"
2258 "照)。 したがって、ファイルにケーパビリティを割り当てる際 (B<setcap>(8), "
2259 "B<cap_set_file>(3), B<cap_set_fd>(3))、 いずれかのケーパビリティに対して実効"
2260 "フラグを有効と指定する場合、 許可フラグや継承可能フラグを有効にした他の全ての"
2261 "ケーパビリティ についても実効フラグを有効と指定しなければならない。"
2262
2263 #. type: SS
2264 #: build/C/man7/capabilities.7:779
2265 #, no-wrap
2266 msgid "Transformation of capabilities during execve()"
2267 msgstr "execve() 中のケーパビリティの変換"
2268
2269 #. type: Plain text
2270 #: build/C/man7/capabilities.7:785
2271 msgid ""
2272 "During an B<execve>(2), the kernel calculates the new capabilities of the "
2273 "process using the following algorithm:"
2274 msgstr ""
2275 "B<execve>(2)  実行時に、カーネルはプロセスの新しいケーパビリティを次の アルゴ"
2276 "リズムを用いて計算する:"
2277
2278 #. type: Plain text
2279 #: build/C/man7/capabilities.7:790
2280 #, no-wrap
2281 msgid ""
2282 "P'(permitted) = (P(inheritable) & F(inheritable)) |\n"
2283 "                (F(permitted) & cap_bset)\n"
2284 msgstr ""
2285 "P'(permitted) = (P(inheritable) & F(inheritable)) |\n"
2286 "                (F(permitted) & cap_bset)\n"
2287
2288 #. type: Plain text
2289 #: build/C/man7/capabilities.7:792
2290 #, no-wrap
2291 msgid "P'(effective) = F(effective) ? P'(permitted) : 0\n"
2292 msgstr "P'(effective) = F(effective) ? P'(permitted) : 0\n"
2293
2294 #. type: Plain text
2295 #: build/C/man7/capabilities.7:794
2296 #, no-wrap
2297 msgid "P'(inheritable) = P(inheritable)    [i.e., unchanged]\n"
2298 msgstr "P'(inheritable) = P(inheritable)    [つまり、変更されない]\n"
2299
2300 #. type: Plain text
2301 #: build/C/man7/capabilities.7:798
2302 msgid "where:"
2303 msgstr "各変数の意味は以下の通り:"
2304
2305 #. type: IP
2306 #: build/C/man7/capabilities.7:799
2307 #, no-wrap
2308 msgid "P"
2309 msgstr "P"
2310
2311 #. type: Plain text
2312 #: build/C/man7/capabilities.7:802
2313 msgid "denotes the value of a thread capability set before the B<execve>(2)"
2314 msgstr "B<execve>(2)  前のスレッドのケーパビリティセットの値"
2315
2316 #. type: IP
2317 #: build/C/man7/capabilities.7:802
2318 #, no-wrap
2319 msgid "P'"
2320 msgstr "P'"
2321
2322 #. type: Plain text
2323 #: build/C/man7/capabilities.7:805
2324 msgid "denotes the value of a capability set after the B<execve>(2)"
2325 msgstr "B<execve>(2)  後のスレッドのケーパビリティセットの値"
2326
2327 #. type: IP
2328 #: build/C/man7/capabilities.7:805
2329 #, no-wrap
2330 msgid "F"
2331 msgstr "F"
2332
2333 #. type: Plain text
2334 #: build/C/man7/capabilities.7:807
2335 msgid "denotes a file capability set"
2336 msgstr "ファイルケーパビリティセットの値"
2337
2338 #. type: IP
2339 #: build/C/man7/capabilities.7:807
2340 #, no-wrap
2341 msgid "cap_bset"
2342 msgstr "cap_bset"
2343
2344 #. type: Plain text
2345 #: build/C/man7/capabilities.7:809
2346 msgid "is the value of the capability bounding set (described below)."
2347 msgstr "ケーパビリティバウンディングセットの値 (下記参照)"
2348
2349 #. type: SS
2350 #: build/C/man7/capabilities.7:811
2351 #, no-wrap
2352 msgid "Capabilities and execution of programs by root"
2353 msgstr "ケーパビリティと、ルートによるプログラムの実行"
2354
2355 #. type: Plain text
2356 #: build/C/man7/capabilities.7:816
2357 msgid ""
2358 "In order to provide an all-powerful I<root> using capability sets, during an "
2359 "B<execve>(2):"
2360 msgstr ""
2361 "B<execve>(2)  時に、ケーパビリティセットを使って、全ての権限を持った I<root> "
2362 "を実現するには、以下のようにする。"
2363
2364 #. type: Plain text
2365 #: build/C/man7/capabilities.7:821
2366 msgid ""
2367 "If a set-user-ID-root program is being executed, or the real user ID of the "
2368 "process is 0 (root)  then the file inheritable and permitted sets are "
2369 "defined to be all ones (i.e., all capabilities enabled)."
2370 msgstr ""
2371 "set-user-ID-root プログラムが実行される場合、 またはプロセスの実ユーザ ID が "
2372 "0 (root) の場合、 ファイルの継承可能セットと許可セットを全て 1 (全てのケーパ"
2373 "ビリティが有効) に定義する。"
2374
2375 #. type: Plain text
2376 #: build/C/man7/capabilities.7:824
2377 msgid ""
2378 "If a set-user-ID-root program is being executed, then the file effective bit "
2379 "is defined to be one (enabled)."
2380 msgstr ""
2381 "set-user-ID-root プログラムが実行される場合、 ファイルの実効ケーパビリティ"
2382 "ビットを 1 (enabled) に定義する。"
2383
2384 #.  If a process with real UID 0, and nonzero effective UID does an
2385 #.  exec(), then it gets all capabilities in its
2386 #.  permitted set, and no effective capabilities
2387 #. type: Plain text
2388 #: build/C/man7/capabilities.7:839
2389 msgid ""
2390 "The upshot of the above rules, combined with the capabilities "
2391 "transformations described above, is that when a process B<execve>(2)s a set-"
2392 "user-ID-root program, or when a process with an effective UID of 0 "
2393 "B<execve>(2)s a program, it gains all capabilities in its permitted and "
2394 "effective capability sets, except those masked out by the capability "
2395 "bounding set.  This provides semantics that are the same as those provided "
2396 "by traditional UNIX systems."
2397 msgstr ""
2398 "上記のルールにケーパビリティ変換を適用した結果をまとめると、 プロセスが set-"
2399 "user-ID-root プログラムを B<execve>(2)  する場合、または実効 UID が 0 のプロ"
2400 "セスがプログラムを B<execve>(2)  する場合、許可と実効のケーパビリティセットの"
2401 "全ケーパビリティ (正確には、ケーパビリティバウンディングセットによるマスクで"
2402 "除外されるもの 以外の全てのケーパビリティ) を取得するということである。 これ"
2403 "により、伝統的な UNIX システムと同じ振る舞いができるようになっている。"
2404
2405 #. type: SS
2406 #: build/C/man7/capabilities.7:839
2407 #, no-wrap
2408 msgid "Capability bounding set"
2409 msgstr "ケーパビリティ・バウンディングセット"
2410
2411 #. type: Plain text
2412 #: build/C/man7/capabilities.7:844
2413 msgid ""
2414 "The capability bounding set is a security mechanism that can be used to "
2415 "limit the capabilities that can be gained during an B<execve>(2).  The "
2416 "bounding set is used in the following ways:"
2417 msgstr ""
2418 "ケーパビリティ・バウンディングセット (capability bounding set) は、 "
2419 "B<execve>(2)  時に獲得できるケーパビリティを制限するために使われる セキュリ"
2420 "ティ機構である。 バウンディングセットは以下のように使用される。"
2421
2422 #. type: Plain text
2423 #: build/C/man7/capabilities.7:852
2424 msgid ""
2425 "During an B<execve>(2), the capability bounding set is ANDed with the file "
2426 "permitted capability set, and the result of this operation is assigned to "
2427 "the thread's permitted capability set.  The capability bounding set thus "
2428 "places a limit on the permitted capabilities that may be granted by an "
2429 "executable file."
2430 msgstr ""
2431 "B<execve>(2)  実行時に、ケーパビリティ・バウンディングセットと ファイルの許可"
2432 "ケーパビリティセットの論理和 (AND) を取ったものが、 そのスレッドの許可ケーパ"
2433 "ビリティセットに割り当てられる。 つまり、ケーパビリティ・バウンディングセット"
2434 "は、 実行ファイルが認めている許可ケーパビリティに対して 制限を課す働きをす"
2435 "る。"
2436
2437 #. type: Plain text
2438 #: build/C/man7/capabilities.7:864
2439 msgid ""
2440 "(Since Linux 2.6.25)  The capability bounding set acts as a limiting "
2441 "superset for the capabilities that a thread can add to its inheritable set "
2442 "using B<capset>(2).  This means that if a capability is not in the bounding "
2443 "set, then a thread can't add this capability to its inheritable set, even if "
2444 "it was in its permitted capabilities, and thereby cannot have this "
2445 "capability preserved in its permitted set when it B<execve>(2)s a file that "
2446 "has the capability in its inheritable set."
2447 msgstr ""
2448 "(Linux 2.6.25 以降)  ケーパビリティ・バウンディングセットは、スレッドが "
2449 "B<capset>(2)  により自身の継承可能セットに追加可能なケーパビリティの母集団を "
2450 "制限する役割を持つ。 スレッドに許可されたケーパビリティであっても、バウンディ"
2451 "ングセットに 含まれていなければ、スレッドはそのケーパビリティは自身の継承可能"
2452 "セットに 追加できず、その結果、継承可能セットにそのケーパビリティを含むファイ"
2453 "ルを B<execve>(2)  する場合、そのケーパビリティを許可セットに持ち続けることが"
2454 "できない、 ということである。"
2455
2456 #. type: Plain text
2457 #: build/C/man7/capabilities.7:871
2458 msgid ""
2459 "Note that the bounding set masks the file permitted capabilities, but not "
2460 "the inherited capabilities.  If a thread maintains a capability in its "
2461 "inherited set that is not in its bounding set, then it can still gain that "
2462 "capability in its permitted set by executing a file that has the capability "
2463 "in its inherited set."
2464 msgstr ""
2465 "バウンディングセットがマスクを行うのは、継承可能ケーパビリティではなく、 ファ"
2466 "イルの許可ケーパビリティのマスクを行う点に注意すること。 あるスレッドの継承可"
2467 "能セットにそのスレッドのバウンディングセットに 存在しないケーパビリティが含ま"
2468 "れている場合、そのスレッドは、 継承可能セットに含まれるケーパビリティを持つ"
2469 "ファイルを実行することにより、 許可セットに含まれるケーパビリティも獲得できる"
2470 "ということである。"
2471
2472 #. type: Plain text
2473 #: build/C/man7/capabilities.7:874
2474 msgid ""
2475 "Depending on the kernel version, the capability bounding set is either a "
2476 "system-wide attribute, or a per-process attribute."
2477 msgstr ""
2478 "カーネルのバージョンにより、ケーパビリティ・バウンディングセットは システム共"
2479 "通の属性の場合と、プロセス単位の属性の場合がある。"
2480
2481 #. type: Plain text
2482 #: build/C/man7/capabilities.7:876
2483 msgid "B<Capability bounding set prior to Linux 2.6.25>"
2484 msgstr "B<Linux 2.6.25 より前のケーパビリティ・バウンディングセット>"
2485
2486 #. type: Plain text
2487 #: build/C/man7/capabilities.7:884
2488 msgid ""
2489 "In kernels before 2.6.25, the capability bounding set is a system-wide "
2490 "attribute that affects all threads on the system.  The bounding set is "
2491 "accessible via the file I</proc/sys/kernel/cap-bound>.  (Confusingly, this "
2492 "bit mask parameter is expressed as a signed decimal number in I</proc/sys/"
2493 "kernel/cap-bound>.)"
2494 msgstr ""
2495 "2.6.25 より前のカーネルでは、ケーパビリティ・バウンディングセットは システム"
2496 "共通の属性で、システム上の全てのスレッドに適用される。 バウンディングセット"
2497 "は I</proc/sys/kernel/cap-bound> ファイル経由で参照できる。 (間違えやすいが、"
2498 "このビットマスク形式のパラメータは、 I</proc/sys/kernel/cap-bound> では符号付"
2499 "きの十進数で表現される。)"
2500
2501 #. type: Plain text
2502 #: build/C/man7/capabilities.7:891
2503 msgid ""
2504 "Only the B<init> process may set capabilities in the capability bounding "
2505 "set; other than that, the superuser (more precisely: programs with the "
2506 "B<CAP_SYS_MODULE> capability) may only clear capabilities from this set."
2507 msgstr ""
2508 "B<init> プロセスだけがケーパビリティ・バウンディングセットで ケーパビリティを"
2509 "セットすることができる。 それ以外では、スーパーユーザ (より正確には、 "
2510 "B<CAP_SYS_MODULE> ケーパビリティを持ったプログラム) が、 ケーパビリティ・バウ"
2511 "ンディングセットのケーパビリティのクリアが できるだけである。"
2512
2513 #. type: Plain text
2514 #: build/C/man7/capabilities.7:900
2515 msgid ""
2516 "On a standard system the capability bounding set always masks out the "
2517 "B<CAP_SETPCAP> capability.  To remove this restriction (dangerous!), modify "
2518 "the definition of B<CAP_INIT_EFF_SET> in I<include/linux/capability.h> and "
2519 "rebuild the kernel."
2520 msgstr ""
2521 "通常のシステムでは、ケーパビリティ・バウンディングセットは、 B<CAP_SETPCAP> "
2522 "が無効になっている。 この制限を取り去るには (取り去るのは危険!)、 I<include/"
2523 "linux/capability.h> 内の B<CAP_INIT_EFF_SET> の定義を修正し、カーネルを再構築"
2524 "する必要がある。"
2525
2526 #. type: Plain text
2527 #: build/C/man7/capabilities.7:904
2528 msgid ""
2529 "The system-wide capability bounding set feature was added to Linux starting "
2530 "with kernel version 2.2.11."
2531 msgstr ""
2532 "システム共通のケーパビリティ・バウンディングセット機能は、 カーネル 2.2.11 以"
2533 "降で Linux に追加された。"
2534
2535 #. type: Plain text
2536 #: build/C/man7/capabilities.7:906
2537 msgid "B<Capability bounding set from Linux 2.6.25 onward>"
2538 msgstr "B<Linux 2.6.25 以降のケーパビリティ・バウンディングセット>"
2539
2540 #. type: Plain text
2541 #: build/C/man7/capabilities.7:911
2542 msgid ""
2543 "From Linux 2.6.25, the I<capability bounding set> is a per-thread "
2544 "attribute.  (There is no longer a system-wide capability bounding set.)"
2545 msgstr ""
2546 "Linux 2.6.25 以降では、 「ケーパビリティ・バウンディングセット」はスレッド単"
2547 "位の属性である (システム共通のケーパビリティ・バウンディングセットはもはや存"
2548 "在しない)。"
2549
2550 #. type: Plain text
2551 #: build/C/man7/capabilities.7:916
2552 msgid ""
2553 "The bounding set is inherited at B<fork>(2)  from the thread's parent, and "
2554 "is preserved across an B<execve>(2)."
2555 msgstr ""
2556 "バウンディングセットは B<fork>(2)  時にはスレッドの親プロセスから継承され、 "
2557 "B<execve>(2)  の前後では保持される。"
2558
2559 #. type: Plain text
2560 #: build/C/man7/capabilities.7:929
2561 msgid ""
2562 "A thread may remove capabilities from its capability bounding set using the "
2563 "B<prctl>(2)  B<PR_CAPBSET_DROP> operation, provided it has the "
2564 "B<CAP_SETPCAP> capability.  Once a capability has been dropped from the "
2565 "bounding set, it cannot be restored to that set.  A thread can determine if "
2566 "a capability is in its bounding set using the B<prctl>(2)  "
2567 "B<PR_CAPBSET_READ> operation."
2568 msgstr ""
2569 "スレッドが B<CAP_SETPCAP> ケーパビリティを持っている場合、そのスレッドは "
2570 "B<prctl>(2)  の B<PR_CAPBSET_DROP> 操作を使って自身のケーパビリティ・バウン"
2571 "ディングセットから ケーパビリティを削除することができる。 いったんケーパビリ"
2572 "ティをバウンディングセットから削除してしまうと、 スレッドはそのケーパビリティ"
2573 "を再度セットすることはできない。 B<prctl>(2)  の B<PR_CAPBSET_READ> 操作を使"
2574 "うことで、スレッドがあるケーパビリティが自身のバウンディングセット に含まれて"
2575 "いるかを知ることができる。"
2576
2577 #. type: Plain text
2578 #: build/C/man7/capabilities.7:947
2579 msgid ""
2580 "Removing capabilities from the bounding set is supported only if file "
2581 "capabilities are compiled into the kernel.  In kernels before Linux 2.6.33, "
2582 "file capabilities were an optional feature configurable via the "
2583 "B<CONFIG_SECURITY_FILE_CAPABILITIES> option.  Since Linux 2.6.33, the "
2584 "configuration option has been removed and file capabilities are always part "
2585 "of the kernel.  When file capabilities are compiled into the kernel, the "
2586 "B<init> process (the ancestor of all processes) begins with a full bounding "
2587 "set.  If file capabilities are not compiled into the kernel, then B<init> "
2588 "begins with a full bounding set minus B<CAP_SETPCAP>, because this "
2589 "capability has a different meaning when there are no file capabilities."
2590 msgstr ""
2591 "バウンディングセットからのケーパビリティの削除がサポートされるのは、\n"
2592 "カーネルのコンパイル時にファイルケーパビリティが有効になっている場合\n"
2593 "だけである。Linux 2.6.33 より前のカーネルでは、ファイルケーパビリティは\n"
2594 "設定オプション B<CONFIG_SECURITY_FILE_CAPABILITIES> で切り替えられる追加の\n"
2595 "機能であった。Linux 2.6.33 以降では、この設定オプションは削除され、\n"
2596 "ファイルケーパビリティは常にカーネルに組込まれるようになった。\n"
2597 "ファイルケーパビリティがカーネルにコンパイル時に組み込まれている場合、\n"
2598 "(全てのプロセスの先祖である) I<init> プロセスはバウンディングセットで\n"
2599 "全てのケーパビリティが セットされた状態で開始する。ファイルケーパビリティ\n"
2600 "が有効になっていない場合には、 I<init> はバウンディングセットで\n"
2601 "B<CAP_SETPCAP> 以外の全てのケーパビリティがセットされた状態で開始する。\n"
2602 "このようになっているのは、 B<CAP_SETPCAP> ケーパビリティがファイルケー\n"
2603 "パビリティがサポートされていない場合には 違った意味を持つからである。"
2604
2605 #. type: Plain text
2606 #: build/C/man7/capabilities.7:954
2607 msgid ""
2608 "Removing a capability from the bounding set does not remove it from the "
2609 "thread's inherited set.  However it does prevent the capability from being "
2610 "added back into the thread's inherited set in the future."
2611 msgstr ""
2612 "バウンディングセットからケーパビリティを削除しても、 スレッドの継承可能セット"
2613 "からはそのケーパビリティは削除されない。 しかしながら、バウンディングセットか"
2614 "らの削除により、 この先そのケーパビリティをスレッドの継承可能セットに追加する"
2615 "こと はできなくなる。"
2616
2617 #. type: SS
2618 #: build/C/man7/capabilities.7:954
2619 #, no-wrap
2620 msgid "Effect of user ID changes on capabilities"
2621 msgstr "ユーザ ID 変更のケーパビリティへの影響"
2622
2623 #. type: Plain text
2624 #: build/C/man7/capabilities.7:963
2625 msgid ""
2626 "To preserve the traditional semantics for transitions between 0 and nonzero "
2627 "user IDs, the kernel makes the following changes to a thread's capability "
2628 "sets on changes to the thread's real, effective, saved set, and filesystem "
2629 "user IDs (using B<setuid>(2), B<setresuid>(2), or similar):"
2630 msgstr ""
2631 "ユーザ ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、 ス"
2632 "レッドの実 UID、実効 UID、保存 set-user-ID、ファイルシステム UID が "
2633 "(B<setuid>(2), B<setresuid>(2)  などを使って) 変更された際に、カーネルはその"
2634 "スレッドのケーパビリティセットに 以下の変更を行う:"
2635
2636 #. type: Plain text
2637 #: build/C/man7/capabilities.7:969
2638 msgid ""
2639 "If one or more of the real, effective or saved set user IDs was previously "
2640 "0, and as a result of the UID changes all of these IDs have a nonzero value, "
2641 "then all capabilities are cleared from the permitted and effective "
2642 "capability sets."
2643 msgstr ""
2644 "UID の変更前には実 UID、実効 UID、保存 set-user-ID のうち 少なくとも一つが 0 "
2645 "で、変更後に実 UID、実効 UID、保存 set-user-ID が すべて 0 以外の値になった場"
2646 "合、許可と実効のケーパビリティセットの 全ケーパビリティをクリアする。"
2647
2648 #. type: Plain text
2649 #: build/C/man7/capabilities.7:972
2650 msgid ""
2651 "If the effective user ID is changed from 0 to nonzero, then all capabilities "
2652 "are cleared from the effective set."
2653 msgstr ""
2654 "実効 UID が 0 から 0 以外に変更された場合、 実効ケーパビリティセットの全ケー"
2655 "パビリティをクリアする。"
2656
2657 #. type: Plain text
2658 #: build/C/man7/capabilities.7:975
2659 msgid ""
2660 "If the effective user ID is changed from nonzero to 0, then the permitted "
2661 "set is copied to the effective set."
2662 msgstr ""
2663 "実効 UID が 0 以外から 0 に変更された場合、 許可ケーパビリティセットの内容を"
2664 "実効ケーパビリティセットにコピーする。"
2665
2666 #. type: IP
2667 #: build/C/man7/capabilities.7:975 build/C/man7/capabilities.7:1030
2668 #: build/C/man7/user_namespaces.7:529
2669 #, no-wrap
2670 msgid "4."
2671 msgstr "4."
2672
2673 #. type: Plain text
2674 #: build/C/man7/capabilities.7:993
2675 msgid ""
2676 "If the filesystem user ID is changed from 0 to nonzero (see B<setfsuid>(2)), "
2677 "then the following capabilities are cleared from the effective set: "
2678 "B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, "
2679 "B<CAP_FSETID>, B<CAP_LINUX_IMMUTABLE> (since Linux 2.6.30), "
2680 "B<CAP_MAC_OVERRIDE>, and B<CAP_MKNOD> (since Linux 2.6.30).  If the "
2681 "filesystem UID is changed from nonzero to 0, then any of these capabilities "
2682 "that are enabled in the permitted set are enabled in the effective set."
2683 msgstr ""
2684 "ファイルシステム UID が 0 から 0 以外に変更された場合 (B<setfsuid>(2)  参"
2685 "照)、実効ケーパビリティセットの以下のケーパビリティがクリアされる: "
2686 "B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, "
2687 "B<CAP_FSETID>, B<CAP_LINUX_IMMUTABLE> (Linux 2.6.30 以降), "
2688 "B<CAP_MAC_OVERRIDE>, B<CAP_MKNOD> (Linux 2.6.30 以降)。 ファイルシステム UID "
2689 "が 0 以外から 0 に変更された場合、 上記のケーパビリティのうち許可ケーパビリ"
2690 "ティセットで有効になっているものが 実効ケーパビリティセットで有効にされる。"
2691
2692 #. type: Plain text
2693 #: build/C/man7/capabilities.7:1001
2694 msgid ""
2695 "If a thread that has a 0 value for one or more of its user IDs wants to "
2696 "prevent its permitted capability set being cleared when it resets all of its "
2697 "user IDs to nonzero values, it can do so using the B<prctl>(2)  "
2698 "B<PR_SET_KEEPCAPS> operation."
2699 msgstr ""
2700 "各種 UID のうち少なくとも一つが 0 であるスレッドが、 その UID の全てが 0 以外"
2701 "になったときに許可ケーパビリティセットが クリアされないようにしたい場合に"
2702 "は、 B<prctl>(2)  の B<PR_SET_KEEPCAPS> 操作を使えばよい。"
2703
2704 #. type: SS
2705 #: build/C/man7/capabilities.7:1001
2706 #, no-wrap
2707 msgid "Programmatically adjusting capability sets"
2708 msgstr "プログラムでケーパビリティセットを調整する"
2709
2710 #. type: Plain text
2711 #: build/C/man7/capabilities.7:1016
2712 msgid ""
2713 "A thread can retrieve and change its capability sets using the B<capget>(2)  "
2714 "and B<capset>(2)  system calls.  However, the use of B<cap_get_proc>(3)  and "
2715 "B<cap_set_proc>(3), both provided in the I<libcap> package, is preferred for "
2716 "this purpose.  The following rules govern changes to the thread capability "
2717 "sets:"
2718 msgstr ""
2719 "各スレッドは、 B<capget>(2)  や B<capset>(2)  を使って、自身のケーパビリティ"
2720 "セットを取得したり変更したりできる。 ただし、これを行うには、 I<libcap> パッ"
2721 "ケージで提供されている B<cap_get_proc>(3)  や B<cap_set_proc>(3)  を使うのが"
2722 "望ましい。 スレッドのケーパビリティセットの変更には以下のルールが適用される。"
2723
2724 #. type: Plain text
2725 #: build/C/man7/capabilities.7:1022
2726 msgid ""
2727 "If the caller does not have the B<CAP_SETPCAP> capability, the new "
2728 "inheritable set must be a subset of the combination of the existing "
2729 "inheritable and permitted sets."
2730 msgstr ""
2731 "呼び出し側が B<CAP_SETPCAP> ケーパビリティを持っていない場合、新しい継承可能"
2732 "セットは、 既存の継承可能セットと許可セットの積集合 (AND) の部分集合で なけれ"
2733 "ばならない。"
2734
2735 #. type: Plain text
2736 #: build/C/man7/capabilities.7:1026
2737 msgid ""
2738 "(Since Linux 2.6.25)  The new inheritable set must be a subset of the "
2739 "combination of the existing inheritable set and the capability bounding set."
2740 msgstr ""
2741 "(Linux 2.6.25 以降)  新しい継承可能セットは、既存の継承可能セットとケーパビリ"
2742 "ティ・ バウンディングセットの積集合 (AND) の部分集合でなければならない。"
2743
2744 #. type: Plain text
2745 #: build/C/man7/capabilities.7:1030
2746 msgid ""
2747 "The new permitted set must be a subset of the existing permitted set (i.e., "
2748 "it is not possible to acquire permitted capabilities that the thread does "
2749 "not currently have)."
2750 msgstr ""
2751 "新しい許可セットは、既存の許可セットの部分集合でなければならない (つまり、そ"
2752 "のスレッドが現在持っていない許可ケーパビリティを 獲得することはできない)。"
2753
2754 #. type: Plain text
2755 #: build/C/man7/capabilities.7:1032
2756 msgid "The new effective set must be a subset of the new permitted set."
2757 msgstr ""
2758 "新しい実効ケーパビリティセットは新しい許可ケーパビリティセットの 部分集合に"
2759 "なっていなければならない。"
2760
2761 #. type: SS
2762 #: build/C/man7/capabilities.7:1032
2763 #, no-wrap
2764 msgid "The securebits flags: establishing a capabilities-only environment"
2765 msgstr "securebits フラグ: ケーパビリティだけの環境を構築する"
2766
2767 #.  For some background:
2768 #.        see http://lwn.net/Articles/280279/ and
2769 #.        http://article.gmane.org/gmane.linux.kernel.lsm/5476/
2770 #. type: Plain text
2771 #: build/C/man7/capabilities.7:1043
2772 msgid ""
2773 "Starting with kernel 2.6.26, and with a kernel in which file capabilities "
2774 "are enabled, Linux implements a set of per-thread I<securebits> flags that "
2775 "can be used to disable special handling of capabilities for UID 0 "
2776 "(I<root>).  These flags are as follows:"
2777 msgstr ""
2778 "カーネル 2.6.26 以降で、 ファイルケーパビリティが有効になったカーネルでは、 "
2779 "スレッド単位の I<securebits> フラグが実装されており、このフラグを使うと UID "
2780 "0 (I<root>)  に対するケーパビリティの特別扱いを無効することができる。 以下の"
2781 "ようなフラグがある。"
2782
2783 #. type: TP
2784 #: build/C/man7/capabilities.7:1043
2785 #, no-wrap
2786 msgid "B<SECBIT_KEEP_CAPS>"
2787 msgstr "B<SECBIT_KEEP_CAPS>"
2788
2789 #. type: Plain text
2790 #: build/C/man7/capabilities.7:1055
2791 msgid ""
2792 "Setting this flag allows a thread that has one or more 0 UIDs to retain its "
2793 "capabilities when it switches all of its UIDs to a nonzero value.  If this "
2794 "flag is not set, then such a UID switch causes the thread to lose all "
2795 "capabilities.  This flag is always cleared on an B<execve>(2).  (This flag "
2796 "provides the same functionality as the older B<prctl>(2)  B<PR_SET_KEEPCAPS> "
2797 "operation.)"
2798 msgstr ""
2799 "このフラグをセットされている場合、UID が 0 のスレッドの UID が 0 以外の値に "
2800 "切り替わる際に、そのスレッドはケーパビリティを維持することができる。 このフラ"
2801 "グがセットされていない場合には、UID が 0 から 0 以外の値に 切り替わると、その"
2802 "スレッドは全てのケーパビリティを失う。 このフラグは B<execve>(2)  時には全て"
2803 "クリアされる (このフラグは、以前の B<prctl>(2)  の B<PR_SET_KEEPCAPS> 操作と"
2804 "同じ機能を提供するものである)。"
2805
2806 #. type: TP
2807 #: build/C/man7/capabilities.7:1055
2808 #, no-wrap
2809 msgid "B<SECBIT_NO_SETUID_FIXUP>"
2810 msgstr "B<SECBIT_NO_SETUID_FIXUP>"
2811
2812 #. type: Plain text
2813 #: build/C/man7/capabilities.7:1062
2814 msgid ""
2815 "Setting this flag stops the kernel from adjusting capability sets when the "
2816 "threads's effective and filesystem UIDs are switched between zero and "
2817 "nonzero values.  (See the subsection I<Effect of User ID Changes on "
2818 "Capabilities>.)"
2819 msgstr ""
2820 "このフラグをセットすると、スレッドの実効 UID とファイルシステム UID が 0 と "
2821 "0 以外の間で切り替わった場合に、 カーネルはケーパビリティセットの調整を行わな"
2822 "くなる (「ユーザ ID 変更のケーパビリティへの影響」の節を参照)。"
2823
2824 #. type: TP
2825 #: build/C/man7/capabilities.7:1062
2826 #, no-wrap
2827 msgid "B<SECBIT_NOROOT>"
2828 msgstr "B<SECBIT_NOROOT>"
2829
2830 #. type: Plain text
2831 #: build/C/man7/capabilities.7:1070
2832 msgid ""
2833 "If this bit is set, then the kernel does not grant capabilities when a set-"
2834 "user-ID-root program is executed, or when a process with an effective or "
2835 "real UID of 0 calls B<execve>(2).  (See the subsection I<Capabilities and "
2836 "execution of programs by root>.)"
2837 msgstr ""
2838 "このビットがセットされている場合、 set-user-ID-root プログラムの実行時や、 実"
2839 "効 UID か 実 UID が 0 のプロセスが B<execve>(2)  を呼び出した時に、カーネルは"
2840 "ケーパビリティを許可しない (「ケーパビリティと、ルートによるプログラムの実"
2841 "行」の節を参照)。"
2842
2843 #. type: Plain text
2844 #: build/C/man7/capabilities.7:1080
2845 msgid ""
2846 "Each of the above \"base\" flags has a companion \"locked\" flag.  Setting "
2847 "any of the \"locked\" flags is irreversible, and has the effect of "
2848 "preventing further changes to the corresponding \"base\" flag.  The locked "
2849 "flags are: B<SECBIT_KEEP_CAPS_LOCKED>, B<SECBIT_NO_SETUID_FIXUP_LOCKED>, and "
2850 "B<SECBIT_NOROOT_LOCKED>."
2851 msgstr ""
2852 "上記の \"base\" フラグの各々には対応する \"locked\" フラグが存在する。 いずれ"
2853 "の \"locked\" フラグも一度セットされると戻すことはできず、 それ以降は対応す"
2854 "る \"base\" フラグを変更することができなくなる。 \"locked\" フラグは "
2855 "B<SECBIT_KEEP_CAPS_LOCKED>, B<SECBIT_NO_SETUID_FIXUP_LOCKED>, "
2856 "B<SECBIT_NOROOT_LOCKED> という名前である。"
2857
2858 #. type: Plain text
2859 #: build/C/man7/capabilities.7:1092
2860 msgid ""
2861 "The I<securebits> flags can be modified and retrieved using the B<prctl>(2)  "
2862 "B<PR_SET_SECUREBITS> and B<PR_GET_SECUREBITS> operations.  The "
2863 "B<CAP_SETPCAP> capability is required to modify the flags."
2864 msgstr ""
2865 "I<securebits> フラグは、 B<prctl>(2)  の操作 B<PR_SET_SECUREBITS> や "
2866 "B<PR_GET_SECUREBITS> を使うことで変更したり取得したりできる。 フラグを変更す"
2867 "るには B<CAP_SETPCAP> ケーパビリティが必要である。"
2868
2869 #. type: Plain text
2870 #: build/C/man7/capabilities.7:1101
2871 msgid ""
2872 "The I<securebits> flags are inherited by child processes.  During an "
2873 "B<execve>(2), all of the flags are preserved, except B<SECBIT_KEEP_CAPS> "
2874 "which is always cleared."
2875 msgstr ""
2876 "I<securebits> フラグは子プロセスに継承される。 B<execve>(2) においては、\n"
2877 "B<SECBIT_KEEP_CAPS> が常にクリアされる以外は、全てのフラグが保持される。"
2878
2879 #. type: Plain text
2880 #: build/C/man7/capabilities.7:1106
2881 msgid ""
2882 "An application can use the following call to lock itself, and all of its "
2883 "descendants, into an environment where the only way of gaining capabilities "
2884 "is by executing a program with associated file capabilities:"
2885 msgstr ""
2886 "アプリケーションは、以下の呼び出しを行うことにより、 自分自身および子孫となる"
2887 "プロセス全てに対して、 必要なファイルケーパビリティを持ったプログラムを実行し"
2888 "ない限り、 対応するケーパビリティを獲得できないような状況に閉じこめることがで"
2889 "きる。"
2890
2891 #. type: Plain text
2892 #: build/C/man7/capabilities.7:1115
2893 #, no-wrap
2894 msgid ""
2895 "prctl(PR_SET_SECUREBITS,\n"
2896 "        SECBIT_KEEP_CAPS_LOCKED |\n"
2897 "        SECBIT_NO_SETUID_FIXUP |\n"
2898 "        SECBIT_NO_SETUID_FIXUP_LOCKED |\n"
2899 "        SECBIT_NOROOT |\n"
2900 "        SECBIT_NOROOT_LOCKED);\n"
2901 msgstr ""
2902 "prctl(PR_SET_SECUREBITS,\n"
2903 "        SECBIT_KEEP_CAPS_LOCKED |\n"
2904 "        SECBIT_NO_SETUID_FIXUP |\n"
2905 "        SECBIT_NO_SETUID_FIXUP_LOCKED |\n"
2906 "        SECBIT_NOROOT |\n"
2907 "        SECBIT_NOROOT_LOCKED);\n"
2908
2909 #. type: SS
2910 #: build/C/man7/capabilities.7:1117
2911 #, no-wrap
2912 msgid "Interaction with user namespaces"
2913 msgstr ""
2914
2915 #. type: Plain text
2916 #: build/C/man7/capabilities.7:1120
2917 msgid ""
2918 "For a discussion of the interaction of capabilities and user namespaces, see "
2919 "B<user_namespaces>(7)."
2920 msgstr ""
2921
2922 #. type: Plain text
2923 #: build/C/man7/capabilities.7:1126
2924 msgid ""
2925 "No standards govern capabilities, but the Linux capability implementation is "
2926 "based on the withdrawn POSIX.1e draft standard; see E<.UR http://wt."
2927 "tuxomania.net\\:/publications\\:/posix.1e/> E<.UE .>"
2928 msgstr ""
2929 "ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった "
2930 "POSIX.1e 草案に基づいて実装されている。 E<.UR http://wt.xpilot.org\\:/"
2931 "publications\\:/posix.1e/> E<.UE> を参照。"
2932
2933 #. type: Plain text
2934 #: build/C/man7/capabilities.7:1131
2935 msgid ""
2936 "Since kernel 2.5.27, capabilities are an optional kernel component, and can "
2937 "be enabled/disabled via the B<CONFIG_SECURITY_CAPABILITIES> kernel "
2938 "configuration option."
2939 msgstr ""
2940 "カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となって"
2941 "おり、カーネル設定オプション B<CONFIG_SECURITY_CAPABILITIES> により有効/無効"
2942 "を切り替えることができる。"
2943
2944 #.  7b9a7ec565505699f503b4fcf61500dceb36e744
2945 #. type: Plain text
2946 #: build/C/man7/capabilities.7:1145
2947 msgid ""
2948 "The I</proc/PID/task/TID/status> file can be used to view the capability "
2949 "sets of a thread.  The I</proc/PID/status> file shows the capability sets of "
2950 "a process's main thread.  Before Linux 3.8, nonexistent capabilities were "
2951 "shown as being enabled (1) in these sets.  Since Linux 3.8, all nonexistent "
2952 "capabilities (above B<CAP_LAST_CAP>)  are shown as disabled (0)."
2953 msgstr ""
2954 "I</proc/PID/task/TID/status> ファイルを使うと、スレッドのケーパビリティセット"
2955 "を見ることができる。 I</proc/PID/status> ファイルには、プロセスのメインスレッ"
2956 "ドのケーパビリティセットが表示される。 Linux 3.8 より前では、 これらのケーパ"
2957 "ビリティセットの表示で、 存在しないケーパビリティはすべて有効 (1) として表示"
2958 "される。 Linux 3.8 以降では、 存在しないケーパビリティはすべて無効 (0) として"
2959 "表示される。 (B<CAP_LAST_CAP> より大きい値を持つケーパビリティが存在しない"
2960 "ケーパビリティである)。"
2961
2962 #. type: Plain text
2963 #: build/C/man7/capabilities.7:1160
2964 msgid ""
2965 "The I<libcap> package provides a suite of routines for setting and getting "
2966 "capabilities that is more comfortable and less likely to change than the "
2967 "interface provided by B<capset>(2)  and B<capget>(2).  This package also "
2968 "provides the B<setcap>(8)  and B<getcap>(8)  programs.  It can be found at"
2969 msgstr ""
2970 "I<libcap> パッケージは、ケーパビリティを設定・取得するための ルーチン群を提供"
2971 "している。これらのインタフェースは、 B<capset>(2)  と B<capget>(2)  が提供す"
2972 "るインターフェースと比べて、より使いやすく、変更される可能性が少ない。 この"
2973 "パッケージでは、 B<setcap>(8), B<getcap>(8)  というプログラムも提供されてい"
2974 "る。 パッケージは以下で入手できる。"
2975
2976 #. type: Plain text
2977 #: build/C/man7/capabilities.7:1163
2978 msgid ""
2979 "E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/libs\\:/security\\:/linux-"
2980 "privs> E<.UE .>"
2981 msgstr ""
2982 "E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/libs\\:/security\\:/linux-"
2983 "privs> E<.UE .>"
2984
2985 #. type: Plain text
2986 #: build/C/man7/capabilities.7:1172
2987 msgid ""
2988 "Before kernel 2.6.24, and since kernel 2.6.24 if file capabilities are not "
2989 "enabled, a thread with the B<CAP_SETPCAP> capability can manipulate the "
2990 "capabilities of threads other than itself.  However, this is only "
2991 "theoretically possible, since no thread ever has B<CAP_SETPCAP> in either of "
2992 "these cases:"
2993 msgstr ""
2994 "バージョン 2.6.24 より前、およびファイルケーパビリティが 有効になっていない"
2995 "2.6.24 以降のカーネルでは、 B<CAP_SETPCAP> ケーパビリティを持ったスレッドは自"
2996 "分以外のスレッドの ケーパビリティを操作できる。 しかしながら、これは理論的に"
2997 "可能というだけである。 以下のいずれかの場合においても、どのスレッドも "
2998 "B<CAP_SETPCAP> ケーパビリティを持つことはないからである。"
2999
3000 #. type: Plain text
3001 #: build/C/man7/capabilities.7:1177
3002 msgid ""
3003 "In the pre-2.6.25 implementation the system-wide capability bounding set, I</"
3004 "proc/sys/kernel/cap-bound>, always masks out this capability, and this can "
3005 "not be changed without modifying the kernel source and rebuilding."
3006 msgstr ""
3007 "2.6.25 より前の実装では、システム共通のケーパビリティ・バウンディングセット "
3008 "I</proc/sys/kernel/cap-bound> ではこのケーパビリティは常に無効になっており、 "
3009 "ソースを変更してカーネルを再コンパイルしない限り、 これを変更することはできな"
3010 "い。"
3011
3012 #. type: Plain text
3013 #: build/C/man7/capabilities.7:1183
3014 msgid ""
3015 "If file capabilities are disabled in the current implementation, then "
3016 "B<init> starts out with this capability removed from its per-process "
3017 "bounding set, and that bounding set is inherited by all other processes "
3018 "created on the system."
3019 msgstr ""
3020 "現在の実装ではファイルケーパビリティが無効になっている場合、 プロセス毎のバウ"
3021 "ンディングセットからこのケーパビリティを抜いて B<init> は開始され、 システム"
3022 "上で生成される他の全てのプロセスでこのバウンディングセットが 継承される。"
3023
3024 #. type: Plain text
3025 #: build/C/man7/capabilities.7:1202
3026 msgid ""
3027 "B<capsh>(1), B<capget>(2), B<prctl>(2), B<setfsuid>(2), B<cap_clear>(3), "
3028 "B<cap_copy_ext>(3), B<cap_from_text>(3), B<cap_get_file>(3), "
3029 "B<cap_get_proc>(3), B<cap_init>(3), B<capgetp>(3), B<capsetp>(3), "
3030 "B<libcap>(3), B<credentials>(7), B<user_namespaces>(7), B<pthreads>(7), "
3031 "B<getcap>(8), B<setcap>(8)"
3032 msgstr ""
3033 "B<capsh>(1), B<capget>(2), B<prctl>(2), B<setfsuid>(2), B<cap_clear>(3), "
3034 "B<cap_copy_ext>(3), B<cap_from_text>(3), B<cap_get_file>(3), "
3035 "B<cap_get_proc>(3), B<cap_init>(3), B<capgetp>(3), B<capsetp>(3), "
3036 "B<libcap>(3), B<credentials>(7), B<user_namespaces>(7), B<pthreads>(7), "
3037 "B<getcap>(8), B<setcap>(8)"
3038
3039 #. type: Plain text
3040 #: build/C/man7/capabilities.7:1205
3041 msgid "I<include/linux/capability.h> in the Linux kernel source tree"
3042 msgstr "Linux カーネルソース内の I<include/linux/capability.h>"
3043
3044 #. type: TH
3045 #: build/C/man2/capget.2:15
3046 #, no-wrap
3047 msgid "CAPGET"
3048 msgstr "CAPGET"
3049
3050 #. type: TH
3051 #: build/C/man2/capget.2:15
3052 #, no-wrap
3053 msgid "2013-03-11"
3054 msgstr "2013-03-11"
3055
3056 #. type: Plain text
3057 #: build/C/man2/capget.2:18
3058 msgid "capget, capset - set/get capabilities of thread(s)"
3059 msgstr "capget, capset - スレッドのケーパビリティを設定/取得する"
3060
3061 #. type: Plain text
3062 #: build/C/man2/capget.2:20
3063 msgid "B<#include E<lt>sys/capability.hE<gt>>"
3064 msgstr "B<#include E<lt>sys/capability.hE<gt>>"
3065
3066 #. type: Plain text
3067 #: build/C/man2/capget.2:22
3068 msgid ""
3069 "B<int capget(cap_user_header_t >I<hdrp>B<, cap_user_data_t >I<datap>B<);>"
3070 msgstr ""
3071 "B<int capget(cap_user_header_t >I<hdrp>B<, cap_user_data_t >I<datap>B<);>"
3072
3073 #. type: Plain text
3074 #: build/C/man2/capget.2:24
3075 msgid ""
3076 "B<int capset(cap_user_header_t >I<hdrp>B<, const cap_user_data_t "
3077 ">I<datap>B<);>"
3078 msgstr ""
3079 "B<int capset(cap_user_header_t >I<hdrp>B<, const cap_user_data_t "
3080 ">I<datap>B<);>"
3081
3082 #. type: Plain text
3083 #: build/C/man2/capget.2:35
3084 msgid ""
3085 "As of Linux 2.2, the power of the superuser (root) has been partitioned into "
3086 "a set of discrete capabilities.  Each thread has a set of effective "
3087 "capabilities identifying which capabilities (if any) it may currently "
3088 "exercise.  Each thread also has a set of inheritable capabilities that may "
3089 "be passed through an B<execve>(2)  call, and a set of permitted capabilities "
3090 "that it can make effective or inheritable."
3091 msgstr ""
3092 "Linux 2.2 で、スーパーユーザー (root) の権限は、個別のケーパビリティ "
3093 "(capabilities) へと分割され、その集合として表現されるようになった。 各スレッ"
3094 "ドは「実効ケーパビリティ (effective capability) の集合」を持ち、 それによって"
3095 "現在どの操作が実行可能かを識別できる。 また、各スレッドは、 「継承可能ケーパ"
3096 "ビリティ (inheritable capability) の集合」と 「許可ケーパビリティ (permitted "
3097 "capability) の集合」を持つ。 「継承可能ケーパビリティの集合」は "
3098 "B<execve>(2)  を通じて渡すことができるケーパビリティの集合であり、 「許可ケー"
3099 "パビリティ (permitted capability) の集合」は 実効ケーパビリティや継承可能ケー"
3100 "パビリティとして有効にできる ケーパビリティを規定するものである。"
3101
3102 #. type: Plain text
3103 #: build/C/man2/capget.2:44
3104 msgid ""
3105 "These two system calls are the raw kernel interface for getting and setting "
3106 "thread capabilities.  Not only are these system calls specific to Linux, but "
3107 "the kernel API is likely to change and use of these system calls (in "
3108 "particular the format of the I<cap_user_*_t> types) is subject to extension "
3109 "with each kernel revision, but old programs will keep working."
3110 msgstr ""
3111 "この二つのシステムコールはスレッドのケーパビリティを取得したり設定したりする"
3112 "ための 生のカーネルインターフェースである。 これらのシステムコールは Linux 特"
3113 "有であるというだけでなく、 カーネル API は変更されるかもしれず、これらのシス"
3114 "テムコールの使用法 (特に I<cap_user_*_t> 型という書式) はカーネルのリビジョン"
3115 "毎に拡張されるかもしれないが、 以前のプログラムはそのまま動作する。"
3116
3117 #. type: Plain text
3118 #: build/C/man2/capget.2:55
3119 msgid ""
3120 "The portable interfaces are B<cap_set_proc>(3)  and B<cap_get_proc>(3); if "
3121 "possible, you should use those interfaces in applications.  If you wish to "
3122 "use the Linux extensions in applications, you should use the easier-to-use "
3123 "interfaces B<capsetp>(3)  and B<capgetp>(3)."
3124 msgstr ""
3125 "移植性のあるインターフェースは B<cap_set_proc>(3)  と B<cap_get_proc>(3)  で"
3126 "ある。 可能ならばアプリケーションはこれらの関数を使用すべきである。 アプリ"
3127 "ケーションに Linux 拡張を使用したい場合には、より簡単に 使えるインターフェー"
3128 "スである B<capsetp>(3)  と B<capgetp>(3)  を使用すべきである。"
3129
3130 #. type: SS
3131 #: build/C/man2/capget.2:55
3132 #, no-wrap
3133 msgid "Current details"
3134 msgstr "現在の詳細"
3135
3136 #. type: Plain text
3137 #: build/C/man2/capget.2:58
3138 msgid ""
3139 "Now that you have been warned, some current kernel details.  The structures "
3140 "are defined as follows."
3141 msgstr ""
3142 "現在のカーネルの詳細について注意を述べておく。 構造体は以下のように定義され"
3143 "る。"
3144
3145 #. type: Plain text
3146 #: build/C/man2/capget.2:63
3147 #, no-wrap
3148 msgid ""
3149 "#define _LINUX_CAPABILITY_VERSION_1  0x19980330\n"
3150 "#define _LINUX_CAPABILITY_U32S_1     1\n"
3151 msgstr ""
3152 "#define _LINUX_CAPABILITY_VERSION_1  0x19980330\n"
3153 "#define _LINUX_CAPABILITY_U32S_1     1\n"
3154
3155 #. type: Plain text
3156 #: build/C/man2/capget.2:66
3157 #, no-wrap
3158 msgid ""
3159 "#define _LINUX_CAPABILITY_VERSION_2  0x20071026\n"
3160 "#define _LINUX_CAPABILITY_U32S_2     2\n"
3161 msgstr ""
3162 "#define _LINUX_CAPABILITY_VERSION_2  0x20071026\n"
3163 "#define _LINUX_CAPABILITY_U32S_2     2\n"
3164
3165 #. type: Plain text
3166 #: build/C/man2/capget.2:71
3167 #, no-wrap
3168 msgid ""
3169 "typedef struct __user_cap_header_struct {\n"
3170 "   __u32 version;\n"
3171 "   int pid;\n"
3172 "} *cap_user_header_t;\n"
3173 msgstr ""
3174 "typedef struct __user_cap_header_struct {\n"
3175 "   __u32 version;\n"
3176 "   int pid;\n"
3177 "} *cap_user_header_t;\n"
3178
3179 #. type: Plain text
3180 #: build/C/man2/capget.2:77
3181 #, no-wrap
3182 msgid ""
3183 "typedef struct __user_cap_data_struct {\n"
3184 "   __u32 effective;\n"
3185 "   __u32 permitted;\n"
3186 "   __u32 inheritable;\n"
3187 "} *cap_user_data_t;\n"
3188 msgstr ""
3189 "typedef struct __user_cap_data_struct {\n"
3190 "   __u32 effective;\n"
3191 "   __u32 permitted;\n"
3192 "   __u32 inheritable;\n"
3193 "} *cap_user_data_t;\n"
3194
3195 #. type: Plain text
3196 #: build/C/man2/capget.2:96
3197 msgid ""
3198 "The I<effective>, I<permitted>, and I<inheritable> fields are bit masks of "
3199 "the capabilities defined in B<capabilities>(7).  Note the B<CAP_*> values "
3200 "are bit indexes and need to be bit-shifted before ORing into the bit "
3201 "fields.  To define the structures for passing to the system call you have to "
3202 "use the I<struct __user_cap_header_struct> and I<struct "
3203 "__user_cap_data_struct> names because the typedefs are only pointers."
3204 msgstr ""
3205 "フィールド I<effective>, I<permitted>, I<inheritable> は、 "
3206 "B<capabilities>(7)  で定義されるケーパビリティのビットマスクである。 "
3207 "I<CAP_*> はビット番号を表すインデックス値であり、 ビットフィールドに OR を行"
3208 "う前に I<CAP_*> の値の分だけビットシフトを行う必要がある。 typedef の方はポイ"
3209 "ンタなので、 このシステムコールに渡す構造体を定義するには、 I<struct "
3210 "__user_cap_header_struct> と I<struct __user_cap_data_struct> という名前を使"
3211 "用しなければならない。"
3212
3213 #. type: Plain text
3214 #: build/C/man2/capget.2:108
3215 msgid ""
3216 "Kernels prior to 2.6.25 prefer 32-bit capabilities with version "
3217 "B<_LINUX_CAPABILITY_VERSION_1>, and kernels 2.6.25+ prefer 64-bit "
3218 "capabilities with version B<_LINUX_CAPABILITY_VERSION_2>.  Note, 64-bit "
3219 "capabilities use I<datap>[0] and I<datap>[1], whereas 32-bit capabilities "
3220 "use only I<datap>[0]."
3221 msgstr ""
3222 "カーネル 2.6.25 より前では、バージョン B<_LINUX_CAPABILITY_VERSION_1> の 32 "
3223 "ビットケーパビリティが推奨である。 カーネル 2.6.25 以降では、バージョン "
3224 "B<_LINUX_CAPABILITY_VERSION_2> の 64 ビットケーパビリティが推奨である。 64 "
3225 "ビットケーパビリティでは I<datap>[0] と I<datap>[1] が使用されるのに対し、 "
3226 "32 ビットケーパビリティでは I<datap>[0] だけが使用される。"
3227
3228 #. type: Plain text
3229 #: build/C/man2/capget.2:112
3230 msgid ""
3231 "Another change affecting the behavior of these system calls is kernel "
3232 "support for file capabilities (VFS capability support).  This support is "
3233 "currently a compile time option (added in kernel 2.6.24)."
3234 msgstr ""
3235 "これらのシステムコールの挙動に影響があるもう一つの変更点は、 ファイルケーパビ"
3236 "リティ (file capabilities) のカーネルによるサポート (VFS ケーパビリティのサ"
3237 "ポート) である。 VFS ケーパビリティのサポートは現在のところコンパイル時のオプ"
3238 "ションである (カーネル 2.6.24 で追加された)。"
3239
3240 #. type: Plain text
3241 #: build/C/man2/capget.2:119
3242 msgid ""
3243 "For B<capget>()  calls, one can probe the capabilities of any process by "
3244 "specifying its process ID with the I<hdrp-E<gt>pid> field value."
3245 msgstr ""
3246 "B<capget>()  では、 I<hdrp-E<gt>pid> のフィールド値にケーパビリティを知りたい"
3247 "プロセスのプロセス ID を 指定することで、任意のプロセスのケーパビリティを調べ"
3248 "ることができる。"
3249
3250 #. type: SS
3251 #: build/C/man2/capget.2:119
3252 #, no-wrap
3253 msgid "With VFS capability support"
3254 msgstr "VFS ケーパビリティがサポートされている場合"
3255
3256 #. type: Plain text
3257 #: build/C/man2/capget.2:131
3258 msgid ""
3259 "VFS Capability support creates a file-attribute method for adding "
3260 "capabilities to privileged executables.  This privilege model obsoletes "
3261 "kernel support for one process asynchronously setting the capabilities of "
3262 "another.  That is, with VFS support, for B<capset>()  calls the only "
3263 "permitted values for I<hdrp-E<gt>pid> are 0 or B<getpid>(2), which are "
3264 "equivalent."
3265 msgstr ""
3266 "VFS ケーパビリティのサポートでは、特権実行ファイルにケーパビリティを 追加する"
3267 "ためのファイル属性メソッドが作成された。 この特権モデルの導入により、あるプロ"
3268 "セスにより別のプロセスのケーパビリティ を非同期に設定する機能のカーネルによる"
3269 "サポートは廃止される。 つまり、VFS サポートでは、 B<capset>()  を呼び出す際"
3270 "に I<hdrp-E<gt>pid> の値として許されるのは 0 と B<getpid>(2)  が返す値だけと"
3271 "なる (どちらの値でも等価である)。"
3272
3273 #. type: SS
3274 #: build/C/man2/capget.2:131
3275 #, no-wrap
3276 msgid "Without VFS capability support"
3277 msgstr "VFS ケーパビリティがサポートされていない場合"
3278
3279 #. type: Plain text
3280 #: build/C/man2/capget.2:157
3281 msgid ""
3282 "When the kernel does not support VFS capabilities, B<capset>()  calls can "
3283 "operate on the capabilities of the thread specified by the I<pid> field of "
3284 "I<hdrp> when that is nonzero, or on the capabilities of the calling thread "
3285 "if I<pid> is 0.  If I<pid> refers to a single-threaded process, then I<pid> "
3286 "can be specified as a traditional process ID; operating on a thread of a "
3287 "multithreaded process requires a thread ID of the type returned by "
3288 "B<gettid>(2).  For B<capset>(), I<pid> can also be: -1, meaning perform the "
3289 "change on all threads except the caller and B<init>(1); or a value less than "
3290 "-1, in which case the change is applied to all members of the process group "
3291 "whose ID is -I<pid>."
3292 msgstr ""
3293 "カーネルが VFS ケーパビリティをサポートしていない場合、 I<hdrp> の I<pid> "
3294 "フィールドが 0 以外であれば、 B<capset>()  の操作対象は I<pid> で指定されたス"
3295 "レッドのケーパビリティになる。 I<pid> が 0 の場合は呼び出し元のスレッドのケー"
3296 "パビリティが操作対象となる。 I<pid> がシングルスレッド・プロセスを参照してい"
3297 "る場合、 I<pid> は以前から使われているプロセスID を使って指定できる。 マルチ"
3298 "スレッド・プロセス内のあるスレッドを対象にする場合は、 B<gettid>(2)  が返すス"
3299 "レッドID を用いて指定する必要がある。 また、 B<capset>()  では -1 や -1 より"
3300 "小さな値を指定することもできる。 -1 は呼び出し元と B<init>(1)  を除く全てのス"
3301 "レッドを対象として変更を行うことを、 -1 より小さな値は ID が -I<pid> のプロセ"
3302 "スグループの全メンバ を対象として変更を行うことを意味する。"
3303
3304 #. type: Plain text
3305 #: build/C/man2/capget.2:160
3306 msgid "For details on the data, see B<capabilities>(7)."
3307 msgstr "このデータの詳細は B<capabilities>(7)  を参照すること。"
3308
3309 #. type: Plain text
3310 #: build/C/man2/capget.2:179
3311 msgid ""
3312 "The calls will fail with the error B<EINVAL>, and set the I<version> field "
3313 "of I<hdrp> to the kernel preferred value of B<_LINUX_CAPABILITY_VERSION_?> "
3314 "when an unsupported I<version> value is specified.  In this way, one can "
3315 "probe what the current preferred capability revision is."
3316 msgstr ""
3317 "I<hdrp> のフィールド I<version> にサポートされていない値が指定された場合、 呼"
3318 "び出しはエラー B<EINVAL> で失敗し、 I<version> にカーネル推奨の "
3319 "B<_LINUX_CAPABILITY_VERSION_?> を設定する。 このようにして、現在の推奨ケーパ"
3320 "ビリティ・リビジョンが何かを 調べることができる。"
3321
3322 #. type: Plain text
3323 #: build/C/man2/capget.2:188
3324 msgid ""
3325 "Bad memory address.  I<hdrp> must not be NULL.  I<datap> may be NULL only "
3326 "when the user is trying to determine the preferred capability version format "
3327 "supported by the kernel."
3328 msgstr ""
3329 "不正なメモリアドレス。 I<hdrp> は NULL であってはならない。 I<datap> に NULL "
3330 "を指定してよいのは、ユーザがカーネルがサポートしている 推奨のケーパビリティ・"
3331 "バージョンを判定しようとしているときだけである。"
3332
3333 #. type: TP
3334 #: build/C/man2/capget.2:188 build/C/man7/cpuset.7:1180
3335 #: build/C/man7/cpuset.7:1189 build/C/man7/cpuset.7:1198
3336 #: build/C/man7/cpuset.7:1208 build/C/man7/cpuset.7:1217
3337 #: build/C/man7/cpuset.7:1224 build/C/man7/cpuset.7:1231
3338 #: build/C/man2/getgroups.2:114 build/C/man2/getgroups.2:121
3339 #: build/C/man2/getpriority.2:118 build/C/man2/getrlimit.2:471
3340 #: build/C/man2/getrusage.2:198 build/C/man2/iopl.2:72
3341 #: build/C/man2/ioprio_set.2:170 build/C/man2/seteuid.2:80
3342 #: build/C/man2/setgid.2:59 build/C/man2/setpgid.2:225
3343 #: build/C/man2/setresuid.2:99 build/C/man2/setreuid.2:128
3344 #: build/C/man2/setuid.2:105
3345 #, no-wrap
3346 msgid "B<EINVAL>"
3347 msgstr "B<EINVAL>"
3348
3349 #. type: Plain text
3350 #: build/C/man2/capget.2:191
3351 msgid "One of the arguments was invalid."
3352 msgstr "引き数のどれかが無効である。"
3353
3354 #. type: Plain text
3355 #: build/C/man2/capget.2:196
3356 msgid ""
3357 "An attempt was made to add a capability to the Permitted set, or to set a "
3358 "capability in the Effective or Inheritable sets that is not in the Permitted "
3359 "set."
3360 msgstr ""
3361 "「許可ケーパビリティセット」にケーパビリティを追加しようとしているか、 もしく"
3362 "は「許可ケーパビリティセット」に含まれないケーパビリティを 「実効ケーパビリ"
3363 "ティセット」や「継承可能ケーパビリティセット」に セットしようとしている。"
3364
3365 #. type: Plain text
3366 #: build/C/man2/capget.2:215
3367 msgid ""
3368 "The caller attempted to use B<capset>()  to modify the capabilities of a "
3369 "thread other than itself, but lacked sufficient privilege.  For kernels "
3370 "supporting VFS capabilities, this is never permitted.  For kernels lacking "
3371 "VFS support, the B<CAP_SETPCAP> capability is required.  (A bug in kernels "
3372 "before 2.6.11 meant that this error could also occur if a thread without "
3373 "this capability tried to change its own capabilities by specifying the "
3374 "I<pid> field as a nonzero value (i.e., the value returned by B<getpid>(2))  "
3375 "instead of 0.)"
3376 msgstr ""
3377 "呼び出し元が自分以外のスレッドのケーパビリティを B<capset>()  を使って修正し"
3378 "ようとしたが、十分な特権がなかった。 VFS ケーパビリティをサポートしているカー"
3379 "ネルでは、 この操作が許可されることは決してない。 VFS ケーパビリティをサポー"
3380 "トしていないカーネルでは、 B<CAP_SETPCAP> ケーパビリティが必要である。 (バー"
3381 "ジョン 2.6.11 より前のカーネルには、 このケーパビリティを持たないスレッドが "
3382 "I<pid> フィールドに 0 でない値 (つまり、0 の代わりに B<getpid>(2)  が返す値) "
3383 "を指定して自分自身のケーパビリティを変更しようとした場合にも、 このエラーが発"
3384 "生するというバグがあった。)"
3385
3386 #. type: TP
3387 #: build/C/man2/capget.2:215 build/C/man7/cpuset.7:1330
3388 #: build/C/man2/getpriority.2:126 build/C/man2/getrlimit.2:495
3389 #: build/C/man2/getsid.2:70 build/C/man2/ioprio_set.2:187
3390 #: build/C/man2/setpgid.2:240
3391 #, no-wrap
3392 msgid "B<ESRCH>"
3393 msgstr "B<ESRCH>"
3394
3395 #. type: Plain text
3396 #: build/C/man2/capget.2:218
3397 msgid "No such thread."
3398 msgstr "そのようなスレッドが存在しない。"
3399
3400 #. type: Plain text
3401 #: build/C/man2/capget.2:220 build/C/man2/ioprio_set.2:198
3402 msgid "These system calls are Linux-specific."
3403 msgstr "これらのシステムコールは Linux 独自である。"
3404
3405 #. type: Plain text
3406 #: build/C/man2/capget.2:225
3407 msgid ""
3408 "The portable interface to the capability querying and setting functions is "
3409 "provided by the I<libcap> library and is available here:"
3410 msgstr ""
3411 "ケーパビリティを設定したり取得したりする機能のための移植性ある インターフェー"
3412 "スは I<libcap> ライブラリによって提供される。 このライブラリは以下から入手で"
3413 "きる:"
3414
3415 #. type: Plain text
3416 #: build/C/man2/capget.2:228
3417 msgid ""
3418 "E<.UR http://git.kernel.org/cgit\\:/linux\\:/kernel\\:/git\\:/morgan\\:\\:/"
3419 "libcap.git> E<.UE>"
3420 msgstr ""
3421 "E<.UR http://git.kernel.org/cgit\\:/linux\\:/kernel\\:/git\\:/morgan\\:\\:/"
3422 "libcap.git> E<.UE>"
3423
3424 #. type: Plain text
3425 #: build/C/man2/capget.2:232
3426 msgid "B<clone>(2), B<gettid>(2), B<capabilities>(7)"
3427 msgstr "B<clone>(2), B<gettid>(2), B<capabilities>(7)"
3428
3429 #. type: TH
3430 #: build/C/man7/cpuset.7:25
3431 #, no-wrap
3432 msgid "CPUSET"
3433 msgstr "CPUSET"
3434
3435 #. type: TH
3436 #: build/C/man7/cpuset.7:25
3437 #, no-wrap
3438 msgid "2014-05-21"
3439 msgstr "2014-05-21"
3440
3441 #. type: Plain text
3442 #: build/C/man7/cpuset.7:28
3443 msgid "cpuset - confine processes to processor and memory node subsets"
3444 msgstr ""
3445
3446 #. type: Plain text
3447 #: build/C/man7/cpuset.7:35
3448 msgid ""
3449 "The cpuset filesystem is a pseudo-filesystem interface to the kernel cpuset "
3450 "mechanism, which is used to control the processor placement and memory "
3451 "placement of processes.  It is commonly mounted at I</dev/cpuset>."
3452 msgstr ""
3453
3454 #. type: Plain text
3455 #: build/C/man7/cpuset.7:52
3456 msgid ""
3457 "On systems with kernels compiled with built in support for cpusets, all "
3458 "processes are attached to a cpuset, and cpusets are always present.  If a "
3459 "system supports cpusets, then it will have the entry B<nodev cpuset> in the "
3460 "file I</proc/filesystems>.  By mounting the cpuset filesystem (see the "
3461 "B<EXAMPLE> section below), the administrator can configure the cpusets on a "
3462 "system to control the processor and memory placement of processes on that "
3463 "system.  By default, if the cpuset configuration on a system is not modified "
3464 "or if the cpuset filesystem is not even mounted, then the cpuset mechanism, "
3465 "though present, has no affect on the system's behavior."
3466 msgstr ""
3467
3468 #. type: Plain text
3469 #: build/C/man7/cpuset.7:54
3470 msgid "A cpuset defines a list of CPUs and memory nodes."
3471 msgstr ""
3472
3473 #. type: Plain text
3474 #: build/C/man7/cpuset.7:63
3475 msgid ""
3476 "The CPUs of a system include all the logical processing units on which a "
3477 "process can execute, including, if present, multiple processor cores within "
3478 "a package and Hyper-Threads within a processor core.  Memory nodes include "
3479 "all distinct banks of main memory; small and SMP systems typically have just "
3480 "one memory node that contains all the system's main memory, while NUMA (non-"
3481 "uniform memory access) systems have multiple memory nodes."
3482 msgstr ""
3483
3484 #. type: Plain text
3485 #: build/C/man7/cpuset.7:73
3486 msgid ""
3487 "Cpusets are represented as directories in a hierarchical pseudo-filesystem, "
3488 "where the top directory in the hierarchy (I</dev/cpuset>)  represents the "
3489 "entire system (all online CPUs and memory nodes)  and any cpuset that is the "
3490 "child (descendant) of another parent cpuset contains a subset of that "
3491 "parent's CPUs and memory nodes.  The directories and files representing "
3492 "cpusets have normal filesystem permissions."
3493 msgstr ""
3494
3495 #. type: Plain text
3496 #: build/C/man7/cpuset.7:84
3497 msgid ""
3498 "Every process in the system belongs to exactly one cpuset.  A process is "
3499 "confined to run only on the CPUs in the cpuset it belongs to, and to "
3500 "allocate memory only on the memory nodes in that cpuset.  When a process "
3501 "B<fork>(2)s, the child process is placed in the same cpuset as its parent.  "
3502 "With sufficient privilege, a process may be moved from one cpuset to another "
3503 "and the allowed CPUs and memory nodes of an existing cpuset may be changed."
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man7/cpuset.7:92
3508 msgid ""
3509 "When the system begins booting, a single cpuset is defined that includes all "
3510 "CPUs and memory nodes on the system, and all processes are in that cpuset.  "
3511 "During the boot process, or later during normal system operation, other "
3512 "cpusets may be created, as subdirectories of this top cpuset, under the "
3513 "control of the system administrator, and processes may be placed in these "
3514 "other cpusets."
3515 msgstr ""
3516
3517 #. type: Plain text
3518 #: build/C/man7/cpuset.7:114
3519 msgid ""
3520 "Cpusets are integrated with the B<sched_setaffinity>(2)  scheduling affinity "
3521 "mechanism and the B<mbind>(2)  and B<set_mempolicy>(2)  memory-placement "
3522 "mechanisms in the kernel.  Neither of these mechanisms let a process make "
3523 "use of a CPU or memory node that is not allowed by that process's cpuset.  "
3524 "If changes to a process's cpuset placement conflict with these other "
3525 "mechanisms, then cpuset placement is enforced even if it means overriding "
3526 "these other mechanisms.  The kernel accomplishes this overriding by silently "
3527 "restricting the CPUs and memory nodes requested by these other mechanisms to "
3528 "those allowed by the invoking process's cpuset.  This can result in these "
3529 "other calls returning an error, if for example, such a call ends up "
3530 "requesting an empty set of CPUs or memory nodes, after that request is "
3531 "restricted to the invoking process's cpuset."
3532 msgstr ""
3533
3534 #. type: Plain text
3535 #: build/C/man7/cpuset.7:120
3536 msgid ""
3537 "Typically, a cpuset is used to manage the CPU and memory-node confinement "
3538 "for a set of cooperating processes such as a batch scheduler job, and these "
3539 "other mechanisms are used to manage the placement of individual processes or "
3540 "memory regions within that set or job."
3541 msgstr ""
3542
3543 #. type: SH
3544 #: build/C/man7/cpuset.7:120
3545 #, no-wrap
3546 msgid "FILES"
3547 msgstr ""
3548
3549 #. type: Plain text
3550 #: build/C/man7/cpuset.7:125
3551 msgid ""
3552 "Each directory below I</dev/cpuset> represents a cpuset and contains a fixed "
3553 "set of pseudo-files describing the state of that cpuset."
3554 msgstr ""
3555
3556 #. type: Plain text
3557 #: build/C/man7/cpuset.7:135
3558 msgid ""
3559 "New cpusets are created using the B<mkdir>(2)  system call or the "
3560 "B<mkdir>(1)  command.  The properties of a cpuset, such as its flags, "
3561 "allowed CPUs and memory nodes, and attached processes, are queried and "
3562 "modified by reading or writing to the appropriate file in that cpuset's "
3563 "directory, as listed below."
3564 msgstr ""
3565
3566 #. type: Plain text
3567 #: build/C/man7/cpuset.7:141
3568 msgid ""
3569 "The pseudo-files in each cpuset directory are automatically created when the "
3570 "cpuset is created, as a result of the B<mkdir>(2)  invocation.  It is not "
3571 "possible to directly add or remove these pseudo-files."
3572 msgstr ""
3573
3574 #. type: Plain text
3575 #: build/C/man7/cpuset.7:149
3576 msgid ""
3577 "A cpuset directory that contains no child cpuset directories, and has no "
3578 "attached processes, can be removed using B<rmdir>(2)  or B<rmdir>(1).  It is "
3579 "not necessary, or possible, to remove the pseudo-files inside the directory "
3580 "before removing it."
3581 msgstr ""
3582
3583 #. type: Plain text
3584 #: build/C/man7/cpuset.7:163
3585 msgid ""
3586 "The pseudo-files in each cpuset directory are small text files that may be "
3587 "read and written using traditional shell utilities such as B<cat>(1), and "
3588 "B<echo>(1), or from a program by using file I/O library functions or system "
3589 "calls, such as B<open>(2), B<read>(2), B<write>(2), and B<close>(2)."
3590 msgstr ""
3591
3592 #.  ====================== tasks ======================
3593 #. type: Plain text
3594 #: build/C/man7/cpuset.7:168
3595 msgid ""
3596 "The pseudo-files in a cpuset directory represent internal kernel state and "
3597 "do not have any persistent image on disk.  Each of these per-cpuset files is "
3598 "listed and described below."
3599 msgstr ""
3600
3601 #. type: TP
3602 #: build/C/man7/cpuset.7:168
3603 #, no-wrap
3604 msgid "I<tasks>"
3605 msgstr "I<tasks>"
3606
3607 #. type: Plain text
3608 #: build/C/man7/cpuset.7:178
3609 msgid ""
3610 "List of the process IDs (PIDs) of the processes in that cpuset.  The list is "
3611 "formatted as a series of ASCII decimal numbers, each followed by a newline.  "
3612 "A process may be added to a cpuset (automatically removing it from the "
3613 "cpuset that previously contained it) by writing its PID to that cpuset's "
3614 "I<tasks> file (with or without a trailing newline)."
3615 msgstr ""
3616
3617 #.  =================== notify_on_release ===================
3618 #. type: Plain text
3619 #: build/C/man7/cpuset.7:186
3620 msgid ""
3621 "B<Warning:> only one PID may be written to the I<tasks> file at a time.  If "
3622 "a string is written that contains more than one PID, only the first one will "
3623 "be used."
3624 msgstr ""
3625
3626 #. type: TP
3627 #: build/C/man7/cpuset.7:186
3628 #, no-wrap
3629 msgid "I<notify_on_release>"
3630 msgstr "I<notify_on_release>"
3631
3632 #.  ====================== cpus ======================
3633 #. type: Plain text
3634 #: build/C/man7/cpuset.7:195
3635 msgid ""
3636 "Flag (0 or 1).  If set (1), that cpuset will receive special handling after "
3637 "it is released, that is, after all processes cease using it (i.e., terminate "
3638 "or are moved to a different cpuset)  and all child cpuset directories have "
3639 "been removed.  See the B<Notify On Release> section, below."
3640 msgstr ""
3641
3642 #. type: TP
3643 #: build/C/man7/cpuset.7:195
3644 #, no-wrap
3645 msgid "I<cpuset.cpus>"
3646 msgstr "I<cpuset.cpus>"
3647
3648 #. type: Plain text
3649 #: build/C/man7/cpuset.7:202
3650 msgid ""
3651 "List of the physical numbers of the CPUs on which processes in that cpuset "
3652 "are allowed to execute.  See B<List Format> below for a description of the "
3653 "format of I<cpus>."
3654 msgstr ""
3655
3656 #.  ==================== cpu_exclusive ====================
3657 #. type: Plain text
3658 #: build/C/man7/cpuset.7:208
3659 msgid ""
3660 "The CPUs allowed to a cpuset may be changed by writing a new list to its "
3661 "I<cpus> file."
3662 msgstr ""
3663
3664 #. type: TP
3665 #: build/C/man7/cpuset.7:208
3666 #, no-wrap
3667 msgid "I<cpuset.cpu_exclusive>"
3668 msgstr "I<cpuset.cpu_exclusive>"
3669
3670 #. type: Plain text
3671 #: build/C/man7/cpuset.7:215
3672 msgid ""
3673 "Flag (0 or 1).  If set (1), the cpuset has exclusive use of its CPUs (no "
3674 "sibling or cousin cpuset may overlap CPUs).  By default this is off (0).  "
3675 "Newly created cpusets also initially default this to off (0)."
3676 msgstr ""
3677
3678 #.  ====================== mems ======================
3679 #. type: Plain text
3680 #: build/C/man7/cpuset.7:237
3681 msgid ""
3682 "Two cpusets are I<sibling> cpusets if they share the same parent cpuset in "
3683 "the I</dev/cpuset> hierarchy.  Two cpusets are I<cousin> cpusets if neither "
3684 "is the ancestor of the other.  Regardless of the I<cpu_exclusive> setting, "
3685 "if one cpuset is the ancestor of another, and if both of these cpusets have "
3686 "nonempty I<cpus>, then their I<cpus> must overlap, because the I<cpus> of "
3687 "any cpuset are always a subset of the I<cpus> of its parent cpuset."
3688 msgstr ""
3689
3690 #. type: TP
3691 #: build/C/man7/cpuset.7:237
3692 #, no-wrap
3693 msgid "I<cpuset.mems>"
3694 msgstr "I<cpuset.mems>"
3695
3696 #.  ==================== mem_exclusive ====================
3697 #. type: Plain text
3698 #: build/C/man7/cpuset.7:245
3699 msgid ""
3700 "List of memory nodes on which processes in this cpuset are allowed to "
3701 "allocate memory.  See B<List Format> below for a description of the format "
3702 "of I<mems>."
3703 msgstr ""
3704
3705 #. type: TP
3706 #: build/C/man7/cpuset.7:245
3707 #, no-wrap
3708 msgid "I<cpuset.mem_exclusive>"
3709 msgstr "I<cpuset.mem_exclusive>"
3710
3711 #. type: Plain text
3712 #: build/C/man7/cpuset.7:253
3713 msgid ""
3714 "Flag (0 or 1).  If set (1), the cpuset has exclusive use of its memory nodes "
3715 "(no sibling or cousin may overlap).  Also if set (1), the cpuset is a "
3716 "B<Hardwall> cpuset (see below).  By default this is off (0).  Newly created "
3717 "cpusets also initially default this to off (0)."
3718 msgstr ""
3719
3720 #.  ==================== mem_hardwall ====================
3721 #. type: Plain text
3722 #: build/C/man7/cpuset.7:261
3723 msgid ""
3724 "Regardless of the I<mem_exclusive> setting, if one cpuset is the ancestor of "
3725 "another, then their memory nodes must overlap, because the memory nodes of "
3726 "any cpuset are always a subset of the memory nodes of that cpuset's parent "
3727 "cpuset."
3728 msgstr ""
3729
3730 #. type: TP
3731 #: build/C/man7/cpuset.7:261
3732 #, no-wrap
3733 msgid "I<cpuset.mem_hardwall> (since Linux 2.6.26)"
3734 msgstr "I<cpuset.mem_hardwall> (Linux 2.6.26 以降)"
3735
3736 #.  ==================== memory_migrate ====================
3737 #. type: Plain text
3738 #: build/C/man7/cpuset.7:272
3739 msgid ""
3740 "Flag (0 or 1).  If set (1), the cpuset is a B<Hardwall> cpuset (see below).  "
3741 "Unlike B<mem_exclusive>, there is no constraint on whether cpusets marked "
3742 "B<mem_hardwall> may have overlapping memory nodes with sibling or cousin "
3743 "cpusets.  By default this is off (0).  Newly created cpusets also initially "
3744 "default this to off (0)."
3745 msgstr ""
3746
3747 #. type: TP
3748 #: build/C/man7/cpuset.7:272
3749 #, no-wrap
3750 msgid "I<cpuset.memory_migrate> (since Linux 2.6.16)"
3751 msgstr "I<cpuset.memory_migrate> (Linux 2.6.16 以降)"
3752
3753 #.  ==================== memory_pressure ====================
3754 #. type: Plain text
3755 #: build/C/man7/cpuset.7:279
3756 msgid ""
3757 "Flag (0 or 1).  If set (1), then memory migration is enabled.  By default "
3758 "this is off (0).  See the B<Memory Migration> section, below."
3759 msgstr ""
3760
3761 #. type: TP
3762 #: build/C/man7/cpuset.7:279
3763 #, no-wrap
3764 msgid "I<cpuset.memory_pressure> (since Linux 2.6.16)"
3765 msgstr "I<cpuset.memory_pressure> (Linux 2.6.16 以降)"
3766
3767 #.  ================= memory_pressure_enabled =================
3768 #. type: Plain text
3769 #: build/C/man7/cpuset.7:292
3770 msgid ""
3771 "A measure of how much memory pressure the processes in this cpuset are "
3772 "causing.  See the B<Memory Pressure> section, below.  Unless "
3773 "I<memory_pressure_enabled> is enabled, always has value zero (0).  This file "
3774 "is read-only.  See the B<WARNINGS> section, below."
3775 msgstr ""
3776
3777 #. type: TP
3778 #: build/C/man7/cpuset.7:292
3779 #, no-wrap
3780 msgid "I<cpuset.memory_pressure_enabled> (since Linux 2.6.16)"
3781 msgstr "I<cpuset.memory_pressure_enabled> (Linux 2.6.16 以降)"
3782
3783 #.  ================== memory_spread_page ==================
3784 #. type: Plain text
3785 #: build/C/man7/cpuset.7:304
3786 msgid ""
3787 "Flag (0 or 1).  This file is present only in the root cpuset, normally I</"
3788 "dev/cpuset>.  If set (1), the I<memory_pressure> calculations are enabled "
3789 "for all cpusets in the system.  By default this is off (0).  See the "
3790 "B<Memory Pressure> section, below."
3791 msgstr ""
3792
3793 #. type: TP
3794 #: build/C/man7/cpuset.7:304
3795 #, no-wrap
3796 msgid "I<cpuset.memory_spread_page> (since Linux 2.6.17)"
3797 msgstr "I<cpuset.memory_spread_page> (Linux 2.6.17 以降)"
3798
3799 #.  ================== memory_spread_slab ==================
3800 #. type: Plain text
3801 #: build/C/man7/cpuset.7:314
3802 msgid ""
3803 "Flag (0 or 1).  If set (1), pages in the kernel page cache (filesystem "
3804 "buffers) are uniformly spread across the cpuset.  By default this is off (0) "
3805 "in the top cpuset, and inherited from the parent cpuset in newly created "
3806 "cpusets.  See the B<Memory Spread> section, below."
3807 msgstr ""
3808
3809 #. type: TP
3810 #: build/C/man7/cpuset.7:314
3811 #, no-wrap
3812 msgid "I<cpuset.memory_spread_slab> (since Linux 2.6.17)"
3813 msgstr "I<cpuset.memory_spread_slab> (Linux 2.6.17 以降)"
3814
3815 #.  ================== sched_load_balance ==================
3816 #. type: Plain text
3817 #: build/C/man7/cpuset.7:325
3818 msgid ""
3819 "Flag (0 or 1).  If set (1), the kernel slab caches for file I/O (directory "
3820 "and inode structures) are uniformly spread across the cpuset.  By default "
3821 "this is off (0) in the top cpuset, and inherited from the parent cpuset in "
3822 "newly created cpusets.  See the B<Memory Spread> section, below."
3823 msgstr ""
3824
3825 #. type: TP
3826 #: build/C/man7/cpuset.7:325
3827 #, no-wrap
3828 msgid "I<cpuset.sched_load_balance> (since Linux 2.6.24)"
3829 msgstr "I<cpuset.sched_load_balance> (Linux 2.6.24 以降)"
3830
3831 #.  ================== sched_relax_domain_level ==================
3832 #. type: Plain text
3833 #: build/C/man7/cpuset.7:339
3834 msgid ""
3835 "Flag (0 or 1).  If set (1, the default) the kernel will automatically load "
3836 "balance processes in that cpuset over the allowed CPUs in that cpuset.  If "
3837 "cleared (0) the kernel will avoid load balancing processes in this cpuset, "
3838 "I<unless> some other cpuset with overlapping CPUs has its "
3839 "I<sched_load_balance> flag set.  See B<Scheduler Load Balancing>, below, for "
3840 "further details."
3841 msgstr ""
3842
3843 #. type: TP
3844 #: build/C/man7/cpuset.7:339
3845 #, no-wrap
3846 msgid "I<cpuset.sched_relax_domain_level> (since Linux 2.6.26)"
3847 msgstr "I<cpuset.sched_relax_domain_level> (Linux 2.6.26 以降)"
3848
3849 #.  ================== proc cpuset ==================
3850 #. type: Plain text
3851 #: build/C/man7/cpuset.7:359
3852 msgid ""
3853 "Integer, between -1 and a small positive value.  The "
3854 "I<sched_relax_domain_level> controls the width of the range of CPUs over "
3855 "which the kernel scheduler performs immediate rebalancing of runnable tasks "
3856 "across CPUs.  If I<sched_load_balance> is disabled, then the setting of "
3857 "I<sched_relax_domain_level> does not matter, as no such load balancing is "
3858 "done.  If I<sched_load_balance> is enabled, then the higher the value of the "
3859 "I<sched_relax_domain_level>, the wider the range of CPUs over which "
3860 "immediate load balancing is attempted.  See B<Scheduler Relax Domain Level>, "
3861 "below, for further details."
3862 msgstr ""
3863
3864 #.  ================== proc status ==================
3865 #. type: Plain text
3866 #: build/C/man7/cpuset.7:367
3867 msgid ""
3868 "In addition to the above pseudo-files in each directory below I</dev/"
3869 "cpuset>, each process has a pseudo-file, I</proc/E<lt>pidE<gt>/cpuset>, that "
3870 "displays the path of the process's cpuset directory relative to the root of "
3871 "the cpuset filesystem."
3872 msgstr ""
3873
3874 #. type: Plain text
3875 #: build/C/man7/cpuset.7:378
3876 msgid ""
3877 "Also the I</proc/E<lt>pidE<gt>/status> file for each process has four added "
3878 "lines, displaying the process's I<Cpus_allowed> (on which CPUs it may be "
3879 "scheduled) and I<Mems_allowed> (on which memory nodes it may obtain memory), "
3880 "in the two formats B<Mask Format> and B<List Format> (see below)  as shown "
3881 "in the following example:"
3882 msgstr ""
3883
3884 #. type: Plain text
3885 #: build/C/man7/cpuset.7:385
3886 #, no-wrap
3887 msgid ""
3888 "Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff\n"
3889 "Cpus_allowed_list:     0-127\n"
3890 "Mems_allowed:   ffffffff,ffffffff\n"
3891 "Mems_allowed_list:     0-63\n"
3892 msgstr ""
3893 "Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff\n"
3894 "Cpus_allowed_list:     0-127\n"
3895 "Mems_allowed:   ffffffff,ffffffff\n"
3896 "Mems_allowed_list:     0-63\n"
3897
3898 #.  ================== EXTENDED CAPABILITIES ==================
3899 #. type: Plain text
3900 #: build/C/man7/cpuset.7:391
3901 msgid ""
3902 "The \"allowed\" fields were added in Linux 2.6.24; the \"allowed_list\" "
3903 "fields were added in Linux 2.6.26."
3904 msgstr ""
3905
3906 #. type: SH
3907 #: build/C/man7/cpuset.7:391
3908 #, no-wrap
3909 msgid "EXTENDED CAPABILITIES"
3910 msgstr ""
3911
3912 #.  ================== Exclusive Cpusets ==================
3913 #. type: Plain text
3914 #: build/C/man7/cpuset.7:399
3915 msgid ""
3916 "In addition to controlling which I<cpus> and I<mems> a process is allowed to "
3917 "use, cpusets provide the following extended capabilities."
3918 msgstr ""
3919
3920 #. type: SS
3921 #: build/C/man7/cpuset.7:399
3922 #, no-wrap
3923 msgid "Exclusive cpusets"
3924 msgstr ""
3925
3926 #. type: Plain text
3927 #: build/C/man7/cpuset.7:406
3928 msgid ""
3929 "If a cpuset is marked I<cpu_exclusive> or I<mem_exclusive>, no other cpuset, "
3930 "other than a direct ancestor or descendant, may share any of the same CPUs "
3931 "or memory nodes."
3932 msgstr ""
3933
3934 #.  ================== Hardwall ==================
3935 #. type: Plain text
3936 #: build/C/man7/cpuset.7:432
3937 msgid ""
3938 "A cpuset that is I<mem_exclusive> restricts kernel allocations for buffer "
3939 "cache pages and other internal kernel data pages commonly shared by the "
3940 "kernel across multiple users.  All cpusets, whether I<mem_exclusive> or not, "
3941 "restrict allocations of memory for user space.  This enables configuring a "
3942 "system so that several independent jobs can share common kernel data, while "
3943 "isolating each job's user allocation in its own cpuset.  To do this, "
3944 "construct a large I<mem_exclusive> cpuset to hold all the jobs, and "
3945 "construct child, non-I<mem_exclusive> cpusets for each individual job.  Only "
3946 "a small amount of kernel memory, such as requests from interrupt handlers, "
3947 "is allowed to be placed on memory nodes outside even a I<mem_exclusive> "
3948 "cpuset."
3949 msgstr ""
3950
3951 #. type: SS
3952 #: build/C/man7/cpuset.7:432
3953 #, no-wrap
3954 msgid "Hardwall"
3955 msgstr ""
3956
3957 #. type: Plain text
3958 #: build/C/man7/cpuset.7:447
3959 msgid ""
3960 "A cpuset that has I<mem_exclusive> or I<mem_hardwall> set is a I<hardwall> "
3961 "cpuset.  A I<hardwall> cpuset restricts kernel allocations for page, buffer, "
3962 "and other data commonly shared by the kernel across multiple users.  All "
3963 "cpusets, whether I<hardwall> or not, restrict allocations of memory for user "
3964 "space."
3965 msgstr ""
3966
3967 #. type: Plain text
3968 #: build/C/man7/cpuset.7:458
3969 msgid ""
3970 "This enables configuring a system so that several independent jobs can share "
3971 "common kernel data, such as filesystem pages, while isolating each job's "
3972 "user allocation in its own cpuset.  To do this, construct a large "
3973 "I<hardwall> cpuset to hold all the jobs, and construct child cpusets for "
3974 "each individual job which are not I<hardwall> cpusets."
3975 msgstr ""
3976
3977 #.  ================== Notify On Release ==================
3978 #. type: Plain text
3979 #: build/C/man7/cpuset.7:464
3980 msgid ""
3981 "Only a small amount of kernel memory, such as requests from interrupt "
3982 "handlers, is allowed to be taken outside even a I<hardwall> cpuset."
3983 msgstr ""
3984
3985 #. type: SS
3986 #: build/C/man7/cpuset.7:464
3987 #, no-wrap
3988 msgid "Notify on release"
3989 msgstr ""
3990
3991 #. type: Plain text
3992 #: build/C/man7/cpuset.7:476
3993 msgid ""
3994 "If the I<notify_on_release> flag is enabled (1) in a cpuset, then whenever "
3995 "the last process in the cpuset leaves (exits or attaches to some other "
3996 "cpuset)  and the last child cpuset of that cpuset is removed, the kernel "
3997 "will run the command I</sbin/cpuset_release_agent>, supplying the pathname "
3998 "(relative to the mount point of the cpuset filesystem) of the abandoned "
3999 "cpuset.  This enables automatic removal of abandoned cpusets."
4000 msgstr ""
4001
4002 #. type: Plain text
4003 #: build/C/man7/cpuset.7:484
4004 msgid ""
4005 "The default value of I<notify_on_release> in the root cpuset at system boot "
4006 "is disabled (0).  The default value of other cpusets at creation is the "
4007 "current value of their parent's I<notify_on_release> setting."
4008 msgstr ""
4009
4010 #. type: Plain text
4011 #: build/C/man7/cpuset.7:492
4012 msgid ""
4013 "The command I</sbin/cpuset_release_agent> is invoked, with the name (I</dev/"
4014 "cpuset> relative path)  of the to-be-released cpuset in I<argv[1]>."
4015 msgstr ""
4016
4017 #. type: Plain text
4018 #: build/C/man7/cpuset.7:496
4019 msgid ""
4020 "The usual contents of the command I</sbin/cpuset_release_agent> is simply "
4021 "the shell script:"
4022 msgstr ""
4023
4024 #. type: Plain text
4025 #: build/C/man7/cpuset.7:501
4026 #, no-wrap
4027 msgid ""
4028 "#!/bin/sh\n"
4029 "rmdir /dev/cpuset/$1\n"
4030 msgstr ""
4031 "#!/bin/sh\n"
4032 "rmdir /dev/cpuset/$1\n"
4033
4034 #.  ================== Memory Pressure ==================
4035 #. type: Plain text
4036 #: build/C/man7/cpuset.7:509
4037 msgid ""
4038 "As with other flag values below, this flag can be changed by writing an "
4039 "ASCII number 0 or 1 (with optional trailing newline)  into the file, to "
4040 "clear or set the flag, respectively."
4041 msgstr ""
4042
4043 #. type: SS
4044 #: build/C/man7/cpuset.7:509
4045 #, no-wrap
4046 msgid "Memory pressure"
4047 msgstr ""
4048
4049 #. type: Plain text
4050 #: build/C/man7/cpuset.7:515
4051 msgid ""
4052 "The I<memory_pressure> of a cpuset provides a simple per-cpuset running "
4053 "average of the rate that the processes in a cpuset are attempting to free up "
4054 "in-use memory on the nodes of the cpuset to satisfy additional memory "
4055 "requests."
4056 msgstr ""
4057
4058 #. type: Plain text
4059 #: build/C/man7/cpuset.7:519
4060 msgid ""
4061 "This enables batch managers that are monitoring jobs running in dedicated "
4062 "cpusets to efficiently detect what level of memory pressure that job is "
4063 "causing."
4064 msgstr ""
4065
4066 #. type: Plain text
4067 #: build/C/man7/cpuset.7:526
4068 msgid ""
4069 "This is useful both on tightly managed systems running a wide mix of "
4070 "submitted jobs, which may choose to terminate or reprioritize jobs that are "
4071 "trying to use more memory than allowed on the nodes assigned them, and with "
4072 "tightly coupled, long-running, massively parallel scientific computing jobs "
4073 "that will dramatically fail to meet required performance goals if they start "
4074 "to use more memory than allowed to them."
4075 msgstr ""
4076
4077 #. type: Plain text
4078 #: build/C/man7/cpuset.7:531
4079 msgid ""
4080 "This mechanism provides a very economical way for the batch manager to "
4081 "monitor a cpuset for signs of memory pressure.  It's up to the batch manager "
4082 "or other user code to decide what action to take if it detects signs of "
4083 "memory pressure."
4084 msgstr ""
4085
4086 #. type: Plain text
4087 #: build/C/man7/cpuset.7:538
4088 msgid ""
4089 "Unless memory pressure calculation is enabled by setting the pseudo-file I</"
4090 "dev/cpuset/cpuset.memory_pressure_enabled>, it is not computed for any "
4091 "cpuset, and reads from any I<memory_pressure> always return zero, as "
4092 "represented by the ASCII string \"0\\en\".  See the B<WARNINGS> section, "
4093 "below."
4094 msgstr ""
4095
4096 #. type: Plain text
4097 #: build/C/man7/cpuset.7:540
4098 msgid "A per-cpuset, running average is employed for the following reasons:"
4099 msgstr ""
4100
4101 #. type: Plain text
4102 #: build/C/man7/cpuset.7:545
4103 msgid ""
4104 "Because this meter is per-cpuset rather than per-process or per virtual "
4105 "memory region, the system load imposed by a batch scheduler monitoring this "
4106 "metric is sharply reduced on large systems, because a scan of the tasklist "
4107 "can be avoided on each set of queries."
4108 msgstr ""
4109
4110 #. type: Plain text
4111 #: build/C/man7/cpuset.7:550
4112 msgid ""
4113 "Because this meter is a running average rather than an accumulating counter, "
4114 "a batch scheduler can detect memory pressure with a single read, instead of "
4115 "having to read and accumulate results for a period of time."
4116 msgstr ""
4117
4118 #. type: Plain text
4119 #: build/C/man7/cpuset.7:556
4120 msgid ""
4121 "Because this meter is per-cpuset rather than per-process, the batch "
4122 "scheduler can obtain the key information\\(emmemory pressure in a cpuset"
4123 "\\(emwith a single read, rather than having to query and accumulate results "
4124 "over all the (dynamically changing)  set of processes in the cpuset."
4125 msgstr ""
4126
4127 #. type: Plain text
4128 #: build/C/man7/cpuset.7:564
4129 msgid ""
4130 "The I<memory_pressure> of a cpuset is calculated using a per-cpuset simple "
4131 "digital filter that is kept within the kernel.  For each cpuset, this filter "
4132 "tracks the recent rate at which processes attached to that cpuset enter the "
4133 "kernel direct reclaim code."
4134 msgstr ""
4135
4136 #. type: Plain text
4137 #: build/C/man7/cpuset.7:573
4138 msgid ""
4139 "The kernel direct reclaim code is entered whenever a process has to satisfy "
4140 "a memory page request by first finding some other page to repurpose, due to "
4141 "lack of any readily available already free pages.  Dirty filesystem pages "
4142 "are repurposed by first writing them to disk.  Unmodified filesystem buffer "
4143 "pages are repurposed by simply dropping them, though if that page is needed "
4144 "again, it will have to be reread from disk."
4145 msgstr ""
4146
4147 #.  ================== Memory Spread ==================
4148 #. type: Plain text
4149 #: build/C/man7/cpuset.7:581
4150 msgid ""
4151 "The I<cpuset.memory_pressure> file provides an integer number representing "
4152 "the recent (half-life of 10 seconds) rate of entries to the direct reclaim "
4153 "code caused by any process in the cpuset, in units of reclaims attempted per "
4154 "second, times 1000."
4155 msgstr ""
4156
4157 #. type: SS
4158 #: build/C/man7/cpuset.7:581
4159 #, no-wrap
4160 msgid "Memory spread"
4161 msgstr ""
4162
4163 #. type: Plain text
4164 #: build/C/man7/cpuset.7:589
4165 msgid ""
4166 "There are two Boolean flag files per cpuset that control where the kernel "
4167 "allocates pages for the filesystem buffers and related in-kernel data "
4168 "structures.  They are called I<cpuset.memory_spread_page> and I<cpuset."
4169 "memory_spread_slab>."
4170 msgstr ""
4171
4172 #. type: Plain text
4173 #: build/C/man7/cpuset.7:596
4174 msgid ""
4175 "If the per-cpuset Boolean flag file I<cpuset.memory_spread_page> is set, "
4176 "then the kernel will spread the filesystem buffers (page cache) evenly over "
4177 "all the nodes that the faulting process is allowed to use, instead of "
4178 "preferring to put those pages on the node where the process is running."
4179 msgstr ""
4180
4181 #. type: Plain text
4182 #: build/C/man7/cpuset.7:604
4183 msgid ""
4184 "If the per-cpuset Boolean flag file I<cpuset.memory_spread_slab> is set, "
4185 "then the kernel will spread some filesystem-related slab caches, such as "
4186 "those for inodes and directory entries, evenly over all the nodes that the "
4187 "faulting process is allowed to use, instead of preferring to put those pages "
4188 "on the node where the process is running."
4189 msgstr ""
4190
4191 #. type: Plain text
4192 #: build/C/man7/cpuset.7:609
4193 msgid ""
4194 "The setting of these flags does not affect the data segment (see B<brk>(2))  "
4195 "or stack segment pages of a process."
4196 msgstr ""
4197
4198 #. type: Plain text
4199 #: build/C/man7/cpuset.7:617
4200 msgid ""
4201 "By default, both kinds of memory spreading are off and the kernel prefers to "
4202 "allocate memory pages on the node local to where the requesting process is "
4203 "running.  If that node is not allowed by the process's NUMA memory policy or "
4204 "cpuset configuration or if there are insufficient free memory pages on that "
4205 "node, then the kernel looks for the nearest node that is allowed and has "
4206 "sufficient free memory."
4207 msgstr ""
4208
4209 #. type: Plain text
4210 #: build/C/man7/cpuset.7:620
4211 msgid ""
4212 "When new cpusets are created, they inherit the memory spread settings of "
4213 "their parent."
4214 msgstr ""
4215
4216 #. type: Plain text
4217 #: build/C/man7/cpuset.7:635
4218 msgid ""
4219 "Setting memory spreading causes allocations for the affected page or slab "
4220 "caches to ignore the process's NUMA memory policy and be spread instead.  "
4221 "However, the effect of these changes in memory placement caused by cpuset-"
4222 "specified memory spreading is hidden from the B<mbind>(2)  or "
4223 "B<set_mempolicy>(2)  calls.  These two NUMA memory policy calls always "
4224 "appear to behave as if no cpuset-specified memory spreading is in effect, "
4225 "even if it is.  If cpuset memory spreading is subsequently turned off, the "
4226 "NUMA memory policy most recently specified by these calls is automatically "
4227 "reapplied."
4228 msgstr ""
4229
4230 #. type: Plain text
4231 #: build/C/man7/cpuset.7:644
4232 msgid ""
4233 "Both I<cpuset.memory_spread_page> and I<cpuset.memory_spread_slab> are "
4234 "Boolean flag files.  By default they contain \"0\", meaning that the feature "
4235 "is off for that cpuset.  If a \"1\" is written to that file, that turns the "
4236 "named feature on."
4237 msgstr ""
4238
4239 #. type: Plain text
4240 #: build/C/man7/cpuset.7:647
4241 msgid ""
4242 "Cpuset-specified memory spreading behaves similarly to what is known (in "
4243 "other contexts) as round-robin or interleave memory placement."
4244 msgstr ""
4245
4246 #. type: Plain text
4247 #: build/C/man7/cpuset.7:650
4248 msgid ""
4249 "Cpuset-specified memory spreading can provide substantial performance "
4250 "improvements for jobs that:"
4251 msgstr ""
4252
4253 #. type: IP
4254 #: build/C/man7/cpuset.7:650 build/C/man7/user_namespaces.7:384
4255 #, no-wrap
4256 msgid "a)"
4257 msgstr "a)"
4258
4259 #. type: Plain text
4260 #: build/C/man7/cpuset.7:654
4261 msgid ""
4262 "need to place thread-local data on memory nodes close to the CPUs which are "
4263 "running the threads that most frequently access that data; but also"
4264 msgstr ""
4265
4266 #. type: IP
4267 #: build/C/man7/cpuset.7:654 build/C/man7/user_namespaces.7:389
4268 #, no-wrap
4269 msgid "b)"
4270 msgstr "b)"
4271
4272 #. type: Plain text
4273 #: build/C/man7/cpuset.7:657
4274 msgid ""
4275 "need to access large filesystem data sets that must to be spread across the "
4276 "several nodes in the job's cpuset in order to fit."
4277 msgstr ""
4278
4279 #.  ================== Memory Migration ==================
4280 #. type: Plain text
4281 #: build/C/man7/cpuset.7:664
4282 msgid ""
4283 "Without this policy, the memory allocation across the nodes in the job's "
4284 "cpuset can become very uneven, especially for jobs that might have just a "
4285 "single thread initializing or reading in the data set."
4286 msgstr ""
4287
4288 #. type: SS
4289 #: build/C/man7/cpuset.7:664
4290 #, no-wrap
4291 msgid "Memory migration"
4292 msgstr ""
4293
4294 #. type: Plain text
4295 #: build/C/man7/cpuset.7:673
4296 msgid ""
4297 "Normally, under the default setting (disabled) of I<cpuset.memory_migrate>, "
4298 "once a page is allocated (given a physical page of main memory), then that "
4299 "page stays on whatever node it was allocated, so long as it remains "
4300 "allocated, even if the cpuset's memory-placement policy I<mems> subsequently "
4301 "changes."
4302 msgstr ""
4303
4304 #. type: Plain text
4305 #: build/C/man7/cpuset.7:679
4306 msgid ""
4307 "When memory migration is enabled in a cpuset, if the I<mems> setting of the "
4308 "cpuset is changed, then any memory page in use by any process in the cpuset "
4309 "that is on a memory node that is no longer allowed will be migrated to a "
4310 "memory node that is allowed."
4311 msgstr ""
4312
4313 #. type: Plain text
4314 #: build/C/man7/cpuset.7:685
4315 msgid ""
4316 "Furthermore, if a process is moved into a cpuset with I<memory_migrate> "
4317 "enabled, any memory pages it uses that were on memory nodes allowed in its "
4318 "previous cpuset, but which are not allowed in its new cpuset, will be "
4319 "migrated to a memory node allowed in the new cpuset."
4320 msgstr ""
4321
4322 #.  ================== Scheduler Load Balancing ==================
4323 #. type: Plain text
4324 #: build/C/man7/cpuset.7:693
4325 msgid ""
4326 "The relative placement of a migrated page within the cpuset is preserved "
4327 "during these migration operations if possible.  For example, if the page was "
4328 "on the second valid node of the prior cpuset, then the page will be placed "
4329 "on the second valid node of the new cpuset, if possible."
4330 msgstr ""
4331
4332 #. type: SS
4333 #: build/C/man7/cpuset.7:693
4334 #, no-wrap
4335 msgid "Scheduler load balancing"
4336 msgstr ""
4337
4338 #. type: Plain text
4339 #: build/C/man7/cpuset.7:700
4340 msgid ""
4341 "The kernel scheduler automatically load balances processes.  If one CPU is "
4342 "underutilized, the kernel will look for processes on other more overloaded "
4343 "CPUs and move those processes to the underutilized CPU, within the "
4344 "constraints of such placement mechanisms as cpusets and "
4345 "B<sched_setaffinity>(2)."
4346 msgstr ""
4347
4348 #. type: Plain text
4349 #: build/C/man7/cpuset.7:713
4350 msgid ""
4351 "The algorithmic cost of load balancing and its impact on key shared kernel "
4352 "data structures such as the process list increases more than linearly with "
4353 "the number of CPUs being balanced.  For example, it costs more to load "
4354 "balance across one large set of CPUs than it does to balance across two "
4355 "smaller sets of CPUs, each of half the size of the larger set.  (The precise "
4356 "relationship between the number of CPUs being balanced and the cost of load "
4357 "balancing depends on implementation details of the kernel process scheduler, "
4358 "which is subject to change over time, as improved kernel scheduler "
4359 "algorithms are implemented.)"
4360 msgstr ""
4361
4362 #. type: Plain text
4363 #: build/C/man7/cpuset.7:719
4364 msgid ""
4365 "The per-cpuset flag I<sched_load_balance> provides a mechanism to suppress "
4366 "this automatic scheduler load balancing in cases where it is not needed and "
4367 "suppressing it would have worthwhile performance benefits."
4368 msgstr ""
4369
4370 #. type: Plain text
4371 #: build/C/man7/cpuset.7:723
4372 msgid ""
4373 "By default, load balancing is done across all CPUs, except those marked "
4374 "isolated using the kernel boot time \"isolcpus=\" argument.  (See "
4375 "B<Scheduler Relax Domain Level>, below, to change this default.)"
4376 msgstr ""
4377
4378 #. type: Plain text
4379 #: build/C/man7/cpuset.7:726
4380 msgid ""
4381 "This default load balancing across all CPUs is not well suited to the "
4382 "following two situations:"
4383 msgstr ""
4384
4385 #. type: Plain text
4386 #: build/C/man7/cpuset.7:730
4387 msgid ""
4388 "On large systems, load balancing across many CPUs is expensive.  If the "
4389 "system is managed using cpusets to place independent jobs on separate sets "
4390 "of CPUs, full load balancing is unnecessary."
4391 msgstr ""
4392
4393 #. type: Plain text
4394 #: build/C/man7/cpuset.7:734
4395 msgid ""
4396 "Systems supporting real-time on some CPUs need to minimize system overhead "
4397 "on those CPUs, including avoiding process load balancing if that is not "
4398 "needed."
4399 msgstr ""
4400
4401 #. type: Plain text
4402 #: build/C/man7/cpuset.7:744
4403 msgid ""
4404 "When the per-cpuset flag I<sched_load_balance> is enabled (the default "
4405 "setting), it requests load balancing across all the CPUs in that cpuset's "
4406 "allowed CPUs, ensuring that load balancing can move a process (not otherwise "
4407 "pinned, as by B<sched_setaffinity>(2))  from any CPU in that cpuset to any "
4408 "other."
4409 msgstr ""
4410
4411 #. type: Plain text
4412 #: build/C/man7/cpuset.7:753
4413 msgid ""
4414 "When the per-cpuset flag I<sched_load_balance> is disabled, then the "
4415 "scheduler will avoid load balancing across the CPUs in that cpuset, "
4416 "I<except> in so far as is necessary because some overlapping cpuset has "
4417 "I<sched_load_balance> enabled."
4418 msgstr ""
4419
4420 #. type: Plain text
4421 #: build/C/man7/cpuset.7:761
4422 msgid ""
4423 "So, for example, if the top cpuset has the flag I<sched_load_balance> "
4424 "enabled, then the scheduler will load balance across all CPUs, and the "
4425 "setting of the I<sched_load_balance> flag in other cpusets has no effect, as "
4426 "we're already fully load balancing."
4427 msgstr ""
4428
4429 #. type: Plain text
4430 #: build/C/man7/cpuset.7:766
4431 msgid ""
4432 "Therefore in the above two situations, the flag I<sched_load_balance> should "
4433 "be disabled in the top cpuset, and only some of the smaller, child cpusets "
4434 "would have this flag enabled."
4435 msgstr ""
4436
4437 #. type: Plain text
4438 #: build/C/man7/cpuset.7:774
4439 msgid ""
4440 "When doing this, you don't usually want to leave any unpinned processes in "
4441 "the top cpuset that might use nontrivial amounts of CPU, as such processes "
4442 "may be artificially constrained to some subset of CPUs, depending on the "
4443 "particulars of this flag setting in descendant cpusets.  Even if such a "
4444 "process could use spare CPU cycles in some other CPUs, the kernel scheduler "
4445 "might not consider the possibility of load balancing that process to the "
4446 "underused CPU."
4447 msgstr ""
4448
4449 #.  ================== Scheduler Relax Domain Level ==================
4450 #. type: Plain text
4451 #: build/C/man7/cpuset.7:780
4452 msgid ""
4453 "Of course, processes pinned to a particular CPU can be left in a cpuset that "
4454 "disables I<sched_load_balance> as those processes aren't going anywhere else "
4455 "anyway."
4456 msgstr ""
4457
4458 #. type: SS
4459 #: build/C/man7/cpuset.7:780
4460 #, no-wrap
4461 msgid "Scheduler relax domain level"
4462 msgstr ""
4463
4464 #. type: Plain text
4465 #: build/C/man7/cpuset.7:801
4466 msgid ""
4467 "The kernel scheduler performs immediate load balancing whenever a CPU "
4468 "becomes free or another task becomes runnable.  This load balancing works to "
4469 "ensure that as many CPUs as possible are usefully employed running tasks.  "
4470 "The kernel also performs periodic load balancing off the software clock "
4471 "described in B<time>(7).  The setting of I<sched_relax_domain_level> applies "
4472 "only to immediate load balancing.  Regardless of the "
4473 "I<sched_relax_domain_level> setting, periodic load balancing is attempted "
4474 "over all CPUs (unless disabled by turning off I<sched_load_balance>.)  In "
4475 "any case, of course, tasks will be scheduled to run only on CPUs allowed by "
4476 "their cpuset, as modified by B<sched_setaffinity>(2)  system calls."
4477 msgstr ""
4478
4479 #. type: Plain text
4480 #: build/C/man7/cpuset.7:809
4481 msgid ""
4482 "On small systems, such as those with just a few CPUs, immediate load "
4483 "balancing is useful to improve system interactivity and to minimize wasteful "
4484 "idle CPU cycles.  But on large systems, attempting immediate load balancing "
4485 "across a large number of CPUs can be more costly than it is worth, depending "
4486 "on the particular performance characteristics of the job mix and the "
4487 "hardware."
4488 msgstr ""
4489
4490 #. type: Plain text
4491 #: build/C/man7/cpuset.7:817
4492 msgid ""
4493 "The exact meaning of the small integer values of I<sched_relax_domain_level> "
4494 "will depend on internal implementation details of the kernel scheduler code "
4495 "and on the non-uniform architecture of the hardware.  Both of these will "
4496 "evolve over time and vary by system architecture and kernel version."
4497 msgstr ""
4498
4499 #. type: Plain text
4500 #: build/C/man7/cpuset.7:822
4501 msgid ""
4502 "As of this writing, when this capability was introduced in Linux 2.6.26, on "
4503 "certain popular architectures, the positive values of "
4504 "I<sched_relax_domain_level> have the following meanings."
4505 msgstr ""
4506
4507 #. type: IP
4508 #: build/C/man7/cpuset.7:824
4509 #, no-wrap
4510 msgid "B<(1)>"
4511 msgstr "B<(1)>"
4512
4513 #. type: Plain text
4514 #: build/C/man7/cpuset.7:827
4515 msgid ""
4516 "Perform immediate load balancing across Hyper-Thread siblings on the same "
4517 "core."
4518 msgstr ""
4519
4520 #. type: IP
4521 #: build/C/man7/cpuset.7:827
4522 #, no-wrap
4523 msgid "B<(2)>"
4524 msgstr "B<(2)>"
4525
4526 #. type: Plain text
4527 #: build/C/man7/cpuset.7:829
4528 msgid ""
4529 "Perform immediate load balancing across other cores in the same package."
4530 msgstr ""
4531
4532 #. type: IP
4533 #: build/C/man7/cpuset.7:829
4534 #, no-wrap
4535 msgid "B<(3)>"
4536 msgstr "B<(3)>"
4537
4538 #. type: Plain text
4539 #: build/C/man7/cpuset.7:832
4540 msgid ""
4541 "Perform immediate load balancing across other CPUs on the same node or blade."
4542 msgstr ""
4543
4544 #. type: IP
4545 #: build/C/man7/cpuset.7:832
4546 #, no-wrap
4547 msgid "B<(4)>"
4548 msgstr "B<(4)>"
4549
4550 #. type: Plain text
4551 #: build/C/man7/cpuset.7:835
4552 msgid ""
4553 "Perform immediate load balancing across over several (implementation detail) "
4554 "nodes [On NUMA systems]."
4555 msgstr ""
4556
4557 #. type: IP
4558 #: build/C/man7/cpuset.7:835
4559 #, no-wrap
4560 msgid "B<(5)>"
4561 msgstr "B<(5)>"
4562
4563 #. type: Plain text
4564 #: build/C/man7/cpuset.7:838
4565 msgid ""
4566 "Perform immediate load balancing across over all CPUs in system [On NUMA "
4567 "systems]."
4568 msgstr ""
4569
4570 #. type: Plain text
4571 #: build/C/man7/cpuset.7:847
4572 msgid ""
4573 "The I<sched_relax_domain_level> value of zero (0) always means don't perform "
4574 "immediate load balancing, hence that load balancing is done only "
4575 "periodically, not immediately when a CPU becomes available or another task "
4576 "becomes runnable."
4577 msgstr ""
4578
4579 #. type: Plain text
4580 #: build/C/man7/cpuset.7:855
4581 msgid ""
4582 "The I<sched_relax_domain_level> value of minus one (-1)  always means use "
4583 "the system default value.  The system default value can vary by architecture "
4584 "and kernel version.  This system default value can be changed by kernel boot-"
4585 "time \"relax_domain_level=\" argument."
4586 msgstr ""
4587
4588 #. type: Plain text
4589 #: build/C/man7/cpuset.7:863
4590 msgid ""
4591 "In the case of multiple overlapping cpusets which have conflicting "
4592 "I<sched_relax_domain_level> values, then the highest such value applies to "
4593 "all CPUs in any of the overlapping cpusets.  In such cases, the value "
4594 "B<minus one (-1)> is the lowest value, overridden by any other value, and "
4595 "the value B<zero (0)> is the next lowest value."
4596 msgstr ""
4597
4598 #. type: SH
4599 #: build/C/man7/cpuset.7:863
4600 #, no-wrap
4601 msgid "FORMATS"
4602 msgstr ""
4603
4604 #.  ================== Mask Format ==================
4605 #. type: Plain text
4606 #: build/C/man7/cpuset.7:867
4607 msgid ""
4608 "The following formats are used to represent sets of CPUs and memory nodes."
4609 msgstr ""
4610
4611 #. type: SS
4612 #: build/C/man7/cpuset.7:867
4613 #, no-wrap
4614 msgid "Mask format"
4615 msgstr ""
4616
4617 #. type: Plain text
4618 #: build/C/man7/cpuset.7:872
4619 msgid ""
4620 "The B<Mask Format> is used to represent CPU and memory-node bit masks in the "
4621 "I</proc/E<lt>pidE<gt>/status> file."
4622 msgstr ""
4623
4624 #. type: Plain text
4625 #: build/C/man7/cpuset.7:880
4626 msgid ""
4627 "This format displays each 32-bit word in hexadecimal (using ASCII characters "
4628 "\"0\" - \"9\" and \"a\" - \"f\"); words are filled with leading zeros, if "
4629 "required.  For masks longer than one word, a comma separator is used between "
4630 "words.  Words are displayed in big-endian order, which has the most "
4631 "significant bit first.  The hex digits within a word are also in big-endian "
4632 "order."
4633 msgstr ""
4634
4635 #. type: Plain text
4636 #: build/C/man7/cpuset.7:883
4637 msgid ""
4638 "The number of 32-bit words displayed is the minimum number needed to display "
4639 "all bits of the bit mask, based on the size of the bit mask."
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: build/C/man7/cpuset.7:885
4644 msgid "Examples of the B<Mask Format>:"
4645 msgstr ""
4646
4647 #. type: Plain text
4648 #: build/C/man7/cpuset.7:893
4649 #, no-wrap
4650 msgid ""
4651 "00000001                        # just bit 0 set\n"
4652 "40000000,00000000,00000000      # just bit 94 set\n"
4653 "00000001,00000000,00000000      # just bit 64 set\n"
4654 "000000ff,00000000               # bits 32-39 set\n"
4655 "00000000,000e3862               # 1,5,6,11-13,17-19 set\n"
4656 msgstr ""
4657 "00000001                        # just bit 0 set\n"
4658 "40000000,00000000,00000000      # just bit 94 set\n"
4659 "00000001,00000000,00000000      # just bit 64 set\n"
4660 "000000ff,00000000               # bits 32-39 set\n"
4661 "00000000,000e3862               # 1,5,6,11-13,17-19 set\n"
4662
4663 #. type: Plain text
4664 #: build/C/man7/cpuset.7:897
4665 msgid "A mask with bits 0, 1, 2, 4, 8, 16, 32, and 64 set displays as:"
4666 msgstr ""
4667
4668 #. type: Plain text
4669 #: build/C/man7/cpuset.7:901
4670 #, no-wrap
4671 msgid "00000001,00000001,00010117\n"
4672 msgstr "00000001,00000001,00010117\n"
4673
4674 #.  ================== List Format ==================
4675 #. type: Plain text
4676 #: build/C/man7/cpuset.7:908
4677 msgid ""
4678 "The first \"1\" is for bit 64, the second for bit 32, the third for bit 16, "
4679 "the fourth for bit 8, the fifth for bit 4, and the \"7\" is for bits 2, 1, "
4680 "and 0."
4681 msgstr ""
4682
4683 #. type: SS
4684 #: build/C/man7/cpuset.7:908
4685 #, no-wrap
4686 msgid "List format"
4687 msgstr ""
4688
4689 #. type: Plain text
4690 #: build/C/man7/cpuset.7:915
4691 msgid ""
4692 "The B<List Format> for I<cpus> and I<mems> is a comma-separated list of CPU "
4693 "or memory-node numbers and ranges of numbers, in ASCII decimal."
4694 msgstr ""
4695
4696 #. type: Plain text
4697 #: build/C/man7/cpuset.7:917
4698 msgid "Examples of the B<List Format>:"
4699 msgstr ""
4700
4701 #. type: Plain text
4702 #: build/C/man7/cpuset.7:922
4703 #, no-wrap
4704 msgid ""
4705 "0-4,9           # bits 0, 1, 2, 3, 4, and 9 set\n"
4706 "0-2,7,12-14     # bits 0, 1, 2, 7, 12, 13, and 14 set\n"
4707 msgstr ""
4708 "0-4,9           # bits 0, 1, 2, 3, 4, and 9 set\n"
4709 "0-2,7,12-14     # bits 0, 1, 2, 7, 12, 13, and 14 set\n"
4710
4711 #.  ================== RULES ==================
4712 #. type: SH
4713 #: build/C/man7/cpuset.7:925
4714 #, no-wrap
4715 msgid "RULES"
4716 msgstr ""
4717
4718 #. type: Plain text
4719 #: build/C/man7/cpuset.7:927
4720 msgid "The following rules apply to each cpuset:"
4721 msgstr ""
4722
4723 #. type: Plain text
4724 #: build/C/man7/cpuset.7:930
4725 msgid ""
4726 "Its CPUs and memory nodes must be a (possibly equal)  subset of its parent's."
4727 msgstr ""
4728
4729 #. type: Plain text
4730 #: build/C/man7/cpuset.7:934
4731 msgid "It can be marked I<cpu_exclusive> only if its parent is."
4732 msgstr ""
4733
4734 #. type: Plain text
4735 #: build/C/man7/cpuset.7:938
4736 msgid "It can be marked I<mem_exclusive> only if its parent is."
4737 msgstr ""
4738
4739 #. type: Plain text
4740 #: build/C/man7/cpuset.7:942
4741 msgid "If it is I<cpu_exclusive>, its CPUs may not overlap any sibling."
4742 msgstr ""
4743
4744 #.  ================== PERMISSIONS ==================
4745 #. type: Plain text
4746 #: build/C/man7/cpuset.7:947
4747 msgid ""
4748 "If it is I<memory_exclusive>, its memory nodes may not overlap any sibling."
4749 msgstr ""
4750
4751 #. type: SH
4752 #: build/C/man7/cpuset.7:947
4753 #, no-wrap
4754 msgid "PERMISSIONS"
4755 msgstr ""
4756
4757 #. type: Plain text
4758 #: build/C/man7/cpuset.7:952
4759 msgid ""
4760 "The permissions of a cpuset are determined by the permissions of the "
4761 "directories and pseudo-files in the cpuset filesystem, normally mounted at "
4762 "I</dev/cpuset>."
4763 msgstr ""
4764
4765 #. type: Plain text
4766 #: build/C/man7/cpuset.7:961
4767 msgid ""
4768 "For instance, a process can put itself in some other cpuset (than its "
4769 "current one) if it can write the I<tasks> file for that cpuset.  This "
4770 "requires execute permission on the encompassing directories and write "
4771 "permission on the I<tasks> file."
4772 msgstr ""
4773
4774 #. type: Plain text
4775 #: build/C/man7/cpuset.7:968
4776 msgid ""
4777 "An additional constraint is applied to requests to place some other process "
4778 "in a cpuset.  One process may not attach another to a cpuset unless it would "
4779 "have permission to send that process a signal (see B<kill>(2))."
4780 msgstr ""
4781
4782 #. type: Plain text
4783 #: build/C/man7/cpuset.7:979
4784 msgid ""
4785 "A process may create a child cpuset if it can access and write the parent "
4786 "cpuset directory.  It can modify the CPUs or memory nodes in a cpuset if it "
4787 "can access that cpuset's directory (execute permissions on the each of the "
4788 "parent directories) and write the corresponding I<cpus> or I<mems> file."
4789 msgstr ""
4790
4791 #. type: Plain text
4792 #: build/C/man7/cpuset.7:1000
4793 msgid ""
4794 "There is one minor difference between the manner in which these permissions "
4795 "are evaluated and the manner in which normal filesystem operation "
4796 "permissions are evaluated.  The kernel interprets relative pathnames "
4797 "starting at a process's current working directory.  Even if one is operating "
4798 "on a cpuset file, relative pathnames are interpreted relative to the "
4799 "process's current working directory, not relative to the process's current "
4800 "cpuset.  The only ways that cpuset paths relative to a process's current "
4801 "cpuset can be used are if either the process's current working directory is "
4802 "its cpuset (it first did a B<cd> or B<chdir>(2)  to its cpuset directory "
4803 "beneath I</dev/cpuset>, which is a bit unusual)  or if some user code "
4804 "converts the relative cpuset path to a full filesystem path."
4805 msgstr ""
4806
4807 #.  ================== WARNINGS ==================
4808 #. type: Plain text
4809 #: build/C/man7/cpuset.7:1015
4810 msgid ""
4811 "In theory, this means that user code should specify cpusets using absolute "
4812 "pathnames, which requires knowing the mount point of the cpuset filesystem "
4813 "(usually, but not necessarily, I</dev/cpuset>).  In practice, all user level "
4814 "code that this author is aware of simply assumes that if the cpuset "
4815 "filesystem is mounted, then it is mounted at I</dev/cpuset>.  Furthermore, "
4816 "it is common practice for carefully written user code to verify the presence "
4817 "of the pseudo-file I</dev/cpuset/tasks> in order to verify that the cpuset "
4818 "pseudo-filesystem is currently mounted."
4819 msgstr ""
4820
4821 #. type: SH
4822 #: build/C/man7/cpuset.7:1015
4823 #, no-wrap
4824 msgid "WARNINGS"
4825 msgstr ""
4826
4827 #. type: SS
4828 #: build/C/man7/cpuset.7:1016
4829 #, no-wrap
4830 msgid "Enabling memory_pressure"
4831 msgstr ""
4832
4833 #. type: Plain text
4834 #: build/C/man7/cpuset.7:1025
4835 msgid ""
4836 "By default, the per-cpuset file I<cpuset.memory_pressure> always contains "
4837 "zero (0).  Unless this feature is enabled by writing \"1\" to the pseudo-"
4838 "file I</dev/cpuset/cpuset.memory_pressure_enabled>, the kernel does not "
4839 "compute per-cpuset I<memory_pressure>."
4840 msgstr ""
4841
4842 #. type: SS
4843 #: build/C/man7/cpuset.7:1025
4844 #, no-wrap
4845 msgid "Using the echo command"
4846 msgstr ""
4847
4848 #.  Gack!  csh(1)'s echo does this
4849 #. type: Plain text
4850 #: build/C/man7/cpuset.7:1036
4851 msgid ""
4852 "When using the B<echo> command at the shell prompt to change the values of "
4853 "cpuset files, beware that the built-in B<echo> command in some shells does "
4854 "not display an error message if the B<write>(2)  system call fails.  For "
4855 "example, if the command:"
4856 msgstr ""
4857
4858 #. type: Plain text
4859 #: build/C/man7/cpuset.7:1040
4860 #, no-wrap
4861 msgid "echo 19 E<gt> cpuset.mems\n"
4862 msgstr "echo 19 E<gt> cpuset.mems\n"
4863
4864 #. type: Plain text
4865 #: build/C/man7/cpuset.7:1053
4866 msgid ""
4867 "failed because memory node 19 was not allowed (perhaps the current system "
4868 "does not have a memory node 19), then the B<echo> command might not display "
4869 "any error.  It is better to use the B</bin/echo> external command to change "
4870 "cpuset file settings, as this command will display B<write>(2)  errors, as "
4871 "in the example:"
4872 msgstr ""
4873
4874 #. type: Plain text
4875 #: build/C/man7/cpuset.7:1058
4876 #, no-wrap
4877 msgid ""
4878 "/bin/echo 19 E<gt> cpuset.mems\n"
4879 "/bin/echo: write error: Invalid argument\n"
4880 msgstr ""
4881 "/bin/echo 19 E<gt> cpuset.mems\n"
4882 "/bin/echo: write error: Invalid argument\n"
4883
4884 #.  ================== EXCEPTIONS ==================
4885 #. type: SH
4886 #: build/C/man7/cpuset.7:1061
4887 #, no-wrap
4888 msgid "EXCEPTIONS"
4889 msgstr ""
4890
4891 #. type: SS
4892 #: build/C/man7/cpuset.7:1062
4893 #, no-wrap
4894 msgid "Memory placement"
4895 msgstr ""
4896
4897 #. type: Plain text
4898 #: build/C/man7/cpuset.7:1065
4899 msgid ""
4900 "Not all allocations of system memory are constrained by cpusets, for the "
4901 "following reasons."
4902 msgstr ""
4903
4904 #. type: Plain text
4905 #: build/C/man7/cpuset.7:1080
4906 msgid ""
4907 "If hot-plug functionality is used to remove all the CPUs that are currently "
4908 "assigned to a cpuset, then the kernel will automatically update the "
4909 "I<cpus_allowed> of all processes attached to CPUs in that cpuset to allow "
4910 "all CPUs.  When memory hot-plug functionality for removing memory nodes is "
4911 "available, a similar exception is expected to apply there as well.  In "
4912 "general, the kernel prefers to violate cpuset placement, rather than "
4913 "starving a process that has had all its allowed CPUs or memory nodes taken "
4914 "offline.  User code should reconfigure cpusets to refer only to online CPUs "
4915 "and memory nodes when using hot-plug to add or remove such resources."
4916 msgstr ""
4917
4918 #. type: Plain text
4919 #: build/C/man7/cpuset.7:1088
4920 msgid ""
4921 "A few kernel-critical, internal memory-allocation requests, marked "
4922 "GFP_ATOMIC, must be satisfied immediately.  The kernel may drop some request "
4923 "or malfunction if one of these allocations fail.  If such a request cannot "
4924 "be satisfied within the current process's cpuset, then we relax the cpuset, "
4925 "and look for memory anywhere we can find it.  It's better to violate the "
4926 "cpuset than stress the kernel."
4927 msgstr ""
4928
4929 #. type: Plain text
4930 #: build/C/man7/cpuset.7:1092
4931 msgid ""
4932 "Allocations of memory requested by kernel drivers while processing an "
4933 "interrupt lack any relevant process context, and are not confined by cpusets."
4934 msgstr ""
4935
4936 #. type: SS
4937 #: build/C/man7/cpuset.7:1092
4938 #, no-wrap
4939 msgid "Renaming cpusets"
4940 msgstr ""
4941
4942 #.  ================== ERRORS ==================
4943 #. type: Plain text
4944 #: build/C/man7/cpuset.7:1100
4945 msgid ""
4946 "You can use the B<rename>(2)  system call to rename cpusets.  Only simple "
4947 "renaming is supported; that is, changing the name of a cpuset directory is "
4948 "permitted, but moving a directory into a different directory is not "
4949 "permitted."
4950 msgstr ""
4951
4952 #. type: Plain text
4953 #: build/C/man7/cpuset.7:1104
4954 msgid ""
4955 "The Linux kernel implementation of cpusets sets I<errno> to specify the "
4956 "reason for a failed system call affecting cpusets."
4957 msgstr ""
4958
4959 #. type: Plain text
4960 #: build/C/man7/cpuset.7:1109
4961 msgid ""
4962 "The possible I<errno> settings and their meaning when set on a failed cpuset "
4963 "call are as listed below."
4964 msgstr ""
4965
4966 #. type: TP
4967 #: build/C/man7/cpuset.7:1109
4968 #, no-wrap
4969 msgid "B<E2BIG>"
4970 msgstr "B<E2BIG>"
4971
4972 #. type: Plain text
4973 #: build/C/man7/cpuset.7:1116
4974 msgid ""
4975 "Attempted a B<write>(2)  on a special cpuset file with a length larger than "
4976 "some kernel-determined upper limit on the length of such writes."
4977 msgstr ""
4978
4979 #. type: Plain text
4980 #: build/C/man7/cpuset.7:1123
4981 msgid ""
4982 "Attempted to B<write>(2)  the process ID (PID) of a process to a cpuset "
4983 "I<tasks> file when one lacks permission to move that process."
4984 msgstr ""
4985
4986 #. type: Plain text
4987 #: build/C/man7/cpuset.7:1129
4988 msgid ""
4989 "Attempted to add, using B<write>(2), a CPU or memory node to a cpuset, when "
4990 "that CPU or memory node was not already in its parent."
4991 msgstr ""
4992
4993 #. type: Plain text
4994 #: build/C/man7/cpuset.7:1137
4995 msgid ""
4996 "Attempted to set, using B<write>(2), I<cpuset.cpu_exclusive> or I<cpuset."
4997 "mem_exclusive> on a cpuset whose parent lacks the same setting."
4998 msgstr ""
4999
5000 #. type: Plain text
5001 #: build/C/man7/cpuset.7:1144
5002 msgid "Attempted to B<write>(2)  a I<cpuset.memory_pressure> file."
5003 msgstr ""
5004
5005 #. type: Plain text
5006 #: build/C/man7/cpuset.7:1147
5007 msgid "Attempted to create a file in a cpuset directory."
5008 msgstr ""
5009
5010 #. type: TP
5011 #: build/C/man7/cpuset.7:1147 build/C/man7/cpuset.7:1152
5012 #: build/C/man7/cpuset.7:1157
5013 #, no-wrap
5014 msgid "B<EBUSY>"
5015 msgstr "B<EBUSY>"
5016
5017 #. type: Plain text
5018 #: build/C/man7/cpuset.7:1152
5019 msgid ""
5020 "Attempted to remove, using B<rmdir>(2), a cpuset with attached processes."
5021 msgstr ""
5022
5023 #. type: Plain text
5024 #: build/C/man7/cpuset.7:1157
5025 msgid "Attempted to remove, using B<rmdir>(2), a cpuset with child cpusets."
5026 msgstr ""
5027
5028 #. type: Plain text
5029 #: build/C/man7/cpuset.7:1162
5030 msgid ""
5031 "Attempted to remove a CPU or memory node from a cpuset that is also in a "
5032 "child of that cpuset."
5033 msgstr ""
5034
5035 #. type: TP
5036 #: build/C/man7/cpuset.7:1162 build/C/man7/cpuset.7:1167
5037 #, no-wrap
5038 msgid "B<EEXIST>"
5039 msgstr "B<EEXIST>"
5040
5041 #. type: Plain text
5042 #: build/C/man7/cpuset.7:1167
5043 msgid "Attempted to create, using B<mkdir>(2), a cpuset that already exists."
5044 msgstr ""
5045
5046 #. type: Plain text
5047 #: build/C/man7/cpuset.7:1172
5048 msgid "Attempted to B<rename>(2)  a cpuset to a name that already exists."
5049 msgstr ""
5050
5051 #. type: Plain text
5052 #: build/C/man7/cpuset.7:1180
5053 msgid ""
5054 "Attempted to B<read>(2)  or B<write>(2)  a cpuset file using a buffer that "
5055 "is outside the writing processes accessible address space."
5056 msgstr ""
5057
5058 #. type: Plain text
5059 #: build/C/man7/cpuset.7:1189
5060 msgid ""
5061 "Attempted to change a cpuset, using B<write>(2), in a way that would violate "
5062 "a I<cpu_exclusive> or I<mem_exclusive> attribute of that cpuset or any of "
5063 "its siblings."
5064 msgstr ""
5065
5066 #. type: Plain text
5067 #: build/C/man7/cpuset.7:1198
5068 msgid ""
5069 "Attempted to B<write>(2)  an empty I<cpuset.cpus> or I<cpuset.mems> list to "
5070 "a cpuset which has attached processes or child cpusets."
5071 msgstr ""
5072
5073 #. type: Plain text
5074 #: build/C/man7/cpuset.7:1208
5075 msgid ""
5076 "Attempted to B<write>(2)  a I<cpuset.cpus> or I<cpuset.mems> list which "
5077 "included a range with the second number smaller than the first number."
5078 msgstr ""
5079
5080 #. type: Plain text
5081 #: build/C/man7/cpuset.7:1217
5082 msgid ""
5083 "Attempted to B<write>(2)  a I<cpuset.cpus> or I<cpuset.mems> list which "
5084 "included an invalid character in the string."
5085 msgstr ""
5086
5087 #. type: Plain text
5088 #: build/C/man7/cpuset.7:1224
5089 msgid ""
5090 "Attempted to B<write>(2)  a list to a I<cpuset.cpus> file that did not "
5091 "include any online CPUs."
5092 msgstr ""
5093
5094 #. type: Plain text
5095 #: build/C/man7/cpuset.7:1231
5096 msgid ""
5097 "Attempted to B<write>(2)  a list to a I<cpuset.mems> file that did not "
5098 "include any online memory nodes."
5099 msgstr ""
5100
5101 #. type: Plain text
5102 #: build/C/man7/cpuset.7:1238
5103 msgid ""
5104 "Attempted to B<write>(2)  a list to a I<cpuset.mems> file that included a "
5105 "node that held no memory."
5106 msgstr ""
5107
5108 #. type: Plain text
5109 #: build/C/man7/cpuset.7:1246
5110 msgid ""
5111 "Attempted to B<write>(2)  a string to a cpuset I<tasks> file that does not "
5112 "begin with an ASCII decimal integer."
5113 msgstr ""
5114
5115 #. type: Plain text
5116 #: build/C/man7/cpuset.7:1251
5117 msgid "Attempted to B<rename>(2)  a cpuset into a different directory."
5118 msgstr ""
5119
5120 #. type: Plain text
5121 #: build/C/man7/cpuset.7:1258
5122 msgid ""
5123 "Attempted to B<read>(2)  a I</proc/E<lt>pidE<gt>/cpuset> file for a cpuset "
5124 "path that is longer than the kernel page size."
5125 msgstr ""
5126
5127 #. type: Plain text
5128 #: build/C/man7/cpuset.7:1263
5129 msgid ""
5130 "Attempted to create, using B<mkdir>(2), a cpuset whose base directory name "
5131 "is longer than 255 characters."
5132 msgstr ""
5133
5134 #. type: Plain text
5135 #: build/C/man7/cpuset.7:1270
5136 msgid ""
5137 "Attempted to create, using B<mkdir>(2), a cpuset whose full pathname, "
5138 "including the mount point (typically \"/dev/cpuset/\") prefix, is longer "
5139 "than 4095 characters."
5140 msgstr ""
5141
5142 #. type: TP
5143 #: build/C/man7/cpuset.7:1270
5144 #, no-wrap
5145 msgid "B<ENODEV>"
5146 msgstr "B<ENODEV>"
5147
5148 #. type: Plain text
5149 #: build/C/man7/cpuset.7:1275
5150 msgid ""
5151 "The cpuset was removed by another process at the same time as a B<write>(2)  "
5152 "was attempted on one of the pseudo-files in the cpuset directory."
5153 msgstr ""
5154
5155 #. type: Plain text
5156 #: build/C/man7/cpuset.7:1280
5157 msgid ""
5158 "Attempted to create, using B<mkdir>(2), a cpuset in a parent cpuset that "
5159 "doesn't exist."
5160 msgstr ""
5161
5162 #. type: Plain text
5163 #: build/C/man7/cpuset.7:1287
5164 msgid ""
5165 "Attempted to B<access>(2)  or B<open>(2)  a nonexistent file in a cpuset "
5166 "directory."
5167 msgstr ""
5168
5169 #. type: Plain text
5170 #: build/C/man7/cpuset.7:1292
5171 msgid ""
5172 "Insufficient memory is available within the kernel; can occur on a variety "
5173 "of system calls affecting cpusets, but only if the system is extremely short "
5174 "of memory."
5175 msgstr ""
5176
5177 #. type: TP
5178 #: build/C/man7/cpuset.7:1292 build/C/man7/cpuset.7:1304
5179 #, no-wrap
5180 msgid "B<ENOSPC>"
5181 msgstr "B<ENOSPC>"
5182
5183 #. type: Plain text
5184 #: build/C/man7/cpuset.7:1304
5185 msgid ""
5186 "Attempted to B<write>(2)  the process ID (PID)  of a process to a cpuset "
5187 "I<tasks> file when the cpuset had an empty I<cpuset.cpus> or empty I<cpuset."
5188 "mems> setting."
5189 msgstr ""
5190
5191 #. type: Plain text
5192 #: build/C/man7/cpuset.7:1314
5193 msgid ""
5194 "Attempted to B<write>(2)  an empty I<cpuset.cpus> or I<cpuset.mems> setting "
5195 "to a cpuset that has tasks attached."
5196 msgstr ""
5197
5198 #. type: Plain text
5199 #: build/C/man7/cpuset.7:1319
5200 msgid "Attempted to B<rename>(2)  a nonexistent cpuset."
5201 msgstr ""
5202
5203 #. type: Plain text
5204 #: build/C/man7/cpuset.7:1322
5205 msgid "Attempted to remove a file from a cpuset directory."
5206 msgstr ""
5207
5208 #. type: TP
5209 #: build/C/man7/cpuset.7:1322
5210 #, no-wrap
5211 msgid "B<ERANGE>"
5212 msgstr "B<ERANGE>"
5213
5214 #. type: Plain text
5215 #: build/C/man7/cpuset.7:1330
5216 msgid ""
5217 "Specified a I<cpuset.cpus> or I<cpuset.mems> list to the kernel which "
5218 "included a number too large for the kernel to set in its bit masks."
5219 msgstr ""
5220
5221 #.  ================== VERSIONS ==================
5222 #. type: Plain text
5223 #: build/C/man7/cpuset.7:1338
5224 msgid ""
5225 "Attempted to B<write>(2)  the process ID (PID) of a nonexistent process to a "
5226 "cpuset I<tasks> file."
5227 msgstr ""
5228
5229 #.  ================== NOTES ==================
5230 #. type: Plain text
5231 #: build/C/man7/cpuset.7:1341
5232 msgid "Cpusets appeared in version 2.6.12 of the Linux kernel."
5233 msgstr ""
5234
5235 #.  ================== BUGS ==================
5236 #. type: Plain text
5237 #: build/C/man7/cpuset.7:1352
5238 msgid ""
5239 "Despite its name, the I<pid> parameter is actually a thread ID, and each "
5240 "thread in a threaded group can be attached to a different cpuset.  The value "
5241 "returned from a call to B<gettid>(2)  can be passed in the argument I<pid>."
5242 msgstr ""
5243
5244 #. type: SH
5245 #: build/C/man7/cpuset.7:1352 build/C/man2/getpriority.2:225
5246 #: build/C/man2/getrlimit.2:570 build/C/man2/ioprio_set.2:337
5247 #: build/C/man2/setfsgid.2:106 build/C/man2/setfsuid.2:114
5248 #, no-wrap
5249 msgid "BUGS"
5250 msgstr "バグ"
5251
5252 #.  ================== EXAMPLE ==================
5253 #. type: Plain text
5254 #: build/C/man7/cpuset.7:1365
5255 msgid ""
5256 "I<cpuset.memory_pressure> cpuset files can be opened for writing, creation, "
5257 "or truncation, but then the B<write>(2)  fails with I<errno> set to "
5258 "B<EACCES>, and the creation and truncation options on B<open>(2)  have no "
5259 "effect."
5260 msgstr ""
5261
5262 #. type: SH
5263 #: build/C/man7/cpuset.7:1365 build/C/man2/getrlimit.2:703
5264 #: build/C/man7/namespaces.7:361 build/C/man7/pid_namespaces.7:343
5265 #: build/C/man7/user_namespaces.7:677
5266 #, no-wrap
5267 msgid "EXAMPLE"
5268 msgstr "例"
5269
5270 #. type: Plain text
5271 #: build/C/man7/cpuset.7:1368
5272 msgid ""
5273 "The following examples demonstrate querying and setting cpuset options using "
5274 "shell commands."
5275 msgstr ""
5276
5277 #. type: SS
5278 #: build/C/man7/cpuset.7:1368
5279 #, no-wrap
5280 msgid "Creating and attaching to a cpuset."
5281 msgstr ""
5282
5283 #. type: Plain text
5284 #: build/C/man7/cpuset.7:1371
5285 msgid ""
5286 "To create a new cpuset and attach the current command shell to it, the steps "
5287 "are:"
5288 msgstr ""
5289
5290 #. type: IP
5291 #: build/C/man7/cpuset.7:1373 build/C/man7/cpuset.7:1412
5292 #, no-wrap
5293 msgid "1)"
5294 msgstr "1)"
5295
5296 #. type: Plain text
5297 #: build/C/man7/cpuset.7:1375
5298 msgid "mkdir /dev/cpuset (if not already done)"
5299 msgstr ""
5300
5301 #. type: IP
5302 #: build/C/man7/cpuset.7:1375 build/C/man7/cpuset.7:1418
5303 #, no-wrap
5304 msgid "2)"
5305 msgstr "2)"
5306
5307 #. type: Plain text
5308 #: build/C/man7/cpuset.7:1377
5309 msgid "mount -t cpuset none /dev/cpuset (if not already done)"
5310 msgstr ""
5311
5312 #. type: IP
5313 #: build/C/man7/cpuset.7:1377 build/C/man7/cpuset.7:1421
5314 #, no-wrap
5315 msgid "3)"
5316 msgstr "3)"
5317
5318 #. type: Plain text
5319 #: build/C/man7/cpuset.7:1380
5320 msgid "Create the new cpuset using B<mkdir>(1)."
5321 msgstr ""
5322
5323 #. type: IP
5324 #: build/C/man7/cpuset.7:1380 build/C/man7/cpuset.7:1424
5325 #, no-wrap
5326 msgid "4)"
5327 msgstr "4)"
5328
5329 #. type: Plain text
5330 #: build/C/man7/cpuset.7:1382
5331 msgid "Assign CPUs and memory nodes to the new cpuset."
5332 msgstr ""
5333
5334 #. type: IP
5335 #: build/C/man7/cpuset.7:1382 build/C/man7/cpuset.7:1429
5336 #, no-wrap
5337 msgid "5)"
5338 msgstr "5)"
5339
5340 #. type: Plain text
5341 #: build/C/man7/cpuset.7:1384
5342 msgid "Attach the shell to the new cpuset."
5343 msgstr ""
5344
5345 #. type: Plain text
5346 #: build/C/man7/cpuset.7:1389
5347 msgid ""
5348 "For example, the following sequence of commands will set up a cpuset named "
5349 "\"Charlie\", containing just CPUs 2 and 3, and memory node 1, and then "
5350 "attach the current shell to that cpuset."
5351 msgstr ""
5352
5353 #. type: Plain text
5354 #: build/C/man7/cpuset.7:1403
5355 #, no-wrap
5356 msgid ""
5357 "$B< mkdir /dev/cpuset>\n"
5358 "$B< mount -t cpuset cpuset /dev/cpuset>\n"
5359 "$B< cd /dev/cpuset>\n"
5360 "$B< mkdir Charlie>\n"
5361 "$B< cd Charlie>\n"
5362 "$B< /bin/echo 2-3 E<gt> cpuset.cpus>\n"
5363 "$B< /bin/echo 1 E<gt> cpuset.mems>\n"
5364 "$B< /bin/echo $$ E<gt> tasks>\n"
5365 "# The current shell is now running in cpuset Charlie\n"
5366 "# The next line should display '/Charlie'\n"
5367 "$B< cat /proc/self/cpuset>\n"
5368 msgstr ""
5369 "$B< mkdir /dev/cpuset>\n"
5370 "$B< mount -t cpuset cpuset /dev/cpuset>\n"
5371 "$B< cd /dev/cpuset>\n"
5372 "$B< mkdir Charlie>\n"
5373 "$B< cd Charlie>\n"
5374 "$B< /bin/echo 2-3 E<gt> cpuset.cpus>\n"
5375 "$B< /bin/echo 1 E<gt> cpuset.mems>\n"
5376 "$B< /bin/echo $$ E<gt> tasks>\n"
5377 "# The current shell is now running in cpuset Charlie\n"
5378 "# The next line should display '/Charlie'\n"
5379 "$B< cat /proc/self/cpuset>\n"
5380
5381 #. type: SS
5382 #: build/C/man7/cpuset.7:1405
5383 #, no-wrap
5384 msgid "Migrating a job to different memory nodes."
5385 msgstr ""
5386
5387 #. type: Plain text
5388 #: build/C/man7/cpuset.7:1410
5389 msgid ""
5390 "To migrate a job (the set of processes attached to a cpuset)  to different "
5391 "CPUs and memory nodes in the system, including moving the memory pages "
5392 "currently allocated to that job, perform the following steps."
5393 msgstr ""
5394
5395 #. type: Plain text
5396 #: build/C/man7/cpuset.7:1418
5397 msgid ""
5398 "Let's say we want to move the job in cpuset I<alpha> (CPUs 4-7 and memory "
5399 "nodes 2-3) to a new cpuset I<beta> (CPUs 16-19 and memory nodes 8-9)."
5400 msgstr ""
5401
5402 #. type: Plain text
5403 #: build/C/man7/cpuset.7:1421
5404 msgid "First create the new cpuset I<beta>."
5405 msgstr ""
5406
5407 #. type: Plain text
5408 #: build/C/man7/cpuset.7:1424
5409 msgid "Then allow CPUs 16-19 and memory nodes 8-9 in I<beta>."
5410 msgstr ""
5411
5412 #. type: Plain text
5413 #: build/C/man7/cpuset.7:1429
5414 msgid "Then enable I<memory_migration> in I<beta>."
5415 msgstr ""
5416
5417 #. type: Plain text
5418 #: build/C/man7/cpuset.7:1434
5419 msgid "Then move each process from I<alpha> to I<beta>."
5420 msgstr ""
5421
5422 #. type: Plain text
5423 #: build/C/man7/cpuset.7:1437
5424 msgid "The following sequence of commands accomplishes this."
5425 msgstr ""
5426
5427 #. type: Plain text
5428 #: build/C/man7/cpuset.7:1447
5429 #, no-wrap
5430 msgid ""
5431 "$B< cd /dev/cpuset>\n"
5432 "$B< mkdir beta>\n"
5433 "$B< cd beta>\n"
5434 "$B< /bin/echo 16-19 E<gt> cpuset.cpus>\n"
5435 "$B< /bin/echo 8-9 E<gt> cpuset.mems>\n"
5436 "$B< /bin/echo 1 E<gt> cpuset.memory_migrate>\n"
5437 "$B< while read i; do /bin/echo $i; done E<lt> ../alpha/tasks E<gt> tasks>\n"
5438 msgstr ""
5439 "$B< cd /dev/cpuset>\n"
5440 "$B< mkdir beta>\n"
5441 "$B< cd beta>\n"
5442 "$B< /bin/echo 16-19 E<gt> cpuset.cpus>\n"
5443 "$B< /bin/echo 8-9 E<gt> cpuset.mems>\n"
5444 "$B< /bin/echo 1 E<gt> cpuset.memory_migrate>\n"
5445 "$B< while read i; do /bin/echo $i; done E<lt> ../alpha/tasks E<gt> tasks>\n"
5446
5447 #. type: Plain text
5448 #: build/C/man7/cpuset.7:1456
5449 msgid ""
5450 "The above should move any processes in I<alpha> to I<beta>, and any memory "
5451 "held by these processes on memory nodes 2-3 to memory nodes 8-9, "
5452 "respectively."
5453 msgstr ""
5454
5455 #. type: Plain text
5456 #: build/C/man7/cpuset.7:1458
5457 msgid "Notice that the last step of the above sequence did not do:"
5458 msgstr ""
5459
5460 #. type: Plain text
5461 #: build/C/man7/cpuset.7:1462
5462 #, no-wrap
5463 msgid "$B< cp ../alpha/tasks tasks>\n"
5464 msgstr "$B< cp ../alpha/tasks tasks>\n"
5465
5466 #. type: Plain text
5467 #: build/C/man7/cpuset.7:1473
5468 msgid ""
5469 "The I<while> loop, rather than the seemingly easier use of the B<cp>(1)  "
5470 "command, was necessary because only one process PID at a time may be written "
5471 "to the I<tasks> file."
5472 msgstr ""
5473
5474 #. type: Plain text
5475 #: build/C/man7/cpuset.7:1481
5476 msgid ""
5477 "The same effect (writing one PID at a time) as the I<while> loop can be "
5478 "accomplished more efficiently, in fewer keystrokes and in syntax that works "
5479 "on any shell, but alas more obscurely, by using the B<-u> (unbuffered) "
5480 "option of B<sed>(1):"
5481 msgstr ""
5482
5483 #. type: Plain text
5484 #: build/C/man7/cpuset.7:1485
5485 #, no-wrap
5486 msgid "$B< sed -un p E<lt> ../alpha/tasks E<gt> tasks>\n"
5487 msgstr "$B< sed -un p E<lt> ../alpha/tasks E<gt> tasks>\n"
5488
5489 #. type: Plain text
5490 #: build/C/man7/cpuset.7:1503
5491 msgid ""
5492 "B<taskset>(1), B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), "
5493 "B<sched_getaffinity>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
5494 "B<set_mempolicy>(2), B<CPU_SET>(3), B<proc>(5), B<numa>(7), B<sched>(7), "
5495 "B<migratepages>(8), B<numactl>(8)"
5496 msgstr ""
5497 "B<taskset>(1), B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), "
5498 "B<sched_getaffinity>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
5499 "B<set_mempolicy>(2), B<CPU_SET>(3), B<proc>(5), B<numa>(7), B<sched>(7), "
5500 "B<migratepages>(8), B<numactl>(8)"
5501
5502 #. type: Plain text
5503 #: build/C/man7/cpuset.7:1506
5504 msgid "I<Documentation/cpusets.txt> in the Linux kernel source tree"
5505 msgstr "Linux カーネルソース内の I<Documentation/cpusets.txt>"
5506
5507 #. type: TH
5508 #: build/C/man7/credentials.7:27
5509 #, no-wrap
5510 msgid "CREDENTIALS"
5511 msgstr "CREDENTIALS"
5512
5513 #. type: TH
5514 #: build/C/man7/credentials.7:27 build/C/man2/setsid.2:31
5515 #, no-wrap
5516 msgid "2014-12-31"
5517 msgstr "2014-12-31"
5518
5519 #. type: Plain text
5520 #: build/C/man7/credentials.7:30
5521 msgid "credentials - process identifiers"
5522 msgstr "credentials - 認証に用いられるプロセスの識別子"
5523
5524 #. type: SS
5525 #: build/C/man7/credentials.7:31
5526 #, no-wrap
5527 msgid "Process ID (PID)"
5528 msgstr "プロセスID (PID)"
5529
5530 #. type: Plain text
5531 #: build/C/man7/credentials.7:41
5532 msgid ""
5533 "Each process has a unique nonnegative integer identifier that is assigned "
5534 "when the process is created using B<fork>(2).  A process can obtain its PID "
5535 "using B<getpid>(2).  A PID is represented using the type I<pid_t> (defined "
5536 "in I<E<lt>sys/types.hE<gt>>)."
5537 msgstr ""
5538 "各プロセスは、負でない整数の一意な識別子を持つ。 この識別子は B<fork>(2)  を"
5539 "使ってプロセスが生成される際に割り当てられる。 プロセスは B<getpid>(2)  を"
5540 "使って自分の PID を取得できる。 PID は I<pid_t> 型で表現される (I<pid_t> は "
5541 "I<E<lt>sys/types.hE<gt>> で定義されている)。"
5542
5543 #.  .BR sched_rr_get_interval (2),
5544 #.  .BR sched_getaffinity (2),
5545 #.  .BR sched_setaffinity (2),
5546 #.  .BR sched_getparam (2),
5547 #.  .BR sched_setparam (2),
5548 #.  .BR sched_setscheduler (2),
5549 #.  .BR sched_getscheduler (2),
5550 #.  .BR getsid (2),
5551 #.  .BR waitid (2),
5552 #.  .BR wait4 (2),
5553 #. type: Plain text
5554 #: build/C/man7/credentials.7:62
5555 msgid ""
5556 "PIDs are used in a range of system calls to identify the process affected by "
5557 "the call, for example: B<kill>(2), B<ptrace>(2), B<setpriority>(2)  "
5558 "B<setpgid>(2), B<setsid>(2), B<sigqueue>(3), and B<waitpid>(2)."
5559 msgstr ""
5560 "PID は各種のシステムコールでそのシステムコールが作用するプロセスを 特定するた"
5561 "めに使用される。以下に例を挙げる: B<kill>(2), B<ptrace>(2), "
5562 "B<setpriority>(2), B<setpgid>(2), B<setsid>(2), B<sigqueue>(3), "
5563 "B<waitpid>(2)."
5564
5565 #. type: Plain text
5566 #: build/C/man7/credentials.7:65
5567 msgid "A process's PID is preserved across an B<execve>(2)."
5568 msgstr "プロセスの PID は B<execve>(2)  の前後で不変である。"
5569
5570 #. type: SS
5571 #: build/C/man7/credentials.7:65
5572 #, no-wrap
5573 msgid "Parent process ID (PPID)"
5574 msgstr "親プロセス ID (PPID)"
5575
5576 #. type: Plain text
5577 #: build/C/man7/credentials.7:73
5578 msgid ""
5579 "A process's parent process ID identifies the process that created this "
5580 "process using B<fork>(2).  A process can obtain its PPID using "
5581 "B<getppid>(2).  A PPID is represented using the type I<pid_t>."
5582 msgstr ""
5583 "プロセスの親プロセスの ID は、 B<fork>(2)  を使ってそのプロセスを生成したプロ"
5584 "セスを示す。 プロセスは B<getppid>(2)  を使って自分の PPID を取得できる。 "
5585 "PPID は I<pid_t> 型で表現される。"
5586
5587 #. type: Plain text
5588 #: build/C/man7/credentials.7:76
5589 msgid "A process's PPID is preserved across an B<execve>(2)."
5590 msgstr "プロセスの PPID は B<execve>(2)  の前後で不変である。"
5591
5592 #. type: SS
5593 #: build/C/man7/credentials.7:76
5594 #, no-wrap
5595 msgid "Process group ID and session ID"
5596 msgstr "プロセスグループ ID とセッション ID"
5597
5598 #. type: Plain text
5599 #: build/C/man7/credentials.7:84
5600 msgid ""
5601 "Each process has a session ID and a process group ID, both represented using "
5602 "the type I<pid_t>.  A process can obtain its session ID using B<getsid>(2), "
5603 "and its process group ID using B<getpgrp>(2)."
5604 msgstr ""
5605 "各プロセスはセッション ID とプロセスグループ ID を持つ。 これらの ID はどちら"
5606 "も I<pid_t> 型で表現される。 プロセスは、それぞれ B<getsid>(2), "
5607 "B<getpgrp>(2)  を使って自分のセッション ID、プロセスグループ ID を取得でき"
5608 "る。"
5609
5610 #. type: Plain text
5611 #: build/C/man7/credentials.7:90
5612 msgid ""
5613 "A child created by B<fork>(2)  inherits its parent's session ID and process "
5614 "group ID.  A process's session ID and process group ID are preserved across "
5615 "an B<execve>(2)."
5616 msgstr ""
5617 "B<fork>(2)  で生成された子プロセスは親プロセスのセッション ID とプロセスグ"
5618 "ループ ID を継承する。プロセスのセッション ID とプロセスグループ ID は "
5619 "B<execve>(2)  の前後で不変である。"
5620
5621 #. type: Plain text
5622 #: build/C/man7/credentials.7:103
5623 msgid ""
5624 "Sessions and process groups are abstractions devised to support shell job "
5625 "control.  A process group (sometimes called a \"job\") is a collection of "
5626 "processes that share the same process group ID; the shell creates a new "
5627 "process group for the process(es) used to execute single command or pipeline "
5628 "(e.g., the two processes created to execute the command \"ls\\ |\\ wc\" are "
5629 "placed in the same process group).  A process's group membership can be set "
5630 "using B<setpgid>(2).  The process whose process ID is the same as its "
5631 "process group ID is the I<process group leader> for that group."
5632 msgstr ""
5633 "セッションとプロセスグループの概念は、シェルのジョブ制御を行うために 考案され"
5634 "たものである。 プロセスグループ (時には「ジョブ」と呼ばれることもある) は、 "
5635 "同じプロセスグループ ID を共有するプロセスの集まりである。 シェルは、一つのコ"
5636 "マンドもしくはパイプラインの実行に使われるプロセス群に 対して一つのプロセスグ"
5637 "ループを生成する (例えば、コマンド \"ls\\ |\\ wc\" を実行するために生成される"
5638 "二つのプロセスは 同じプロセスグループに置かれる)。 所属するプロセスグループ"
5639 "は B<setpgid>(2)  を使って設定できる。 自身のプロセス ID がプロセスグループ "
5640 "ID と同じプロセスは、 そのグループの「プロセスグループ・リーダー」である。"
5641
5642 #. type: Plain text
5643 #: build/C/man7/credentials.7:115
5644 msgid ""
5645 "A session is a collection of processes that share the same session ID.  All "
5646 "of the members of a process group also have the same session ID (i.e., all "
5647 "of the members of a process group always belong to the same session, so that "
5648 "sessions and process groups form a strict two-level hierarchy of "
5649 "processes.)  A new session is created when a process calls B<setsid>(2), "
5650 "which creates a new session whose session ID is the same as the PID of the "
5651 "process that called B<setsid>(2).  The creator of the session is called the "
5652 "I<session leader>."
5653 msgstr ""
5654 "セッションは、同じセッション ID を共有するプロセスの集まりである。 ある一つの"
5655 "プロセスグループの全メンバーは同じセッション ID を持つ (つまり、一つのプロセ"
5656 "スグループのメンバーは全て同じセッションに所属し、 これにより、セッションとプ"
5657 "ロセスグループで二階層のプロセス階層が形成できる)。 新たなセッションの生成は"
5658 "プロセスが B<setsid>(2)  を呼び出すことで行う。 B<setsid>(2)  は、 "
5659 "B<setsid>(2)  を呼び出したプロセスの PID と同じ値のセッション ID を持つ 新た"
5660 "なセッションを生成する。 セッションの生成者は「セッション・リーダー」と呼ばれ"
5661 "る。"
5662
5663 #. type: Plain text
5664 #: build/C/man7/credentials.7:124
5665 msgid ""
5666 "All of the processes in a session share a I<controlling terminal>.  The "
5667 "controlling terminal is established when the session leader first opens a "
5668 "terminal (unless the B<O_NOCTTY> flag is specified when calling "
5669 "B<open>(2)).  A terminal may be the controlling terminal of at most one "
5670 "session."
5671 msgstr ""
5672 "あるセッションの全プロセスは一つの I<制御端末> を共有する。 セッションリー"
5673 "ダーが最初に端末をオープンした際に制御端末は設定される (B<open>(2) の呼び出し"
5674 "で B<O_NOCTTY> フラグが指定された場合を除く)。 一つの端末は、最大でも一つの"
5675 "セッションの制御端末にしかなれない。"
5676
5677 #. type: Plain text
5678 #: build/C/man7/credentials.7:146
5679 msgid ""
5680 "At most one of the jobs in a session may be the I<foreground job>; other "
5681 "jobs in the session are I<background jobs>.  Only the foreground job may "
5682 "read from the terminal; when a process in the background attempts to read "
5683 "from the terminal, its process group is sent a B<SIGTTIN> signal, which "
5684 "suspends the job.  If the B<TOSTOP> flag has been set for the terminal (see "
5685 "B<termios>(3)), then only the foreground job may write to the terminal; "
5686 "writes from background job cause a B<SIGTTOU> signal to be generated, which "
5687 "suspends the job.  When terminal keys that generate a signal (such as the "
5688 "I<interrupt> key, normally control-C)  are pressed, the signal is sent to "
5689 "the processes in the foreground job."
5690 msgstr ""
5691 "一つのセッションのジョブの中で、I<フォアグラウンドジョブ>になれるのは最大でも"
5692 "一つで、そのセッションの他のジョブはI<バックグラウンドジョブ>である。 フォア"
5693 "グラウンドジョブだけが端末からの読み込みを行える。 バックグラウンドのプロセス"
5694 "が端末から読み込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグ"
5695 "ナルである B<SIGTTIN> が所属するプロセスグループに対して送信される。 端末に "
5696 "B<TOSTOP> フラグがセットされていた場合 (B<termios>(3) 参照)、 フォアグラウン"
5697 "ドジョブだけが端末への書き込みを行える。 バックグラウンドのプロセスが端末への"
5698 "書き込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグナルであ"
5699 "る B<SIGTTOU> が生成される。 シグナルを生成する端末キー (例えば I<中断>キー、"
5700 "通常は control-C) が押された場合、 そのシグナルはフォアグラウンドジョブのプロ"
5701 "セスに送信される。"
5702
5703 #. type: Plain text
5704 #: build/C/man7/credentials.7:167
5705 msgid ""
5706 "Various system calls and library functions may operate on all members of a "
5707 "process group, including B<kill>(2), B<killpg>(2), B<getpriority>(2), "
5708 "B<setpriority>(2), B<ioprio_get>(2), B<ioprio_set>(2), B<waitid>(2), and "
5709 "B<waitpid>(2).  See also the discussion of the B<F_GETOWN>, B<F_GETOWN_EX>, "
5710 "B<F_SETOWN>, and B<F_SETOWN_EX> operations in B<fcntl>(2)."
5711 msgstr ""
5712 "様々なシステムコールやライブラリ関数で、プロセスグループの全メンバーに対して"
5713 "操作を行うことができる。 例えば、 B<kill>(2), B<killpg>(2), "
5714 "B<getpriority>(2), B<setpriority>(2), B<ioprio_get>(2), B<ioprio_set>(2), "
5715 "B<waitid>(2), B<waitpid>(2) など。 B<fcntl>(2) の操作 B<F_GETOWN>, "
5716 "B<F_GETOWN_EX>, B<F_SETOWN>, B<F_SETOWN_EX> の議論も参照。"
5717
5718 #. type: SS
5719 #: build/C/man7/credentials.7:167
5720 #, no-wrap
5721 msgid "User and group identifiers"
5722 msgstr "ユーザ ID とグループ ID"
5723
5724 #. type: Plain text
5725 #: build/C/man7/credentials.7:175
5726 msgid ""
5727 "Each process has various associated user and groups IDs.  These IDs are "
5728 "integers, respectively represented using the types I<uid_t> and I<gid_t> "
5729 "(defined in I<E<lt>sys/types.hE<gt>>)."
5730 msgstr ""
5731 "各プロセスは、数種類のユーザ ID とグループ ID を持つ。 ユーザ ID、グループ "
5732 "ID は整数で、それぞれ I<uid_t>, I<gid_t> 型で表現される (これらは I<E<lt>sys/"
5733 "types.hE<gt>> で定義されている)。"
5734
5735 #. type: Plain text
5736 #: build/C/man7/credentials.7:177
5737 msgid "On Linux, each process has the following user and group identifiers:"
5738 msgstr ""
5739 "Linux では、各プロセスは以下のような種類のユーザ ID とグループ ID を持つ。"
5740
5741 #. type: Plain text
5742 #: build/C/man7/credentials.7:183
5743 msgid ""
5744 "Real user ID and real group ID.  These IDs determine who owns the process.  "
5745 "A process can obtain its real user (group) ID using B<getuid>(2)  "
5746 "(B<getgid>(2))."
5747 msgstr ""
5748 "実ユーザ ID と実グループ ID。 これらの ID によりプロセスの所有者が決定され"
5749 "る。 プロセスが自分の実ユーザ ID、実グループ ID を取得するには、それぞれ "
5750 "B<getuid>(2), B<getgid>(2)  を使用する。"
5751
5752 #. type: Plain text
5753 #: build/C/man7/credentials.7:195
5754 msgid ""
5755 "Effective user ID and effective group ID.  These IDs are used by the kernel "
5756 "to determine the permissions that the process will have when accessing "
5757 "shared resources such as message queues, shared memory, and semaphores.  On "
5758 "most UNIX systems, these IDs also determine the permissions when accessing "
5759 "files.  However, Linux uses the filesystem IDs described below for this "
5760 "task.  A process can obtain its effective user (group) ID using "
5761 "B<geteuid>(2)  (B<getegid>(2))."
5762 msgstr ""
5763 "実効ユーザ ID と実効グループ ID。 これらの ID は、メッセージキュー、共有メモ"
5764 "リ、セマフォなどの 共有リソースにアクセスしようとした際にそのプロセスがアクセ"
5765 "ス許可を 持っているかをカーネルが判定するのに使用される。 ほとんどの UNIX シ"
5766 "ステムでは、これらの ID はファイルへのアクセス時の アクセス許可の判定にも使用"
5767 "される。 しかしながら、Linux ではファイルへのアクセス許可の判定には 後述の"
5768 "ファイルシステム ID が使用される。 プロセスが自分の実効ユーザ ID、実効グルー"
5769 "プ ID を取得するには、それぞれ B<geteuid>(2), B<getegid>(2)  を使用する。"
5770
5771 #. type: Plain text
5772 #: build/C/man7/credentials.7:217
5773 msgid ""
5774 "Saved set-user-ID and saved set-group-ID.  These IDs are used in set-user-ID "
5775 "and set-group-ID programs to save a copy of the corresponding effective IDs "
5776 "that were set when the program was executed (see B<execve>(2)).  A set-user-"
5777 "ID program can assume and drop privileges by switching its effective user ID "
5778 "back and forth between the values in its real user ID and saved set-user-"
5779 "ID.  This switching is done via calls to B<seteuid>(2), B<setreuid>(2), or "
5780 "B<setresuid>(2).  A set-group-ID program performs the analogous tasks using "
5781 "B<setegid>(2), B<setregid>(2), or B<setresgid>(2).  A process can obtain its "
5782 "saved set-user-ID (set-group-ID) using B<getresuid>(2)  (B<getresgid>(2))."
5783 msgstr ""
5784 "保存 (saved) set-user-ID と保存 set-group-ID。 これらの ID は、set-user-ID "
5785 "や set-group-ID されたプログラムにおいて、 プログラムの実行時に設定された実"
5786 "効 ID のコピーを保存するために 使用される (B<execve>(2)  参照)。 set-user-ID "
5787 "プログラムは、実効ユーザ ID を実ユーザID と保存 set-user-ID の間で行ったり来"
5788 "たり切り替えることで、特権を得たり落としたりできる。 この切り替えは "
5789 "B<seteuid>(2), B<setreuid>(2), B<setresuid>(2)  を呼び出すことで実行できる。 "
5790 "set-group-ID プログラムは、 B<setegid>(2), B<setregid>(2), B<setresgid>(2)  "
5791 "を使って同様のことができる。 プロセスが自分の保存 set-user-ID、保存 set-"
5792 "group-ID を取得するには、 B<getresuid(2),> B<getresgids>(2)  をそれぞれ使用す"
5793 "る。"
5794
5795 #. type: Plain text
5796 #: build/C/man7/credentials.7:234
5797 msgid ""
5798 "Filesystem user ID and filesystem group ID (Linux-specific).  These IDs, in "
5799 "conjunction with the supplementary group IDs described below, are used to "
5800 "determine permissions for accessing files; see B<path_resolution>(7)  for "
5801 "details.  Whenever a process's effective user (group) ID is changed, the "
5802 "kernel also automatically changes the filesystem user (group) ID to the same "
5803 "value.  Consequently, the filesystem IDs normally have the same values as "
5804 "the corresponding effective ID, and the semantics for file-permission checks "
5805 "are thus the same on Linux as on other UNIX systems.  The filesystem IDs can "
5806 "be made to differ from the effective IDs by calling B<setfsuid>(2)  and "
5807 "B<setfsgid>(2)."
5808 msgstr ""
5809 "ファイルシステム・ユーザ ID とファイルシステム・グループ ID (Linux 固有)。 こ"
5810 "れらの ID は、後述の補助グループ ID と組み合わせて使用され、 ファイルへのアク"
5811 "セス権の決定に利用される。詳細は B<path_resolution>(7)  を参照。 プロセスの実"
5812 "効 ID (ユーザ ID や グループ ID) が変更されるたびに、 カーネルは自動的に対応"
5813 "するファイルシステム ID を同じ値に変更する。 その結果、ファイルシステム ID は"
5814 "通常は対応する実効 ID と同じ値となり、 ファイルのアクセス権のチェック方法は "
5815 "Linux と他の UNIX システムで同じである。 ファイルシステム ID は実効 ID とは異"
5816 "なる値にすることができ、 変更は B<setfsuid>(2)  と B<setfsgid>(2)  を呼び出し"
5817 "て行う。"
5818
5819 #.  Since kernel 2.6.4, the limit is visible via the read-only file
5820 #.  /proc/sys/kernel/ngroups_max.
5821 #.  As at 2.6.22-rc2, this file is still read-only.
5822 #. type: Plain text
5823 #: build/C/man7/credentials.7:253
5824 msgid ""
5825 "Supplementary group IDs.  This is a set of additional group IDs that are "
5826 "used for permission checks when accessing files and other shared resources.  "
5827 "On Linux kernels before 2.6.4, a process can be a member of up to 32 "
5828 "supplementary groups; since kernel 2.6.4, a process can be a member of up to "
5829 "65536 supplementary groups.  The call I<sysconf(_SC_NGROUPS_MAX)> can be "
5830 "used to determine the number of supplementary groups of which a process may "
5831 "be a member.  A process can obtain its set of supplementary group IDs using "
5832 "B<getgroups>(2), and can modify the set using B<setgroups>(2)."
5833 msgstr ""
5834 "補助グループ ID。 この ID は、ファイルや他の共有リソースへのアクセス時にアク"
5835 "セス許可の チェックに使用される、追加のグループ ID の集合である。 カーネル "
5836 "2.6.4 より前の Linux では、一つのプロセスあたりの 補助グループのメンバー数は"
5837 "最大で 32 である。 カーネル 2.6.4 以降では、一つのプロセスあたりの 補助グルー"
5838 "プのメンバー数は最大で 65536 である。 I<sysconf(_SC_NGROUPS_MAX)> を呼び出す"
5839 "ことで、あるプロセスがメンバーとなることができる可能性のある 補助グループ数を"
5840 "知ることができる。 プロセスは、自分の補助グループ ID の集合を "
5841 "B<getgroups>(2)  で取得でき、 B<setgroups>(2)  で集合を変更できる。"
5842
5843 #. type: Plain text
5844 #: build/C/man7/credentials.7:263
5845 msgid ""
5846 "A child process created by B<fork>(2)  inherits copies of its parent's user "
5847 "and groups IDs.  During an B<execve>(2), a process's real user and group ID "
5848 "and supplementary group IDs are preserved; the effective and saved set IDs "
5849 "may be changed, as described in B<execve>(2)."
5850 msgstr ""
5851 "B<fork>(2)  で生成された子プロセスは親プロセスのユーザ ID とグループ ID を継"
5852 "承する。 B<execve>(2)  の間、プロセスの実ユーザ/グループ ID と補助グループ "
5853 "ID 集合は不変である。 実効 ID と保存セット ID は変更される可能性がある "
5854 "(B<execve>(2)  で説明されている)。"
5855
5856 #. type: Plain text
5857 #: build/C/man7/credentials.7:266
5858 msgid ""
5859 "Aside from the purposes noted above, a process's user IDs are also employed "
5860 "in a number of other contexts:"
5861 msgstr "上記の目的以外にも、プロセスのユーザ ID は他の様々な場面で利用される。"
5862
5863 #. type: Plain text
5864 #: build/C/man7/credentials.7:269
5865 msgid "when determining the permissions for sending signals (see B<kill>(2));"
5866 msgstr "シグナルを送る許可の判定時 (B<kill>(2)  参照)"
5867
5868 #. type: Plain text
5869 #: build/C/man7/credentials.7:280
5870 msgid ""
5871 "when determining the permissions for setting process-scheduling parameters "
5872 "(nice value, real time scheduling policy and priority, CPU affinity, I/O "
5873 "priority) using B<setpriority>(2), B<sched_setaffinity>(2), "
5874 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_setattr>(2), and "
5875 "B<ioprio_set>(2);"
5876 msgstr ""
5877 "プロセスのスケジューリング関連のパラメータ (nice 値、 リアルタイム・スケ"
5878 "ジューリングポリシーや優先度、CPU affinity、 入出力優先度) の設定許可の判定"
5879 "時。 スケジューリング関連のパラメータ設定には B<setpriority>(2), "
5880 "B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
5881 "B<sched_setattr>(2), B<ioprio_set>(2)  が使用される。"
5882
5883 #. type: Plain text
5884 #: build/C/man7/credentials.7:283
5885 msgid "when checking resource limits (see B<getrlimit>(2));"
5886 msgstr "リソース上限のチェック時 (B<getrlimit>(2)  参照)"
5887
5888 #. type: Plain text
5889 #: build/C/man7/credentials.7:287
5890 msgid ""
5891 "when checking the limit on the number of inotify instances that the process "
5892 "may create (see B<inotify>(7))."
5893 msgstr ""
5894 "プロセスが生成できる inotify インスタンス数の上限のチェック時 (B<inotify>(7) "
5895 "参照)"
5896
5897 #. type: Plain text
5898 #: build/C/man7/credentials.7:293
5899 msgid ""
5900 "Process IDs, parent process IDs, process group IDs, and session IDs are "
5901 "specified in POSIX.1-2001.  The real, effective, and saved set user and "
5902 "groups IDs, and the supplementary group IDs, are specified in POSIX.1-2001.  "
5903 "The filesystem user and group IDs are a Linux extension."
5904 msgstr ""
5905 "プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は "
5906 "POSIX.1-2001 で規定されている。 実 ID、実効 ID、保存セット ID のユーザ ID / "
5907 "グループ ID および 補助グループ ID は POSIX.1-2001 で規定されている。 ファイ"
5908 "ルシステム・ユーザ ID / グループ ID は Linux による拡張である。"
5909
5910 #. type: Plain text
5911 #: build/C/man7/credentials.7:304
5912 msgid ""
5913 "The POSIX threads specification requires that credentials are shared by all "
5914 "of the threads in a process.  However, at the kernel level, Linux maintains "
5915 "separate user and group credentials for each thread.  The NPTL threading "
5916 "implementation does some work to ensure that any change to user or group "
5917 "credentials (e.g., calls to B<setuid>(2), B<setresuid>(2))  is carried "
5918 "through to all of the POSIX threads in a process."
5919 msgstr ""
5920 "POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで 共有される"
5921 "ことを求めている。 しかしながら、カーネルのレベルでは、Linux はスレッド毎に"
5922 "別々の ユーザとグループに関する識別子を管理している。 NPTL スレッド実装が、"
5923 "(例えば B<setuid>(2), B<setresuid>(2)  などの呼び出しによる) ユーザやグループ"
5924 "に関する識別子に対する変更が プロセス内の全ての POSIX スレッドに対して反映さ"
5925 "れることを保証する ための処理を行っている。"
5926
5927 #. type: Plain text
5928 #: build/C/man7/credentials.7:340
5929 msgid ""
5930 "B<bash>(1), B<csh>(1), B<ps>(1), B<access>(2), B<execve>(2), "
5931 "B<faccessat>(2), B<fork>(2), B<getgroups>(2), B<getpgrp>(2), B<getpid>(2), "
5932 "B<getppid>(2), B<getsid>(2), B<kill>(2), B<killpg>(2), B<setegid>(2), "
5933 "B<seteuid>(2), B<setfsgid>(2), B<setfsuid>(2), B<setgid>(2), "
5934 "B<setgroups>(2), B<setresgid>(2), B<setresuid>(2), B<setuid>(2), "
5935 "B<waitpid>(2), B<euidaccess>(3), B<initgroups>(3), B<tcgetpgrp>(3), "
5936 "B<tcsetpgrp>(3), B<capabilities>(7), B<namespaces>(7), "
5937 "B<path_resolution>(7), B<pid_namespaces>(7), B<signal>(7), "
5938 "B<user_namespaces>(7), B<unix>(7)"
5939 msgstr "B<bash>(1), B<csh>(1), B<ps>(1), B<access>(2), B<execve>(2), B<faccessat>(2), B<fork>(2), B<getgroups>(2), B<getpgrp>(2), B<getpid>(2), B<getppid>(2), B<getsid>(2), B<kill>(2), B<killpg>(2), B<setegid>(2), B<seteuid>(2), B<setfsgid>(2), B<setfsuid>(2), B<setgid>(2), B<setgroups>(2), B<setresgid>(2), B<setresuid>(2), B<setuid>(2), B<waitpid>(2), B<euidaccess>(3), B<initgroups>(3), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<capabilities>(7), B<namespaces>(7), B<path_resolution>(7), B<pid_namespaces>(7), B<signal>(7), B<user_namespaces>(7), B<unix>(7)"
5940
5941 #. type: TH
5942 #: build/C/man2/getgid.2:25
5943 #, no-wrap
5944 msgid "GETGID"
5945 msgstr "GETGID"
5946
5947 #. type: TH
5948 #: build/C/man2/getgid.2:25 build/C/man2/getresuid.2:28
5949 #: build/C/man2/getuid.2:26
5950 #, no-wrap
5951 msgid "2010-11-22"
5952 msgstr "2010-11-22"
5953
5954 #. type: Plain text
5955 #: build/C/man2/getgid.2:28
5956 msgid "getgid, getegid - get group identity"
5957 msgstr "getgid, getegid - グループ ID を得る"
5958
5959 #. type: Plain text
5960 #: build/C/man2/getgid.2:30 build/C/man2/getgroups.2:38
5961 #: build/C/man2/getpid.2:32 build/C/man2/getresuid.2:35
5962 #: build/C/man2/getsid.2:31 build/C/man2/getuid.2:31
5963 #: build/C/man3/group_member.3:30 build/C/man2/seteuid.2:36
5964 #: build/C/man2/setgid.2:36 build/C/man2/setpgid.2:53
5965 #: build/C/man2/setresuid.2:33 build/C/man2/setreuid.2:52
5966 #: build/C/man2/setsid.2:37 build/C/man2/setuid.2:37
5967 msgid "B<#include E<lt>unistd.hE<gt>>"
5968 msgstr "B<#include E<lt>unistd.hE<gt>>"
5969
5970 #. type: Plain text
5971 #: build/C/man2/getgid.2:32 build/C/man2/getgroups.2:36
5972 #: build/C/man2/getpid.2:30 build/C/man2/getuid.2:33 build/C/man2/seteuid.2:34
5973 #: build/C/man2/setgid.2:34 build/C/man2/setreuid.2:50
5974 #: build/C/man2/setuid.2:35
5975 msgid "B<#include E<lt>sys/types.hE<gt>>"
5976 msgstr "B<#include E<lt>sys/types.hE<gt>>"
5977
5978 #. type: Plain text
5979 #: build/C/man2/getgid.2:34
5980 msgid "B<gid_t getgid(void);>"
5981 msgstr "B<gid_t getgid(void);>"
5982
5983 #. type: Plain text
5984 #: build/C/man2/getgid.2:36
5985 msgid "B<gid_t getegid(void);>"
5986 msgstr "B<gid_t getegid(void);>"
5987
5988 #. type: Plain text
5989 #: build/C/man2/getgid.2:39
5990 msgid "B<getgid>()  returns the real group ID of the calling process."
5991 msgstr "B<getgid>()  は呼び出し元のプロセスの実グループ ID を返す。"
5992
5993 #. type: Plain text
5994 #: build/C/man2/getgid.2:42
5995 msgid "B<getegid>()  returns the effective group ID of the calling process."
5996 msgstr "B<getegid>()  は呼び出し元のプロセスの実効グループ ID を返す。"
5997
5998 #. type: Plain text
5999 #: build/C/man2/getgid.2:44 build/C/man2/getpid.2:46 build/C/man2/getuid.2:45
6000 msgid "These functions are always successful."
6001 msgstr "これらの関数は常に成功する。"
6002
6003 #. type: Plain text
6004 #: build/C/man2/getgid.2:46 build/C/man2/getuid.2:47
6005 msgid "POSIX.1-2001, 4.3BSD."
6006 msgstr "POSIX.1-2001, 4.3BSD."
6007
6008 #. type: Plain text
6009 #: build/C/man2/getgid.2:62
6010 msgid ""
6011 "The original Linux B<getgid>()  and B<getegid>()  system calls supported "
6012 "only 16-bit group IDs.  Subsequently, Linux 2.4 added B<getgid32>()  and "
6013 "B<getegid32>(), supporting 32-bit IDs.  The glibc B<getgid>()  and "
6014 "B<getegid>()  wrapper functions transparently deal with the variations "
6015 "across kernel versions."
6016 msgstr ""
6017 "元々の Linux の B<getgid>() と B<getegid>() システムコールは\n"
6018 "16 ビットのグループ ID だけに対応していた。\n"
6019 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6020 "B<getgid32>() と B<getegid32>() が追加された。\n"
6021 "glibc の B<getgid>() と B<getegid>() のラッパー関数は\n"
6022 "カーネルバージョンによるこの違いを吸収している。"
6023
6024 #. type: Plain text
6025 #: build/C/man2/getgid.2:67
6026 msgid "B<getresgid>(2), B<setgid>(2), B<setregid>(2), B<credentials>(7)"
6027 msgstr "B<getresgid>(2), B<setgid>(2), B<setregid>(2), B<credentials>(7)"
6028
6029 #. type: TH
6030 #: build/C/man2/getgroups.2:31
6031 #, no-wrap
6032 msgid "GETGROUPS"
6033 msgstr "GETGROUPS"
6034
6035 #. type: TH
6036 #: build/C/man2/getgroups.2:31 build/C/man2/getpriority.2:45
6037 #, no-wrap
6038 msgid "2014-08-19"
6039 msgstr "2014-08-19"
6040
6041 #. type: Plain text
6042 #: build/C/man2/getgroups.2:34
6043 msgid "getgroups, setgroups - get/set list of supplementary group IDs"
6044 msgstr "getgroups, setgroups - 補助グループ ID のリストを取得/設定する"
6045
6046 #. type: Plain text
6047 #: build/C/man2/getgroups.2:40
6048 msgid "B<int getgroups(int >I<size>B<, gid_t >I<list>B<[]);>"
6049 msgstr "B<int getgroups(int >I<size>B<, gid_t >I<list>B<[]);>"
6050
6051 #. type: Plain text
6052 #: build/C/man2/getgroups.2:42
6053 msgid "B<#include E<lt>grp.hE<gt>>"
6054 msgstr "B<#include E<lt>grp.hE<gt>>"
6055
6056 #. type: Plain text
6057 #: build/C/man2/getgroups.2:44
6058 msgid "B<int setgroups(size_t >I<size>B<, const gid_t *>I<list>B<);>"
6059 msgstr "B<int setgroups(size_t >I<size>B<, const gid_t *>I<list>B<);>"
6060
6061 #. type: Plain text
6062 #: build/C/man2/getgroups.2:52
6063 msgid "B<setgroups>(): _BSD_SOURCE"
6064 msgstr "B<setgroups>(): _BSD_SOURCE"
6065
6066 #. type: Plain text
6067 #: build/C/man2/getgroups.2:70
6068 msgid ""
6069 "B<getgroups>()  returns the supplementary group IDs of the calling process "
6070 "in I<list>.  The argument I<size> should be set to the maximum number of "
6071 "items that can be stored in the buffer pointed to by I<list>.  If the "
6072 "calling process is a member of more than I<size> supplementary groups, then "
6073 "an error results.  It is unspecified whether the effective group ID of the "
6074 "calling process is included in the returned list.  (Thus, an application "
6075 "should also call B<getegid>(2)  and add or remove the resulting value.)"
6076 msgstr ""
6077 "B<getgroups>()  は呼び出し元プロセスの補助グループ (supplementary group) ID "
6078 "を I<list> に返す。 I<size> 引き数には、 I<list> により参照されるバッファに格"
6079 "納できる要素の最大数を設定すべきである。 呼び出し元プロセスが I<size> 個より"
6080 "多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロ"
6081 "セスの実効グループ ID が、 返されるリストに含まれるかどうかは規定されていな"
6082 "い (したがって、アプリケーションは B<getegid>(2)  を呼び出し、その結果の値を"
6083 "追加・削除すべきである)。"
6084
6085 #. type: Plain text
6086 #: build/C/man2/getgroups.2:81
6087 msgid ""
6088 "If I<size> is zero, I<list> is not modified, but the total number of "
6089 "supplementary group IDs for the process is returned.  This allows the caller "
6090 "to determine the size of a dynamically allocated I<list> to be used in a "
6091 "further call to B<getgroups>()."
6092 msgstr ""
6093 "I<size> が 0 ならば、 I<list> は修正されないが、そのプロセスの補助グループ "
6094 "ID の合計数が返される。 これを使うことで、それ以降の B<getgroups>()  の呼び出"
6095 "しで必要となる動的割り当てバッファ I<list> のサイズを、呼び出し元が決定するこ"
6096 "とができる。"
6097
6098 #. type: Plain text
6099 #: build/C/man2/getgroups.2:92
6100 msgid ""
6101 "B<setgroups>()  sets the supplementary group IDs for the calling process.  "
6102 "Appropriate privileges (Linux: the B<CAP_SETGID> capability) are required.  "
6103 "The I<size> argument specifies the number of supplementary group IDs in the "
6104 "buffer pointed to by I<list>."
6105 msgstr ""
6106 "B<setgroups>()  は、呼び出し元プロセスの補助グループ ID を設定する。 適切な特"
6107 "権 (Linux では B<CAP_SETGID> ケーパビリティ (capability)) が必要である。 "
6108 "I<size> 引き数には、 I<list> により参照されるバッファに格納された補助グルー"
6109 "プ ID の数を指定する。"
6110
6111 #. type: Plain text
6112 #: build/C/man2/getgroups.2:99
6113 msgid ""
6114 "On success, B<getgroups>()  returns the number of supplementary group IDs.  "
6115 "On error, -1 is returned, and I<errno> is set appropriately."
6116 msgstr ""
6117 "B<getgroups>()  は、成功すると補助グループ ID の数を返す。 エラーの場合 -1 を"
6118 "返し、 I<errno> を適切に設定する。"
6119
6120 #. type: Plain text
6121 #: build/C/man2/getgroups.2:106
6122 msgid ""
6123 "On success, B<setgroups>()  returns 0.  On error, -1 is returned, and "
6124 "I<errno> is set appropriately."
6125 msgstr ""
6126 "B<setgroups>()  は、成功すると 0 を返す。 エラーの場合 -1 を返し、 I<errno> "
6127 "を適切に設定する。"
6128
6129 #. type: Plain text
6130 #: build/C/man2/getgroups.2:111
6131 msgid "I<list> has an invalid address."
6132 msgstr "I<list> が不正なアドレスである。"
6133
6134 #. type: Plain text
6135 #: build/C/man2/getgroups.2:114
6136 msgid "B<getgroups>()  can additionally fail with the following error:"
6137 msgstr "B<getgroups>()  は、上記に加えて以下のエラーで失敗する可能性がある。"
6138
6139 #. type: Plain text
6140 #: build/C/man2/getgroups.2:118
6141 msgid ""
6142 "I<size> is less than the number of supplementary group IDs, but is not zero."
6143 msgstr "I<size> が補助グループ ID の数より小さいが 0 でない。"
6144
6145 #. type: Plain text
6146 #: build/C/man2/getgroups.2:121
6147 msgid "B<setgroups>()  can additionally fail with the following errors:"
6148 msgstr "B<setgroups>()  は、上記に加えて以下のエラーで失敗する可能性がある。"
6149
6150 #. type: Plain text
6151 #: build/C/man2/getgroups.2:127
6152 msgid ""
6153 "I<size> is greater than B<NGROUPS_MAX> (32 before Linux 2.6.4; 65536 since "
6154 "Linux 2.6.4)."
6155 msgstr ""
6156 "I<size> が B<NGROUPS_MAX> より大きい (B<NGROUPS_MAX> は Linux 2.6.4 より前で"
6157 "は 32、Linux 2.6.4 以降では 65536)。"
6158
6159 #. type: Plain text
6160 #: build/C/man2/getgroups.2:133
6161 msgid "The calling process has insufficient privilege."
6162 msgstr "呼び出し元プロセスが十分な特権を持っていない。"
6163
6164 #. type: Plain text
6165 #: build/C/man2/getgroups.2:141
6166 msgid ""
6167 "SVr4, 4.3BSD.  The B<getgroups>()  function is in POSIX.1-2001.  Since "
6168 "B<setgroups>()  requires privilege, it is not covered by POSIX.1-2001."
6169 msgstr ""
6170 "SVr4, 4.3BSD.  B<getgroups>()  関数は POSIX.1-2001 に準拠している。 "
6171 "B<setgroups>()  は特権を必要とするため、POSIX.1-2001 に従っていない。"
6172
6173 #. type: Plain text
6174 #: build/C/man2/getgroups.2:153
6175 msgid ""
6176 "A process can have up to B<NGROUPS_MAX> supplementary group IDs in addition "
6177 "to the effective group ID.  The constant B<NGROUPS_MAX> is defined in "
6178 "I<E<lt>limits.hE<gt>>.  The set of supplementary group IDs is inherited from "
6179 "the parent process, and preserved across an B<execve>(2)."
6180 msgstr ""
6181 "プロセスは、実効グループ ID に加え、最大 B<NGROUPS_MAX> までの補助グループ "
6182 "ID を持つことができる。 定数 B<NGROUPS_MAX> は I<E<lt>limits.hE<gt>> で定義さ"
6183 "れている。 補助グループ ID の集合は親プロセスから継承され、 B<execve>(2)  の"
6184 "前後で保持される。"
6185
6186 #. type: Plain text
6187 #: build/C/man2/getgroups.2:156
6188 msgid ""
6189 "The maximum number of supplementary group IDs can be found at run time using "
6190 "B<sysconf>(3):"
6191 msgstr ""
6192 "補助グループ ID の最大数は、実行時に B<sysconf>(3)  を使って以下のようにして"
6193 "調べることができる:"
6194
6195 #. type: Plain text
6196 #: build/C/man2/getgroups.2:160
6197 #, no-wrap
6198 msgid ""
6199 "    long ngroups_max;\n"
6200 "    ngroups_max = sysconf(_SC_NGROUPS_MAX);\n"
6201 msgstr ""
6202 "    long ngroups_max;\n"
6203 "    ngroups_max = sysconf(_SC_NGROUPS_MAX);\n"
6204
6205 #. type: Plain text
6206 #: build/C/man2/getgroups.2:168
6207 msgid ""
6208 "The maximum return value of B<getgroups>()  cannot be larger than one more "
6209 "than this value.  Since Linux 2.6.4, the maximum number of supplementary "
6210 "group IDs is also exposed via the Linux-specific read-only file, I</proc/sys/"
6211 "kernel/ngroups_max>."
6212 msgstr ""
6213 "B<getgroups>() の返り値の最大値は、この値より大きくなることはない。 Linux "
6214 "2.6.4 以降では、補助グループ ID の最大数も Linux 固有の読み込み専用のファイ"
6215 "ル I</proc/sys/kernel/ngroups_max> 経由で公開されている。"
6216
6217 #. type: Plain text
6218 #: build/C/man2/getgroups.2:178
6219 msgid ""
6220 "The original Linux B<getgroups>()  system call supported only 16-bit group "
6221 "IDs.  Subsequently, Linux 2.4 added B<getgroups32>(), supporting 32-bit "
6222 "IDs.  The glibc B<getgroups>()  wrapper function transparently deals with "
6223 "the variation across kernel versions."
6224 msgstr ""
6225 "元々の Linux の B<getgroups>() システムコールは 16 ビットのグループ ID だけ\n"
6226 "に対応していた。その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6227 "B<getgroups>() が追加された。glibc の B<getgroups> のラッパー関数はカーネル\n"
6228 "バージョンによるこの違いを吸収している。"
6229
6230 #. type: Plain text
6231 #: build/C/man2/getgroups.2:186
6232 msgid ""
6233 "B<getgid>(2), B<setgid>(2), B<getgrouplist>(3), B<group_member>(3), "
6234 "B<initgroups>(3), B<capabilities>(7), B<credentials>(7)"
6235 msgstr ""
6236 "B<getgid>(2), B<setgid>(2), B<getgrouplist>(3), B<group_member>(3), "
6237 "B<initgroups>(3), B<capabilities>(7), B<credentials>(7)"
6238
6239 #. type: TH
6240 #: build/C/man2/getpid.2:25
6241 #, no-wrap
6242 msgid "GETPID"
6243 msgstr "GETPID"
6244
6245 #. type: Plain text
6246 #: build/C/man2/getpid.2:28
6247 msgid "getpid, getppid - get process identification"
6248 msgstr "getpid, getppid - プロセス ID を得る"
6249
6250 #. type: Plain text
6251 #: build/C/man2/getpid.2:34
6252 msgid "B<pid_t getpid(void);>"
6253 msgstr "B<pid_t getpid(void);>"
6254
6255 #. type: Plain text
6256 #: build/C/man2/getpid.2:36
6257 msgid "B<pid_t getppid(void);>"
6258 msgstr "B<pid_t getppid(void);>"
6259
6260 #. type: Plain text
6261 #: build/C/man2/getpid.2:41
6262 msgid ""
6263 "B<getpid>()  returns the process ID of the calling process.  (This is often "
6264 "used by routines that generate unique temporary filenames.)"
6265 msgstr ""
6266 "B<getpid>()  は呼び出し元のプロセスのプロセス ID を返す。(テンポラリ用のファ"
6267 "イル名として 他と重ならない名前を生成するルーチンでしばしば使用される。)"
6268
6269 #. type: Plain text
6270 #: build/C/man2/getpid.2:44
6271 msgid ""
6272 "B<getppid>()  returns the process ID of the parent of the calling process."
6273 msgstr "B<getppid>()  は呼び出し元のプロセスの親プロセスのプロセス ID を返す。"
6274
6275 #. type: Plain text
6276 #: build/C/man2/getpid.2:48
6277 msgid "POSIX.1-2001, 4.3BSD, SVr4."
6278 msgstr "POSIX.1-2001, 4.3BSD, SVr4."
6279
6280 #.  The following program demonstrates this "feature":
6281 #.  #define _GNU_SOURCE
6282 #.  #include <sys/syscall.h>
6283 #.  #include <sys/wait.h>
6284 #.  #include <stdio.h>
6285 #.  #include <stdlib.h>
6286 #.  #include <unistd.h>
6287 #.  int
6288 #.  main(int argc, char *argv[])
6289 #.  {
6290 #.     /* The following statement fills the getpid() cache */
6291 #.     printf("parent PID = %ld
6292 #. ", (long) getpid());
6293 #.     if (syscall(SYS_fork) == 0) {
6294 #.         if (getpid() != syscall(SYS_getpid))
6295 #.             printf("child getpid() mismatch: getpid()=%ld; "
6296 #.                     "syscall(SYS_getpid)=%ld
6297 #. ",
6298 #.                     (long) getpid(), (long) syscall(SYS_getpid));
6299 #.         exit(EXIT_SUCCESS);
6300 #.     }
6301 #.     wait(NULL);
6302 #. }
6303 #. type: Plain text
6304 #: build/C/man2/getpid.2:100
6305 msgid ""
6306 "Since glibc version 2.3.4, the glibc wrapper function for B<getpid>()  "
6307 "caches PIDs, so as to avoid additional system calls when a process calls "
6308 "B<getpid>()  repeatedly.  Normally this caching is invisible, but its "
6309 "correct operation relies on support in the wrapper functions for B<fork>(2), "
6310 "B<vfork>(2), and B<clone>(2): if an application bypasses the glibc wrappers "
6311 "for these system calls by using B<syscall>(2), then a call to B<getpid>()  "
6312 "in the child will return the wrong value (to be precise: it will return the "
6313 "PID of the parent process).  See also B<clone>(2)  for discussion of a case "
6314 "where B<getpid>()  may return the wrong value even when invoking "
6315 "B<clone>(2)  via the glibc wrapper function."
6316 msgstr ""
6317 "glibc バージョン 2.3.4 以降では、 glibc の B<getpid>()  のラッパー関数は PID "
6318 "をキャッシュする。 これは、プロセスが繰り返し B<getpid>()  を呼び出した場合に"
6319 "その都度システムコールを呼ぶのを避けるためである。 通常は、このキャッシュ処理"
6320 "が見えることはないが、 キャッシュ処理が正しく働くためには B<fork>(2), "
6321 "B<vfork>(2), B<clone>(2)  のラッパー関数でのサポートが必要である。 アプリケー"
6322 "ションがこれらのシステムコールを呼び出す際に、 glibc のラッパー関数を経由せず"
6323 "に B<syscall>(2)  を使った場合には、子プロセスで B<getpid>()  を呼び出すと間"
6324 "違った値が返ることだろう (正確にいうと、親プロセスの PID が返される)。 "
6325 "B<clone>(2)  を glibc のラッパー関数経由で起動した際にも B<getpid>()  が間"
6326 "違った値を返す場合があり、これに関する議論は B<clone>(2)  も参照してほしい。"
6327
6328 #. type: Plain text
6329 #: build/C/man2/getpid.2:111
6330 msgid ""
6331 "B<clone>(2), B<fork>(2), B<kill>(2), B<exec>(3), B<mkstemp>(3), "
6332 "B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3), B<credentials>(7), "
6333 "B<pid_namespaces>(7)"
6334 msgstr ""
6335 "B<clone>(2), B<fork>(2), B<kill>(2), B<exec>(3), B<mkstemp>(3), "
6336 "B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3), B<credentials>(7), "
6337 "B<pid_namespaces>(7)"
6338
6339 #. type: TH
6340 #: build/C/man2/getpriority.2:45
6341 #, no-wrap
6342 msgid "GETPRIORITY"
6343 msgstr "GETPRIORITY"
6344
6345 #. type: Plain text
6346 #: build/C/man2/getpriority.2:48
6347 msgid "getpriority, setpriority - get/set program scheduling priority"
6348 msgstr ""
6349 "getpriority, setpriority - プログラムのスケジューリングの優先度を取得/設定す"
6350 "る"
6351
6352 #. type: Plain text
6353 #: build/C/man2/getpriority.2:50 build/C/man2/getrlimit.2:69
6354 #: build/C/man2/getrusage.2:44
6355 msgid "B<#include E<lt>sys/time.hE<gt>>"
6356 msgstr "B<#include E<lt>sys/time.hE<gt>>"
6357
6358 #. type: Plain text
6359 #: build/C/man2/getpriority.2:52 build/C/man2/getrlimit.2:71
6360 #: build/C/man2/getrusage.2:46
6361 msgid "B<#include E<lt>sys/resource.hE<gt>>"
6362 msgstr "B<#include E<lt>sys/resource.hE<gt>>"
6363
6364 #. type: Plain text
6365 #: build/C/man2/getpriority.2:54
6366 msgid "B<int getpriority(int >I<which>B<, id_t >I<who>B<);>"
6367 msgstr "B<int getpriority(int >I<which>B<, id_t >I<who>B<);>"
6368
6369 #. type: Plain text
6370 #: build/C/man2/getpriority.2:56
6371 msgid "B<int setpriority(int >I<which>B<, id_t >I<who>B<, int >I<prio>B<);>"
6372 msgstr "B<int setpriority(int >I<which>B<, id_t >I<who>B<, int >I<prio>B<);>"
6373
6374 #. type: Plain text
6375 #: build/C/man2/getpriority.2:67
6376 msgid ""
6377 "The scheduling priority of the process, process group, or user, as indicated "
6378 "by I<which> and I<who> is obtained with the B<getpriority>()  call and set "
6379 "with the B<setpriority>()  call."
6380 msgstr ""
6381 "システムコール B<getpriority>()  や B<setpriority>()  は、 I<which> と "
6382 "I<who> で指定されたプロセス、プロセスグループ、ユーザーの スケジューリング優"
6383 "先度 (scheduling priority) の 取得や設定をそれぞれ行う。"
6384
6385 #. type: Plain text
6386 #: build/C/man2/getpriority.2:94
6387 msgid ""
6388 "The value I<which> is one of B<PRIO_PROCESS>, B<PRIO_PGRP>, or B<PRIO_USER>, "
6389 "and I<who> is interpreted relative to I<which> (a process identifier for "
6390 "B<PRIO_PROCESS>, process group identifier for B<PRIO_PGRP>, and a user ID "
6391 "for B<PRIO_USER>).  A zero value for I<who> denotes (respectively) the "
6392 "calling process, the process group of the calling process, or the real user "
6393 "ID of the calling process.  I<Prio> is a value in the range -20 to 19 (but "
6394 "see the Notes below).  The default priority is 0; lower priorities cause "
6395 "more favorable scheduling."
6396 msgstr ""
6397 "I<which> の値は B<PRIO_PROCESS>, B<PRIO_PGRP>, B<PRIO_USER>, のどれか一つ"
6398 "で、 I<who> は I<which> に応じて解釈される (B<PRIO_PROCESS> だとプロセス識別"
6399 "子、 B<PRIO_PGRP> だとプロセスグループ識別子、 B<PRIO_USER> だと UID (ユーザ"
6400 "ID) と解釈される)。 I<who> がゼロならば、(それぞれ)呼び出したプロセス、 呼び"
6401 "出したプロセスのプロセスグループ、 呼び出したプロセスの実UID を意味する。 "
6402 "I<prio> は -20 から 19 の範囲の値で (但し以下の注意の項を参照のこと)、 デフォ"
6403 "ルトの優先度は 0 である; 小さな数字ほど、有利なスケジューリングとなる。"
6404
6405 #. type: Plain text
6406 #: build/C/man2/getpriority.2:104
6407 msgid ""
6408 "The B<getpriority>()  call returns the highest priority (lowest numerical "
6409 "value)  enjoyed by any of the specified processes.  The B<setpriority>()  "
6410 "call sets the priorities of all of the specified processes to the specified "
6411 "value.  Only the superuser may lower priorities."
6412 msgstr ""
6413 "B<getpriority>()  コールは指定したプロセスの中の最も高い優先度 (数値的には最"
6414 "小の値) を返す。 B<setpriority>()  コールは指定したプロセス全ての優先度を指定"
6415 "した値に設定する。 優先度を今より小さい値に設定できるのはスーパーユーザーだけ"
6416 "である。"
6417
6418 #. type: Plain text
6419 #: build/C/man2/getpriority.2:117
6420 msgid ""
6421 "Since B<getpriority>()  can legitimately return the value -1, it is "
6422 "necessary to clear the external variable I<errno> prior to the call, then "
6423 "check it afterward to determine if -1 is an error or a legitimate value.  "
6424 "The B<setpriority>()  call returns 0 if there is no error, or -1 if there is."
6425 msgstr ""
6426 "B<getpriority>()  は成功した場合にも -1 の値を返す可能性があるので、 呼び出し"
6427 "の前に外部変数の I<errno> をクリアし、呼び出しの後に返り値の -1 が正当な値か "
6428 "エラーかを判別する必要がある。 B<setpriority>()  コールはエラーがなければ 0 "
6429 "を返し、エラーがあれば -1 を返す。"
6430
6431 #. type: Plain text
6432 #: build/C/man2/getpriority.2:126
6433 msgid "I<which> was not one of B<PRIO_PROCESS>, B<PRIO_PGRP>, or B<PRIO_USER>."
6434 msgstr ""
6435 "I<which> が B<PRIO_PROCESS>, B<PRIO_PGRP>, B<PRIO_USER> のいずれでもない。"
6436
6437 #. type: Plain text
6438 #: build/C/man2/getpriority.2:133
6439 msgid "No process was located using the I<which> and I<who> values specified."
6440 msgstr "I<which> と I<who> で指定されたプロセスが存在しない。"
6441
6442 #. type: Plain text
6443 #: build/C/man2/getpriority.2:137
6444 msgid ""
6445 "In addition to the errors indicated above, B<setpriority>()  may fail if:"
6446 msgstr "上記のものに加えて B<setpriority>()  では以下のエラーがある:"
6447
6448 #. type: Plain text
6449 #: build/C/man2/getpriority.2:149
6450 msgid ""
6451 "The caller attempted to lower a process priority, but did not have the "
6452 "required privilege (on Linux: did not have the B<CAP_SYS_NICE> capability).  "
6453 "Since Linux 2.6.12, this error occurs only if the caller attempts to set a "
6454 "process priority outside the range of the B<RLIMIT_NICE> soft resource limit "
6455 "of the target process; see B<getrlimit>(2)  for details."
6456 msgstr ""
6457 "呼び出し元がプロセスの優先度を下げようとしたが、必要な特権を 持っていなかっ"
6458 "た (Linux の場合、 B<CAP_SYS_NICE> ケーパビリティがなかった)。 Linux 2.6.12 "
6459 "以降では、呼び出し元が、あるプロセスの優先度を、 変更対象のプロセスのリソー"
6460 "ス B<RLIMIT_NICE> のソフトリミットの範囲外に設定しようとした場合にのみ、 この"
6461 "エラーが発生する。詳細は B<getrlimit>(2)  を参照。"
6462
6463 #. type: Plain text
6464 #: build/C/man2/getpriority.2:157
6465 msgid ""
6466 "A process was located, but its effective user ID did not match either the "
6467 "effective or the real user ID of the caller, and was not privileged (on "
6468 "Linux: did not have the B<CAP_SYS_NICE> capability).  But see NOTES below."
6469 msgstr ""
6470 "プロセスは見つかったが、そのプロセスの実効 (effective) UID が 呼び出し元の実"
6471 "効UID にも実 (real) UID にも一致せず、 呼び出し元が特権も持っていなかった "
6472 "(Linux の場合、 B<CAP_SYS_NICE> ケーパビリティがなかった)。 以下の「注意」も"
6473 "参照のこと。"
6474
6475 #. type: Plain text
6476 #: build/C/man2/getpriority.2:160
6477 msgid ""
6478 "SVr4, 4.4BSD (these function calls first appeared in 4.2BSD), POSIX.1-2001."
6479 msgstr "SVr4, 4.4BSD (これらの関数は 4.2BSD で最初に登場した), POSIX.1-2001."
6480
6481 #. type: Plain text
6482 #: build/C/man2/getpriority.2:166
6483 msgid ""
6484 "A child created by B<fork>(2)  inherits its parent's nice value.  The nice "
6485 "value is preserved across B<execve>(2)."
6486 msgstr ""
6487 "B<fork>(2)  で作成された子プロセスは、 親プロセスの nice 値を継承する。 "
6488 "B<execve>(2)  の前後で nice 値は保存される。"
6489
6490 #. type: Plain text
6491 #: build/C/man2/getpriority.2:177
6492 msgid ""
6493 "The degree to which their relative nice value affects the scheduling of "
6494 "processes varies across UNIX systems, and, on Linux, across kernel "
6495 "versions.  Starting with kernel 2.6.23, Linux adopted an algorithm that "
6496 "causes relative differences in nice values to have a much stronger effect.  "
6497 "This causes very low nice values (+19) to truly provide little CPU to a "
6498 "process whenever there is any other higher priority load on the system, and "
6499 "makes high nice values (-20) deliver most of the CPU to applications that "
6500 "require it (e.g., some audio applications)."
6501 msgstr ""
6502 "相対的な nice 値の違いがプロセス間のスケジューリングにどの程度影響を与えるか "
6503 "は、UNIX システム間で異なり、Linux ではカーネルバージョンにより異なる。 "
6504 "Linux は、カーネル 2.6.23 以降で、nice 値の相対的な違いが、非常に強い影響を "
6505 "与えるアルゴリズムを採用した。このアルゴリズムでは、 他に優先度の高いものがシ"
6506 "ステムに存在する時には、 非常に低い nice 値 (+19) ではプロセスに本当にほとん"
6507 "ど CPU が割り当てられない。 また、高い nice 値 (-20) では CPU を必要とするア"
6508 "プリケーション (例えば オーディオアプリケーション) に CPU のほとんどが割り当"
6509 "てられる。"
6510
6511 #. type: Plain text
6512 #: build/C/man2/getpriority.2:192
6513 msgid ""
6514 "The details on the condition for B<EPERM> depend on the system.  The above "
6515 "description is what POSIX.1-2001 says, and seems to be followed on all System"
6516 "\\ V-like systems.  Linux kernels before 2.6.12 required the real or "
6517 "effective user ID of the caller to match the real user of the process I<who> "
6518 "(instead of its effective user ID).  Linux 2.6.12 and later require the "
6519 "effective user ID of the caller to match the real or effective user ID of "
6520 "the process I<who>.  All BSD-like systems (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, "
6521 "FreeBSD 4.3, OpenBSD-2.5, ...) behave in the same manner as Linux 2.6.12 and "
6522 "later."
6523 msgstr ""
6524 "B<EPERM> が発生する条件の詳細はシステムに依存する。 上記の説明は "
6525 "POSIX.1-2001 のものであり、全ての System\\ V 風システムは これに従っているよ"
6526 "うである。 2.6.12 より前の Linux カーネルでは、呼び出し元の実 UID または 実"
6527 "効 UID がプロセス I<who> の (実効 UID でなく)  実 UID に一致する必要がある。 "
6528 "Linux 2.6.12 以降では、呼び出し元の実行 UID がプロセス I<who> の実 UID か実"
6529 "効 UID のいずれかと一致する必要がある。 全ての BSD 風システム (SunOS 4.1.3, "
6530 "Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5等) は、 Linux 2.6.12 以降と同じ"
6531 "動作をする。"
6532
6533 #. type: Plain text
6534 #: build/C/man2/getpriority.2:197
6535 msgid ""
6536 "The actual priority range varies between kernel versions.  Linux before "
6537 "1.3.36 had -infinity..15.  Since kernel 1.3.43, Linux has the range "
6538 "-20..19.  On some other systems, the range of nice values is -20..20."
6539 msgstr ""
6540
6541 #. type: Plain text
6542 #: build/C/man2/getpriority.2:210
6543 msgid ""
6544 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
6545 "portability.  (Indeed, I<E<lt>sys/resource.hE<gt>> defines the I<rusage> "
6546 "structure with fields of type I<struct timeval> defined in I<E<lt>sys/time."
6547 "hE<gt>>.)"
6548 msgstr ""
6549 "現在では I<E<lt>sys/time.hE<gt>> をインクルードする必要はないが、インクルード"
6550 "すれば移植性を高めることができる (実際には I<E<lt>sys/resource.hE<gt>> で "
6551 "I<rusage> 構造体が定義されているが、そのフィールドで使用されている I<struct "
6552 "timeval> 型は I<E<lt>sys/time.hE<gt>> で定義されている)。"
6553
6554 #. type: SS
6555 #: build/C/man2/getpriority.2:210 build/C/man2/seteuid.2:132
6556 #, no-wrap
6557 msgid "C library/kernel ABI differences"
6558 msgstr ""
6559
6560 #. type: Plain text
6561 #: build/C/man2/getpriority.2:225
6562 #, fuzzy
6563 #| msgid ""
6564 #| "The actual priority range varies between kernel versions.  Linux before "
6565 #| "1.3.36 had -infinity..15.  Since kernel 1.3.43, Linux has the range "
6566 #| "-20..19.  Within the kernel, nice values are actually represented using "
6567 #| "the corresponding range 40..1 (since negative numbers are error codes) "
6568 #| "and these are the values employed by the B<setpriority>()  and "
6569 #| "B<getpriority>()  system calls.  The glibc wrapper functions for these "
6570 #| "system calls handle the translations between the user-land and kernel "
6571 #| "representations of the nice value according to the formula I<unice\\ =\\ "
6572 #| "20\\ -\\ knice>."
6573 msgid ""
6574 "Within the kernel, nice values are actually represented using the range "
6575 "40..1 (since negative numbers are error codes) and these are the values "
6576 "employed by the B<setpriority>()  and B<getpriority>()  system calls.  The "
6577 "glibc wrapper functions for these system calls handle the translations "
6578 "between the user-land and kernel representations of the nice value according "
6579 "to the formula I<unice\\ =\\ 20\\ -\\ knice>.  (Thus, the kernels 40..1 "
6580 "range corresponds to the range -20..19 as seen by user space.)"
6581 msgstr ""
6582 "実際の優先度の値の範囲はカーネルのバージョンによって異なる。 1.3.36 より前の "
6583 "Linux では、優先度の範囲は負の無限大 〜 15 である。 1.3.43 以降の Linux で"
6584 "は、優先度の範囲は -20 〜 19 である。 カーネル内部では、nice 値は実際には 40 "
6585 "〜 1 の範囲を使って 表現されており (負の値はエラーコードとなるため)、こちらの"
6586 "値が システムコール B<setpriority>()  と B<getpriority>()  で使用されてい"
6587 "る。 glibc のこれらのシステムコールのラッパー関数において、nice 値の ユーザ領"
6588 "域 (user-land) とカーネル表現の間の変換が行われる。 変換式は以下の通り: "
6589 "I<unice\\ =\\ 20\\ -\\ knice>"
6590
6591 #. type: Plain text
6592 #: build/C/man2/getpriority.2:232
6593 msgid ""
6594 "According to POSIX, the nice value is a per-process setting.  However, under "
6595 "the current Linux/NPTL implementation of POSIX threads, the nice value is a "
6596 "per-thread attribute: different threads in the same process can have "
6597 "different nice values.  Portable applications should avoid relying on the "
6598 "Linux behavior, which may be made standards conformant in the future."
6599 msgstr ""
6600 "POSIX では nice 値はプロセス単位の設定となっている。 一方、 現在の POSIX ス"
6601 "レッドの Linux/NPTL 実装では、 nice 値はスレッド単位の属性である。 同じプロセ"
6602 "スの別々のスレッドが異なる nice 値を持つ場合がある。 移植性が必要なアプリケー"
6603 "ションではこの Linux の動作を前提するのは避けるべきである。 Linux の動作は将"
6604 "来標準に準拠した動作になるかもしれない。"
6605
6606 #. type: Plain text
6607 #: build/C/man2/getpriority.2:238
6608 msgid "B<nice>(1), B<renice>(1), B<fork>(2), B<capabilities>(7), B<sched>(7)"
6609 msgstr "B<nice>(1), B<renice>(1), B<fork>(2), B<capabilities>(7), B<sched>(7)"
6610
6611 #. type: Plain text
6612 #: build/C/man2/getpriority.2:241
6613 msgid ""
6614 "I<Documentation/scheduler/sched-nice-design.txt> in the Linux kernel source "
6615 "tree (since Linux 2.6.23)"
6616 msgstr ""
6617 "Linux カーネルのソースツリー内の I<Documentation/scheduler/sched-nice-design."
6618 "txt> (Linux 2.6.23 以降)"
6619
6620 #. type: TH
6621 #: build/C/man2/getresuid.2:28
6622 #, no-wrap
6623 msgid "GETRESUID"
6624 msgstr "GETRESUID"
6625
6626 #. type: Plain text
6627 #: build/C/man2/getresuid.2:31
6628 msgid "getresuid, getresgid - get real, effective and saved user/group IDs"
6629 msgstr ""
6630 "getresuid, getresgid - 実、実効、保存、ユーザー ID / グループ ID を取得する"
6631
6632 #. type: Plain text
6633 #: build/C/man2/getresuid.2:33 build/C/man2/setresuid.2:31
6634 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
6635 msgstr "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */"
6636
6637 #. type: Plain text
6638 #: build/C/man2/getresuid.2:37
6639 msgid ""
6640 "B<int getresuid(uid_t *>I<ruid>B<, uid_t *>I<euid>B<, uid_t *>I<suid>B<);>"
6641 msgstr ""
6642 "B<int getresuid(uid_t *>I<ruid>B<, uid_t *>I<euid>B<, uid_t *>I<suid>B<);>"
6643
6644 #. type: Plain text
6645 #: build/C/man2/getresuid.2:39
6646 msgid ""
6647 "B<int getresgid(gid_t *>I<rgid>B<, gid_t *>I<egid>B<, gid_t *>I<sgid>B<);>"
6648 msgstr ""
6649 "B<int getresgid(gid_t *>I<rgid>B<, gid_t *>I<egid>B<, gid_t *>I<sgid>B<);>"
6650
6651 #. type: Plain text
6652 #: build/C/man2/getresuid.2:50
6653 msgid ""
6654 "B<getresuid>()  returns the real UID, the effective UID, and the saved set-"
6655 "user-ID of the calling process, in the arguments I<ruid>, I<euid>, and "
6656 "I<suid>, respectively.  B<getresgid>()  performs the analogous task for the "
6657 "process's group IDs."
6658 msgstr ""
6659 "B<getresuid>()  は、呼び出したプロセスの実 (real) UID、実効 (effective) "
6660 "UID、 保存 (saved) set-user-ID (B<getresgid> の場合はグループ ID) を、 それぞ"
6661 "れ引き数 I<ruid>, I<euid>, I<suid> に格納して返す。 B<getresgid>()  は、呼び"
6662 "出したプロセスのグループ ID について同様の処理を行う。"
6663
6664 #. type: Plain text
6665 #: build/C/man2/getresuid.2:60
6666 msgid ""
6667 "One of the arguments specified an address outside the calling program's "
6668 "address space."
6669 msgstr ""
6670 "指定した引き数のどれかが、呼び出したプログラムのアドレス空間の外の アドレスで"
6671 "ある。"
6672
6673 #. type: Plain text
6674 #: build/C/man2/getresuid.2:62
6675 msgid "These system calls appeared on Linux starting with kernel 2.1.44."
6676 msgstr "これらのシステムコールはカーネル 2.1.44 から Linux に登場した。"
6677
6678 #. type: Plain text
6679 #: build/C/man2/getresuid.2:67
6680 msgid ""
6681 "The prototypes are given by glibc since version 2.3.2, provided "
6682 "B<_GNU_SOURCE> is defined."
6683 msgstr ""
6684 "プロトタイプ宣言は 2.3.2 以降の glibc では B<_GNU_SOURCE> を定義していると得"
6685 "られる。"
6686
6687 #. type: Plain text
6688 #: build/C/man2/getresuid.2:70 build/C/man2/setresuid.2:112
6689 msgid ""
6690 "These calls are nonstandard; they also appear on HP-UX and some of the BSDs."
6691 msgstr "これらのコールは非標準である。 HP-UX や BSD 系のいくつかにも存在する。"
6692
6693 #. type: Plain text
6694 #: build/C/man2/getresuid.2:86
6695 msgid ""
6696 "The original Linux B<getresuid>()  and B<getresgid>()  system calls "
6697 "supported only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
6698 "B<getresuid32>()  and B<getresgid32>(), supporting 32-bit IDs.  The glibc "
6699 "B<getresuid>()  and B<getresgid>()  wrapper functions transparently deal "
6700 "with the variations across kernel versions."
6701 msgstr ""
6702 "元々の Linux の B<getresuid>() と B<getresgid>() システムコールは\n"
6703 "16 ビットのグループ ID だけに対応していた。\n"
6704 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6705 "B<getresuid32>() と B<getresgid32>() が追加された。\n"
6706 "glibc の B<getresuid>() と B<getresgid>() のラッパー関数は\n"
6707 "カーネルバージョンによるこの違いを吸収している。"
6708
6709 #. type: Plain text
6710 #: build/C/man2/getresuid.2:92
6711 msgid ""
6712 "B<getuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
6713 "B<credentials>(7)"
6714 msgstr ""
6715 "B<getuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
6716 "B<credentials>(7)"
6717
6718 #. type: TH
6719 #: build/C/man2/getrlimit.2:64
6720 #, no-wrap
6721 msgid "GETRLIMIT"
6722 msgstr "GETRLIMIT"
6723
6724 #. type: TH
6725 #: build/C/man2/getrlimit.2:64
6726 #, no-wrap
6727 msgid "2014-10-02"
6728 msgstr "2014-10-02"
6729
6730 #. type: Plain text
6731 #: build/C/man2/getrlimit.2:67
6732 msgid "getrlimit, setrlimit, prlimit - get/set resource limits"
6733 msgstr "getrlimit, setrlimit, prlimit - 資源の制限を取得/設定する"
6734
6735 #. type: Plain text
6736 #: build/C/man2/getrlimit.2:73
6737 msgid "B<int getrlimit(int >I<resource>B<, struct rlimit *>I<rlim>B<);>"
6738 msgstr "B<int getrlimit(int >I<resource>B<, struct rlimit *>I<rlim>B<);>"
6739
6740 #. type: Plain text
6741 #: build/C/man2/getrlimit.2:75
6742 msgid "B<int setrlimit(int >I<resource>B<, const struct rlimit *>I<rlim>B<);>"
6743 msgstr "B<int setrlimit(int >I<resource>B<, const struct rlimit *>I<rlim>B<);>"
6744
6745 #. type: Plain text
6746 #: build/C/man2/getrlimit.2:78
6747 msgid ""
6748 "B<int prlimit(pid_t >I<pid>B<, int >I<resource>B<, const struct rlimit "
6749 "*>I<new_limit>B<,>"
6750 msgstr ""
6751 "B<int prlimit(pid_t >I<pid>B<, int >I<resource>B<, const struct rlimit "
6752 "*>I<new_limit>B<,>"
6753
6754 #. type: Plain text
6755 #: build/C/man2/getrlimit.2:80
6756 msgid "B< struct rlimit *>I<old_limit>B<);>"
6757 msgstr "B< struct rlimit *>I<old_limit>B<);>"
6758
6759 #. type: Plain text
6760 #: build/C/man2/getrlimit.2:88
6761 msgid "B<prlimit>(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64"
6762 msgstr "B<prlimit>(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64"
6763
6764 #. type: Plain text
6765 #: build/C/man2/getrlimit.2:97
6766 msgid ""
6767 "The B<getrlimit>()  and B<setrlimit>()  system calls get and set resource "
6768 "limits respectively.  Each resource has an associated soft and hard limit, "
6769 "as defined by the I<rlimit> structure:"
6770 msgstr ""
6771 "B<getrlimit>() と B<setrlimit>() はそれぞれ資源 (resource) の制限\n"
6772 "(limit) の設定と取得を行う。 各リソースには、それに対応するソフトリミッ\n"
6773 "トとハードリミットがあり、 I<rlimit> 構造体で定義される:"
6774
6775 #. type: Plain text
6776 #: build/C/man2/getrlimit.2:104
6777 #, no-wrap
6778 msgid ""
6779 "struct rlimit {\n"
6780 "    rlim_t rlim_cur;  /* Soft limit */\n"
6781 "    rlim_t rlim_max;  /* Hard limit (ceiling for rlim_cur) */\n"
6782 "};\n"
6783 msgstr ""
6784 "struct rlimit {\n"
6785 "    rlim_t rlim_cur;  /* ソフトリミット */\n"
6786 "    rlim_t rlim_max;  /* ハードリミット\n"
6787 "                         (rlim_cur より小さくない) */\n"
6788 "};\n"
6789
6790 #. type: Plain text
6791 #: build/C/man2/getrlimit.2:115
6792 msgid ""
6793 "The soft limit is the value that the kernel enforces for the corresponding "
6794 "resource.  The hard limit acts as a ceiling for the soft limit: an "
6795 "unprivileged process may set only its soft limit to a value in the range "
6796 "from 0 up to the hard limit, and (irreversibly) lower its hard limit.  A "
6797 "privileged process (under Linux: one with the B<CAP_SYS_RESOURCE> "
6798 "capability) may make arbitrary changes to either limit value."
6799 msgstr ""
6800 "ソフトリミットは、カーネルが対応するリソースに対して課す制限値である。 ハード"
6801 "リミットはソフトリミットの上限として働く。 特権を持たないプロセスは、ソフトリ"
6802 "ミットの値を 0 からハードリミットの範囲に設定することと、 ハードリミットを下"
6803 "げることのみができる (一度下げたハードリミットは上げられない)。 特権プロセス "
6804 "(Linux では B<CAP_SYS_RESOURCE> ケーパビリティ (capability) を持つプロセス) "
6805 "は ソフトリミットとハードリミットを自由に変更できる。"
6806
6807 #. type: Plain text
6808 #: build/C/man2/getrlimit.2:122
6809 msgid ""
6810 "The value B<RLIM_INFINITY> denotes no limit on a resource (both in the "
6811 "structure returned by B<getrlimit>()  and in the structure passed to "
6812 "B<setrlimit>())."
6813 msgstr ""
6814 "値 B<RLIM_INFINITY> はリソースに制限がないことを表す (この値は "
6815 "B<getrlimit>()  が返す構造体と B<setrlimit>()  に渡す構造体の両方で使用され"
6816 "る)。"
6817
6818 #. type: Plain text
6819 #: build/C/man2/getrlimit.2:126
6820 msgid "The I<resource> argument must be one of:"
6821 msgstr "I<resource> 引き数は次のいずれか 1 つである。"
6822
6823 #. type: TP
6824 #: build/C/man2/getrlimit.2:126
6825 #, no-wrap
6826 msgid "B<RLIMIT_AS>"
6827 msgstr "B<RLIMIT_AS>"
6828
6829 #.  since 2.0.27 / 2.1.12
6830 #. type: Plain text
6831 #: build/C/man2/getrlimit.2:146
6832 msgid ""
6833 "The maximum size of the process's virtual memory (address space) in bytes.  "
6834 "This limit affects calls to B<brk>(2), B<mmap>(2), and B<mremap>(2), which "
6835 "fail with the error B<ENOMEM> upon exceeding this limit.  Also automatic "
6836 "stack expansion will fail (and generate a B<SIGSEGV> that kills the process "
6837 "if no alternate stack has been made available via B<sigaltstack>(2)).  Since "
6838 "the value is a I<long>, on machines with a 32-bit I<long> either this limit "
6839 "is at most 2 GiB, or this resource is unlimited."
6840 msgstr ""
6841 "プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。 この制限は "
6842 "B<brk>(2), B<mmap>(2), B<mremap>(2)  の呼び出しに影響し、この制限を超えた場合"
6843 "は エラー B<ENOMEM> で失敗する。 また自動的なスタック拡張にも失敗する (さら"
6844 "に B<sigaltstack>(2)  を使った代替スタックを利用可能にしていなかった場合に"
6845 "は、 B<SIGSEGV> を生成してそのプロセスを kill する)。 この値は I<long> 型なの"
6846 "で、32 ビットの I<long> 型を持つマシンでは、 この制限は最大で 2 GiB になる"
6847 "か、この資源が無制限になる。"
6848
6849 #. type: TP
6850 #: build/C/man2/getrlimit.2:146
6851 #, no-wrap
6852 msgid "B<RLIMIT_CORE>"
6853 msgstr "B<RLIMIT_CORE>"
6854
6855 #. type: Plain text
6856 #: build/C/man2/getrlimit.2:154
6857 msgid ""
6858 "Maximum size of a I<core> file (see B<core>(5)).  When 0 no core dump files "
6859 "are created.  When nonzero, larger dumps are truncated to this size."
6860 msgstr ""
6861 "I<core> ファイルの最大サイズ (B<core>(5) 参照)。 0 の場合、core ファイルは生"
6862 "成されない。 0 以外の場合、このサイズより大きいダンプは切り詰められる。"
6863
6864 #. type: TP
6865 #: build/C/man2/getrlimit.2:154
6866 #, no-wrap
6867 msgid "B<RLIMIT_CPU>"
6868 msgstr "B<RLIMIT_CPU>"
6869
6870 #. type: Plain text
6871 #: build/C/man2/getrlimit.2:174
6872 msgid ""
6873 "CPU time limit in seconds.  When the process reaches the soft limit, it is "
6874 "sent a B<SIGXCPU> signal.  The default action for this signal is to "
6875 "terminate the process.  However, the signal can be caught, and the handler "
6876 "can return control to the main program.  If the process continues to consume "
6877 "CPU time, it will be sent B<SIGXCPU> once per second until the hard limit is "
6878 "reached, at which time it is sent B<SIGKILL>.  (This latter point describes "
6879 "Linux behavior.  Implementations vary in how they treat processes which "
6880 "continue to consume CPU time after reaching the soft limit.  Portable "
6881 "applications that need to catch this signal should perform an orderly "
6882 "termination upon first receipt of B<SIGXCPU>.)"
6883 msgstr ""
6884 "CPU 時間の上限 (秒数)。プロセスがソフトリミットに達した場合に、\n"
6885 "B<SIGXCPU> シグナルを送る。このシグナルに対するデフォルトの動作は、\n"
6886 "プロセスの終了である。ただし、シグナルをキャッチして、ハンドラがメイン\n"
6887 "プログラムに制御を返すこともできる。プロセスが CPU 時間を使い続けた\n"
6888 "場合は、ハードリミットに達するまで 1 秒毎にプロセスに B<SIGXCPU> を送り、\n"
6889 "ハードリミットに達すると B<SIGKILL> を送る。\n"
6890 "(ソフトリミットを超過したときの動作は、 Linux における動作である。ソフ\n"
6891 "トリミットを超えて CPU 時間を使い続けるプロセスの扱い方についての実装は\n"
6892 "変化してきている。 このシグナルをキャッチする必要のある 移植性を考えた\n"
6893 "アプリケーションでは、 最初に B<SIGXCPU> を受け取った時点で正しく終了\n"
6894 "すべきである。)"
6895
6896 #. type: TP
6897 #: build/C/man2/getrlimit.2:174
6898 #, no-wrap
6899 msgid "B<RLIMIT_DATA>"
6900 msgstr "B<RLIMIT_DATA>"
6901
6902 #. type: Plain text
6903 #: build/C/man2/getrlimit.2:185
6904 msgid ""
6905 "The maximum size of the process's data segment (initialized data, "
6906 "uninitialized data, and heap).  This limit affects calls to B<brk>(2)  and "
6907 "B<sbrk>(2), which fail with the error B<ENOMEM> upon encountering the soft "
6908 "limit of this resource."
6909 msgstr ""
6910 "プロセスのデータセグメント (初期化されたデータ・初期化されていないデータ・"
6911 "ヒープ) の最大値。 このリミットは B<brk>(2)  と B<sbrk>(2)  の呼び出しに影響"
6912 "する。 これらの関数は、このリソースのソフトリミットに達すると、 エラー "
6913 "B<ENOMEM> で失敗する。"
6914
6915 #. type: TP
6916 #: build/C/man2/getrlimit.2:185
6917 #, no-wrap
6918 msgid "B<RLIMIT_FSIZE>"
6919 msgstr "B<RLIMIT_FSIZE>"
6920
6921 #. type: Plain text
6922 #: build/C/man2/getrlimit.2:197
6923 msgid ""
6924 "The maximum size of files that the process may create.  Attempts to extend a "
6925 "file beyond this limit result in delivery of a B<SIGXFSZ> signal.  By "
6926 "default, this signal terminates a process, but a process can catch this "
6927 "signal instead, in which case the relevant system call (e.g., B<write>(2), "
6928 "B<truncate>(2))  fails with the error B<EFBIG>."
6929 msgstr ""
6930 "プロセスが作成できるファイルサイズの最大値。 このサイズを超えてファイルを拡張"
6931 "すると、 B<SIGXFSZ> シグナルを送る。 デフォルトでは、このシグナルはプロセスを"
6932 "終了する。 プロセスをキャッチすることもできるが、 関連するシステムコール "
6933 "(B<write>(2), B<truncate>(2)  など) はエラー B<EFBIG> で失敗する。"
6934
6935 #. type: TP
6936 #: build/C/man2/getrlimit.2:197
6937 #, no-wrap
6938 msgid "B<RLIMIT_LOCKS> (Early Linux 2.4 only)"
6939 msgstr "B<RLIMIT_LOCKS> (初期の Linux 2.4 のみ)"
6940
6941 #.  to be precise: Linux 2.4.0-test9; no longer in 2.4.25 / 2.5.65
6942 #. type: Plain text
6943 #: build/C/man2/getrlimit.2:205
6944 msgid ""
6945 "A limit on the combined number of B<flock>(2)  locks and B<fcntl>(2)  leases "
6946 "that this process may establish."
6947 msgstr ""
6948 "このプロセスが実行できる B<flock>(2)  ロック数と B<fcntl>(2)  リース数の合計"
6949 "値を制限する。"
6950
6951 #. type: TP
6952 #: build/C/man2/getrlimit.2:205
6953 #, no-wrap
6954 msgid "B<RLIMIT_MEMLOCK>"
6955 msgstr "B<RLIMIT_MEMLOCK>"
6956
6957 #. type: Plain text
6958 #: build/C/man2/getrlimit.2:243
6959 msgid ""
6960 "The maximum number of bytes of memory that may be locked into RAM.  In "
6961 "effect this limit is rounded down to the nearest multiple of the system page "
6962 "size.  This limit affects B<mlock>(2)  and B<mlockall>(2)  and the "
6963 "B<mmap>(2)  B<MAP_LOCKED> operation.  Since Linux 2.6.9 it also affects the "
6964 "B<shmctl>(2)  B<SHM_LOCK> operation, where it sets a maximum on the total "
6965 "bytes in shared memory segments (see B<shmget>(2))  that may be locked by "
6966 "the real user ID of the calling process.  The B<shmctl>(2)  B<SHM_LOCK> "
6967 "locks are accounted for separately from the per-process memory locks "
6968 "established by B<mlock>(2), B<mlockall>(2), and B<mmap>(2)  B<MAP_LOCKED>; a "
6969 "process can lock bytes up to this limit in each of these two categories.  In "
6970 "Linux kernels before 2.6.9, this limit controlled the amount of memory that "
6971 "could be locked by a privileged process.  Since Linux 2.6.9, no limits are "
6972 "placed on the amount of memory that a privileged process may lock, and this "
6973 "limit instead governs the amount of memory that an unprivileged process may "
6974 "lock."
6975 msgstr ""
6976 "RAM 内にロックできるメモリの最大バイト数。 実際には、この制限はシステムページ"
6977 "サイズの最も近い倍数に 切り捨てて丸められる。 この制限は B<mlock>(2), "
6978 "B<mlockall>(2), B<mmap>(2)  の B<MAP_LOCKED> 操作に影響する。 Linux 2.6.9 以"
6979 "降では B<shmctl>(2)  B<SHM_LOCK> 操作にも影響する。 この操作は呼び出し元プロ"
6980 "セスの実 (real) ユーザー ID にロックされる 共有メモリセグメント "
6981 "(B<shmget>(2)  を参照) の合計バイト数の最大値を設定する。 B<shmctl>(2)  "
6982 "B<SHM_LOCK> によるロックは、 B<mlock>(2), B<mlockall>(2), B<mmap>(2)  の "
6983 "B<MAP_LOCKED> によって確立されるプロセス毎のメモリロックとは分けて数える。 1 "
6984 "つのプロセスはこの制限までのバイトをロックできる。 この制限には 2 つの種類が"
6985 "ある。 2.6.9 より前の Linux カーネル では、 この制限は特権プロセスによって"
6986 "ロックされるメモリの合計を制御していた。 Linux 2.6.9 以降では、特権プロセスが"
6987 "ロックするメモリの合計に制限はなく、 代わりにこの制限は非特権プロセスがロック"
6988 "するメモリの合計に 適用されるようになった。"
6989
6990 #. type: TP
6991 #: build/C/man2/getrlimit.2:243
6992 #, no-wrap
6993 msgid "B<RLIMIT_MSGQUEUE> (since Linux 2.6.8)"
6994 msgstr "B<RLIMIT_MSGQUEUE> (Linux 2.6.8 以降)"
6995
6996 #. type: Plain text
6997 #: build/C/man2/getrlimit.2:251
6998 msgid ""
6999 "Specifies the limit on the number of bytes that can be allocated for POSIX "
7000 "message queues for the real user ID of the calling process.  This limit is "
7001 "enforced for B<mq_open>(3).  Each message queue that the user creates counts "
7002 "(until it is removed)  against this limit according to the formula:"
7003 msgstr ""
7004 "呼び出し元プロセスの実ユーザー ID に対して、 POSIX メッセージキューのために確"
7005 "保できるバイト数の制限を指定する。 この制限は B<mq_open>(3)  に対して適用され"
7006 "る。 ユーザが作成した各々のメッセージキューのバイト数は 以下の式により計算さ"
7007 "れ、(そのキューが削除されるまでの間)  この制限の計算対象に含められる。"
7008
7009 #. type: Plain text
7010 #: build/C/man2/getrlimit.2:260
7011 #, no-wrap
7012 msgid ""
7013 "    Since Linux 3.5:\n"
7014 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg) +\n"
7015 "                min(attr.mq_maxmsg, MQ_PRIO_MAX) *\n"
7016 "                      sizeof(struct posix_msg_tree_node)+\n"
7017 "                                /* For overhead */\n"
7018 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7019 "                                /* For message data */\n"
7020 msgstr ""
7021
7022 #. type: Plain text
7023 #: build/C/man2/getrlimit.2:266
7024 #, no-wrap
7025 msgid ""
7026 "    Linux 3.4 and earlier:\n"
7027 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +\n"
7028 "                                /* For overhead */\n"
7029 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7030 "                                /* For message data */\n"
7031 msgstr ""
7032
7033 #. type: Plain text
7034 #: build/C/man2/getrlimit.2:279
7035 #, fuzzy
7036 #| msgid ""
7037 #| "where I<attr> is the I<mq_attr> structure specified as the fourth "
7038 #| "argument to B<mq_open>(3)."
7039 msgid ""
7040 "where I<attr> is the I<mq_attr> structure specified as the fourth argument "
7041 "to B<mq_open>(3), and the I<msg_msg> and I<posix_msg_tree_node> structures "
7042 "are kernel-internal structures."
7043 msgstr ""
7044 "ここで I<attr> は I<mq_attr> 構造体であり、 B<mq_open>(3)  の第 4 引き数とし"
7045 "て指定される。"
7046
7047 #. type: Plain text
7048 #: build/C/man2/getrlimit.2:285
7049 #, fuzzy
7050 #| msgid ""
7051 #| "The first addend in the formula, which includes I<sizeof(struct msg_msg\\ "
7052 #| "*)> (4 bytes on Linux/i386), ensures that the user cannot create an "
7053 #| "unlimited number of zero-length messages (such messages nevertheless each "
7054 #| "consume some system memory for bookkeeping overhead)."
7055 msgid ""
7056 "The \"overhead\" addend in the formula accounts for overhead bytes required "
7057 "by the implementation and ensures that the user cannot create an unlimited "
7058 "number of zero-length messages (such messages nevertheless each consume some "
7059 "system memory for bookkeeping overhead)."
7060 msgstr ""
7061 "I<sizeof(struct msg_msg\\ *)> (Linux/i386 では 4 バイト) を含む最初の加数"
7062 "は、 ユーザーが長さ 0 のメッセージを無制限に作れないこと保証している (このよ"
7063 "うなメッセージであっても、 記録のためのオーバーヘッドでシステムメモリを消費す"
7064 "る)。"
7065
7066 #. type: TP
7067 #: build/C/man2/getrlimit.2:285
7068 #, no-wrap
7069 msgid "B<RLIMIT_NICE> (since Linux 2.6.12, but see BUGS below)"
7070 msgstr "B<RLIMIT_NICE> (Linux 2.6.12 以降, 下記の「バグ」の節も参照)"
7071
7072 #. type: Plain text
7073 #: build/C/man2/getrlimit.2:298
7074 msgid ""
7075 "Specifies a ceiling to which the process's nice value can be raised using "
7076 "B<setpriority>(2)  or B<nice>(2).  The actual ceiling for the nice value is "
7077 "calculated as I<20\\ -\\ rlim_cur>.  (This strangeness occurs because "
7078 "negative numbers cannot be specified as resource limit values, since they "
7079 "typically have special meanings.  For example, B<RLIM_INFINITY> typically is "
7080 "the same as -1.)"
7081 msgstr ""
7082 "B<setpriority>(2)  や B<nice>(2)  を使って引き上げられるプロセスの nice 値の"
7083 "上限を指定する。 nice 値の実際の上限は I<20\\ -\\ rlim_cur> で計算される (こ"
7084 "のような変な状況は、リソース制限値として負の数を指定できないため 発生する。通"
7085 "常、負の値は特別な意味を持っているからである。 例えば、通常は "
7086 "B<RLIM_INFINITY> の値は -1 である)。"
7087
7088 #. type: TP
7089 #: build/C/man2/getrlimit.2:298
7090 #, no-wrap
7091 msgid "B<RLIMIT_NOFILE>"
7092 msgstr "B<RLIMIT_NOFILE>"
7093
7094 #. type: Plain text
7095 #: build/C/man2/getrlimit.2:312
7096 msgid ""
7097 "Specifies a value one greater than the maximum file descriptor number that "
7098 "can be opened by this process.  Attempts (B<open>(2), B<pipe>(2), B<dup>(2), "
7099 "etc.)  to exceed this limit yield the error B<EMFILE>.  (Historically, this "
7100 "limit was named B<RLIMIT_OFILE> on BSD.)"
7101 msgstr ""
7102 "このプロセスがオープンできるファイルディスクリプタ数の最大値より 1 大きい値を"
7103 "指定する。 (B<open>(2), B<pipe>(2), B<dup>(2)  などにより) この上限を超えよう"
7104 "とした場合、エラー B<EMFILE> が発生する (歴史的に、BSD ではこの上限は "
7105 "B<RLIMIT_OFILE> という名前となっている)。"
7106
7107 #. type: TP
7108 #: build/C/man2/getrlimit.2:312
7109 #, no-wrap
7110 msgid "B<RLIMIT_NPROC>"
7111 msgstr "B<RLIMIT_NPROC>"
7112
7113 #. type: Plain text
7114 #: build/C/man2/getrlimit.2:325
7115 msgid ""
7116 "The maximum number of processes (or, more precisely on Linux, threads)  that "
7117 "can be created for the real user ID of the calling process.  Upon "
7118 "encountering this limit, B<fork>(2)  fails with the error B<EAGAIN>.  This "
7119 "limit is not enforced for processes that have either the B<CAP_SYS_ADMIN> or "
7120 "the B<CAP_SYS_RESOURCE> capability."
7121 msgstr ""
7122 "呼び出したプロセスの実ユーザー ID で作成できる最大プロセス数 (より正確には "
7123 "Linux ではスレッド数)。 この上限に達すると、 B<fork>(2)  はエラー B<EAGAIN> "
7124 "で失敗する。 この上限値は、ケーパビリティ B<CAP_SYS_ADMIN> か "
7125 "B<CAP_SYS_RESOURCE> のどちらかを持つプロセスには適用されない。"
7126
7127 #. type: TP
7128 #: build/C/man2/getrlimit.2:325
7129 #, no-wrap
7130 msgid "B<RLIMIT_RSS>"
7131 msgstr "B<RLIMIT_RSS>"
7132
7133 #.  As at kernel 2.6.12, this limit still does nothing in 2.6 though
7134 #.  talk of making it do something has surfaced from time to time in LKML
7135 #.        -- MTK, Jul 05
7136 #. type: Plain text
7137 #: build/C/man2/getrlimit.2:337
7138 msgid ""
7139 "Specifies the limit (in pages) of the process's resident set (the number of "
7140 "virtual pages resident in RAM).  This limit has effect only in Linux 2.4.x, "
7141 "x E<lt> 30, and there affects only calls to B<madvise>(2)  specifying "
7142 "B<MADV_WILLNEED>."
7143 msgstr ""
7144 "プロセスの resident set (RAM 上に存在する仮想ページの数) の 上限を (ページ数"
7145 "で) 指定する。 この制限は 2.4.30 より前でしか影響がなく、 B<madvise>(2)  に "
7146 "B<MADV_WILLNEED> を指定した関数コールにしか影響しない。"
7147
7148 #. type: TP
7149 #: build/C/man2/getrlimit.2:337
7150 #, no-wrap
7151 msgid "B<RLIMIT_RTPRIO> (since Linux 2.6.12, but see BUGS)"
7152 msgstr "B<RLIMIT_RTPRIO> (Linux 2.6.12 以降, バグの節も参照)"
7153
7154 #. type: Plain text
7155 #: build/C/man2/getrlimit.2:344
7156 msgid ""
7157 "Specifies a ceiling on the real-time priority that may be set for this "
7158 "process using B<sched_setscheduler>(2)  and B<sched_setparam>(2)."
7159 msgstr ""
7160 "B<sched_setscheduler>(2)  や B<sched_setparam>(2)  を使って設定できる、そのプ"
7161 "ロセスのリアルタイム優先度の上限を指定する。"
7162
7163 #. type: TP
7164 #: build/C/man2/getrlimit.2:344
7165 #, no-wrap
7166 msgid "B<RLIMIT_RTTIME> (since Linux 2.6.25)"
7167 msgstr "B<RLIMIT_RTTIME> (Linux 2.6.25 以降)"
7168
7169 #. type: Plain text
7170 #: build/C/man2/getrlimit.2:356
7171 msgid ""
7172 "Specifies a limit (in microseconds)  on the amount of CPU time that a "
7173 "process scheduled under a real-time scheduling policy may consume without "
7174 "making a blocking system call.  For the purpose of this limit, each time a "
7175 "process makes a blocking system call, the count of its consumed CPU time is "
7176 "reset to zero.  The CPU time count is not reset if the process continues "
7177 "trying to use the CPU but is preempted, its time slice expires, or it calls "
7178 "B<sched_yield>(2)."
7179 msgstr ""
7180 "リアルタイムスケジューリング方針でスケジューリングされるプロセスが ブロッキン"
7181 "グ型のシステムコールを呼び出さずに消費することのできる CPU 時間の合計について"
7182 "の上限を (マイクロ秒単位で) 指定する。 この上限の目的のため、プロセスがブロッ"
7183 "キング型のシステムコールを 呼び出す度に、消費された CPU 時間のカウントは 0 に"
7184 "リセットされる。 プロセスが CPU を使い続けようとしたが他のプロセスに置き換え"
7185 "られた (preempted) 場合や、そのプロセスのタイムスライスが満了した場合、 その"
7186 "プロセスが B<sched_yield>(2)  を呼び出した場合は、CPU 時間のカウントはリセッ"
7187 "トされない。"
7188
7189 #. type: Plain text
7190 #: build/C/man2/getrlimit.2:367
7191 msgid ""
7192 "Upon reaching the soft limit, the process is sent a B<SIGXCPU> signal.  If "
7193 "the process catches or ignores this signal and continues consuming CPU time, "
7194 "then B<SIGXCPU> will be generated once each second until the hard limit is "
7195 "reached, at which point the process is sent a B<SIGKILL> signal."
7196 msgstr ""
7197 "ソフトリミットに達すると、そのプロセスに B<SIGXCPU> シグナルが送られる。その"
7198 "プロセスがこのシグナルを捕捉するか 無視して、CPU 時間を消費し続けた場合に"
7199 "は、 ハードリミットに達するまで 1 秒に 1 回 B<SIGXCPU> が生成され続けることに"
7200 "なる。 ハードリミットに達した時点で、そのプロセスには B<SIGKILL> シグナルが送"
7201 "られる。"
7202
7203 #. type: Plain text
7204 #: build/C/man2/getrlimit.2:370
7205 msgid ""
7206 "The intended use of this limit is to stop a runaway real-time process from "
7207 "locking up the system."
7208 msgstr ""
7209 "この上限を意図的に使用するのは、暴走したリアルタイムプロセスを 停止して、シス"
7210 "テムが動かなくなるのを避ける場合である。"
7211
7212 #. type: TP
7213 #: build/C/man2/getrlimit.2:370
7214 #, no-wrap
7215 msgid "B<RLIMIT_SIGPENDING> (since Linux 2.6.8)"
7216 msgstr "B<RLIMIT_SIGPENDING> (Linux 2.6.8 以降)"
7217
7218 #.  This replaces the /proc/sys/kernel/rtsig-max system-wide limit
7219 #.  that was present in kernels <= 2.6.7.  MTK Dec 04
7220 #. type: Plain text
7221 #: build/C/man2/getrlimit.2:384
7222 msgid ""
7223 "Specifies the limit on the number of signals that may be queued for the real "
7224 "user ID of the calling process.  Both standard and real-time signals are "
7225 "counted for the purpose of checking this limit.  However, the limit is "
7226 "enforced only for B<sigqueue>(3); it is always possible to use B<kill>(2)  "
7227 "to queue one instance of any of the signals that are not already queued to "
7228 "the process."
7229 msgstr ""
7230 "呼び出し元プロセスの実ユーザー ID に対して キューに入れられるシグナルの\n"
7231 "数の制限を指定する。この制限をチェックするため、標準シグナルとリアルタ\n"
7232 "イムシグナルの両方がカウントされる。しかし、この制限は B<sigqueue>(3)\n"
7233 "に対してのみ適用され、 B<kill>(2) 使うことで、そのプロセスに対してま\n"
7234 "だキューに入れられていない シグナルのインスタンスをキューに入れることが\n"
7235 "できる。"
7236
7237 #. type: TP
7238 #: build/C/man2/getrlimit.2:384
7239 #, no-wrap
7240 msgid "B<RLIMIT_STACK>"
7241 msgstr "B<RLIMIT_STACK>"
7242
7243 #. type: Plain text
7244 #: build/C/man2/getrlimit.2:392
7245 msgid ""
7246 "The maximum size of the process stack, in bytes.  Upon reaching this limit, "
7247 "a B<SIGSEGV> signal is generated.  To handle this signal, a process must "
7248 "employ an alternate signal stack (B<sigaltstack>(2))."
7249 msgstr ""
7250 "プロセススタックの最大サイズをバイト単位で指定する。 この上限に達すると、 "
7251 "B<SIGSEGV> シグナルが生成される。 このシグナルを扱うためには、 プロセスは代り"
7252 "のシグナルスタック (B<sigaltstack>(2))  を使用しなければならない。"
7253
7254 #. type: Plain text
7255 #: build/C/man2/getrlimit.2:397
7256 msgid ""
7257 "Since Linux 2.6.23, this limit also determines the amount of space used for "
7258 "the process's command-line arguments and environment variables; for details, "
7259 "see B<execve>(2)."
7260 msgstr ""
7261 "Linux 2.6.23 以降では、この制限はプロセスのコマンドライン引き数と環境変数 に"
7262 "使用される空間の合計サイズの上限の決定にも使用される。詳細については "
7263 "B<execve>(2)  を参照。"
7264
7265 #. type: SS
7266 #: build/C/man2/getrlimit.2:397
7267 #, no-wrap
7268 msgid "prlimit()"
7269 msgstr "prlimit()"
7270
7271 #.  commit c022a0acad534fd5f5d5f17280f6d4d135e74e81
7272 #.  Author: Jiri Slaby <jslaby@suse.cz>
7273 #.  Date:   Tue May 4 18:03:50 2010 +0200
7274 #.      rlimits: implement prlimit64 syscall
7275 #.  commit 6a1d5e2c85d06da35cdfd93f1a27675bfdc3ad8c
7276 #.  Author: Jiri Slaby <jslaby@suse.cz>
7277 #.  Date:   Wed Mar 24 17:06:58 2010 +0100
7278 #.      rlimits: add rlimit64 structure
7279 #. type: Plain text
7280 #: build/C/man2/getrlimit.2:417
7281 msgid ""
7282 "The Linux-specific B<prlimit>()  system call combines and extends the "
7283 "functionality of B<setrlimit>()  and B<getrlimit>().  It can be used to both "
7284 "set and get the resource limits of an arbitrary process."
7285 msgstr ""
7286 "Linux 固有の B<prlimit>() システムコールは、 B<setrlimit>() と B<getrlimit> "
7287 "の機能を合わせて拡張したものである。 このシステムコールを使って、任意のプロセ"
7288 "スのリソース上限の設定と取得を行うことができる。"
7289
7290 #. type: Plain text
7291 #: build/C/man2/getrlimit.2:424
7292 msgid ""
7293 "The I<resource> argument has the same meaning as for B<setrlimit>()  and "
7294 "B<getrlimit>()."
7295 msgstr ""
7296 "I<resource> 引き数は B<setrlimit>() や B<getrlimit>() と同じ意味である。"
7297
7298 #. type: Plain text
7299 #: build/C/man2/getrlimit.2:442
7300 msgid ""
7301 "If the I<new_limit> argument is a not NULL, then the I<rlimit> structure to "
7302 "which it points is used to set new values for the soft and hard limits for "
7303 "I<resource>.  If the I<old_limit> argument is a not NULL, then a successful "
7304 "call to B<prlimit>()  places the previous soft and hard limits for "
7305 "I<resource> in the I<rlimit> structure pointed to by I<old_limit>."
7306 msgstr ""
7307 "I<new_limit> 引き数が NULL 以外の場合、 I<new_limit> が指す I<rlimit> 構造体"
7308 "を使って I<resource> のソフトリミットとハードリミットの新しい値が設定され"
7309 "る。 I<old_limit> 引き数が NULL 以外の場合、 B<prlimit>() の呼び出しが成功す"
7310 "ると、 I<resource> の直前のソフトリミットとハードリミットが I<old_limit> が指"
7311 "す I<rlimit> 構造体に格納される。"
7312
7313 #.  FIXME . this permission check is strange
7314 #.  Asked about this on LKML, 7 Nov 2010
7315 #.      "Inconsistent credential checking in prlimit() syscall"
7316 #. type: Plain text
7317 #: build/C/man2/getrlimit.2:461
7318 msgid ""
7319 "The I<pid> argument specifies the ID of the process on which the call is to "
7320 "operate.  If I<pid> is 0, then the call applies to the calling process.  To "
7321 "set or get the resources of a process other than itself, the caller must "
7322 "have the B<CAP_SYS_RESOURCE> capability, or the real, effective, and saved "
7323 "set user IDs of the target process must match the real user ID of the caller "
7324 "I<and> the real, effective, and saved set group IDs of the target process "
7325 "must match the real group ID of the caller."
7326 msgstr ""
7327 "I<pid> 引き数は呼び出しの操作対象となるプロセス ID を指定する。 I<pid> が 0 "
7328 "の場合、呼び出しは呼び出し元プロセスに対して適用される。 自分以外のプロセスの"
7329 "リソースの設定と取得を行うためには、 呼び出し元プロセスが "
7330 "B<CAP_SYS_RESOURCE> ケーパビリティを持っているか、 対象となるプロセスの実ユー"
7331 "ザ ID、 実効ユーザ ID、 保存 set-user-ID が呼び出し元プロセスの実ユーザ ID と"
7332 "一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存 "
7333 "set-group-ID が呼び出し元プロセスの実グループ ID と一致していなければならな"
7334 "い。"
7335
7336 #. type: Plain text
7337 #: build/C/man2/getrlimit.2:466
7338 msgid ""
7339 "On success, these system calls return 0.  On error, -1 is returned, and "
7340 "I<errno> is set appropriately."
7341 msgstr ""
7342 "成功した場合、これらのシステムコールは 0 を返す。\n"
7343 "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
7344
7345 #. type: Plain text
7346 #: build/C/man2/getrlimit.2:471
7347 msgid ""
7348 "A pointer argument points to a location outside the accessible address space."
7349 msgstr "場所を指すポインタ引き数がアクセス可能なアドレス空間外を指している。"
7350
7351 #. type: Plain text
7352 #: build/C/man2/getrlimit.2:483
7353 msgid ""
7354 "The value specified in I<resource> is not valid; or, for B<setrlimit>()  or "
7355 "B<prlimit>(): I<rlim-E<gt>rlim_cur> was greater than I<rlim-E<gt>rlim_max>."
7356 msgstr ""
7357 "I<resource> で指定された値が有効でない。\n"
7358 "または、 B<setrlimit>() や B<prlimit>() で、\n"
7359 "I<rlim-E<gt>rlim_cur> が I<rlim-E<gt>rlim_max> よりも大きかった。"
7360
7361 #. type: Plain text
7362 #: build/C/man2/getrlimit.2:495
7363 msgid ""
7364 "An unprivileged process tried to raise the hard limit; the "
7365 "B<CAP_SYS_RESOURCE> capability is required to do this.  Or, the caller tried "
7366 "to increase the hard B<RLIMIT_NOFILE> limit above the current kernel maximum "
7367 "(B<NR_OPEN>).  Or, the calling process did not have permission to set limits "
7368 "for the process specified by I<pid>."
7369 msgstr ""
7370 "特権のないプロセスがハードリミットを上げようとした。\n"
7371 "これを行うためには B<CAP_SYS_RESOURCE> ケーパビリティが必要である。\n"
7372 "または、特権のないプロセスが B<RLIMIT_NOFILE> ハードリミットを\n"
7373 "現在のカーネルの最大値 (B<NR_OPEN>) 以上に増やそうとした。\n"
7374 "または、呼び出したプロセスが I<pid> で指定されたプロセスのリミットを\n"
7375 "設定する許可を持っていなかった。"
7376
7377 #. type: Plain text
7378 #: build/C/man2/getrlimit.2:499
7379 msgid "Could not find a process with the ID specified in I<pid>."
7380 msgstr "I<pid> で指定された ID のプロセスが見つからなかった。"
7381
7382 #. type: Plain text
7383 #: build/C/man2/getrlimit.2:504
7384 msgid ""
7385 "The B<prlimit>()  system call is available since Linux 2.6.36.  Library "
7386 "support is available since glibc 2.13."
7387 msgstr ""
7388 "B<prlimit>() システムコールは Linux 2.6.36 以降で利用できる。 ライブラリのサ"
7389 "ポートは glibc 2.13 以降で利用できる。"
7390
7391 #. type: Plain text
7392 #: build/C/man2/getrlimit.2:508
7393 msgid "B<getrlimit>(), B<setrlimit>(): SVr4, 4.3BSD, POSIX.1-2001."
7394 msgstr "B<getrlimit>(), B<setrlimit>(): SVr4, 4.3BSD, POSIX.1-2001."
7395
7396 #. type: Plain text
7397 #: build/C/man2/getrlimit.2:511
7398 msgid "B<prlimit>(): Linux-specific."
7399 msgstr "B<prlimit>(): Linux 固有。"
7400
7401 #. type: Plain text
7402 #: build/C/man2/getrlimit.2:527
7403 msgid ""
7404 "B<RLIMIT_MEMLOCK> and B<RLIMIT_NPROC> derive from BSD and are not specified "
7405 "in POSIX.1-2001; they are present on the BSDs and Linux, but on few other "
7406 "implementations.  B<RLIMIT_RSS> derives from BSD and is not specified in "
7407 "POSIX.1-2001; it is nevertheless present on most implementations.  "
7408 "B<RLIMIT_MSGQUEUE>, B<RLIMIT_NICE>, B<RLIMIT_RTPRIO>, B<RLIMIT_RTTIME>, and "
7409 "B<RLIMIT_SIGPENDING> are Linux-specific."
7410 msgstr ""
7411 "B<RLIMIT_MEMLOCK> と B<RLIMIT_NPROC> は BSD から派生し、\n"
7412 "POSIX.1-2001 には指定されていない。\n"
7413 "これらは BSD 系と Linux に存在するが、他の実装は少ない。\n"
7414 "B<RLIMIT_RSS> は BSD から派生し、POSIX.1-2001 には指定されていない。\n"
7415 "それにも関わらず多くの実装で存在する。\n"
7416 "B<RLIMIT_MSGQUEUE>, B<RLIMIT_NICE>, B<RLIMIT_RTPRIO>, B<RLIMIT_RTTIME>,\n"
7417 "B<RLIMIT_SIGPENDING> は Linux 固有のものである。"
7418
7419 #. type: Plain text
7420 #: build/C/man2/getrlimit.2:533
7421 msgid ""
7422 "A child process created via B<fork>(2)  inherits its parent's resource "
7423 "limits.  Resource limits are preserved across B<execve>(2)."
7424 msgstr ""
7425 "B<fork>(2)  で作成された作成された子プロセスは、 親プロセスのリソース制限を継"
7426 "承する。 B<execve>(2)  の前後でリソース制限は保存される。"
7427
7428 #. type: Plain text
7429 #: build/C/man2/getrlimit.2:538
7430 msgid ""
7431 "Lowering the soft limit for a resource below the process's current "
7432 "consumption of that resource will succeed (but will prevent the process from "
7433 "further increasing its consumption of the resource)."
7434 msgstr ""
7435 "リソースのソフトリミットをそのプロセスが現在のリソース使用量より小さい値に設"
7436 "定することはできる (但し、そのプロセスはそれ以降そのリソースの使用量を増やす"
7437 "ことができなくなる)。"
7438
7439 #. type: Plain text
7440 #: build/C/man2/getrlimit.2:547
7441 msgid ""
7442 "One can set the resource limits of the shell using the built-in I<ulimit> "
7443 "command (I<limit> in B<csh>(1)).  The shell's resource limits are inherited "
7444 "by the processes that it creates to execute commands."
7445 msgstr ""
7446 "シェルのリソース制限は、シェルの組み込みコマンドである I<ulimit> (B<csh>(1)  "
7447 "では I<limit )> を使って設定することができる。 このシェルのリソース制限は、コ"
7448 "マンドを実行してシェルが生成するプロセス に引き継がれる。"
7449
7450 #. type: Plain text
7451 #: build/C/man2/getrlimit.2:552
7452 msgid ""
7453 "Since Linux 2.6.24, the resource limits of any process can be inspected via "
7454 "I</proc/[pid]/limits>; see B<proc>(5)."
7455 msgstr ""
7456 "Linux 2.6.24 以降では、 プロセスのリソース上限は I</proc/[pid]/limits> で知る"
7457 "ことができる。 B<proc>(5) 参照。"
7458
7459 #. type: Plain text
7460 #: build/C/man2/getrlimit.2:561
7461 msgid ""
7462 "Ancient systems provided a B<vlimit>()  function with a similar purpose to "
7463 "B<setrlimit>().  For backward compatibility, glibc also provides "
7464 "B<vlimit>().  All new applications should be written using B<setrlimit>()."
7465 msgstr ""
7466 "古いシステムでは、 B<setrlimit>()  と同様の目的を持つ関数 B<vlimit>()  が提供"
7467 "されていた。 後方互換性のため、glibc でも B<vlimit>()  を提供している。 全て"
7468 "の新しいアプリケーションでは、 B<setrlimit>()  を使用すべきである。"
7469
7470 #. type: SS
7471 #: build/C/man2/getrlimit.2:561
7472 #, no-wrap
7473 msgid "C library/ kernel ABI differences"
7474 msgstr ""
7475
7476 #. type: Plain text
7477 #: build/C/man2/getrlimit.2:570
7478 msgid ""
7479 "Since version 2.13, the glibc B<getrlimit>()  and B<setrlimit>()  wrapper "
7480 "functions no longer invoke the corresponding system calls, but instead "
7481 "employ B<prlimit>(), for the reasons described in BUGS."
7482 msgstr ""
7483
7484 #. type: Plain text
7485 #: build/C/man2/getrlimit.2:579
7486 msgid ""
7487 "In older Linux kernels, the B<SIGXCPU> and B<SIGKILL> signals delivered when "
7488 "a process encountered the soft and hard B<RLIMIT_CPU> limits were delivered "
7489 "one (CPU) second later than they should have been.  This was fixed in kernel "
7490 "2.6.8."
7491 msgstr ""
7492 "以前の Linux カーネルでは、プロセスがソフトまたはハード B<RLIMIT_CPU> リミッ"
7493 "トに達した場合に送られる B<SIGXCPU> と B<SIGKILL> シグナルが、本来送られるべ"
7494 "き時点の 1 (CPU) 秒後に送られてしまう。 これはカーネル 2.6.8 で修正された。"
7495
7496 #.  see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
7497 #. type: Plain text
7498 #: build/C/man2/getrlimit.2:587
7499 msgid ""
7500 "In 2.6.x kernels before 2.6.17, a B<RLIMIT_CPU> limit of 0 is wrongly "
7501 "treated as \"no limit\" (like B<RLIM_INFINITY>).  Since Linux 2.6.17, "
7502 "setting a limit of 0 does have an effect, but is actually treated as a limit "
7503 "of 1 second."
7504 msgstr ""
7505 "2.6.17 より前の 2.6.x カーネルでは、 B<RLIMIT_CPU> リミットが 0 の場合、 "
7506 "(B<RLIM_INFINITY> と同じように) 「制限なし」と間違って解釈されていた。 Linux "
7507 "2.6.17 以降では、リミットを 0 に設定した場合にも 効果を持つようになっている"
7508 "が、実際にはリミットの値は 1 秒となる。"
7509
7510 #.  See https://lwn.net/Articles/145008/
7511 #. type: Plain text
7512 #: build/C/man2/getrlimit.2:592
7513 msgid ""
7514 "A kernel bug means that B<RLIMIT_RTPRIO> does not work in kernel 2.6.12; the "
7515 "problem is fixed in kernel 2.6.13."
7516 msgstr ""
7517 "カーネル 2.6.12 には、 B<RLIMIT_RTPRIO> が動作しないというバグがある。この問"
7518 "題はカーネル 2.6.13 で修正されている。"
7519
7520 #.  see http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
7521 #. type: Plain text
7522 #: build/C/man2/getrlimit.2:603
7523 msgid ""
7524 "In kernel 2.6.12, there was an off-by-one mismatch between the priority "
7525 "ranges returned by B<getpriority>(2)  and B<RLIMIT_NICE>.  This had the "
7526 "effect that the actual ceiling for the nice value was calculated as I<19\\ -"
7527 "\\ rlim_cur>.  This was fixed in kernel 2.6.13."
7528 msgstr ""
7529 "カーネル 2.6.12 では、 B<getpriority>(2)  と B<RLIMIT_NICE> が返す優先度の範"
7530 "囲が一つずれていた。このため、nice 値の実際の上限が I<19\\ -\\ rlim_cur> に"
7531 "なってしまうという影響があった。これはカーネル 2.6.13 で修正された。"
7532
7533 #.  The relevant patch, sent to LKML, seems to be
7534 #.  http://thread.gmane.org/gmane.linux.kernel/273462
7535 #.  From: Roland McGrath <roland <at> redhat.com>
7536 #.  Subject: [PATCH 7/7] make RLIMIT_CPU/SIGXCPU per-process
7537 #.  Date: 2005-01-23 23:27:46 GMT
7538 #.  Tested Solaris 10, FreeBSD 9, OpenBSD 5.0
7539 #.  FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=50951
7540 #. type: Plain text
7541 #: build/C/man2/getrlimit.2:630
7542 msgid ""
7543 "Since Linux 2.6.12, if a process reaches its soft B<RLIMIT_CPU> limit and "
7544 "has a handler installed for B<SIGXCPU>, then, in addition to invoking the "
7545 "signal handler, the kernel increases the soft limit by one second.  This "
7546 "behavior repeats if the process continues to consume CPU time, until the "
7547 "hard limit is reached, at which point the process is killed.  Other "
7548 "implementations do not change the B<RLIMIT_CPU> soft limit in this manner, "
7549 "and the Linux behavior is probably not standards conformant; portable "
7550 "applications should avoid relying on this Linux-specific behavior.  The "
7551 "Linux-specific B<RLIMIT_RTTIME> limit exhibits the same behavior when the "
7552 "soft limit is encountered."
7553 msgstr ""
7554 "Linux 2.6.12 以降では、 プロセスがその B<RLIMIT_CPU> ソフトリミットに達し、 "
7555 "B<SIGXCPU> に対してシグナルハンドラが設定されている場合、 シグナルハンドラを"
7556 "起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセス"
7557 "が CPU 時間を消費し続けている限り、 ハードリミットに達するまで、この動作が繰"
7558 "り返される。 ハードリミットに達すると、その時点でプロセスは kill される。 他"
7559 "の実装では、上記のような B<RLIMIT_CPU> ソフトリミットの変更は行われず、 おそ"
7560 "らく Linux の動作は標準に準拠していない。 移植性が必要なアプリケーションでは"
7561 "この Linux 固有の動作を前提にするのは避けるべきである。 Linux 固有の上限 "
7562 "B<RLIMIT_RTTIME> でも、 ソフトリミットに達した場合に同じ動作となる。"
7563
7564 #. type: Plain text
7565 #: build/C/man2/getrlimit.2:640
7566 msgid ""
7567 "Kernels before 2.4.22 did not diagnose the error B<EINVAL> for "
7568 "B<setrlimit>()  when I<rlim-E<gt>rlim_cur> was greater than I<rlim-"
7569 "E<gt>rlim_max>."
7570 msgstr ""
7571 "2.4.22 より前のカーネルでは、 I<rlim-E<gt>rlim_cur> が I<rlim-E<gt>rlim_max> "
7572 "より大きかった場合、 B<setrlimit>()  での B<EINVAL> エラーを検出できない。"
7573
7574 #. type: SS
7575 #: build/C/man2/getrlimit.2:640
7576 #, no-wrap
7577 msgid "Representation of \"large\" resource limit values on 32-bit platforms"
7578 msgstr ""
7579
7580 #.  https://bugzilla.kernel.org/show_bug.cgi?id=5042
7581 #.  http://sources.redhat.com/bugzilla/show_bug.cgi?id=12201
7582 #. type: Plain text
7583 #: build/C/man2/getrlimit.2:671
7584 msgid ""
7585 "The glibc B<getrlimit>()  and B<setrlimit>()  wrapper functions use a 64-bit "
7586 "I<rlim_t> data type, even on 32-bit platforms.  However, the I<rlim_t> data "
7587 "type used in the B<getrlimit>()  and B<setrlimit>()  system calls is a (32-"
7588 "bit)  I<unsigned long>.  Furthermore, in Linux versions before 2.6.36, the "
7589 "kernel represents resource limits on 32-bit platforms as I<unsigned long>.  "
7590 "However, a 32-bit data type is not wide enough.  The most pertinent limit "
7591 "here is B<RLIMIT_FSIZE>, which specifies the maximum size to which a file "
7592 "can grow: to be useful, this limit must be represented using a type that is "
7593 "as wide as the type used to represent file offsets\\(emthat is, as wide as a "
7594 "64-bit B<off_t> (assuming a program compiled with I<_FILE_OFFSET_BITS=64>)."
7595 msgstr ""
7596
7597 #. type: Plain text
7598 #: build/C/man2/getrlimit.2:681
7599 msgid ""
7600 "To work around this kernel limitation, if a program tried to set a resource "
7601 "limit to a value larger than can be represented in a 32-bit I<unsigned "
7602 "long>, then the glibc B<setrlimit>()  wrapper function silently converted "
7603 "the limit value to B<RLIM_INFINITY>.  In other words, the requested resource "
7604 "limit setting was silently ignored."
7605 msgstr ""
7606
7607 #. type: Plain text
7608 #: build/C/man2/getrlimit.2:683
7609 msgid "This problem was addressed in Linux 2.6.36 with two principal changes:"
7610 msgstr ""
7611
7612 #. type: Plain text
7613 #: build/C/man2/getrlimit.2:686
7614 msgid ""
7615 "the addition of a new kernel representation of resource limits that uses 64 "
7616 "bits, even on 32-bit platforms;"
7617 msgstr ""
7618
7619 #. type: Plain text
7620 #: build/C/man2/getrlimit.2:690
7621 msgid ""
7622 "the addition of the B<prlimit>()  system call, which employs 64-bit values "
7623 "for its resource limit arguments."
7624 msgstr ""
7625
7626 #.  https://www.sourceware.org/bugzilla/show_bug.cgi?id=12201
7627 #. type: Plain text
7628 #: build/C/man2/getrlimit.2:703
7629 msgid ""
7630 "Since version 2.13, glibc works around the limitations of the "
7631 "B<getrlimit>()  and B<setrlimit>()  system calls by implementing "
7632 "B<setrlimit>()  and B<getrlimit>()  as wrapper functions that call "
7633 "B<prlimit>()."
7634 msgstr ""
7635
7636 #. type: Plain text
7637 #: build/C/man2/getrlimit.2:706
7638 msgid "The program below demonstrates the use of B<prlimit>()."
7639 msgstr "以下のプログラムに B<prlimit>() の使用例を示す。"
7640
7641 #. type: Plain text
7642 #: build/C/man2/getrlimit.2:715
7643 #, no-wrap
7644 msgid ""
7645 "#define _GNU_SOURCE\n"
7646 "#define _FILE_OFFSET_BITS 64\n"
7647 "#include E<lt>stdio.hE<gt>\n"
7648 "#include E<lt>time.hE<gt>\n"
7649 "#include E<lt>stdlib.hE<gt>\n"
7650 "#include E<lt>unistd.hE<gt>\n"
7651 "#include E<lt>sys/resource.hE<gt>\n"
7652 msgstr ""
7653 "#define _GNU_SOURCE\n"
7654 "#define _FILE_OFFSET_BITS 64\n"
7655 "#include E<lt>stdio.hE<gt>\n"
7656 "#include E<lt>time.hE<gt>\n"
7657 "#include E<lt>stdlib.hE<gt>\n"
7658 "#include E<lt>unistd.hE<gt>\n"
7659 "#include E<lt>sys/resource.hE<gt>\n"
7660
7661 #. type: Plain text
7662 #: build/C/man2/getrlimit.2:718
7663 #, no-wrap
7664 msgid ""
7665 "#define errExit(msg) \tdo { perror(msg); exit(EXIT_FAILURE); \\e\n"
7666 "                        } while (0)\n"
7667 msgstr ""
7668 "#define errExit(msg) \tdo { perror(msg); exit(EXIT_FAILURE); \\e\n"
7669 "                        } while (0)\n"
7670
7671 #. type: Plain text
7672 #: build/C/man2/getrlimit.2:725
7673 #, no-wrap
7674 msgid ""
7675 "int\n"
7676 "main(int argc, char *argv[])\n"
7677 "{\n"
7678 "    struct rlimit old, new;\n"
7679 "    struct rlimit *newp;\n"
7680 "    pid_t pid;\n"
7681 msgstr ""
7682 "int\n"
7683 "main(int argc, char *argv[])\n"
7684 "{\n"
7685 "    struct rlimit old, new;\n"
7686 "    struct rlimit *newp;\n"
7687 "    pid_t pid;\n"
7688
7689 #. type: Plain text
7690 #: build/C/man2/getrlimit.2:731
7691 #, no-wrap
7692 msgid ""
7693 "    if (!(argc == 2 || argc == 4)) {\n"
7694 "        fprintf(stderr, \"Usage: %s E<lt>pidE<gt> [E<lt>new-soft-limitE<gt> \"\n"
7695 "                \"E<lt>new-hard-limitE<gt>]\\en\", argv[0]);\n"
7696 "        exit(EXIT_FAILURE);\n"
7697 "    }\n"
7698 msgstr ""
7699 "    if (!(argc == 2 || argc == 4)) {\n"
7700 "        fprintf(stderr, \"Usage: %s E<lt>pidE<gt> [E<lt>new-soft-limitE<gt> \"\n"
7701 "                \"E<lt>new-hard-limitE<gt>]\\en\", argv[0]);\n"
7702 "        exit(EXIT_FAILURE);\n"
7703 "    }\n"
7704
7705 #. type: Plain text
7706 #: build/C/man2/getrlimit.2:733
7707 #, no-wrap
7708 msgid "    pid = atoi(argv[1]);        /* PID of target process */\n"
7709 msgstr "    pid = atoi(argv[1]);        /* PID of target process */\n"
7710
7711 #. type: Plain text
7712 #: build/C/man2/getrlimit.2:740
7713 #, no-wrap
7714 msgid ""
7715 "    newp = NULL;\n"
7716 "    if (argc == 4) {\n"
7717 "        new.rlim_cur = atoi(argv[2]);\n"
7718 "        new.rlim_max = atoi(argv[3]);\n"
7719 "        newp = &new;\n"
7720 "    }\n"
7721 msgstr ""
7722 "    newp = NULL;\n"
7723 "    if (argc == 4) {\n"
7724 "        new.rlim_cur = atoi(argv[2]);\n"
7725 "        new.rlim_max = atoi(argv[3]);\n"
7726 "        newp = &new;\n"
7727 "    }\n"
7728
7729 #. type: Plain text
7730 #: build/C/man2/getrlimit.2:743
7731 #, no-wrap
7732 msgid ""
7733 "    /* Set CPU time limit of target process; retrieve and display\n"
7734 "       previous limit */\n"
7735 msgstr ""
7736 "    /* Set CPU time limit of target process; retrieve and display\n"
7737 "       previous limit */\n"
7738
7739 #. type: Plain text
7740 #: build/C/man2/getrlimit.2:748
7741 #, no-wrap
7742 msgid ""
7743 "    if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)\n"
7744 "        errExit(\"prlimit-1\");\n"
7745 "    printf(\"Previous limits: soft=%lld; hard=%lld\\en\",\n"
7746 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7747 msgstr ""
7748 "    if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)\n"
7749 "        errExit(\"prlimit-1\");\n"
7750 "    printf(\"Previous limits: soft=%lld; hard=%lld\\en\",\n"
7751 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7752
7753 #. type: Plain text
7754 #: build/C/man2/getrlimit.2:750
7755 #, no-wrap
7756 msgid "    /* Retrieve and display new CPU time limit */\n"
7757 msgstr "    /* Retrieve and display new CPU time limit */\n"
7758
7759 #. type: Plain text
7760 #: build/C/man2/getrlimit.2:755
7761 #, no-wrap
7762 msgid ""
7763 "    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)\n"
7764 "        errExit(\"prlimit-2\");\n"
7765 "    printf(\"New limits: soft=%lld; hard=%lld\\en\",\n"
7766 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7767 msgstr ""
7768 "    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)\n"
7769 "        errExit(\"prlimit-2\");\n"
7770 "    printf(\"New limits: soft=%lld; hard=%lld\\en\",\n"
7771 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7772
7773 #. type: Plain text
7774 #: build/C/man2/getrlimit.2:758 build/C/man7/user_namespaces.7:829
7775 #, no-wrap
7776 msgid ""
7777 "    exit(EXIT_FAILURE);\n"
7778 "}\n"
7779 msgstr ""
7780 "    exit(EXIT_FAILURE);\n"
7781 "}\n"
7782
7783 #. type: Plain text
7784 #: build/C/man2/getrlimit.2:777
7785 msgid ""
7786 "B<prlimit>(1), B<dup>(2), B<fcntl>(2), B<fork>(2), B<getrusage>(2), "
7787 "B<mlock>(2), B<mmap>(2), B<open>(2), B<quotactl>(2), B<sbrk>(2), "
7788 "B<shmctl>(2), B<malloc>(3), B<sigqueue>(3), B<ulimit>(3), B<core>(5), "
7789 "B<capabilities>(7), B<signal>(7)"
7790 msgstr ""
7791 "B<prlimit>(1), B<dup>(2), B<fcntl>(2), B<fork>(2), B<getrusage>(2), "
7792 "B<mlock>(2), B<mmap>(2), B<open>(2), B<quotactl>(2), B<sbrk>(2), "
7793 "B<shmctl>(2), B<malloc>(3), B<sigqueue>(3), B<ulimit>(3), B<core>(5), "
7794 "B<capabilities>(7), B<signal>(7)"
7795
7796 #. type: TH
7797 #: build/C/man2/getrusage.2:39
7798 #, no-wrap
7799 msgid "GETRUSAGE"
7800 msgstr "GETRUSAGE"
7801
7802 #. type: TH
7803 #: build/C/man2/getrusage.2:39
7804 #, no-wrap
7805 msgid "2014-05-10"
7806 msgstr "2014-05-10"
7807
7808 #. type: Plain text
7809 #: build/C/man2/getrusage.2:42
7810 msgid "getrusage - get resource usage"
7811 msgstr "getrusage - 資源の使用量を取得する"
7812
7813 #. type: Plain text
7814 #: build/C/man2/getrusage.2:48
7815 msgid "B<int getrusage(int >I<who>B<, struct rusage *>I<usage>B<);>"
7816 msgstr "B<int getrusage(int >I<who>B<, struct rusage *>I<usage>B<);>"
7817
7818 #. type: Plain text
7819 #: build/C/man2/getrusage.2:54
7820 msgid ""
7821 "B<getrusage>()  returns resource usage measures for I<who>, which can be one "
7822 "of the following:"
7823 msgstr ""
7824 "B<getrusage>()  は I<who> の資源 (resource) の使用量を返す。 I<who> には以下"
7825 "のいずれか一つを指定できる。"
7826
7827 #. type: TP
7828 #: build/C/man2/getrusage.2:54
7829 #, no-wrap
7830 msgid "B<RUSAGE_SELF>"
7831 msgstr "B<RUSAGE_SELF>"
7832
7833 #. type: Plain text
7834 #: build/C/man2/getrusage.2:58
7835 msgid ""
7836 "Return resource usage statistics for the calling process, which is the sum "
7837 "of resources used by all threads in the process."
7838 msgstr ""
7839 "呼び出したプロセスの資源使用量、 そのプロセス内の全スレッドが使用している資源"
7840 "の合計を返す。"
7841
7842 #. type: TP
7843 #: build/C/man2/getrusage.2:58
7844 #, no-wrap
7845 msgid "B<RUSAGE_CHILDREN>"
7846 msgstr "B<RUSAGE_CHILDREN>"
7847
7848 #. type: Plain text
7849 #: build/C/man2/getrusage.2:65
7850 msgid ""
7851 "Return resource usage statistics for all children of the calling process "
7852 "that have terminated and been waited for.  These statistics will include the "
7853 "resources used by grandchildren, and further removed descendants, if all of "
7854 "the intervening descendants waited on their terminated children."
7855 msgstr ""
7856 "呼び出したプロセスの子プロセスのうち、 終了して待ち状態にある全プロセスが使用"
7857 "している資源使用量の統計を返す。 これらの統計情報には、孫プロセスやその子孫の"
7858 "プロセスのうち、 削除待ちのものが使用している資源も含まれる。"
7859
7860 #. type: TP
7861 #: build/C/man2/getrusage.2:65
7862 #, no-wrap
7863 msgid "B<RUSAGE_THREAD> (since Linux 2.6.26)"
7864 msgstr "B<RUSAGE_THREAD> (Linux 2.6.26 以降)"
7865
7866 #. type: Plain text
7867 #: build/C/man2/getrusage.2:75
7868 msgid ""
7869 "Return resource usage statistics for the calling thread.  The B<_GNU_SOURCE> "
7870 "feature test macro must be defined (before including I<any> header file)  in "
7871 "order to obtain the definition of this constant from I<E<lt>sys/resource."
7872 "hE<gt>>."
7873 msgstr ""
7874 "呼び出したスレッドに関する資源使用量の統計を返す。 I<E<lt>sys/resource."
7875 "hE<gt>> からこの定数の定義を得るためには、 ((I<どの>ヘッダファイルをインク"
7876 "ルードするよりも前に) 機能検査マクロ B<_GNU_SOURCE> を定義しなければならな"
7877 "い。"
7878
7879 #. type: Plain text
7880 #: build/C/man2/getrusage.2:79
7881 msgid ""
7882 "The resource usages are returned in the structure pointed to by I<usage>, "
7883 "which has the following form:"
7884 msgstr ""
7885 "資源使用量は I<usage> が指す構造体に格納されて返される。 構造体は以下の形式で"
7886 "ある。"
7887
7888 #. type: Plain text
7889 #: build/C/man2/getrusage.2:100
7890 #, no-wrap
7891 msgid ""
7892 "struct rusage {\n"
7893 "    struct timeval ru_utime; /* user CPU time used */\n"
7894 "    struct timeval ru_stime; /* system CPU time used */\n"
7895 "    long   ru_maxrss;        /* maximum resident set size */\n"
7896 "    long   ru_ixrss;         /* integral shared memory size */\n"
7897 "    long   ru_idrss;         /* integral unshared data size */\n"
7898 "    long   ru_isrss;         /* integral unshared stack size */\n"
7899 "    long   ru_minflt;        /* page reclaims (soft page faults) */\n"
7900 "    long   ru_majflt;        /* page faults (hard page faults) */\n"
7901 "    long   ru_nswap;         /* swaps */\n"
7902 "    long   ru_inblock;       /* block input operations */\n"
7903 "    long   ru_oublock;       /* block output operations */\n"
7904 "    long   ru_msgsnd;        /* IPC messages sent */\n"
7905 "    long   ru_msgrcv;        /* IPC messages received */\n"
7906 "    long   ru_nsignals;      /* signals received */\n"
7907 "    long   ru_nvcsw;         /* voluntary context switches */\n"
7908 "    long   ru_nivcsw;        /* involuntary context switches */\n"
7909 "};\n"
7910 msgstr ""
7911 "struct rusage {\n"
7912 "    struct timeval ru_utime; /* 使用されたユーザー CPU 時間 */\n"
7913 "    struct timeval ru_stime; /* 使用されたシステム CPU 時間 */\n"
7914 "    long   ru_maxrss;        /* RAM 上に存在する仮想ページのサイズ\n"
7915 "                               (resident set size) の最大値 */\n"
7916 "    long   ru_ixrss;         /* 共有メモリの合計サイズ */\n"
7917 "    long   ru_idrss;         /* 非共有データの合計サイズ */\n"
7918 "    long   ru_isrss;         /* 非共有スタックの合計サイズ */\n"
7919 "    long   ru_minflt;        /* ページの再利用 (ソフトページフォルト) */\n"
7920 "    long   ru_majflt;        /* ページフォールト (ハードページフォルト) */\n"
7921 "    long   ru_nswap;         /* スワップ */\n"
7922 "    long   ru_inblock;       /* ブロック入力操作 */\n"
7923 "    long   ru_oublock;       /* ブロック出力操作 */\n"
7924 "    long   ru_msgsnd;        /* 送信された IPC メッセージ */\n"
7925 "    long   ru_msgrcv;        /* 受信された IPC メッセージ */\n"
7926 "    long   ru_nsignals;      /* 受信されたシグナル */\n"
7927 "    long   ru_nvcsw;         /* 意図したコンテキスト切り替え */\n"
7928 "    long   ru_nivcsw;        /* 意図しないコンテキスト切り替え */\n"
7929 "};\n"
7930
7931 #. type: Plain text
7932 #: build/C/man2/getrusage.2:108
7933 msgid ""
7934 "Not all fields are completed; unmaintained fields are set to zero by the "
7935 "kernel.  (The unmaintained fields are provided for compatibility with other "
7936 "systems, and because they may one day be supported on Linux.)  The fields "
7937 "are interpreted as follows:"
7938 msgstr ""
7939 "すべてのフィールドがサポートされているわけではない。 メンテナンスされていない"
7940 "フィールドには、 カーネルが 0 を設定する (メンテナンスされていないフィールド"
7941 "は、 他のシステムとの互換性のために提供されており、 いつか Linux でもサポート"
7942 "されるかもしれない)。 各フィールドの詳細は以下の通りである。"
7943
7944 #. type: TP
7945 #: build/C/man2/getrusage.2:108
7946 #, no-wrap
7947 msgid "I<ru_utime>"
7948 msgstr "I<ru_utime>"
7949
7950 #. type: Plain text
7951 #: build/C/man2/getrusage.2:114
7952 msgid ""
7953 "This is the total amount of time spent executing in user mode, expressed in "
7954 "a I<timeval> structure (seconds plus microseconds)."
7955 msgstr ""
7956 "ユーザモードでの実行で消費された合計時間。 I<timeval> 構造体 (秒とミリ秒) で"
7957 "表現される。"
7958
7959 #. type: TP
7960 #: build/C/man2/getrusage.2:114
7961 #, no-wrap
7962 msgid "I<ru_stime>"
7963 msgstr "I<ru_stime>"
7964
7965 #. type: Plain text
7966 #: build/C/man2/getrusage.2:120
7967 msgid ""
7968 "This is the total amount of time spent executing in kernel mode, expressed "
7969 "in a I<timeval> structure (seconds plus microseconds)."
7970 msgstr ""
7971 "カーネルモードでの実行で消費された合計時間。 I<timeval> 構造体 (秒とミリ秒) "
7972 "で表現される。"
7973
7974 #. type: TP
7975 #: build/C/man2/getrusage.2:120
7976 #, no-wrap
7977 msgid "I<ru_maxrss> (since Linux 2.6.32)"
7978 msgstr "I<ru_maxrss> (Linux 2.6.32 以降)"
7979
7980 #. type: Plain text
7981 #: build/C/man2/getrusage.2:127
7982 msgid ""
7983 "This is the maximum resident set size used (in kilobytes).  For "
7984 "B<RUSAGE_CHILDREN>, this is the resident set size of the largest child, not "
7985 "the maximum resident set size of the process tree."
7986 msgstr ""
7987 "使用された resident set size の最大値 (キロバイト単位)。 B<RUSAGE_CHILDREN> "
7988 "の場合には、プロセスツリーの resident set size の最大値ではなく、 最も大きい"
7989 "子プロセスの resident set size となる。"
7990
7991 #. type: TP
7992 #: build/C/man2/getrusage.2:127
7993 #, no-wrap
7994 msgid "I<ru_ixrss> (unmaintained)"
7995 msgstr "I<ru_ixrss> (メンテナンスされていない)"
7996
7997 #.  On some systems, this field records the number of signals received.
7998 #. type: Plain text
7999 #: build/C/man2/getrusage.2:133 build/C/man2/getrusage.2:138
8000 #: build/C/man2/getrusage.2:143 build/C/man2/getrusage.2:155
8001 #: build/C/man2/getrusage.2:167 build/C/man2/getrusage.2:173
8002 #: build/C/man2/getrusage.2:177
8003 msgid "This field is currently unused on Linux."
8004 msgstr "このフィールドは現在のところ Linux では未使用である。"
8005
8006 #. type: TP
8007 #: build/C/man2/getrusage.2:133
8008 #, no-wrap
8009 msgid "I<ru_idrss> (unmaintained)"
8010 msgstr "I<ru_idrss> (メンテナンスされていない)"
8011
8012 #. type: TP
8013 #: build/C/man2/getrusage.2:138
8014 #, no-wrap
8015 msgid "I<ru_isrss> (unmaintained)"
8016 msgstr "I<ru_isrss> (メンテナンスされていない)"
8017
8018 #. type: TP
8019 #: build/C/man2/getrusage.2:143
8020 #, no-wrap
8021 msgid "I<ru_minflt>"
8022 msgstr "I<ru_minflt>"
8023
8024 #. type: Plain text
8025 #: build/C/man2/getrusage.2:148
8026 msgid ""
8027 "The number of page faults serviced without any I/O activity; here I/O "
8028 "activity is avoided by ``reclaiming'' a page frame from the list of pages "
8029 "awaiting reallocation."
8030 msgstr ""
8031 "I/O 動作なしで発生したページフォルトの回数。 再割り当てを待っているページリス"
8032 "トからページフレームを「回収」 (reclaim) することで、 I/O 動作を避けることが"
8033 "できる。"
8034
8035 #. type: TP
8036 #: build/C/man2/getrusage.2:148
8037 #, no-wrap
8038 msgid "I<ru_majflt>"
8039 msgstr "I<ru_majflt>"
8040
8041 #. type: Plain text
8042 #: build/C/man2/getrusage.2:151
8043 msgid "The number of page faults serviced that required I/O activity."
8044 msgstr "I/O 動作を必要とするページフォルトの回数。"
8045
8046 #. type: TP
8047 #: build/C/man2/getrusage.2:151
8048 #, no-wrap
8049 msgid "I<ru_nswap> (unmaintained)"
8050 msgstr "I<ru_nswap> (メンテナンスされていない)"
8051
8052 #. type: TP
8053 #: build/C/man2/getrusage.2:155
8054 #, no-wrap
8055 msgid "I<ru_inblock> (since Linux 2.6.22)"
8056 msgstr "I<ru_inblock> (Linux 2.6.22 以降)"
8057
8058 #. type: Plain text
8059 #: build/C/man2/getrusage.2:158
8060 msgid "The number of times the filesystem had to perform input."
8061 msgstr "ファイルシステムが入力を実行する必要があった回数。"
8062
8063 #. type: TP
8064 #: build/C/man2/getrusage.2:158
8065 #, no-wrap
8066 msgid "I<ru_oublock> (since Linux 2.6.22)"
8067 msgstr "I<ru_oublock> (Linux 2.6.22 以降)"
8068
8069 #. type: Plain text
8070 #: build/C/man2/getrusage.2:161
8071 msgid "The number of times the filesystem had to perform output."
8072 msgstr "ファイルシステムが出力を実行する必要があった回数。"
8073
8074 #. type: TP
8075 #: build/C/man2/getrusage.2:161
8076 #, no-wrap
8077 msgid "I<ru_msgsnd> (unmaintained)"
8078 msgstr "I<ru_msgsnd> (メンテナンスされていない)"
8079
8080 #. type: TP
8081 #: build/C/man2/getrusage.2:167
8082 #, no-wrap
8083 msgid "I<ru_msgrcv> (unmaintained)"
8084 msgstr "I<ru_msgrcv> (メンテナンスされていない)"
8085
8086 #. type: TP
8087 #: build/C/man2/getrusage.2:173
8088 #, no-wrap
8089 msgid "I<ru_nsignals> (unmaintained)"
8090 msgstr "I<ru_nsignals> (メンテナンスされていない)"
8091
8092 #. type: TP
8093 #: build/C/man2/getrusage.2:177
8094 #, no-wrap
8095 msgid "I<ru_nvcsw> (since Linux 2.6)"
8096 msgstr "I<ru_nvcsw> (Linux 2.6 以降)"
8097
8098 #. type: Plain text
8099 #: build/C/man2/getrusage.2:182
8100 msgid ""
8101 "The number of times a context switch resulted due to a process voluntarily "
8102 "giving up the processor before its time slice was completed (usually to "
8103 "await availability of a resource)."
8104 msgstr ""
8105 "自分のタイムスライスが完了する前にプロセスが自発的にプロセッサを解放して行わ"
8106 "れたコンテキストスイッチの回数 (通常はリソースが利用可能になるのを待つために"
8107 "行われる)。"
8108
8109 #. type: TP
8110 #: build/C/man2/getrusage.2:182
8111 #, no-wrap
8112 msgid "I<ru_nivcsw> (since Linux 2.6)"
8113 msgstr "I<memory_migrate> (Linux 2.6.16 以降)"
8114
8115 #. type: Plain text
8116 #: build/C/man2/getrusage.2:187
8117 msgid ""
8118 "The number of times a context switch resulted due to a higher priority "
8119 "process becoming runnable or because the current process exceeded its time "
8120 "slice."
8121 msgstr ""
8122 "優先度が自分より高いプロセッサが実行可能になったか、現在のプロセスが自分のタ"
8123 "イムスライスを超過したことにより行われたコンテキストスイッチの回数。"
8124
8125 #. type: Plain text
8126 #: build/C/man2/getrusage.2:198
8127 msgid "I<usage> points outside the accessible address space."
8128 msgstr "I<usage> がアクセス可能なアドレス空間の外を指している。"
8129
8130 #. type: Plain text
8131 #: build/C/man2/getrusage.2:202
8132 msgid "I<who> is invalid."
8133 msgstr "I<who> が無効である。"
8134
8135 #. type: Plain text
8136 #: build/C/man2/getrusage.2:210
8137 msgid ""
8138 "SVr4, 4.3BSD.  POSIX.1-2001 specifies B<getrusage>(), but specifies only the "
8139 "fields I<ru_utime> and I<ru_stime>."
8140 msgstr ""
8141 "SVr4, 4.3BSD.  POSIX.1-2001 は B<getrusage>()  を規定しているが、規定している"
8142 "フィールドは I<ru_utime> と I<ru_stime> だけである。"
8143
8144 #. type: Plain text
8145 #: build/C/man2/getrusage.2:213
8146 msgid "B<RUSAGE_THREAD> is Linux-specific."
8147 msgstr "B<RUSAGE_THREAD> は Linux 固有である。"
8148
8149 #. type: Plain text
8150 #: build/C/man2/getrusage.2:216
8151 msgid "Resource usage metrics are preserved across an B<execve>(2)."
8152 msgstr "B<execve>(2)  の前後でリソース使用量の指標は保持される。"
8153
8154 #. type: Plain text
8155 #: build/C/man2/getrusage.2:224
8156 msgid ""
8157 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
8158 "portability.  (Indeed, I<struct timeval> is defined in I<E<lt>sys/time."
8159 "hE<gt>>.)"
8160 msgstr ""
8161 "今日では I<E<lt>sys/time.hE<gt>> をインクルードする必要はないが、 インクルー"
8162 "ドしておけば移植性が増す。 (実際 I<struct timeval> は I<E<lt>sys/time."
8163 "hE<gt>> で定義されている。)"
8164
8165 #.  See the description of getrusage() in XSH.
8166 #.  A similar statement was also in SUSv2.
8167 #. type: Plain text
8168 #: build/C/man2/getrusage.2:236
8169 msgid ""
8170 "In Linux kernel versions before 2.6.9, if the disposition of B<SIGCHLD> is "
8171 "set to B<SIG_IGN> then the resource usages of child processes are "
8172 "automatically included in the value returned by B<RUSAGE_CHILDREN>, although "
8173 "POSIX.1-2001 explicitly prohibits this.  This nonconformance is rectified in "
8174 "Linux 2.6.9 and later."
8175 msgstr ""
8176 "2.6.9 より前のバージョンの Linux カーネルでは、 B<SIGCHLD> の処理が "
8177 "B<SIG_IGN> に設定されていると、 子プロセスのリソース使用量が "
8178 "B<RUSAGE_CHILDREN> で返される値に自動的に含められる。 しかし POSIX.1-2001 で"
8179 "は、これを明確に禁止している。 この準拠していなかった点は、Linux 2.6.9 以降で"
8180 "改正された。"
8181
8182 #. type: Plain text
8183 #: build/C/man2/getrusage.2:239
8184 msgid ""
8185 "The structure definition shown at the start of this page was taken from "
8186 "4.3BSD Reno."
8187 msgstr "このページの最初で示した構造体の定義は 4.3BSD Reno のものである。"
8188
8189 #. type: Plain text
8190 #: build/C/man2/getrusage.2:248
8191 msgid ""
8192 "Ancient systems provided a B<vtimes>()  function with a similar purpose to "
8193 "B<getrusage>().  For backward compatibility, glibc also provides "
8194 "B<vtimes>().  All new applications should be written using B<getrusage>()."
8195 msgstr ""
8196 "古いシステムでは、 B<getrusage>() と同様の目的を持つ関数 B<vtimes>() が提供\n"
8197 "されていた。後方互換性のため、glibc でも B<vtimes>() を提供している。\n"
8198 "全ての新しいアプリケーションでは B<getrusage>() を使用すべきである。"
8199
8200 #. type: Plain text
8201 #: build/C/man2/getrusage.2:253
8202 msgid "See also the description of I</proc/PID/stat> in B<proc>(5)."
8203 msgstr "B<proc>(5)  にある I</proc/PID/stat> の説明も参照のこと。"
8204
8205 #. type: Plain text
8206 #: build/C/man2/getrusage.2:260
8207 msgid ""
8208 "B<clock_gettime>(2), B<getrlimit>(2), B<times>(2), B<wait>(2), B<wait4>(2), "
8209 "B<clock>(3)"
8210 msgstr ""
8211 "B<clock_gettime>(2), B<getrlimit>(2), B<times>(2), B<wait>(2), B<wait4>(2), "
8212 "B<clock>(3)"
8213
8214 #. type: TH
8215 #: build/C/man2/getsid.2:26
8216 #, no-wrap
8217 msgid "GETSID"
8218 msgstr "GETSID"
8219
8220 #. type: TH
8221 #: build/C/man2/getsid.2:26
8222 #, no-wrap
8223 msgid "2010-09-26"
8224 msgstr "2010-09-26"
8225
8226 #. type: Plain text
8227 #: build/C/man2/getsid.2:29
8228 msgid "getsid - get session ID"
8229 msgstr "getsid - セッション ID を取得する。"
8230
8231 #. type: Plain text
8232 #: build/C/man2/getsid.2:33
8233 msgid "B<pid_t getsid(pid_t>I< pid>B<);>"
8234 msgstr "B<pid_t getsid(pid_t>I< pid>B<);>"
8235
8236 #. type: Plain text
8237 #: build/C/man2/getsid.2:42
8238 msgid "B<getsid>():"
8239 msgstr "B<getsid>():"
8240
8241 #. type: Plain text
8242 #: build/C/man2/getsid.2:45 build/C/man2/setpgid.2:79
8243 msgid ""
8244 "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
8245 msgstr ""
8246 "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
8247
8248 #. type: Plain text
8249 #: build/C/man2/getsid.2:47 build/C/man2/setpgid.2:81
8250 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
8251 msgstr "|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
8252
8253 #. type: Plain text
8254 #: build/C/man2/getsid.2:58
8255 msgid ""
8256 "I<getsid(0)> returns the session ID of the calling process.  I<getsid(p)> "
8257 "returns the session ID of the process with process ID I<p>.  (The session ID "
8258 "of a process is the process group ID of the session leader.)"
8259 msgstr ""
8260 "I<getsid(0)> は呼び出し元のプロセスのセッション ID を返す。 I<getsid(p)> はプ"
8261 "ロセス ID I<p> を持つプロセスのセッション ID を返す (プロセスのセッション ID "
8262 "は セッションリーダーのプロセスグループ ID である)。"
8263
8264 #. type: Plain text
8265 #: build/C/man2/getsid.2:63
8266 msgid ""
8267 "On success, a session ID is returned.  On error, I<(pid_t)\\ -1> will be "
8268 "returned, and I<errno> is set appropriately."
8269 msgstr ""
8270 "成功すると、セッション ID が返される。 エラーの場合、I<(pid_t) -1> が返さ"
8271 "れ、 I<errno> が適切に設定される。"
8272
8273 #. type: Plain text
8274 #: build/C/man2/getsid.2:70
8275 msgid ""
8276 "A process with process ID I<p> exists, but it is not in the same session as "
8277 "the calling process, and the implementation considers this an error."
8278 msgstr ""
8279 "プロセス ID I<p> のプロセスは存在するが、呼び出し元のプロセスと同じセッション"
8280 "ではなく、 さらに実装がこの状態をエラーと判断した場合。"
8281
8282 #. type: Plain text
8283 #: build/C/man2/getsid.2:75
8284 msgid "No process with process ID I<p> was found."
8285 msgstr "プロセス ID が I<p> のプロセスがない。"
8286
8287 #.  Linux has this system call since Linux 1.3.44.
8288 #.  There is libc support since libc 5.2.19.
8289 #. type: Plain text
8290 #: build/C/man2/getsid.2:79
8291 msgid "This system call is available on Linux since version 2.0."
8292 msgstr "このシステムコールは Linux バージョン 2.0 以降で利用可能である。"
8293
8294 #. type: Plain text
8295 #: build/C/man2/getsid.2:81 build/C/man2/setgid.2:73 build/C/man2/setsid.2:70
8296 msgid "SVr4, POSIX.1-2001."
8297 msgstr "SVr4, POSIX.1-2001."
8298
8299 #. type: Plain text
8300 #: build/C/man2/getsid.2:84
8301 msgid "Linux does not return B<EPERM>."
8302 msgstr "Linux は B<EPERM> を返さない。"
8303
8304 #. type: Plain text
8305 #: build/C/man2/getsid.2:88
8306 msgid "B<getpgid>(2), B<setsid>(2), B<credentials>(7)"
8307 msgstr "B<getpgid>(2), B<setsid>(2), B<credentials>(7)"
8308
8309 #. type: TH
8310 #: build/C/man2/getuid.2:26
8311 #, no-wrap
8312 msgid "GETUID"
8313 msgstr "GETUID"
8314
8315 #. type: Plain text
8316 #: build/C/man2/getuid.2:29
8317 msgid "getuid, geteuid - get user identity"
8318 msgstr "getuid, geteuid - ユーザー ID を得る"
8319
8320 #. type: Plain text
8321 #: build/C/man2/getuid.2:35
8322 msgid "B<uid_t getuid(void);>"
8323 msgstr "B<uid_t getuid(void);>"
8324
8325 #. type: Plain text
8326 #: build/C/man2/getuid.2:37
8327 msgid "B<uid_t geteuid(void);>"
8328 msgstr "B<uid_t geteuid(void);>"
8329
8330 #. type: Plain text
8331 #: build/C/man2/getuid.2:40
8332 msgid "B<getuid>()  returns the real user ID of the calling process."
8333 msgstr "B<getuid>()  は呼び出し元のプロセスの実ユーザー ID を返す。"
8334
8335 #. type: Plain text
8336 #: build/C/man2/getuid.2:43
8337 msgid "B<geteuid>()  returns the effective user ID of the calling process."
8338 msgstr "B<geteuid>()  は呼び出し元のプロセスの実効ユーザー ID を返す。"
8339
8340 #. type: SS
8341 #: build/C/man2/getuid.2:48
8342 #, no-wrap
8343 msgid "History"
8344 msgstr "歴史"
8345
8346 #. type: Plain text
8347 #: build/C/man2/getuid.2:57
8348 msgid ""
8349 "In UNIX\\ V6 the B<getuid>()  call returned I<(euid E<lt>E<lt> 8) + uid>.  "
8350 "UNIX\\ V7 introduced separate calls B<getuid>()  and B<geteuid>()."
8351 msgstr ""
8352 "UNIX\\ V6 では B<getuid>()  コールは I<(euid E<lt>E<lt> 8) + uid> を返してい"
8353 "た。 UNIX\\ V7 では B<getuid>()  と B<geteuid>()  という別々のコールが導入さ"
8354 "れた。"
8355
8356 #. type: Plain text
8357 #: build/C/man2/getuid.2:73
8358 msgid ""
8359 "The original Linux B<getuid>()  and B<geteuid>()  system calls supported "
8360 "only 16-bit user IDs.  Subsequently, Linux 2.4 added B<getuid32>()  and "
8361 "B<geteuid32>(), supporting 32-bit IDs.  The glibc B<getuid>()  and "
8362 "B<geteuid>()  wrapper functions transparently deal with the variations "
8363 "across kernel versions."
8364 msgstr ""
8365 "元々の Linux の B<getuid>() と B<geteuid>() システムコールは\n"
8366 "16 ビットのグループ ID だけに対応していた。\n"
8367 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
8368 "B<getuid32>() と B<geteuid32>() が追加された。\n"
8369 "glibc の B<getuid>() と B<geteuid>() のラッパー関数は\n"
8370 "カーネルバージョンによるこの違いを吸収している。"
8371
8372 #. type: Plain text
8373 #: build/C/man2/getuid.2:78
8374 msgid "B<getresuid>(2), B<setreuid>(2), B<setuid>(2), B<credentials>(7)"
8375 msgstr "B<getresuid>(2), B<setreuid>(2), B<setuid>(2), B<credentials>(7)"
8376
8377 #. type: TH
8378 #: build/C/man3/group_member.3:25
8379 #, no-wrap
8380 msgid "GROUP_MEMBER"
8381 msgstr ""
8382
8383 #. type: TH
8384 #: build/C/man3/group_member.3:25
8385 #, no-wrap
8386 msgid "2014-03-30"
8387 msgstr "2014-03-30"
8388
8389 #. type: TH
8390 #: build/C/man3/group_member.3:25
8391 #, no-wrap
8392 msgid "GNU"
8393 msgstr "GNU"
8394
8395 #. type: Plain text
8396 #: build/C/man3/group_member.3:28
8397 msgid "group_member - test whether a process is in a group"
8398 msgstr ""
8399
8400 #. type: Plain text
8401 #: build/C/man3/group_member.3:32
8402 msgid "B<int group_member(gid_t >I<gid>B<);>"
8403 msgstr "B<int group_member(gid_t >I<gid>B<);>"
8404
8405 #. type: Plain text
8406 #: build/C/man3/group_member.3:40
8407 msgid "B<group_member>(): _GNU_SOURCE"
8408 msgstr "B<group_member>(): _GNU_SOURCE"
8409
8410 #. type: Plain text
8411 #: build/C/man3/group_member.3:48
8412 msgid ""
8413 "The B<group_member>()  function tests whether any of the caller's "
8414 "supplementary group IDs (as returned by B<getgroups>(2))  matches I<gid>."
8415 msgstr ""
8416
8417 #. type: Plain text
8418 #: build/C/man3/group_member.3:55
8419 msgid ""
8420 "The B<group_member>()  function returns nonzero if any of the caller's "
8421 "supplementary group IDs matches I<gid>, and zero otherwise."
8422 msgstr ""
8423
8424 #. type: Plain text
8425 #: build/C/man3/group_member.3:57
8426 msgid "This function is a nonstandard GNU extension."
8427 msgstr ""
8428
8429 #. type: Plain text
8430 #: build/C/man3/group_member.3:62
8431 msgid "B<getgid>(2), B<getgroups>(2), B<getgrouplist>(3), B<group>(5)"
8432 msgstr "B<getgid>(2), B<getgroups>(2), B<getgrouplist>(3), B<group>(5)"
8433
8434 #. type: TH
8435 #: build/C/man2/iopl.2:33
8436 #, no-wrap
8437 msgid "IOPL"
8438 msgstr "IOPL"
8439
8440 #. type: TH
8441 #: build/C/man2/iopl.2:33
8442 #, no-wrap
8443 msgid "2013-03-15"
8444 msgstr "2013-03-15"
8445
8446 #. type: Plain text
8447 #: build/C/man2/iopl.2:36
8448 msgid "iopl - change I/O privilege level"
8449 msgstr "iopl - I/O 特権レベルを変更する"
8450
8451 #. type: Plain text
8452 #: build/C/man2/iopl.2:38
8453 msgid "B<#include E<lt>sys/io.hE<gt>>"
8454 msgstr "B<#include E<lt>sys/io.hE<gt>>"
8455
8456 #. type: Plain text
8457 #: build/C/man2/iopl.2:40
8458 msgid "B<int iopl(int >I<level>B<);>"
8459 msgstr "B<int iopl(int >I<level>B<);>"
8460
8461 #. type: Plain text
8462 #: build/C/man2/iopl.2:45
8463 msgid ""
8464 "B<iopl>()  changes the I/O privilege level of the calling process, as "
8465 "specified by the two least significant bits in I<level>."
8466 msgstr ""
8467 "B<iopl>()  は呼び出し元のプロセスの I/O 特権レベルを I<level> の下位 2 ビット"
8468 "で指定した値に変更する。"
8469
8470 #. type: Plain text
8471 #: build/C/man2/iopl.2:51
8472 msgid ""
8473 "This call is necessary to allow 8514-compatible X servers to run under "
8474 "Linux.  Since these X servers require access to all 65536 I/O ports, the "
8475 "B<ioperm>(2)  call is not sufficient."
8476 msgstr ""
8477 "この関数は 8514 互換の X サーバを Linux で動作させるために必要である。 なぜな"
8478 "らこの X サーバは 65536 個の I/O ポート全てへのアクセスを要求するので "
8479 "B<ioperm>(2)  関数では不十分だからである。"
8480
8481 #. type: Plain text
8482 #: build/C/man2/iopl.2:55
8483 msgid ""
8484 "In addition to granting unrestricted I/O port access, running at a higher I/"
8485 "O privilege level also allows the process to disable interrupts.  This will "
8486 "probably crash the system, and is not recommended."
8487 msgstr ""
8488 "より高い I/O 特権レベルでの動作をさせることによって I/O ポートアクセスの制限"
8489 "を解除することに加えて、プロセスが割り込みを 無効にすることもできるようにな"
8490 "る。この機能は時としてシステムの破壊を もたらすので勧められない。"
8491
8492 #. type: Plain text
8493 #: build/C/man2/iopl.2:60
8494 msgid "Permissions are inherited by B<fork>(2)  and B<execve>(2)."
8495 msgstr "B<fork>(2)  や B<exec>(2)  を行った場合、特権は継承される。"
8496
8497 #. type: Plain text
8498 #: build/C/man2/iopl.2:62
8499 msgid "The I/O privilege level for a normal process is 0."
8500 msgstr "通常のプロセスの I/O 特権レベルは 0 である。"
8501
8502 #. type: Plain text
8503 #: build/C/man2/iopl.2:66
8504 msgid ""
8505 "This call is mostly for the i386 architecture.  On many other architectures "
8506 "it does not exist or will always return an error."
8507 msgstr ""
8508 "このシステムコールはほとんど i386 アーキテクチャのためだけのものである。 その"
8509 "他の多くのアーキテクチャでは存在しないか、常にエラーを返す。"
8510
8511 #. type: Plain text
8512 #: build/C/man2/iopl.2:76
8513 msgid "I<level> is greater than 3."
8514 msgstr "引き数 I<level> が 3 より大きい。"
8515
8516 #. type: Plain text
8517 #: build/C/man2/iopl.2:79
8518 msgid "This call is unimplemented."
8519 msgstr "このシステムコールは実装されていない。"
8520
8521 #. type: Plain text
8522 #: build/C/man2/iopl.2:87
8523 msgid ""
8524 "The calling process has insufficient privilege to call B<iopl>(); the "
8525 "B<CAP_SYS_RAWIO> capability is required to raise the I/O privilege level "
8526 "above its current value."
8527 msgstr ""
8528 "呼び出し元プロセスに B<iopl>()  を呼び出すのに十分な権限がなかった。 I/O 特権"
8529 "レベルを現在の値より上げるには B<CAP_SYS_RAWIO> ケーパビリティが必要である。"
8530
8531 #. type: Plain text
8532 #: build/C/man2/iopl.2:91
8533 msgid ""
8534 "B<iopl>()  is Linux-specific and should not be used in programs that are "
8535 "intended to be portable."
8536 msgstr ""
8537 "B<ipc>()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけな"
8538 "い。"
8539
8540 #. type: Plain text
8541 #: build/C/man2/iopl.2:100
8542 msgid ""
8543 "Libc5 treats it as a system call and has a prototype in I<E<lt>unistd."
8544 "hE<gt>>.  Glibc1 does not have a prototype.  Glibc2 has a prototype both in "
8545 "I<E<lt>sys/io.hE<gt>> and in I<E<lt>sys/perm.hE<gt>>.  Avoid the latter, it "
8546 "is available on i386 only."
8547 msgstr ""
8548 "libc5 ではシステムコールとして扱い I<E<lt>unistd.hE<gt>> にプロトタイプが存在"
8549 "している。 glibc1 にはプロトタイプは存在していない。 glibc2 は I<E<lt>sys/io."
8550 "hE<gt>> と I<E<lt>sys/perm.hE<gt>> の両方にプロトタイプを持っている。 後者は "
8551 "i386 のみで利用可能なので、使用すべきではない。"
8552
8553 #. type: Plain text
8554 #: build/C/man2/iopl.2:104
8555 msgid "B<ioperm>(2), B<outb>(2), B<capabilities>(7)"
8556 msgstr "B<ioperm>(2), B<outb>(2), B<capabilities>(7)"
8557
8558 #. type: TH
8559 #: build/C/man2/ioprio_set.2:24
8560 #, no-wrap
8561 msgid "IOPRIO_SET"
8562 msgstr "IOPRIO_SET"
8563
8564 #. type: TH
8565 #: build/C/man2/ioprio_set.2:24
8566 #, no-wrap
8567 msgid "2013-02-12"
8568 msgstr "2013-02-12"
8569
8570 #. type: Plain text
8571 #: build/C/man2/ioprio_set.2:27
8572 msgid "ioprio_get, ioprio_set - get/set I/O scheduling class and priority"
8573 msgstr "ioprio_get, ioprio_set - I/O スケジューリングクラスと優先度の設定/取得"
8574
8575 #. type: Plain text
8576 #: build/C/man2/ioprio_set.2:31
8577 #, no-wrap
8578 msgid ""
8579 "B<int ioprio_get(int >I<which>B<, int >I<who>B<);>\n"
8580 "B<int ioprio_set(int >I<which>B<, int >I<who>B<, int >I<ioprio>B<);>\n"
8581 msgstr ""
8582 "B<int ioprio_get(int >I<which>B<, int >I<who>B<);>\n"
8583 "B<int ioprio_set(int >I<which>B<, int >I<who>B<, int >I<ioprio>B<);>\n"
8584
8585 #. type: Plain text
8586 #: build/C/man2/ioprio_set.2:35
8587 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
8588 msgstr ""
8589 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
8590 "の節を参照。"
8591
8592 #. type: Plain text
8593 #: build/C/man2/ioprio_set.2:42
8594 msgid ""
8595 "The B<ioprio_get>()  and B<ioprio_set>()  system calls respectively get and "
8596 "set the I/O scheduling class and priority of one or more threads."
8597 msgstr ""
8598 "システムコール B<ioprio_get>()  / B<ioprio_set>()  は、(1つ以上の) スレッド"
8599 "の I/O スケジューリングクラスと 優先度の取得/設定を行う。"
8600
8601 #. type: Plain text
8602 #: build/C/man2/ioprio_set.2:54
8603 msgid ""
8604 "The I<which> and I<who> arguments identify the thread(s) on which the system "
8605 "calls operate.  The I<which> argument determines how I<who> is interpreted, "
8606 "and has one of the following values:"
8607 msgstr ""
8608 "I<which> と I<who> 引き数でシステムコールの操作対象となるスレッドを指示す"
8609 "る。 I<which> 引き数は、 I<who> をどのように解釈するかを決めるもので、以下の"
8610 "いずれか一つを指定する。"
8611
8612 #. type: TP
8613 #: build/C/man2/ioprio_set.2:54
8614 #, no-wrap
8615 msgid "B<IOPRIO_WHO_PROCESS>"
8616 msgstr "B<IOPRIO_WHO_PROCESS>"
8617
8618 #. type: Plain text
8619 #: build/C/man2/ioprio_set.2:61
8620 msgid ""
8621 "I<who> is a process ID or thread ID identifying a single process or thread.  "
8622 "If I<who> is 0, then operate on the calling thread."
8623 msgstr ""
8624 "I<who> は特定のプロセスやスレッドを特定するためのプロセス ID かスレッド ID で"
8625 "ある。 I<who> が 0 の場合、呼び出し元のスレッドに対して操作が行われる。"
8626
8627 #. type: TP
8628 #: build/C/man2/ioprio_set.2:61
8629 #, no-wrap
8630 msgid "B<IOPRIO_WHO_PGRP>"
8631 msgstr "B<IOPRIO_WHO_PGRP>"
8632
8633 #. type: Plain text
8634 #: build/C/man2/ioprio_set.2:68
8635 msgid ""
8636 "I<who> is a process group ID identifying all the members of a process "
8637 "group.  If I<who> is 0, then operate on the process group of which the "
8638 "caller is a member."
8639 msgstr ""
8640 "I<who> はプロセスグループ ID であり、プロセスグループの全メンバが対象とな"
8641 "る。 I<who> が 0 の場合、 呼び出し元がメンバーとなっているプロセスグループに"
8642 "対して操作が行われる。"
8643
8644 #. type: TP
8645 #: build/C/man2/ioprio_set.2:68
8646 #, no-wrap
8647 msgid "B<IOPRIO_WHO_USER>"
8648 msgstr "B<IOPRIO_WHO_USER>"
8649
8650 #.  FIXME . Need to document the behavior when 'who" is specified as 0
8651 #.  See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652443
8652 #. type: Plain text
8653 #: build/C/man2/ioprio_set.2:75
8654 msgid ""
8655 "I<who> is a user ID identifying all of the processes that have a matching "
8656 "real UID."
8657 msgstr "I<who> はユーザID であり、実 UID に一致する全プロセスが対象となる。"
8658
8659 #. type: Plain text
8660 #: build/C/man2/ioprio_set.2:98
8661 msgid ""
8662 "If I<which> is specified as B<IOPRIO_WHO_PGRP> or B<IOPRIO_WHO_USER> when "
8663 "calling B<ioprio_get>(), and more than one process matches I<who>, then the "
8664 "returned priority will be the highest one found among all of the matching "
8665 "processes.  One priority is said to be higher than another one if it belongs "
8666 "to a higher priority class (B<IOPRIO_CLASS_RT> is the highest priority "
8667 "class; B<IOPRIO_CLASS_IDLE> is the lowest)  or if it belongs to the same "
8668 "priority class as the other process but has a higher priority level (a lower "
8669 "priority number means a higher priority level)."
8670 msgstr ""
8671 "B<ioprio_get>()  の呼び出し時に I<which> に B<IOPRIO_WHO_PGRP> か "
8672 "B<IOPRIO_WHO_USER> が指定され、 I<who> に一致するプロセスが複数あった場合、 "
8673 "一致するプロセス全体の中で最も高い優先度が返される。 優先度が高いとは、より高"
8674 "い優先度クラスに属している (B<IOPRIO_CLASS_RT> が最も高い優先度クラスで、 "
8675 "B<IOPRIO_CLASS_IDLE> が最も低い)、もしくは 同じ優先度クラスに属しているが優先"
8676 "度レベルが高い (優先度番号が小さい方が優先度レベルが高いことを意味する)、 と"
8677 "いうことである。"
8678
8679 #. type: Plain text
8680 #: build/C/man2/ioprio_set.2:108
8681 msgid ""
8682 "The I<ioprio> argument given to B<ioprio_set>()  is a bit mask that "
8683 "specifies both the scheduling class and the priority to be assigned to the "
8684 "target process(es).  The following macros are used for assembling and "
8685 "dissecting I<ioprio> values:"
8686 msgstr ""
8687 "B<ioprio_set>()  に渡す I<ioprio> 引き数は、対象となるプロセスに割り当てるス"
8688 "ケジューリングクラスと 優先度の両方を指定するビットマスクである。 I<ioprio> "
8689 "の値を組み立てたり解釈するのに、以下のマクロが利用できる。"
8690
8691 #. type: TP
8692 #: build/C/man2/ioprio_set.2:108
8693 #, no-wrap
8694 msgid "B<IOPRIO_PRIO_VALUE(>I<class>B<, >I<data>B<)>"
8695 msgstr "B<IOPRIO_PRIO_VALUE(>I<class>B<, >I<data>B<)>"
8696
8697 #. type: Plain text
8698 #: build/C/man2/ioprio_set.2:117
8699 msgid ""
8700 "Given a scheduling I<class> and priority (I<data>), this macro combines the "
8701 "two values to produce an I<ioprio> value, which is returned as the result of "
8702 "the macro."
8703 msgstr ""
8704 "スケジューリングクラス I<class> と優先度 (I<data>)  を与えると、このマクロは "
8705 "2つの値を組み合わせて、 I<ioprio> 値を生成し、マクロの結果として返す。"
8706
8707 #. type: TP
8708 #: build/C/man2/ioprio_set.2:117
8709 #, no-wrap
8710 msgid "B<IOPRIO_PRIO_CLASS(>I<mask>B<)>"
8711 msgstr "B<IOPRIO_PRIO_CLASS(>I<mask>B<)>"
8712
8713 #. type: Plain text
8714 #: build/C/man2/ioprio_set.2:129
8715 msgid ""
8716 "Given I<mask> (an I<ioprio> value), this macro returns its I/O class "
8717 "component, that is, one of the values B<IOPRIO_CLASS_RT>, "
8718 "B<IOPRIO_CLASS_BE>, or B<IOPRIO_CLASS_IDLE>."
8719 msgstr ""
8720 "I<mask> (I<ioprio> 値) を与えると、このマクロは I/O クラス要素、つまり "
8721 "B<IOPRIO_CLASS_RT>, B<IOPRIO_CLASS_BE>, B<IOPRIO_CLASS_IDLE> のいずれか一つの"
8722 "値を返す。"
8723
8724 #. type: TP
8725 #: build/C/man2/ioprio_set.2:129
8726 #, no-wrap
8727 msgid "B<IOPRIO_PRIO_DATA(>I<mask>B<)>"
8728 msgstr "B<IOPRIO_PRIO_DATA(>I<mask>B<)>"
8729
8730 #. type: Plain text
8731 #: build/C/man2/ioprio_set.2:138
8732 msgid ""
8733 "Given I<mask> (an I<ioprio> value), this macro returns its priority "
8734 "(I<data>)  component."
8735 msgstr ""
8736 "I<mask> (I<ioprio> 値) を与えると、このマクロは優先度 (I<data>)  要素を返す。"
8737
8738 #. type: Plain text
8739 #: build/C/man2/ioprio_set.2:141
8740 msgid ""
8741 "See the NOTES section for more information on scheduling classes and "
8742 "priorities."
8743 msgstr ""
8744 "スケジューリングクラスと優先度に関する詳しい情報は、 「備考」の節を参照のこ"
8745 "と。"
8746
8747 #. type: Plain text
8748 #: build/C/man2/ioprio_set.2:149
8749 msgid ""
8750 "I/O priorities are supported for reads and for synchronous (B<O_DIRECT>, "
8751 "B<O_SYNC>)  writes.  I/O priorities are not supported for asynchronous "
8752 "writes because they are issued outside the context of the program dirtying "
8753 "the memory, and thus program-specific priorities do not apply."
8754 msgstr ""
8755 "I/O 優先度は読み出しと同期書き込み (B<O_DIRECT>, B<O_SYNC>)  に対応してい"
8756 "る。 I/O 優先度は非同期書き込みには対応していない。なぜなら、 非同期書き込み"
8757 "はメモリ書き換えを行うプログラムの動作 (context) とは 関係なく発行され、その"
8758 "ためプログラム単位の優先度は適用されないから である。"
8759
8760 #. type: Plain text
8761 #: build/C/man2/ioprio_set.2:162
8762 msgid ""
8763 "On success, B<ioprio_get>()  returns the I<ioprio> value of the process with "
8764 "highest I/O priority of any of the processes that match the criteria "
8765 "specified in I<which> and I<who>.  On error, -1 is returned, and I<errno> is "
8766 "set to indicate the error."
8767 msgstr ""
8768 "成功すると、 B<ioprio_get>()  は、 I<which> と I<who> で指定された基準に合致"
8769 "した全プロセスで最も高い I/O 優先度を持つプロセスの I<ioprio> 値を返す。 エ"
8770 "ラーの場合、-1 を返し、 I<errno> にエラーを示す値を設定する。"
8771
8772 #. type: Plain text
8773 #: build/C/man2/ioprio_set.2:169
8774 msgid ""
8775 "On success, B<ioprio_set>()  returns 0.  On error, -1 is returned, and "
8776 "I<errno> is set to indicate the error."
8777 msgstr ""
8778 "成功すると、 B<ioprio_set>()  は 0 を返す。 エラーの場合、-1 を返し、 "
8779 "I<errno> にエラーを示す値を設定する。"
8780
8781 #. type: Plain text
8782 #: build/C/man2/ioprio_set.2:179
8783 msgid ""
8784 "Invalid value for I<which> or I<ioprio>.  Refer to the NOTES section for "
8785 "available scheduler classes and priority levels for I<ioprio>."
8786 msgstr ""
8787 "I<which> か I<ioprio> の値が不正である。 I<ioprio> 用に指定可能なスケジューラ"
8788 "クラスと優先度レベルについては 「備考」を参照のこと。"
8789
8790 #. type: Plain text
8791 #: build/C/man2/ioprio_set.2:187
8792 msgid ""
8793 "The calling process does not have the privilege needed to assign this "
8794 "I<ioprio> to the specified process(es).  See the NOTES section for more "
8795 "information on required privileges for B<ioprio_set>()."
8796 msgstr ""
8797 "呼び出し元プロセスが、指定されたプロセスに I<ioprio> を割り当てるのに必要な権"
8798 "限を持っていない。 B<ioprio_set>()  に必要な権限についての詳しい情報は「備"
8799 "考」の節を参照のこと。"
8800
8801 #. type: Plain text
8802 #: build/C/man2/ioprio_set.2:193
8803 msgid ""
8804 "No process(es) could be found that matched the specification in I<which> and "
8805 "I<who>."
8806 msgstr ""
8807 "I<which> と I<who> で指定された基準に合致するプロセスが見つからなかった。"
8808
8809 #. type: Plain text
8810 #: build/C/man2/ioprio_set.2:196
8811 msgid "These system calls have been available on Linux since kernel 2.6.13."
8812 msgstr ""
8813 "これらのシステムコールはカーネル 2.6.13 以降の Linux で利用可能である。"
8814
8815 #. type: Plain text
8816 #: build/C/man2/ioprio_set.2:201
8817 msgid ""
8818 "Glibc does not provide a wrapper for these system calls; call them using "
8819 "B<syscall>(2)."
8820 msgstr ""
8821 "glibc はこれらのシステムコールに対するラッパー関数を提供していない。 "
8822 "B<syscall>(2)  を使って呼び出すこと。"
8823
8824 #. type: Plain text
8825 #: build/C/man2/ioprio_set.2:220
8826 msgid ""
8827 "Two or more processes or threads can share an I/O context.  This will be the "
8828 "case when B<clone>(2)  was called with the B<CLONE_IO> flag.  However, by "
8829 "default, the distinct threads of a process will B<not> share the same I/O "
8830 "context.  This means that if you want to change the I/O priority of all "
8831 "threads in a process, you may need to call B<ioprio_set>()  on each of the "
8832 "threads.  The thread ID that you would need for this operation is the one "
8833 "that is returned by B<gettid>(2)  or B<clone>(2)."
8834 msgstr ""
8835 "複数のプロセスやスレッドが一つの I/O コンテキストを共有する場合がある。 "
8836 "B<clone>(2) を B<CLONE_IO> フラグ付きで呼び出した場合にはこの状況となる。 し"
8837 "かしながら、デフォルトでは、一つのプロセスの個々のスレッドは I/O コンテキスト"
8838 "を共有「しない」。 したがって、 プロセス内のすべてのスレッドの I/O 優先度を変"
8839 "更したい場合には、 それぞれのスレッドに対して B<ioprio_set>() を呼び出す必要"
8840 "がある。 この操作を行うのに必要となるスレッド ID には B<gettid>(2) か "
8841 "B<clone>(2) が返す値を指定する。"
8842
8843 #. type: Plain text
8844 #: build/C/man2/ioprio_set.2:225
8845 msgid ""
8846 "These system calls have an effect only when used in conjunction with an I/O "
8847 "scheduler that supports I/O priorities.  As at kernel 2.6.17 the only such "
8848 "scheduler is the Completely Fair Queuing (CFQ) I/O scheduler."
8849 msgstr ""
8850 "これらのシステムコールは、I/O 優先度に対応した I/O スケジューラと 組み合わせ"
8851 "て使用された場合にのみ効果を持つ。 カーネル 2.6.17 では、この条件を満たすスケ"
8852 "ジューラは Completely Fair Queuing (CFQ) I/O スケジューラだけである。"
8853
8854 #. type: SS
8855 #: build/C/man2/ioprio_set.2:225
8856 #, no-wrap
8857 msgid "Selecting an I/O scheduler"
8858 msgstr "I/O スケジューラの選択"
8859
8860 #. type: Plain text
8861 #: build/C/man2/ioprio_set.2:229
8862 msgid ""
8863 "I/O Schedulers are selected on a per-device basis via the special file I</"
8864 "sys/block/E<lt>deviceE<gt>/queue/scheduler>."
8865 msgstr ""
8866 "I/O スケジューラの選択はデバイス単位に行われ、その選択は スペシャルファイル "
8867 "I</sys/block/E<lt>deviceE<gt>/queue/scheduler> 経由で行われる。"
8868
8869 #. type: Plain text
8870 #: build/C/man2/ioprio_set.2:235
8871 msgid ""
8872 "One can view the current I/O scheduler via the I</sys> filesystem.  For "
8873 "example, the following command displays a list of all schedulers currently "
8874 "loaded in the kernel:"
8875 msgstr ""
8876 "現在の I/O スケジューラは I</sys> ファイルシステム経由で参照できる。例えば、"
8877 "以下のコマンドを実行すると、 現在カーネルでロードされているスケジューラの全リ"
8878 "ストが表示される。"
8879
8880 #. type: Plain text
8881 #: build/C/man2/ioprio_set.2:240
8882 #, no-wrap
8883 msgid ""
8884 "$B< cat /sys/block/hda/queue/scheduler>\n"
8885 "noop anticipatory deadline [cfq]\n"
8886 msgstr ""
8887 "$B< cat /sys/block/hda/queue/scheduler>\n"
8888 "noop anticipatory deadline [cfq]\n"
8889
8890 #. type: Plain text
8891 #: build/C/man2/ioprio_set.2:254
8892 msgid ""
8893 "The scheduler surrounded by brackets is the one actually in use for the "
8894 "device (I<hda> in the example).  Setting another scheduler is done by "
8895 "writing the name of the new scheduler to this file.  For example, the "
8896 "following command will set the scheduler for the I<hda> device to I<cfq>:"
8897 msgstr ""
8898 "括弧で囲まれたスケジューラがそのデバイス (上の例では I<hda>)  について実際に"
8899 "使用されているスケジューラである。 別のスケジューラを設定するには、このファイ"
8900 "ルに新しいスケジューラ名を 書き込めばよい。例えば、以下のコマンドを実行する"
8901 "と、デバイス I<hda> のスケジューラとして I<cfq> が設定される。"
8902
8903 #. type: Plain text
8904 #: build/C/man2/ioprio_set.2:260
8905 #, no-wrap
8906 msgid ""
8907 "$B< su>\n"
8908 "Password:\n"
8909 "#B< echo cfq E<gt> /sys/block/hda/queue/scheduler>\n"
8910 msgstr ""
8911 "$B< su>\n"
8912 "Password:\n"
8913 "#B< echo cfq E<gt> /sys/block/hda/queue/scheduler>\n"
8914
8915 #. type: SS
8916 #: build/C/man2/ioprio_set.2:262
8917 #, no-wrap
8918 msgid "The Completely Fair Queuing (CFQ) I/O scheduler"
8919 msgstr "Completely Fair Queuing (CFQ) I/O スケジューラ"
8920
8921 #. type: Plain text
8922 #: build/C/man2/ioprio_set.2:268
8923 msgid ""
8924 "Since v3 (aka CFQ Time Sliced) CFQ implements I/O nice levels similar to "
8925 "those of CPU scheduling.  These nice levels are grouped in three scheduling "
8926 "classes each one containing one or more priority levels:"
8927 msgstr ""
8928 "バージョン 3 (別名 CFQ Time Sliced) 以降、 CPU スケジューリングと同様の I/O "
8929 "nice レベルが CFQ に実装されている。 これらの nice レベルは 3つのスケジューリ"
8930 "ングクラスに分類でき、 各スケジューリングクラスにつき 1つ以上の優先度レベルが"
8931 "定義されている。"
8932
8933 #. type: TP
8934 #: build/C/man2/ioprio_set.2:268
8935 #, no-wrap
8936 msgid "B<IOPRIO_CLASS_RT> (1)"
8937 msgstr "B<IOPRIO_CLASS_RT> (1)"
8938
8939 #. type: Plain text
8940 #: build/C/man2/ioprio_set.2:283
8941 msgid ""
8942 "This is the real-time I/O class.  This scheduling class is given higher "
8943 "priority than any other class: processes from this class are given first "
8944 "access to the disk every time.  Thus this I/O class needs to be used with "
8945 "some care: one I/O real-time process can starve the entire system.  Within "
8946 "the real-time class, there are 8 levels of class data (priority) that "
8947 "determine exactly how much time this process needs the disk for on each "
8948 "service.  The highest real-time priority level is 0; the lowest is 7.  In "
8949 "the future this might change to be more directly mappable to performance, by "
8950 "passing in a desired data rate instead."
8951 msgstr ""
8952 "これはリアルタイム I/O クラスである。 このスケジューリングクラスには他のクラ"
8953 "スよりも高い優先度が与えられる。 このクラスのプロセスには、常にディスクへのア"
8954 "クセスが優先して 割り当てられる。そのため、この I/O クラスを使う際には、 たっ"
8955 "た一つの リアルタイム I/O クラスのプロセスにより システム全体のディスクアクセ"
8956 "スができなくなってしまうことがある という点に、注意を払う必要がある。 このク"
8957 "ラスには、8 段階の class data (優先度レベル) がある。 この値は、そのプロセス"
8958 "が 1回のディスクアクセスにどれだけの 時間が必要かを正確に決めるためのものであ"
8959 "る。 最高のリアルタイム優先度レベルは 0 で、最低は 7 である。 将来的には、優"
8960 "先度レベルは、希望するデータレートを渡すなど、 より直接的に性能条件を反映でき"
8961 "るように変更されるかもしれない。"
8962
8963 #. type: TP
8964 #: build/C/man2/ioprio_set.2:283
8965 #, no-wrap
8966 msgid "B<IOPRIO_CLASS_BE> (2)"
8967 msgstr "B<IOPRIO_CLASS_BE> (2)"
8968
8969 #. type: Plain text
8970 #: build/C/man2/ioprio_set.2:296
8971 msgid ""
8972 "This is the best-effort scheduling class, which is the default for any "
8973 "process that hasn't set a specific I/O priority.  The class data (priority) "
8974 "determines how much I/O bandwidth the process will get.  Best-effort "
8975 "priority levels are analogous to CPU nice values (see B<getpriority>(2)).  "
8976 "The priority level determines a priority relative to other processes in the "
8977 "best-effort scheduling class.  Priority levels range from 0 (highest) to 7 "
8978 "(lowest)."
8979 msgstr ""
8980 "これは ベストエフォート・スケジューリングクラスである。 このクラスは、特定の "
8981 "I/O 優先度を設定していないプロセスの デフォルト値である。 class data (優先度"
8982 "レベル) により、そのプロセスがどの程度の I/O 帯域を得られるかが決定される。 "
8983 "ベストエフォート・優先度レベルは、CPU の nice 値 (B<getpriority>(2)  参照) と"
8984 "同様のものである。 優先度レベルは、ベストエフォート・スケジューリングクラスの"
8985 "中で 他のプロセスとの相対的な優先度を決定する。 優先度レベルの値の範囲は 0 "
8986 "(最高) から 7 (最低) である。"
8987
8988 #. type: TP
8989 #: build/C/man2/ioprio_set.2:296
8990 #, no-wrap
8991 msgid "B<IOPRIO_CLASS_IDLE> (3)"
8992 msgstr "B<IOPRIO_CLASS_IDLE> (3)"
8993
8994 #. type: Plain text
8995 #: build/C/man2/ioprio_set.2:305
8996 msgid ""
8997 "This is the idle scheduling class.  Processes running at this level only get "
8998 "I/O time when no-one else needs the disk.  The idle class has no class "
8999 "data.  Attention is required when assigning this priority class to a "
9000 "process, since it may become starved if higher priority processes are "
9001 "constantly accessing the disk."
9002 msgstr ""
9003 "これは idle スケジューリングクラスである。 このレベルで動作するプロセスは他に"
9004 "ディスクアクセスをしようとする プロセスがない場合にのみ I/O 時間を取得する。 "
9005 "idle クラスには class data (優先度) は用意されていない。 プロセスにこの優先度"
9006 "を割り当てる際には注意が必要である。 なぜなら、優先度の高いプロセスが常にディ"
9007 "スクにアクセスしている場合には ディスクにアクセスできなくなる可能性があるから"
9008 "だ。"
9009
9010 #. type: Plain text
9011 #: build/C/man2/ioprio_set.2:309
9012 msgid ""
9013 "Refer to I<Documentation/block/ioprio.txt> for more information on the CFQ I/"
9014 "O Scheduler and an example program."
9015 msgstr ""
9016 "CFQ I/O スケジューラの更なる情報とサンプルプログラムについては "
9017 "I<Documentation/block/ioprio.txt> を参照のこと。"
9018
9019 #. type: SS
9020 #: build/C/man2/ioprio_set.2:309
9021 #, no-wrap
9022 msgid "Required permissions to set I/O priorities"
9023 msgstr "I/O 優先度の設定に必要な許可"
9024
9025 #. type: Plain text
9026 #: build/C/man2/ioprio_set.2:312
9027 msgid ""
9028 "Permission to change a process's priority is granted or denied based on two "
9029 "assertions:"
9030 msgstr ""
9031 "プロセスの優先度を変更する許可が得られるかどうかは 以下の 2つの条件に基いて決"
9032 "定される。"
9033
9034 #. type: TP
9035 #: build/C/man2/ioprio_set.2:312
9036 #, no-wrap
9037 msgid "B<Process ownership>"
9038 msgstr "B<プロセスの所有権>"
9039
9040 #. type: Plain text
9041 #: build/C/man2/ioprio_set.2:320
9042 msgid ""
9043 "An unprivileged process may set only the I/O priority of a process whose "
9044 "real UID matches the real or effective UID of the calling process.  A "
9045 "process which has the B<CAP_SYS_NICE> capability can change the priority of "
9046 "any process."
9047 msgstr ""
9048 "非特権プロセスは、プロセスの実 UID が呼び出し元プロセスの実 UID もしくは 実"
9049 "効 UID と一致するプロセスの I/O 優先度のみを設定できる。 B<CAP_SYS_NICE> ケー"
9050 "パビリティを持つプロセスは、どのプロセスの優先度でも変更できる。"
9051
9052 #. type: TP
9053 #: build/C/man2/ioprio_set.2:320
9054 #, no-wrap
9055 msgid "B<What is the desired priority>"
9056 msgstr "B<どの優先度に設定しようとしているか>"
9057
9058 #. type: Plain text
9059 #: build/C/man2/ioprio_set.2:332
9060 msgid ""
9061 "Attempts to set very high priorities (B<IOPRIO_CLASS_RT>)  require the "
9062 "B<CAP_SYS_ADMIN> capability.  Kernel versions up to 2.6.24 also required "
9063 "B<CAP_SYS_ADMIN> to set a very low priority (B<IOPRIO_CLASS_IDLE>), but "
9064 "since Linux 2.6.25, this is no longer required."
9065 msgstr ""
9066 "非常に高い優先度 (B<IOPRIO_CLASS_RT>)  を設定しようとする場合、 "
9067 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。 カーネル 2.6.24 以前では、非常"
9068 "に低い優先度 (B<IOPRIO_CLASS_IDLE>)  を設定するためにも B<CAP_SYS_ADMIN> ケー"
9069 "パビリティが必要であったが、 Linux 2.6.25 以降ではもはや必要なくなった。"
9070
9071 #. type: Plain text
9072 #: build/C/man2/ioprio_set.2:337
9073 msgid ""
9074 "A call to B<ioprio_set>()  must follow both rules, or the call will fail "
9075 "with the error B<EPERM>."
9076 msgstr ""
9077 "B<ioprio_set>()  はこの両方のルールに従い、条件を満たさない場合、エラー "
9078 "B<EPERM> で失敗する。"
9079
9080 #.  6 May 07: Bug report raised:
9081 #.  http://sources.redhat.com/bugzilla/show_bug.cgi?id=4464
9082 #.  Ulrich Drepper replied that he wasn't going to add these
9083 #.  to glibc.
9084 #. type: Plain text
9085 #: build/C/man2/ioprio_set.2:346
9086 msgid ""
9087 "Glibc does not yet provide a suitable header file defining the function "
9088 "prototypes and macros described on this page.  Suitable definitions can be "
9089 "found in I<linux/ioprio.h>."
9090 msgstr ""
9091 "glibc は、このページに記載された関数プロトタイプやマクロを定義する 適切なヘッ"
9092 "ダファイルをまだ提供していない。 必要な定義については I<linux/ioprio.h> を見"
9093 "ればよい。"
9094
9095 #. type: Plain text
9096 #: build/C/man2/ioprio_set.2:351
9097 msgid "B<ionice>(1), B<getpriority>(2), B<open>(2), B<capabilities>(7)"
9098 msgstr "B<ionice>(1), B<getpriority>(2), B<open>(2), B<capabilities>(7)"
9099
9100 #. type: Plain text
9101 #: build/C/man2/ioprio_set.2:354
9102 msgid "I<Documentation/block/ioprio.txt> in the Linux kernel source tree"
9103 msgstr "Linux カーネルソース内の I<Documentation/block/ioprio.txt>"
9104
9105 #. type: TH
9106 #: build/C/man2/ipc.2:25
9107 #, no-wrap
9108 msgid "IPC"
9109 msgstr "IPC"
9110
9111 #. type: TH
9112 #: build/C/man2/ipc.2:25
9113 #, no-wrap
9114 msgid "2012-10-16"
9115 msgstr "2012-10-16"
9116
9117 #. type: Plain text
9118 #: build/C/man2/ipc.2:28
9119 msgid "ipc - System V IPC system calls"
9120 msgstr "ipc - System V IPC システムコール"
9121
9122 #. type: Plain text
9123 #: build/C/man2/ipc.2:33
9124 #, no-wrap
9125 msgid ""
9126 "B<int ipc(unsigned int >I<call>B<, int >I<first>B<, int >I<second>B<, int >I<third>B<,>\n"
9127 "B<        void *>I<ptr>B<, long >I<fifth>B<);>\n"
9128 msgstr ""
9129 "B<int ipc(unsigned int >I<call>B<, int >I<first>B<, int >I<second>B<, int >I<third>B<,>\n"
9130 "B<        void *>I<ptr>B<, long >I<fifth>B<);>\n"
9131
9132 #. type: Plain text
9133 #: build/C/man2/ipc.2:41
9134 msgid ""
9135 "B<ipc>()  is a common kernel entry point for the System\\ V IPC calls for "
9136 "messages, semaphores, and shared memory.  I<call> determines which IPC "
9137 "function to invoke; the other arguments are passed through to the "
9138 "appropriate call."
9139 msgstr ""
9140 "B<ipc>()  は メッセージ、セマフォー、共有メモリに関する System\\ V IPC コール"
9141 "の 共通のカーネルへのエントリポイントである。 I<call> はどの IPC 関数を呼び出"
9142 "すかを決め; 他の引き数は適切なコールへと渡される。"
9143
9144 #. type: Plain text
9145 #: build/C/man2/ipc.2:45
9146 msgid ""
9147 "User programs should call the appropriate functions by their usual names.  "
9148 "Only standard library implementors and kernel hackers need to know about "
9149 "B<ipc>()."
9150 msgstr ""
9151 "ユーザープログラムは通常の名前で適切な関数を呼び出すべきである。 標準ライブラ"
9152 "リの実装者やカーネルハッカーのみが B<ipc>()  について知る必要がある。"
9153
9154 #. type: Plain text
9155 #: build/C/man2/ipc.2:49
9156 msgid ""
9157 "B<ipc>()  is Linux-specific, and should not be used in programs intended to "
9158 "be portable."
9159 msgstr ""
9160 "B<ipc>()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけな"
9161 "い。"
9162
9163 #. type: Plain text
9164 #: build/C/man2/ipc.2:57
9165 msgid ""
9166 "On some architectures\\(emfor example x86-64 and ARM\\(emthere is no "
9167 "B<ipc>()  system call; instead B<msgctl>(2), B<semctl>(2), B<shmctl>(2), and "
9168 "so on really are implemented as separate system calls."
9169 msgstr ""
9170 "いくつかのアーキテクチャ\\(emfor 例えば x86-64 や ARM\\(emでは、システムコー"
9171 "ル B<ipc>()  が存在しない。実際には、その代わりに B<msgctl>(2), "
9172 "B<semctl>(2), B<shmctl>(2)  などが独立したシステムコールとして実装されてい"
9173 "る。"
9174
9175 #. type: Plain text
9176 #: build/C/man2/ipc.2:70
9177 msgid ""
9178 "B<msgctl>(2), B<msgget>(2), B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), "
9179 "B<semget>(2), B<semop>(2), B<semtimedop>(2), B<shmat>(2), B<shmctl>(2), "
9180 "B<shmdt>(2), B<shmget>(2)"
9181 msgstr ""
9182 "B<msgctl>(2), B<msgget>(2), B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), "
9183 "B<semget>(2), B<semop>(2), B<shmat>(2), B<shmctl>(2), B<shmdt>(2), "
9184 "B<shmget>(2)"
9185
9186 #. type: TH
9187 #: build/C/man7/namespaces.7:27
9188 #, no-wrap
9189 msgid "NAMESPACES"
9190 msgstr ""
9191
9192 #. type: Plain text
9193 #: build/C/man7/namespaces.7:30
9194 msgid "namespaces - overview of Linux namespaces"
9195 msgstr "namespaces - Linux 名前空間の概要"
9196
9197 #. type: Plain text
9198 #: build/C/man7/namespaces.7:37
9199 msgid ""
9200 "A namespace wraps a global system resource in an abstraction that makes it "
9201 "appear to the processes within the namespace that they have their own "
9202 "isolated instance of the global resource.  Changes to the global resource "
9203 "are visible to other processes that are members of the namespace, but are "
9204 "invisible to other processes.  One use of namespaces is to implement "
9205 "containers."
9206 msgstr ""
9207
9208 #. type: Plain text
9209 #: build/C/man7/namespaces.7:39
9210 msgid "Linux provides the following namespaces:"
9211 msgstr ""
9212
9213 #. type: tbl table
9214 #: build/C/man7/namespaces.7:42
9215 #, no-wrap
9216 msgid "Namespace\tConstant\tIsolates\n"
9217 msgstr ""
9218
9219 #. type: tbl table
9220 #: build/C/man7/namespaces.7:43
9221 #, no-wrap
9222 msgid "IPC\tCLONE_NEWIPC\tSystem V IPC, POSIX message queues\n"
9223 msgstr ""
9224
9225 #. type: tbl table
9226 #: build/C/man7/namespaces.7:44
9227 #, no-wrap
9228 msgid "Network\tCLONE_NEWNET\tNetwork devices, stacks, ports, etc.\n"
9229 msgstr ""
9230
9231 #. type: tbl table
9232 #: build/C/man7/namespaces.7:45
9233 #, no-wrap
9234 msgid "Mount\tCLONE_NEWNS\tMount points\n"
9235 msgstr ""
9236
9237 #. type: tbl table
9238 #: build/C/man7/namespaces.7:46
9239 #, no-wrap
9240 msgid "PID\tCLONE_NEWPID\tProcess IDs\n"
9241 msgstr ""
9242
9243 #. type: tbl table
9244 #: build/C/man7/namespaces.7:47
9245 #, no-wrap
9246 msgid "User\tCLONE_NEWUSER\tUser and group IDs\n"
9247 msgstr ""
9248
9249 #. type: tbl table
9250 #: build/C/man7/namespaces.7:48
9251 #, no-wrap
9252 msgid "UTS\tCLONE_NEWUTS\tHostname and NIS domain name\n"
9253 msgstr ""
9254
9255 #
9256 #.  ==================== The namespaces API ====================
9257 #. type: Plain text
9258 #: build/C/man7/namespaces.7:57
9259 msgid ""
9260 "This page describes the various namespaces and the associated I</proc> "
9261 "files, and summarizes the APIs for working with namespaces."
9262 msgstr ""
9263
9264 #. type: SS
9265 #: build/C/man7/namespaces.7:57
9266 #, no-wrap
9267 msgid "The namespaces API"
9268 msgstr ""
9269
9270 #. type: Plain text
9271 #: build/C/man7/namespaces.7:62
9272 msgid ""
9273 "As well as various I</proc> files described below, the namespaces API "
9274 "includes the following system calls:"
9275 msgstr ""
9276
9277 #. type: TP
9278 #: build/C/man7/namespaces.7:62
9279 #, no-wrap
9280 msgid "B<clone>(2)"
9281 msgstr ""
9282
9283 #. type: Plain text
9284 #: build/C/man7/namespaces.7:75
9285 msgid ""
9286 "The B<clone>(2)  system call creates a new process.  If the I<flags> "
9287 "argument of the call specifies one or more of the B<CLONE_NEW*> flags listed "
9288 "below, then new namespaces are created for each flag, and the child process "
9289 "is made a member of those namespaces.  (This system call also implements a "
9290 "number of features unrelated to namespaces.)"
9291 msgstr ""
9292
9293 #. type: TP
9294 #: build/C/man7/namespaces.7:75
9295 #, no-wrap
9296 msgid "B<setns>(2)"
9297 msgstr "B<setns>(2)"
9298
9299 #. type: Plain text
9300 #: build/C/man7/namespaces.7:84
9301 msgid ""
9302 "The B<setns>(2)  system call allows the calling process to join an existing "
9303 "namespace.  The namespace to join is specified via a file descriptor that "
9304 "refers to one of the I</proc/[pid]/ns> files described below."
9305 msgstr ""
9306
9307 #. type: TP
9308 #: build/C/man7/namespaces.7:84
9309 #, no-wrap
9310 msgid "B<unshare>(2)"
9311 msgstr ""
9312
9313 #. type: Plain text
9314 #: build/C/man7/namespaces.7:97
9315 msgid ""
9316 "The B<unshare>(2)  system call moves the calling process to a new "
9317 "namespace.  If the I<flags> argument of the call specifies one or more of "
9318 "the B<CLONE_NEW*> flags listed below, then new namespaces are created for "
9319 "each flag, and the calling process is made a member of those namespaces.  "
9320 "(This system call also implements a number of features unrelated to "
9321 "namespaces.)"
9322 msgstr ""
9323
9324 #
9325 #.  ==================== The /proc/[pid]/ns/ directory ====================
9326 #. type: Plain text
9327 #: build/C/man7/namespaces.7:110
9328 msgid ""
9329 "Creation of new namespaces using B<clone>(2)  and B<unshare>(2)  in most "
9330 "cases requires the B<CAP_SYS_ADMIN> capability.  User namespaces are the "
9331 "exception: since Linux 3.8, no privilege is required to create a user "
9332 "namespace."
9333 msgstr ""
9334
9335 #. type: SS
9336 #: build/C/man7/namespaces.7:110
9337 #, no-wrap
9338 msgid "The /proc/[pid]/ns/ directory"
9339 msgstr ""
9340
9341 #.  See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
9342 #. type: Plain text
9343 #: build/C/man7/namespaces.7:117
9344 msgid ""
9345 "Each process has a I</proc/[pid]/ns/> subdirectory containing one entry for "
9346 "each namespace that supports being manipulated by B<setns>(2):"
9347 msgstr ""
9348
9349 #. type: Plain text
9350 #: build/C/man7/namespaces.7:128
9351 #, no-wrap
9352 msgid ""
9353 "$ B<ls -l /proc/$$/ns>\n"
9354 "total 0\n"
9355 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -E<gt> ipc:[4026531839]\n"
9356 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -E<gt> mnt:[4026531840]\n"
9357 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -E<gt> net:[4026531956]\n"
9358 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -E<gt> pid:[4026531836]\n"
9359 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -E<gt> user:[4026531837]\n"
9360 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -E<gt> uts:[4026531838]\n"
9361 msgstr ""
9362 "$ B<ls -l /proc/$$/ns>\n"
9363 "total 0\n"
9364 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -E<gt> ipc:[4026531839]\n"
9365 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -E<gt> mnt:[4026531840]\n"
9366 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -E<gt> net:[4026531956]\n"
9367 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -E<gt> pid:[4026531836]\n"
9368 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -E<gt> user:[4026531837]\n"
9369 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -E<gt> uts:[4026531838]\n"
9370
9371 #. type: Plain text
9372 #: build/C/man7/namespaces.7:138
9373 msgid ""
9374 "Bind mounting (see B<mount>(2))  one of the files in this directory to "
9375 "somewhere else in the filesystem keeps the corresponding namespace of the "
9376 "process specified by I<pid> alive even if all processes currently in the "
9377 "namespace terminate."
9378 msgstr ""
9379
9380 #. type: Plain text
9381 #: build/C/man7/namespaces.7:149
9382 msgid ""
9383 "Opening one of the files in this directory (or a file that is bind mounted "
9384 "to one of these files)  returns a file handle for the corresponding "
9385 "namespace of the process specified by I<pid>.  As long as this file "
9386 "descriptor remains open, the namespace will remain alive, even if all "
9387 "processes in the namespace terminate.  The file descriptor can be passed to "
9388 "B<setns>(2)."
9389 msgstr ""
9390
9391 #. type: Plain text
9392 #: build/C/man7/namespaces.7:160
9393 msgid ""
9394 "In Linux 3.7 and earlier, these files were visible as hard links.  Since "
9395 "Linux 3.8, they appear as symbolic links.  If two processes are in the same "
9396 "namespace, then the inode numbers of their I</proc/[pid]/ns/xxx> symbolic "
9397 "links will be the same; an application can check this using the I<stat."
9398 "st_ino> field returned by B<stat>(2).  The content of this symbolic link is "
9399 "a string containing the namespace type and inode number as in the following "
9400 "example:"
9401 msgstr ""
9402
9403 #. type: Plain text
9404 #: build/C/man7/namespaces.7:165
9405 #, no-wrap
9406 msgid ""
9407 "$ B<readlink /proc/$$/ns/uts>\n"
9408 "uts:[4026531838]\n"
9409 msgstr ""
9410
9411 #. type: Plain text
9412 #: build/C/man7/namespaces.7:169
9413 msgid "The files in this subdirectory are as follows:"
9414 msgstr ""
9415
9416 #. type: TP
9417 #: build/C/man7/namespaces.7:169
9418 #, no-wrap
9419 msgid "I</proc/[pid]/ns/ipc> (since Linux 3.0)"
9420 msgstr "I</proc/[pid]/ns/ipc> (Linux 3.0 以降)"
9421
9422 #. type: Plain text
9423 #: build/C/man7/namespaces.7:172
9424 msgid "This file is a handle for the IPC namespace of the process."
9425 msgstr ""
9426
9427 #. type: TP
9428 #: build/C/man7/namespaces.7:172
9429 #, no-wrap
9430 msgid "I</proc/[pid]/ns/mnt> (since Linux 3.8)"
9431 msgstr "I</proc/[pid]/ns/mnt> (Linux 3.8 以降)"
9432
9433 #. type: Plain text
9434 #: build/C/man7/namespaces.7:175
9435 msgid "This file is a handle for the mount namespace of the process."
9436 msgstr ""
9437
9438 #. type: TP
9439 #: build/C/man7/namespaces.7:175
9440 #, no-wrap
9441 msgid "I</proc/[pid]/ns/net> (since Linux 3.0)"
9442 msgstr "I</proc/[pid]/ns/net> (Linux 3.0 以降)"
9443
9444 #. type: Plain text
9445 #: build/C/man7/namespaces.7:178
9446 msgid "This file is a handle for the network namespace of the process."
9447 msgstr ""
9448
9449 #. type: TP
9450 #: build/C/man7/namespaces.7:178
9451 #, no-wrap
9452 msgid "I</proc/[pid]/ns/pid> (since Linux 3.8)"
9453 msgstr "I</proc/[pid]/ns/pid> (Linux 3.8 以降)"
9454
9455 #. type: Plain text
9456 #: build/C/man7/namespaces.7:181
9457 msgid "This file is a handle for the PID namespace of the process."
9458 msgstr ""
9459
9460 #. type: TP
9461 #: build/C/man7/namespaces.7:181
9462 #, no-wrap
9463 msgid "I</proc/[pid]/ns/user> (since Linux 3.8)"
9464 msgstr "I</proc/[pid]/ns/user> (Linux 3.8 以降)"
9465
9466 #. type: Plain text
9467 #: build/C/man7/namespaces.7:184
9468 msgid "This file is a handle for the user namespace of the process."
9469 msgstr ""
9470
9471 #. type: TP
9472 #: build/C/man7/namespaces.7:184
9473 #, no-wrap
9474 msgid "I</proc/[pid]/ns/uts> (since Linux 3.0)"
9475 msgstr "I</proc/[pid]/ns/uts> (Linux 3.0 以降)"
9476
9477 #
9478 #.  ==================== IPC namespaces ====================
9479 #. type: Plain text
9480 #: build/C/man7/namespaces.7:190
9481 msgid "This file is a handle for the UTS namespace of the process."
9482 msgstr ""
9483
9484 #. type: SS
9485 #: build/C/man7/namespaces.7:190
9486 #, no-wrap
9487 msgid "IPC namespaces (CLONE_NEWIPC)"
9488 msgstr ""
9489
9490 #.  commit 7eafd7c74c3f2e67c27621b987b28397110d643f
9491 #.  https://lwn.net/Articles/312232/
9492 #. type: Plain text
9493 #: build/C/man7/namespaces.7:202
9494 msgid ""
9495 "IPC namespaces isolate certain IPC resources, namely, System V IPC objects "
9496 "(see B<svipc>(7))  and (since Linux 2.6.30)  POSIX message queues (see "
9497 "B<mq_overview>(7)).  The common characteristic of these IPC mechanisms is "
9498 "that IPC objects are identified by mechanisms other than filesystem "
9499 "pathnames."
9500 msgstr ""
9501
9502 #. type: Plain text
9503 #: build/C/man7/namespaces.7:208
9504 msgid ""
9505 "Each IPC namespace has its own set of System V IPC identifiers and its own "
9506 "POSIX message queue filesystem.  Objects created in an IPC namespace are "
9507 "visible to all other processes that are members of that namespace, but are "
9508 "not visible to processes in other IPC namespaces."
9509 msgstr ""
9510
9511 #. type: Plain text
9512 #: build/C/man7/namespaces.7:212
9513 msgid "The following I</proc> interfaces are distinct in each IPC namespace:"
9514 msgstr ""
9515
9516 #. type: Plain text
9517 #: build/C/man7/namespaces.7:215
9518 msgid "The POSIX message queue interfaces in I</proc/sys/fs/mqueue>."
9519 msgstr ""
9520
9521 #. type: Plain text
9522 #: build/C/man7/namespaces.7:228
9523 msgid ""
9524 "The System V IPC interfaces in I</proc/sys/kernel>, namely: I<msgmax>, "
9525 "I<msgmnb>, I<msgmni>, I<sem>, I<shmall>, I<shmmax>, I<shmmni>, and "
9526 "I<shm_rmid_forced>."
9527 msgstr ""
9528
9529 #. type: Plain text
9530 #: build/C/man7/namespaces.7:231
9531 msgid "The System V IPC interfaces in I</proc/sysvipc>."
9532 msgstr ""
9533
9534 #. type: Plain text
9535 #: build/C/man7/namespaces.7:235
9536 msgid ""
9537 "When an IPC namespace is destroyed (i.e., when the last process that is a "
9538 "member of the namespace terminates), all IPC objects in the namespace are "
9539 "automatically destroyed."
9540 msgstr ""
9541
9542 #
9543 #.  ==================== Network namespaces ====================
9544 #. type: Plain text
9545 #: build/C/man7/namespaces.7:242
9546 msgid ""
9547 "Use of IPC namespaces requires a kernel that is configured with the "
9548 "B<CONFIG_IPC_NS> option."
9549 msgstr ""
9550
9551 #. type: SS
9552 #: build/C/man7/namespaces.7:242
9553 #, no-wrap
9554 msgid "Network namespaces (CLONE_NEWNET)"
9555 msgstr ""
9556
9557 #.  FIXME Add pointer to veth(4) page when it is eventually completed
9558 #. type: Plain text
9559 #: build/C/man7/namespaces.7:257
9560 msgid ""
9561 "Network namespaces provide isolation of the system resources associated with "
9562 "networking: network devices, IPv4 and IPv6 protocol stacks, IP routing "
9563 "tables, firewalls, the I</proc/net> directory, the I</sys/class/net> "
9564 "directory, port numbers (sockets), and so on.  A physical network device can "
9565 "live in exactly one network namespace.  A virtual network device (\"veth\") "
9566 "pair provides a pipe-like abstraction that can be used to create tunnels "
9567 "between network namespaces, and can be used to create a bridge to a physical "
9568 "network device in another namespace."
9569 msgstr ""
9570
9571 #. type: Plain text
9572 #: build/C/man7/namespaces.7:262
9573 msgid ""
9574 "When a network namespace is freed (i.e., when the last process in the "
9575 "namespace terminates), its physical network devices are moved back to the "
9576 "initial network namespace (not to the parent of the process)."
9577 msgstr ""
9578
9579 #
9580 #.  ==================== Mount namespaces ====================
9581 #. type: Plain text
9582 #: build/C/man7/namespaces.7:269
9583 msgid ""
9584 "Use of network namespaces requires a kernel that is configured with the "
9585 "B<CONFIG_NET_NS> option."
9586 msgstr ""
9587
9588 #. type: SS
9589 #: build/C/man7/namespaces.7:269
9590 #, no-wrap
9591 msgid "Mount namespaces (CLONE_NEWNS)"
9592 msgstr ""
9593
9594 #. type: Plain text
9595 #: build/C/man7/namespaces.7:277
9596 msgid ""
9597 "Mount namespaces isolate the set of filesystem mount points, meaning that "
9598 "processes in different mount namespaces can have different views of the "
9599 "filesystem hierarchy.  The set of mounts in a mount namespace is modified "
9600 "using B<mount>(2)  and B<umount>(2)."
9601 msgstr ""
9602
9603 #. type: Plain text
9604 #: build/C/man7/namespaces.7:294
9605 msgid ""
9606 "The I</proc/[pid]/mounts> file (present since Linux 2.4.19)  lists all the "
9607 "filesystems currently mounted in the process's mount namespace.  The format "
9608 "of this file is documented in B<fstab>(5).  Since kernel version 2.6.15, "
9609 "this file is pollable: after opening the file for reading, a change in this "
9610 "file (i.e., a filesystem mount or unmount) causes B<select>(2)  to mark the "
9611 "file descriptor as readable, and B<poll>(2)  and B<epoll_wait>(2)  mark the "
9612 "file as having an error condition."
9613 msgstr ""
9614
9615 #. type: Plain text
9616 #: build/C/man7/namespaces.7:302
9617 msgid ""
9618 "The I</proc/[pid]/mountstats> file (present since Linux 2.6.17)  exports "
9619 "information (statistics, configuration information)  about the mount points "
9620 "in the process's mount namespace.  This file is only readable by the owner "
9621 "of the process.  Lines in this file have the form:"
9622 msgstr ""
9623
9624 #. type: Plain text
9625 #: build/C/man7/namespaces.7:308
9626 #, no-wrap
9627 msgid ""
9628 "device /dev/sda7 mounted on /home with fstype ext3 [statistics]\n"
9629 "(       1      )            ( 2 )             (3 ) (4)\n"
9630 msgstr ""
9631
9632 #. type: Plain text
9633 #: build/C/man7/namespaces.7:312
9634 msgid "The fields in each line are:"
9635 msgstr ""
9636
9637 #. type: IP
9638 #: build/C/man7/namespaces.7:312 build/C/man7/user_namespaces.7:371
9639 #, no-wrap
9640 msgid "(1)"
9641 msgstr "(1)"
9642
9643 #. type: Plain text
9644 #: build/C/man7/namespaces.7:316
9645 msgid ""
9646 "The name of the mounted device (or \"nodevice\" if there is no corresponding "
9647 "device)."
9648 msgstr ""
9649
9650 #. type: IP
9651 #: build/C/man7/namespaces.7:316 build/C/man7/user_namespaces.7:375
9652 #, no-wrap
9653 msgid "(2)"
9654 msgstr "(2)"
9655
9656 #. type: Plain text
9657 #: build/C/man7/namespaces.7:319
9658 msgid "The mount point within the filesystem tree."
9659 msgstr ""
9660
9661 #. type: IP
9662 #: build/C/man7/namespaces.7:319 build/C/man7/user_namespaces.7:401
9663 #, no-wrap
9664 msgid "(3)"
9665 msgstr "(3)"
9666
9667 #. type: Plain text
9668 #: build/C/man7/namespaces.7:322
9669 msgid "The filesystem type."
9670 msgstr ""
9671
9672 #. type: TP
9673 #: build/C/man7/namespaces.7:322
9674 #, no-wrap
9675 msgid "(4)"
9676 msgstr "(4)"
9677
9678 #. type: Plain text
9679 #: build/C/man7/namespaces.7:327
9680 msgid ""
9681 "Optional statistics and configuration information.  Currently (as at Linux "
9682 "2.6.26), only NFS filesystems export information via this field."
9683 msgstr ""
9684
9685 #
9686 #.  ==================== PID namespaces ====================
9687 #. type: SS
9688 #: build/C/man7/namespaces.7:331
9689 #, no-wrap
9690 msgid "PID namespaces (CLONE_NEWPID)"
9691 msgstr ""
9692
9693 #
9694 #.  ==================== User namespaces ====================
9695 #. type: Plain text
9696 #: build/C/man7/namespaces.7:337
9697 msgid "See B<pid_namespaces>(7)."
9698 msgstr ""
9699
9700 #. type: SS
9701 #: build/C/man7/namespaces.7:337
9702 #, no-wrap
9703 msgid "User namespaces (CLONE_NEWUSER)"
9704 msgstr ""
9705
9706 #. type: Plain text
9707 #: build/C/man7/namespaces.7:343 build/C/man7/namespaces.7:364
9708 #: build/C/man7/pid_namespaces.7:346
9709 msgid "See B<user_namespaces>(7)."
9710 msgstr ""
9711
9712 #. type: SS
9713 #: build/C/man7/namespaces.7:343
9714 #, no-wrap
9715 msgid "UTS namespaces (CLONE_NEWUTS)"
9716 msgstr ""
9717
9718 #. type: Plain text
9719 #: build/C/man7/namespaces.7:355
9720 msgid ""
9721 "UTS namespaces provide isolation of two system identifiers: the hostname and "
9722 "the NIS domain name.  These identifiers are set using B<sethostname>(2)  and "
9723 "B<setdomainname>(2), and can be retrieved using B<uname>(2), "
9724 "B<gethostname>(2), and B<getdomainname>(2)."
9725 msgstr ""
9726
9727 #. type: Plain text
9728 #: build/C/man7/namespaces.7:359
9729 msgid ""
9730 "Use of UTS namespaces requires a kernel that is configured with the "
9731 "B<CONFIG_UTS_NS> option."
9732 msgstr ""
9733
9734 #. type: Plain text
9735 #: build/C/man7/namespaces.7:361 build/C/man7/pid_namespaces.7:343
9736 #: build/C/man7/user_namespaces.7:648
9737 msgid "Namespaces are a Linux-specific feature."
9738 msgstr "名前空間は Linux 独自の機能である。"
9739
9740 #. type: Plain text
9741 #: build/C/man7/namespaces.7:377
9742 msgid ""
9743 "B<nsenter>(1), B<readlink>(1), B<unshare>(1), B<clone>(2), B<setns>(2), "
9744 "B<unshare>(2), B<proc>(5), B<credentials>(7), B<capabilities>(7), "
9745 "B<pid_namespaces>(7), B<user_namespaces>(7), B<switch_root>(8)"
9746 msgstr ""
9747 "B<nsenter>(1), B<readlink>(1), B<unshare>(1), B<clone>(2), B<setns>(2), "
9748 "B<unshare>(2), B<proc>(5), B<credentials>(7), B<capabilities>(7), "
9749 "B<pid_namespaces>(7), B<user_namespaces>(7), B<switch_root>(8)"
9750
9751 #. type: TH
9752 #: build/C/man7/pid_namespaces.7:27
9753 #, no-wrap
9754 msgid "PID_NAMESPACES"
9755 msgstr ""
9756
9757 #. type: Plain text
9758 #: build/C/man7/pid_namespaces.7:30
9759 msgid "pid_namespaces - overview of Linux PID namespaces"
9760 msgstr "pid_namespaces - Linux PID 名前空間の概要"
9761
9762 #. type: Plain text
9763 #: build/C/man7/pid_namespaces.7:33 build/C/man7/user_namespaces.7:33
9764 msgid "For an overview of namespaces, see B<namespaces>(7)."
9765 msgstr ""
9766
9767 #. type: Plain text
9768 #: build/C/man7/pid_namespaces.7:40
9769 msgid ""
9770 "PID namespaces isolate the process ID number space, meaning that processes "
9771 "in different PID namespaces can have the same PID.  PID namespaces allow "
9772 "containers to provide functionality such as suspending/resuming the set of "
9773 "processes in the container and migrating the container to a new host while "
9774 "the processes inside the container maintain the same PIDs."
9775 msgstr ""
9776
9777 #. type: Plain text
9778 #: build/C/man7/pid_namespaces.7:48
9779 msgid ""
9780 "PIDs in a new PID namespace start at 1, somewhat like a standalone system, "
9781 "and calls to B<fork>(2), B<vfork>(2), or B<clone>(2)  will produce processes "
9782 "with PIDs that are unique within the namespace."
9783 msgstr ""
9784
9785 #
9786 #.  ============================================================
9787 #. type: Plain text
9788 #: build/C/man7/pid_namespaces.7:55
9789 msgid ""
9790 "Use of PID namespaces requires a kernel that is configured with the "
9791 "B<CONFIG_PID_NS> option."
9792 msgstr ""
9793
9794 #. type: SS
9795 #: build/C/man7/pid_namespaces.7:55
9796 #, no-wrap
9797 msgid "The namespace init process"
9798 msgstr ""
9799
9800 #. type: Plain text
9801 #: build/C/man7/pid_namespaces.7:75
9802 msgid ""
9803 "The first process created in a new namespace (i.e., the process created "
9804 "using B<clone>(2)  with the B<CLONE_NEWPID> flag, or the first child created "
9805 "by a process after a call to B<unshare>(2)  using the B<CLONE_NEWPID> flag) "
9806 "has the PID 1, and is the \"init\" process for the namespace (see "
9807 "B<init>(1)).  A child process that is orphaned within the namespace will be "
9808 "reparented to this process rather than B<init>(1)  (unless one of the "
9809 "ancestors of the child in the same PID namespace employed the B<prctl>(2)  "
9810 "B<PR_SET_CHILD_SUBREAPER> command to mark itself as the reaper of orphaned "
9811 "descendant processes)."
9812 msgstr ""
9813
9814 #. type: Plain text
9815 #: build/C/man7/pid_namespaces.7:102
9816 msgid ""
9817 "If the \"init\" process of a PID namespace terminates, the kernel terminates "
9818 "all of the processes in the namespace via a B<SIGKILL> signal.  This "
9819 "behavior reflects the fact that the \"init\" process is essential for the "
9820 "correct operation of a PID namespace.  In this case, a subsequent "
9821 "B<fork>(2)  into this PID namespace will fail with the error B<ENOMEM>; it "
9822 "is not possible to create a new processes in a PID namespace whose \"init\" "
9823 "process has terminated.  Such scenarios can occur when, for example, a "
9824 "process uses an open file descriptor for a I</proc/[pid]/ns/pid> file "
9825 "corresponding to a process that was in a namespace to B<setns>(2)  into that "
9826 "namespace after the \"init\" process has terminated.  Another possible "
9827 "scenario can occur after a call to B<unshare>(2): if the first child "
9828 "subsequently created by a B<fork>(2)  terminates, then subsequent calls to "
9829 "B<fork>(2)  will fail with B<ENOMEM>."
9830 msgstr ""
9831
9832 #. type: Plain text
9833 #: build/C/man7/pid_namespaces.7:108
9834 msgid ""
9835 "Only signals for which the \"init\" process has established a signal handler "
9836 "can be sent to the \"init\" process by other members of the PID namespace.  "
9837 "This restriction applies even to privileged processes, and prevents other "
9838 "members of the PID namespace from accidentally killing the \"init\" process."
9839 msgstr ""
9840
9841 #. type: Plain text
9842 #: build/C/man7/pid_namespaces.7:128
9843 msgid ""
9844 "Likewise, a process in an ancestor namespace can\\(emsubject to the usual "
9845 "permission checks described in B<kill>(2)\\(emsend signals to the \"init\" "
9846 "process of a child PID namespace only if the \"init\" process has "
9847 "established a handler for that signal.  (Within the handler, the "
9848 "I<siginfo_t> I<si_pid> field described in B<sigaction>(2)  will be zero.)  "
9849 "B<SIGKILL> or B<SIGSTOP> are treated exceptionally: these signals are "
9850 "forcibly delivered when sent from an ancestor PID namespace.  Neither of "
9851 "these signals can be caught by the \"init\" process, and so will result in "
9852 "the usual actions associated with those signals (respectively, terminating "
9853 "and stopping the process)."
9854 msgstr ""
9855
9856 #
9857 #.  ============================================================
9858 #. type: Plain text
9859 #: build/C/man7/pid_namespaces.7:138
9860 msgid ""
9861 "Starting with Linux 3.4, the B<reboot>(2)  system call causes a signal to be "
9862 "sent to the namespace \"init\" process.  See B<reboot>(2)  for more details."
9863 msgstr ""
9864
9865 #. type: SS
9866 #: build/C/man7/pid_namespaces.7:138
9867 #, no-wrap
9868 msgid "Nesting PID namespaces"
9869 msgstr ""
9870
9871 #. type: Plain text
9872 #: build/C/man7/pid_namespaces.7:149
9873 msgid ""
9874 "PID namespaces can be nested: each PID namespace has a parent, except for "
9875 "the initial (\"root\") PID namespace.  The parent of a PID namespace is the "
9876 "PID namespace of the process that created the namespace using B<clone>(2)  "
9877 "or B<unshare>(2).  PID namespaces thus form a tree, with all namespaces "
9878 "ultimately tracing their ancestry to the root namespace."
9879 msgstr ""
9880
9881 #. type: Plain text
9882 #: build/C/man7/pid_namespaces.7:164
9883 msgid ""
9884 "A process is visible to other processes in its PID namespace, and to the "
9885 "processes in each direct ancestor PID namespace going back to the root PID "
9886 "namespace.  In this context, \"visible\" means that one process can be the "
9887 "target of operations by another process using system calls that specify a "
9888 "process ID.  Conversely, the processes in a child PID namespace can't see "
9889 "processes in the parent and further removed ancestor namespaces.  More "
9890 "succinctly: a process can see (e.g., send signals with B<kill>(2), set nice "
9891 "values with B<setpriority>(2), etc.) only processes contained in its own PID "
9892 "namespace and in descendants of that namespace."
9893 msgstr ""
9894
9895 #. type: Plain text
9896 #: build/C/man7/pid_namespaces.7:176
9897 msgid ""
9898 "A process has one process ID in each of the layers of the PID namespace "
9899 "hierarchy in which is visible, and walking back though each direct ancestor "
9900 "namespace through to the root PID namespace.  System calls that operate on "
9901 "process IDs always operate using the process ID that is visible in the PID "
9902 "namespace of the caller.  A call to B<getpid>(2)  always returns the PID "
9903 "associated with the namespace in which the process was created."
9904 msgstr ""
9905
9906 #
9907 #.  ============================================================
9908 #. type: Plain text
9909 #: build/C/man7/pid_namespaces.7:194
9910 msgid ""
9911 "Some processes in a PID namespace may have parents that are outside of the "
9912 "namespace.  For example, the parent of the initial process in the namespace "
9913 "(i.e., the B<init>(1)  process with PID 1) is necessarily in another "
9914 "namespace.  Likewise, the direct children of a process that uses "
9915 "B<setns>(2)  to cause its children to join a PID namespace are in a "
9916 "different PID namespace from the caller of B<setns>(2).  Calls to "
9917 "B<getppid>(2)  for such processes return 0."
9918 msgstr ""
9919
9920 #. type: SS
9921 #: build/C/man7/pid_namespaces.7:194
9922 #, no-wrap
9923 msgid "setns(2) and unshare(2) semantics"
9924 msgstr ""
9925
9926 #. type: Plain text
9927 #: build/C/man7/pid_namespaces.7:210
9928 msgid ""
9929 "Calls to B<setns>(2)  that specify a PID namespace file descriptor and calls "
9930 "to B<unshare>(2)  with the B<CLONE_NEWPID> flag cause children subsequently "
9931 "created by the caller to be placed in a different PID namespace from the "
9932 "caller.  These calls do not, however, change the PID namespace of the "
9933 "calling process, because doing so would change the caller's idea of its own "
9934 "PID (as reported by B<getpid>()), which would break many applications and "
9935 "libraries."
9936 msgstr ""
9937
9938 #. type: Plain text
9939 #: build/C/man7/pid_namespaces.7:218
9940 msgid ""
9941 "To put things another way: a process's PID namespace membership is "
9942 "determined when the process is created and cannot be changed thereafter.  "
9943 "Among other things, this means that the parental relationship between "
9944 "processes mirrors the parental relationship between PID namespaces: the "
9945 "parent of a process is either in the same namespace or resides in the "
9946 "immediate parent PID namespace."
9947 msgstr ""
9948
9949 #. type: SS
9950 #: build/C/man7/pid_namespaces.7:218
9951 #, no-wrap
9952 msgid "Compatibility of CLONE_NEWPID with other CLONE_* flags"
9953 msgstr ""
9954
9955 #. type: Plain text
9956 #: build/C/man7/pid_namespaces.7:223
9957 msgid "B<CLONE_NEWPID> can't be combined with some other B<CLONE_*> flags:"
9958 msgstr ""
9959
9960 #. type: Plain text
9961 #: build/C/man7/pid_namespaces.7:231
9962 msgid ""
9963 "B<CLONE_THREAD> requires being in the same PID namespace in order that that "
9964 "the threads in a process can send signals to each other.  Similarly, it must "
9965 "be possible to see all of the threads of a processes in the B<proc>(5)  "
9966 "filesystem."
9967 msgstr ""
9968
9969 #. type: Plain text
9970 #: build/C/man7/pid_namespaces.7:242
9971 msgid ""
9972 "B<CLONE_SIGHAND> requires being in the same PID namespace; otherwise the "
9973 "process ID of the process sending a signal could not be meaningfully encoded "
9974 "when a signal is sent (see the description of the I<siginfo_t> type in "
9975 "B<sigaction>(2)).  A signal queue shared by processes in multiple PID "
9976 "namespaces will defeat that."
9977 msgstr ""
9978
9979 #. type: Plain text
9980 #: build/C/man7/pid_namespaces.7:252
9981 msgid ""
9982 "B<CLONE_VM> requires all of the threads to be in the same PID namespace, "
9983 "because, from the point of view of a core dump, if two processes share the "
9984 "same address space then they are threads and will be core dumped together.  "
9985 "When a core dump is written, the PID of each thread is written into the core "
9986 "dump.  Writing the process IDs could not meaningfully succeed if some of the "
9987 "process IDs were in a parent PID namespace."
9988 msgstr ""
9989
9990 #. type: Plain text
9991 #: build/C/man7/pid_namespaces.7:270
9992 msgid ""
9993 "To summarize: there is a technical requirement for each of B<CLONE_THREAD>, "
9994 "B<CLONE_SIGHAND>, and B<CLONE_VM> to share a PID namespace.  (Note "
9995 "furthermore that in B<clone>(2)  requires B<CLONE_VM> to be specified if "
9996 "B<CLONE_THREAD> or B<CLONE_SIGHAND> is specified.)  Thus, call sequences "
9997 "such as the following will fail (with the error B<EINVAL>):"
9998 msgstr ""
9999
10000 #. type: Plain text
10001 #: build/C/man7/pid_namespaces.7:274
10002 #, no-wrap
10003 msgid ""
10004 "    unshare(CLONE_NEWPID);\n"
10005 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10006 msgstr ""
10007
10008 #. type: Plain text
10009 #: build/C/man7/pid_namespaces.7:277
10010 #, no-wrap
10011 msgid ""
10012 "    setns(fd, CLONE_NEWPID);\n"
10013 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10014 msgstr ""
10015
10016 #. type: Plain text
10017 #: build/C/man7/pid_namespaces.7:280
10018 #, no-wrap
10019 msgid ""
10020 "    clone(..., CLONE_VM, ...);\n"
10021 "    setns(fd, CLONE_NEWPID);      /* Fails */\n"
10022 msgstr ""
10023
10024 #. type: Plain text
10025 #: build/C/man7/pid_namespaces.7:283
10026 #, no-wrap
10027 msgid ""
10028 "    clone(..., CLONE_VM, ...);\n"
10029 "    unshare(CLONE_NEWPID);        /* Fails */\n"
10030 msgstr ""
10031
10032 #
10033 #.  ============================================================
10034 #. type: SS
10035 #: build/C/man7/pid_namespaces.7:287
10036 #, no-wrap
10037 msgid "/proc and PID namespaces"
10038 msgstr ""
10039
10040 #. type: Plain text
10041 #: build/C/man7/pid_namespaces.7:296
10042 msgid ""
10043 "A I</proc> filesystem shows (in the I</proc/PID> directories) only processes "
10044 "visible in the PID namespace of the process that performed the mount, even "
10045 "if the I</proc> filesystem is viewed from processes in other namespaces."
10046 msgstr ""
10047
10048 #. type: Plain text
10049 #: build/C/man7/pid_namespaces.7:315
10050 msgid ""
10051 "After creating a new PID namespace, it is useful for the child to change its "
10052 "root directory and mount a new procfs instance at I</proc> so that tools "
10053 "such as B<ps>(1)  work correctly.  If a new mount namespace is "
10054 "simultaneously created by including B<CLONE_NEWNS> in the I<flags> argument "
10055 "of B<clone>(2)  or B<unshare>(2), then it isn't necessary to change the root "
10056 "directory: a new procfs instance can be mounted directly over I</proc>."
10057 msgstr ""
10058
10059 #. type: Plain text
10060 #: build/C/man7/pid_namespaces.7:319
10061 msgid "From a shell, the command to mount I</proc> is:"
10062 msgstr ""
10063
10064 #. type: Plain text
10065 #: build/C/man7/pid_namespaces.7:321
10066 #, no-wrap
10067 msgid "    $ mount -t proc proc /proc\n"
10068 msgstr ""
10069
10070 #
10071 #.  ============================================================
10072 #. type: Plain text
10073 #: build/C/man7/pid_namespaces.7:333
10074 msgid ""
10075 "Calling B<readlink>(2)  on the path I</proc/self> yields the process ID of "
10076 "the caller in the PID namespace of the procfs mount (i.e., the PID namespace "
10077 "of the process that mounted the procfs).  This can be useful for "
10078 "introspection purposes, when a process wants to discover its PID in other "
10079 "namespaces."
10080 msgstr ""
10081
10082 #. type: SS
10083 #: build/C/man7/pid_namespaces.7:333 build/C/man7/user_namespaces.7:635
10084 #, no-wrap
10085 msgid "Miscellaneous"
10086 msgstr ""
10087
10088 #. type: Plain text
10089 #: build/C/man7/pid_namespaces.7:341
10090 msgid ""
10091 "When a process ID is passed over a UNIX domain socket to a process in a "
10092 "different PID namespace (see the description of B<SCM_CREDENTIALS> in "
10093 "B<unix>(7)), it is translated into the corresponding PID value in the "
10094 "receiving process's PID namespace."
10095 msgstr ""
10096
10097 #. type: Plain text
10098 #: build/C/man7/pid_namespaces.7:355
10099 msgid ""
10100 "B<clone>(2), B<setns>(2), B<unshare>(2), B<proc>(5), B<credentials>(7), "
10101 "B<capabilities>(7), B<user_namespaces>(7), B<switch_root>(8)"
10102 msgstr ""
10103 "B<clone>(2), B<setns>(2), B<unshare>(2), B<proc>(5), B<credentials>(7), "
10104 "B<capabilities>(7), B<user_namespaces>(7), B<switch_root>(8)"
10105
10106 #. type: TH
10107 #: build/C/man2/seteuid.2:29
10108 #, no-wrap
10109 msgid "SETEUID"
10110 msgstr "SETEUID"
10111
10112 #. type: Plain text
10113 #: build/C/man2/seteuid.2:32
10114 msgid "seteuid, setegid - set effective user or group ID"
10115 msgstr "seteuid, setegid - 実効ユーザー ID や 実効グループ ID を設定する"
10116
10117 #. type: Plain text
10118 #: build/C/man2/seteuid.2:38
10119 msgid "B<int seteuid(uid_t >I<euid>B<);>"
10120 msgstr "B<int seteuid(uid_t >I<euid>B<);>"
10121
10122 #. type: Plain text
10123 #: build/C/man2/seteuid.2:40
10124 msgid "B<int setegid(gid_t >I<egid>B<);>"
10125 msgstr "B<int setegid(gid_t >I<egid>B<);>"
10126
10127 #. type: Plain text
10128 #: build/C/man2/seteuid.2:49
10129 msgid "B<seteuid>(), B<setegid>():"
10130 msgstr "B<seteuid>(), B<setegid>():"
10131
10132 #. type: Plain text
10133 #: build/C/man2/seteuid.2:51
10134 msgid ""
10135 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>="
10136 "\\ 600"
10137 msgstr ""
10138 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>="
10139 "\\ 600"
10140
10141 #. type: Plain text
10142 #: build/C/man2/seteuid.2:58
10143 msgid ""
10144 "B<seteuid>()  sets the effective user ID of the calling process.  "
10145 "Unprivileged user processes may only set the effective user ID to the real "
10146 "user ID, the effective user ID or the saved set-user-ID."
10147 msgstr ""
10148 "B<seteuid>()  は呼び出し元のプロセスの実効ユーザー ID を設定する。 非特権ユー"
10149 "ザーのプロセスの場合、実効ユーザー ID に設定できるのは、 実ユーザー ID・実効"
10150 "ユーザー ID・保存 set-user-ID のいずれかだけである。"
10151
10152 #.  When
10153 #.  .I euid
10154 #.  equals \-1, nothing is changed.
10155 #.  (This is an artifact of the implementation in glibc of seteuid()
10156 #.  using setresuid(2).)
10157 #. type: Plain text
10158 #: build/C/man2/seteuid.2:67
10159 msgid ""
10160 "Precisely the same holds for B<setegid>()  with \"group\" instead of \"user"
10161 "\"."
10162 msgstr ""
10163 "B<setegid>()  は「ユーザー」ではなく「グループ」に対して全く同じことを行う。"
10164
10165 #. type: Plain text
10166 #: build/C/man2/seteuid.2:79
10167 msgid ""
10168 "I<Note>: there are cases where B<seteuid>()  can fail even when the caller "
10169 "is UID 0; it is a grave security error to omit checking for a failure return "
10170 "from B<seteuid>()."
10171 msgstr ""
10172
10173 #. type: Plain text
10174 #: build/C/man2/seteuid.2:83
10175 msgid "The target user or group ID is not valid in this user namespace."
10176 msgstr ""
10177
10178 #. type: Plain text
10179 #: build/C/man2/seteuid.2:99
10180 msgid ""
10181 "The calling process is not privileged (Linux: does not have the "
10182 "B<CAP_SETUID> capability in the case of B<seteuid>(), or the B<CAP_SETGID> "
10183 "capability in the case of B<setegid>())  and I<euid> (respectively, "
10184 "I<egid>)  is not the real user (group) ID, the effective user (group) ID, or "
10185 "the saved set-user-ID (saved set-group-ID)."
10186 msgstr ""
10187 "呼び出し元のプロセスに特権がなく、 I<euid> (I<egid>)  が実ユーザー (グルー"
10188 "プ) ID、または実効ユーザー (グループ) ID、 保存 set-user-ID (保存 set-group-"
10189 "ID) のいずれでもではない (Linux においては、 B<seteuid>()  では "
10190 "B<CAP_SETUID> ケーパビリティ (capability) が、 B<setegid>()  では "
10191 "B<CAP_SETGID> ケーパビリティがない場合に、特権がないと判断される)。"
10192
10193 #. type: Plain text
10194 #: build/C/man2/seteuid.2:101
10195 msgid "4.3BSD, POSIX.1-2001."
10196 msgstr "4.3BSD, POSIX.1-2001."
10197
10198 #. type: Plain text
10199 #: build/C/man2/seteuid.2:107
10200 msgid ""
10201 "Setting the effective user (group) ID to the saved set-user-ID (saved set-"
10202 "group-ID) is possible since Linux 1.1.37 (1.1.38).  On an arbitrary system "
10203 "one should check B<_POSIX_SAVED_IDS>."
10204 msgstr ""
10205 "実効ユーザー (グループ) ID を保存 set-user-ID (保存 set-group-ID) に 設定でき"
10206 "るのは、Linux 1.1.37 (1.1.38) 以降である。 全てのシステムにおいて "
10207 "B<_POSIX_SAVED_IDS> をチェックすべきである。"
10208
10209 #. type: Plain text
10210 #: build/C/man2/seteuid.2:123
10211 msgid ""
10212 "Under glibc 2.0 B<seteuid(>I<euid>B<)> is equivalent to B<setreuid(-1,>I< "
10213 "euid>B<)> and hence may change the saved set-user-ID.  Under glibc 2.1 and "
10214 "later it is equivalent to B<setresuid(-1,>I< euid>B<, -1)> and hence does "
10215 "not change the saved set-user-ID.  Analogous remarks hold for B<setegid>(), "
10216 "with the difference that the change in implementation from B<setregid(-1,>I< "
10217 "egid>B<)> to B<setresgid(-1,>I< egid>B<, -1)> occurred in glibc 2.2 or 2.3 "
10218 "(depending on the hardware architecture)."
10219 msgstr "glibc 2.0 では、 B<seteuid(>I<euid>B<)> は B<setreuid(-1,>I< euid>B<)> と等価であり、保存 set-user-ID を変更するかもしれない。 glibc 2.1 では、 B<setresuid(-1,>I< euid>B<, -1)> と等価であり、保存 set-user-ID 変更しない。 同様のことが B<setegid>() にも言えるが、 glibc 2.2 か 2.3 で、 実装が B<setregid(-1,>I< egid>B<)> から B<setresgid(-1,>I< egid>B<, -1)> へ変更された点だけが違う (どの glibc バージョンで変更が行われたかは、ハードウェアアーキテクチャによって異なる)。"
10220
10221 #. type: Plain text
10222 #: build/C/man2/seteuid.2:132
10223 msgid ""
10224 "According to POSIX.1, B<seteuid>()  (B<setegid>())  need not permit I<euid> "
10225 "(I<egid>)  to be the same value as the current effective user (group) ID, "
10226 "and some implementations do not permit this."
10227 msgstr ""
10228 "POSIX.1 では、 B<seteuid>()  (B<setegid>())  で、 I<euid> (I<egid>)  として現"
10229 "在の実効ユーザ (グループ) ID と同じ値を指定可能である 必要はないとされてお"
10230 "り、いくつかの実装では I<euid> (I<egid>)  として現在の実効ユーザ (グループ) "
10231 "ID と同じ値を 指定することができない。"
10232
10233 #. type: Plain text
10234 #: build/C/man2/seteuid.2:141
10235 msgid ""
10236 "On Linux, B<seteuid>()  and B<setegid>()  are implemented as library "
10237 "functions that call, respectively, B<setreuid>(2)  and B<setresgid>(2)."
10238 msgstr ""
10239
10240 #. type: Plain text
10241 #: build/C/man2/seteuid.2:149
10242 msgid ""
10243 "B<geteuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
10244 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
10245 msgstr ""
10246 "B<geteuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
10247 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
10248
10249 #. type: TH
10250 #: build/C/man2/setfsgid.2:31
10251 #, no-wrap
10252 msgid "SETFSGID"
10253 msgstr "SETFSGID"
10254
10255 #. type: TH
10256 #: build/C/man2/setfsgid.2:31 build/C/man2/setfsuid.2:31
10257 #, no-wrap
10258 msgid "2013-08-08"
10259 msgstr "2013-08-08"
10260
10261 #. type: Plain text
10262 #: build/C/man2/setfsgid.2:34
10263 msgid "setfsgid - set group identity used for filesystem checks"
10264 msgstr ""
10265 "setfsgid - ファイルシステムのチェックに用いられるグループ ID を設定する"
10266
10267 #. type: Plain text
10268 #: build/C/man2/setfsgid.2:36 build/C/man2/setfsuid.2:36
10269 msgid "B<#include E<lt>sys/fsuid.hE<gt>>"
10270 msgstr "B<#include E<lt>sys/fsuid.hE<gt>>"
10271
10272 #. type: Plain text
10273 #: build/C/man2/setfsgid.2:38
10274 msgid "B<int setfsgid(uid_t >I<fsgid>B<);>"
10275 msgstr "B<int setfsgid(uid_t >I<fsgid>B<);>"
10276
10277 #. type: Plain text
10278 #: build/C/man2/setfsgid.2:51
10279 msgid ""
10280 "The system call B<setfsgid>()  changes the value of the caller's filesystem "
10281 "group ID\\(emthe group ID that the Linux kernel uses to check for all "
10282 "accesses to the filesystem.  Normally, the value of the filesystem group ID "
10283 "will shadow the value of the effective group ID.  In fact, whenever the "
10284 "effective group ID is changed, the filesystem group ID will also be changed "
10285 "to the new value of the effective group ID."
10286 msgstr ""
10287 "システムコール B<setfsgid>() は、 呼び出し元のファイルシステムグループ ID "
10288 "\\(em ファイルシステムへの全てのアクセスのチェックにおいて Linux カーネルが使"
10289 "用するグループ ID \\(em の値を変更する。通常はファイルシステムグループ ID の"
10290 "値は実効 (effective) グループ ID と同じになる。実際、 実効グループ ID が変更"
10291 "される度にファイルシステムグループ ID もまた新しい実効グループ ID の値に変更"
10292 "される。"
10293
10294 #. type: Plain text
10295 #: build/C/man2/setfsgid.2:62
10296 msgid ""
10297 "Explicit calls to B<setfsuid>(2)  and B<setfsgid>()  are usually used only "
10298 "by programs such as the Linux NFS server that need to change what user and "
10299 "group ID is used for file access without a corresponding change in the real "
10300 "and effective user and group IDs.  A change in the normal user IDs for a "
10301 "program such as the NFS server is a security hole that can expose it to "
10302 "unwanted signals.  (But see below.)"
10303 msgstr ""
10304 "通常、 B<setfsuid>()  や B<setfsgid>() を明示的に呼び出すのは、Linux NFS サー"
10305 "バー のように、 ファイルアクセスに用いるユーザID / グループID を変更しなけれ"
10306 "ばならないが、 対応する実(real)/実効(effective) ユーザID / グループID は変更"
10307 "したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通"
10308 "常のユーザID を変更すると、 プロセスを望まないシグナルにさらす可能性があり、 "
10309 "セキュリティホールになる。(下記参照)"
10310
10311 #. type: Plain text
10312 #: build/C/man2/setfsgid.2:68
10313 msgid ""
10314 "B<setfsgid>()  will succeed only if the caller is the superuser or if "
10315 "I<fsgid> matches either the caller's real group ID, effective group ID, "
10316 "saved set-group-ID, or current the filesystem user ID."
10317 msgstr ""
10318 "B<setfsgid>()  は、スーパーユーザによって呼び出された場合か、 I<fsgid> が呼び"
10319 "出し元の実グループID、実効グループID、 保存セットグループID (saved set-group-"
10320 "ID)、現在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功"
10321 "する。"
10322
10323 #. type: Plain text
10324 #: build/C/man2/setfsgid.2:71
10325 msgid ""
10326 "On both success and failure, this call returns the previous filesystem group "
10327 "ID of the caller."
10328 msgstr ""
10329 "成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムグループ "
10330 "ID の値を返す。"
10331
10332 #.  This system call is present since Linux 1.1.44
10333 #.  and in libc since libc 4.7.6.
10334 #. type: Plain text
10335 #: build/C/man2/setfsgid.2:75 build/C/man2/setfsuid.2:75
10336 msgid "This system call is present in Linux since version 1.2."
10337 msgstr "このシステムコールはバージョン 1.2 以降の Linux に存在する。"
10338
10339 #. type: Plain text
10340 #: build/C/man2/setfsgid.2:79
10341 msgid ""
10342 "B<setfsgid>()  is Linux-specific and should not be used in programs intended "
10343 "to be portable."
10344 msgstr ""
10345 "B<setfsgid>()  は Linux 特有であり、移植を想定したプログラムで使用してはいけ"
10346 "ない。"
10347
10348 #. type: Plain text
10349 #: build/C/man2/setfsgid.2:85
10350 msgid ""
10351 "When glibc determines that the argument is not a valid group ID, it will "
10352 "return -1 and set I<errno> to B<EINVAL> without attempting the system call."
10353 msgstr ""
10354 "glibc が引き数がグループID として不正だと判断した場合は、 システムコールを行"
10355 "わず I<errno> に B<EINVAL> を設定して -1 が返される。"
10356
10357 #. type: Plain text
10358 #: build/C/man2/setfsgid.2:96
10359 msgid ""
10360 "Note that at the time this system call was introduced, a process could send "
10361 "a signal to a process with the same effective user ID.  Today signal "
10362 "permission handling is slightly different.  See B<setfsuid>(2)  for a "
10363 "discussion of why the use of both B<setfsuid>(2)  and B<setfsgid>()  is "
10364 "nowadays unneeded."
10365 msgstr ""
10366 "このシステムコールが導入された当時、プロセスは 同じ実効ユーザIDのプロセスへシ"
10367 "グナルを送ることができた。 今日では、シグナル送信権限の扱いはかなり違うものに"
10368 "なっている。 なぜ今日では B<setfsuid>(2) と B<setfsgid>() の両者が不要なのか"
10369 "の議論については B<setfsuid>(2) を参照のこと。"
10370
10371 #. type: Plain text
10372 #: build/C/man2/setfsgid.2:106
10373 msgid ""
10374 "The original Linux B<setfsgid>()  system call supported only 16-bit group "
10375 "IDs.  Subsequently, Linux 2.4 added B<setfsgid32>()  supporting 32-bit IDs.  "
10376 "The glibc B<setfsgid>()  wrapper function transparently deals with the "
10377 "variation across kernel versions."
10378 msgstr ""
10379 "元々の Linux の B<setfsgid>() システムコールは\n"
10380 "16 ビットのグループ ID だけに対応していた。\n"
10381 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10382 "B<setfsgid32>() が追加された。\n"
10383 "glibc の B<setfsgid>() のラッパー関数は\n"
10384 "カーネルバージョンによるこの違いを吸収している。"
10385
10386 #. type: Plain text
10387 #: build/C/man2/setfsgid.2:123
10388 msgid ""
10389 "No error indications of any kind are returned to the caller, and the fact "
10390 "that both successful and unsuccessful calls return the same value makes it "
10391 "impossible to directly determine whether the call succeeded or failed.  "
10392 "Instead, the caller must resort to looking at the return value from a "
10393 "further call such as I<setfsgid(-1)> (which will always fail), in order to "
10394 "determine if a preceding call to B<setfsgid>()  changed the filesystem group "
10395 "ID.  At the very least, B<EPERM> should be returned when the call fails "
10396 "(because the caller lacks the B<CAP_SETGID> capability)."
10397 msgstr ""
10398 "いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出し"
10399 "は同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできな"
10400 "い。 その代わり、 直前の B<setfsgid>() の呼び出しがファイルシステムグループ "
10401 "ID を変更したかどうかを判定するために、 呼び出し元はこの後に I<setfsgid(-1)> "
10402 "などを呼び出して返り値を見なければならない (I<setfsgid(-1)> は常に失敗す"
10403 "る)。 最低でも、失敗した場合は B<EPERM> くらいは返すべきである (呼び出し元に"
10404 "は B<CAP_SETGID> ケーパビリティがなかったのだから)。"
10405
10406 #. type: Plain text
10407 #: build/C/man2/setfsgid.2:128
10408 msgid "B<kill>(2), B<setfsuid>(2), B<capabilities>(7), B<credentials>(7)"
10409 msgstr "B<kill>(2), B<setfsuid>(2), B<capabilities>(7), B<credentials>(7)"
10410
10411 #. type: TH
10412 #: build/C/man2/setfsuid.2:31
10413 #, no-wrap
10414 msgid "SETFSUID"
10415 msgstr "SETFSUID"
10416
10417 #. type: Plain text
10418 #: build/C/man2/setfsuid.2:34
10419 msgid "setfsuid - set user identity used for filesystem checks"
10420 msgstr "setfsuid - ファイルシステムのチェックに用いられるユーザ ID を設定する"
10421
10422 #. type: Plain text
10423 #: build/C/man2/setfsuid.2:38
10424 msgid "B<int setfsuid(uid_t >I<fsuid>B<);>"
10425 msgstr "B<int setfsuid(uid_t >I<fsuid>B<);>"
10426
10427 #. type: Plain text
10428 #: build/C/man2/setfsuid.2:51
10429 msgid ""
10430 "The system call B<setfsuid>()  changes the value of the caller's filesystem "
10431 "user ID\\(emthe user ID that the Linux kernel uses to check for all accesses "
10432 "to the filesystem.  Normally, the value of the filesystem user ID will "
10433 "shadow the value of the effective user ID.  In fact, whenever the effective "
10434 "user ID is changed, the filesystem user ID will also be changed to the new "
10435 "value of the effective user ID."
10436 msgstr ""
10437 "B<setfsuid>()  は、 呼び出し元のファイルシステムユーザー ID \\(em ファイルシ"
10438 "ステムへの全てのアクセスのチェックにおいて Linux カーネルが使用するユーザ ID "
10439 "\\(em の値を変更する。通常はファイルシステムユーザー ID の値は実効 "
10440 "(effective) ユーザID と同じになる。実際、 実効ユーザID が変更される度にファイ"
10441 "ルシステムユーザー ID もまた新しい実効ユーザ ID の値に変更される。"
10442
10443 #. type: Plain text
10444 #: build/C/man2/setfsuid.2:62
10445 msgid ""
10446 "Explicit calls to B<setfsuid>()  and B<setfsgid>(2)  are usually used only "
10447 "by programs such as the Linux NFS server that need to change what user and "
10448 "group ID is used for file access without a corresponding change in the real "
10449 "and effective user and group IDs.  A change in the normal user IDs for a "
10450 "program such as the NFS server is a security hole that can expose it to "
10451 "unwanted signals.  (But see below.)"
10452 msgstr ""
10453 "通常、 B<setfsuid>()  や B<setfsgid>() を明示的に呼び出すのは、Linux NFS サー"
10454 "バー のように、 ファイルアクセスに用いるユーザID / グループID を変更しなけれ"
10455 "ばならないが、 対応する実(real)/実効(effective) ユーザID / グループID は変更"
10456 "したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通"
10457 "常のユーザID を変更すると、 プロセスを望まないシグナルにさらす可能性があり、 "
10458 "セキュリティホールになる。(下記参照)"
10459
10460 #. type: Plain text
10461 #: build/C/man2/setfsuid.2:68
10462 msgid ""
10463 "B<setfsuid>()  will succeed only if the caller is the superuser or if "
10464 "I<fsuid> matches either the caller's real user ID, effective user ID, saved "
10465 "set-user-ID, or current filesystem user ID."
10466 msgstr ""
10467 "B<setfsuid>()  は、スーパーユーザによって呼び出された場合か、 I<fsuid> が呼び"
10468 "出し元の実ユーザID、実効ユーザID、 保存セットユーザID (saved set-user-ID)、現"
10469 "在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功する。"
10470
10471 #. type: Plain text
10472 #: build/C/man2/setfsuid.2:71
10473 msgid ""
10474 "On both success and failure, this call returns the previous filesystem user "
10475 "ID of the caller."
10476 msgstr ""
10477 "成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムユーザー "
10478 "ID の値を返す。"
10479
10480 #. type: Plain text
10481 #: build/C/man2/setfsuid.2:79
10482 msgid ""
10483 "B<setfsuid>()  is Linux-specific and should not be used in programs intended "
10484 "to be portable."
10485 msgstr ""
10486 "B<setfsuid>()  は Linux 特有であり、移植を想定したプログラムで使用してはいけ"
10487 "ない。"
10488
10489 #. type: Plain text
10490 #: build/C/man2/setfsuid.2:85
10491 msgid ""
10492 "When glibc determines that the argument is not a valid user ID, it will "
10493 "return -1 and set I<errno> to B<EINVAL> without attempting the system call."
10494 msgstr ""
10495 "glibc が引き数がユーザID として不正だと判断した場合は、 システムコールを行わ"
10496 "ず I<errno> に B<EINVAL> を設定して -1 が返される。"
10497
10498 #. type: Plain text
10499 #: build/C/man2/setfsuid.2:104
10500 msgid ""
10501 "At the time when this system call was introduced, one process could send a "
10502 "signal to another process with the same effective user ID.  This meant that "
10503 "if a privileged process changed its effective user ID for the purpose of "
10504 "file permission checking, then it could become vulnerable to receiving "
10505 "signals sent by another (unprivileged) process with the same user ID.  The "
10506 "filesystem user ID attribute was thus added to allow a process to change its "
10507 "user ID for the purposes of file permission checking without at the same "
10508 "time becoming vulnerable to receiving unwanted signals.  Since Linux 2.0, "
10509 "signal permission handling is different (see B<kill>(2)), with the result "
10510 "that a process change can change its effective user ID without being "
10511 "vulnerable to receiving signals from unwanted processes.  Thus, "
10512 "B<setfsuid>()  is nowadays unneeded and should be avoided in new "
10513 "applications (likewise for B<setfsgid>(2))."
10514 msgstr ""
10515 "このシステムコールが導入された当時、 あるプロセスは同じ実効ユーザー ID を持つ"
10516 "別のプロセスにシグナルを送信できた。 これは、 特権プロセスがファイルのアクセ"
10517 "ス許可をチェックするために自身の実効ユーザー ID を変更すると、 同じユーザー "
10518 "ID を持つ別の (非特権) プロセスが送信したシグナルを受け取るようになってしまう"
10519 "ことを意味する。そのため、 プロセスが、 受け取りたくないシグナルを受信する状"
10520 "態にならずに、 ファイルのアクセス許可をチェックするために自身のユーザー ID を"
10521 "変更できるように、 ファイルシステムユーザー ID 属性が追加された。 Linux 2.0 "
10522 "以降では、 シグナルの送信許可の扱いは異なり (B<kill>(2) 参照)、 プロセスは、 "
10523 "望まないプロセスからシグナルを受信してしまう状態にならずに、 自身の実効ユー"
10524 "ザー ID を変更することができる。 したがって、 B<setfsuid>() は今日では不要で"
10525 "あり、 新規のアプリケーションでは使用すべきではない (B<setfsgid>(2) も同様)。"
10526
10527 #. type: Plain text
10528 #: build/C/man2/setfsuid.2:114
10529 msgid ""
10530 "The original Linux B<setfsuid>()  system call supported only 16-bit user "
10531 "IDs.  Subsequently, Linux 2.4 added B<setfsuid32>()  supporting 32-bit IDs.  "
10532 "The glibc B<setfsuid>()  wrapper function transparently deals with the "
10533 "variation across kernel versions."
10534 msgstr ""
10535 "元々の Linux の B<setfsuid>() システムコールは\n"
10536 "16 ビットのグループ ID だけに対応していた。\n"
10537 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10538 "B<setfsuid32>() が追加された。\n"
10539 "glibc の B<setfsuid>() のラッパー関数は\n"
10540 "カーネルバージョンによるこの違いを吸収している。"
10541
10542 #. type: Plain text
10543 #: build/C/man2/setfsuid.2:131
10544 msgid ""
10545 "No error indications of any kind are returned to the caller, and the fact "
10546 "that both successful and unsuccessful calls return the same value makes it "
10547 "impossible to directly determine whether the call succeeded or failed.  "
10548 "Instead, the caller must resort to looking at the return value from a "
10549 "further call such as I<setfsuid(-1)> (which will always fail), in order to "
10550 "determine if a preceding call to B<setfsuid>()  changed the filesystem user "
10551 "ID.  At the very least, B<EPERM> should be returned when the call fails "
10552 "(because the caller lacks the B<CAP_SETUID> capability)."
10553 msgstr ""
10554 "いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出し"
10555 "は同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできな"
10556 "い。 その代わり、 直前の B<setfsuid>() の呼び出しがファイルシステムグループ "
10557 "ID を変更したかどうかを判定するために、 呼び出し元はこの後に I<setfsuid(-1)> "
10558 "などを呼び出して返り値を見なければならない (I<setfsuid(-1)> は常に失敗す"
10559 "る)。 最低でも、失敗した場合は B<EPERM> くらいは返すべきである (呼び出し元に"
10560 "は B<CAP_SETUID> ケーパビリティがなかったのだから)。"
10561
10562 #. type: Plain text
10563 #: build/C/man2/setfsuid.2:136
10564 msgid "B<kill>(2), B<setfsgid>(2), B<capabilities>(7), B<credentials>(7)"
10565 msgstr "B<kill>(2), B<setfsgid>(2), B<capabilities>(7), B<credentials>(7)"
10566
10567 #. type: TH
10568 #: build/C/man2/setgid.2:29
10569 #, no-wrap
10570 msgid "SETGID"
10571 msgstr "SETGID"
10572
10573 #. type: Plain text
10574 #: build/C/man2/setgid.2:32
10575 msgid "setgid - set group identity"
10576 msgstr "setgid - グループ識別(identity)を設定する"
10577
10578 #. type: Plain text
10579 #: build/C/man2/setgid.2:38
10580 msgid "B<int setgid(gid_t >I<gid>B<);>"
10581 msgstr "B<int setgid(gid_t >I<gid>B<);>"
10582
10583 #. type: Plain text
10584 #: build/C/man2/setgid.2:43
10585 msgid ""
10586 "B<setgid>()  sets the effective group ID of the calling process.  If the "
10587 "caller is the superuser, the real GID and saved set-group-ID are also set."
10588 msgstr ""
10589 "B<setgid>()  は呼び出し元のプロセスの実効 (effective) グループID を設定す"
10590 "る。 もしスーパーユーザーによって呼び出された場合は、 実 (real) グループID と"
10591 "保存 (saved) set-group-ID も設定される。"
10592
10593 #. type: Plain text
10594 #: build/C/man2/setgid.2:53
10595 msgid ""
10596 "Under Linux, B<setgid>()  is implemented like the POSIX version with the "
10597 "B<_POSIX_SAVED_IDS> feature.  This allows a set-group-ID program that is not "
10598 "set-user-ID-root to drop all of its group privileges, do some un-privileged "
10599 "work, and then reengage the original effective group ID in a secure manner."
10600 msgstr ""
10601 "Linux において、 B<setgid>()  は B<_POSIX_SAVED_IDS> をもった POSIX 版のよう"
10602 "に実装されている。 これは set-user-ID-root でない set-group-ID プログラムにそ"
10603 "のグループの 特権の全て落とし、特権の必要ない仕事をし、本来の実効グループID "
10604 "に 安全な方法で再び戻すことを許す。"
10605
10606 #. type: Plain text
10607 #: build/C/man2/setgid.2:64
10608 msgid "The group ID specified in I<gid> is not valid in this user namespace."
10609 msgstr ""
10610
10611 #. type: Plain text
10612 #: build/C/man2/setgid.2:71
10613 msgid ""
10614 "The calling process is not privileged (does not have the B<CAP_SETGID> "
10615 "capability), and I<gid> does not match the real group ID or saved set-group-"
10616 "ID of the calling process."
10617 msgstr ""
10618 "呼び出し元のプロセスに権限がなく (B<CAP_SETGID> ケーパビリティがなく)、かつ "
10619 "I<gid> が呼び出し元のプロセスの実グループID と保存セットグループID のどちらと"
10620 "も一致しない。"
10621
10622 #. type: Plain text
10623 #: build/C/man2/setgid.2:83
10624 msgid ""
10625 "The original Linux B<setgid>()  system call supported only 16-bit group "
10626 "IDs.  Subsequently, Linux 2.4 added B<setgid32>()  supporting 32-bit IDs.  "
10627 "The glibc B<setgid>()  wrapper function transparently deals with the "
10628 "variation across kernel versions."
10629 msgstr ""
10630 "元々の Linux の B<setgid>() システムコールは\n"
10631 "16 ビットのグループ ID だけに対応していた。\n"
10632 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10633 "B<setgid32>() が追加された。\n"
10634 "glibc の B<setgid>() のラッパー関数は\n"
10635 "カーネルバージョンによるこの違いを吸収している。"
10636
10637 #. type: Plain text
10638 #: build/C/man2/setgid.2:90
10639 msgid ""
10640 "B<getgid>(2), B<setegid>(2), B<setregid>(2), B<capabilities>(7), "
10641 "B<credentials>(7), B<user_namespaces>(7)"
10642 msgstr ""
10643 "B<getgid>(2), B<setegid>(2), B<setregid>(2), B<capabilities>(7), "
10644 "B<credentials>(7), B<user_namespaces>(7)"
10645
10646 #. type: TH
10647 #: build/C/man2/setpgid.2:48
10648 #, no-wrap
10649 msgid "SETPGID"
10650 msgstr "SETPGID"
10651
10652 #. type: TH
10653 #: build/C/man2/setpgid.2:48
10654 #, no-wrap
10655 msgid "2014-01-07"
10656 msgstr "2014-01-07"
10657
10658 #. type: Plain text
10659 #: build/C/man2/setpgid.2:51
10660 msgid "setpgid, getpgid, setpgrp, getpgrp - set/get process group"
10661 msgstr "setpgid, getpgid, setpgrp, getpgrp - プロセスグループの設定/取得を行う"
10662
10663 #. type: Plain text
10664 #: build/C/man2/setpgid.2:55
10665 msgid "B<int setpgid(pid_t >I<pid>B<, pid_t >I<pgid>B<);>"
10666 msgstr "B<int setpgid(pid_t >I<pid>B<, pid_t >I<pgid>B<);>"
10667
10668 #. type: Plain text
10669 #: build/C/man2/setpgid.2:57
10670 msgid "B<pid_t getpgid(pid_t >I<pid>B<);>"
10671 msgstr "B<pid_t getpgid(pid_t >I<pid>B<);>"
10672
10673 #. type: Plain text
10674 #: build/C/man2/setpgid.2:59
10675 msgid "B<pid_t getpgrp(void);> /* POSIX.1 version */"
10676 msgstr "B<pid_t getpgrp(void);> /* POSIX.1 version */"
10677
10678 #. type: Plain text
10679 #: build/C/man2/setpgid.2:62
10680 msgid ""
10681 "B<pid_t getpgrp(pid_t >I<pid>B<);\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ > /* BSD "
10682 "version */"
10683 msgstr ""
10684 "B<pid_t getpgrp(pid_t >I<pid>B<);\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ > /* BSD "
10685 "version */"
10686
10687 #. type: Plain text
10688 #: build/C/man2/setpgid.2:64
10689 msgid "B<int setpgrp(void);> /* System V version */"
10690 msgstr "B<int setpgrp(void);> /* System V version */"
10691
10692 #. type: Plain text
10693 #: build/C/man2/setpgid.2:67
10694 msgid "B<int setpgrp(pid_t >I<pid>B<, pid_t >I<pgid>B<);\\ > /* BSD version */"
10695 msgstr ""
10696 "B<int setpgrp(pid_t >I<pid>B<, pid_t >I<pgid>B<);\\ > /* BSD version */"
10697
10698 #. type: Plain text
10699 #: build/C/man2/setpgid.2:76
10700 msgid "B<getpgid>():"
10701 msgstr "B<getpgid>():"
10702
10703 #. type: Plain text
10704 #: build/C/man2/setpgid.2:84
10705 msgid "B<setpgrp>() (POSIX.1):"
10706 msgstr "B<setpgrp>() (POSIX.1):"
10707
10708 #. type: Plain text
10709 #: build/C/man2/setpgid.2:87
10710 #, no-wrap
10711 msgid ""
10712 "    _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
10713 "    _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED\n"
10714 msgstr ""
10715 "    _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
10716 "    _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED\n"
10717
10718 #. type: Plain text
10719 #: build/C/man2/setpgid.2:89
10720 #, no-wrap
10721 msgid "    || /* Since glibc 2.19: */ _BSD_SOURCE\n"
10722 msgstr "    || /* glibc 2.19 以降: */ _BSD_SOURCE\n"
10723
10724 #. type: Plain text
10725 #: build/C/man2/setpgid.2:93
10726 msgid "B<setpgrp>()\\ (BSD), B<getpgrp>()\\ (BSD) [before glibc 2.19]:"
10727 msgstr "B<setpgrp>()\\ (BSD), B<getpgrp>()\\ (BSD) [glibc 2.19 より前]:"
10728
10729 #. type: Plain text
10730 #: build/C/man2/setpgid.2:97
10731 #, no-wrap
10732 msgid ""
10733 "    _BSD_SOURCE &&\n"
10734 "        !\\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||\n"
10735 "           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)\n"
10736 msgstr ""
10737 "    _BSD_SOURCE &&\n"
10738 "        !\\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||\n"
10739 "           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)\n"
10740
10741 #. type: Plain text
10742 #: build/C/man2/setpgid.2:109
10743 msgid ""
10744 "All of these interfaces are available on Linux, and are used for getting and "
10745 "setting the process group ID (PGID) of a process.  The preferred, POSIX.1-"
10746 "specified ways of doing this are: B<getpgrp>(void), for retrieving the "
10747 "calling process's PGID; and B<setpgid>(), for setting a process's PGID."
10748 msgstr ""
10749 "これらのインタフェースすべてが Linux で利用可能で、 これらを使ってプロセスの"
10750 "プロセスグループ ID (PGID) の 取得や設定ができる。 推奨の、POSIX.1 で規定され"
10751 "た方法では、 B<getpgrp>(void)  で呼び出し元プロセスの PGID を取得し、 "
10752 "B<setpgid>()  で設定する。"
10753
10754 #. type: Plain text
10755 #: build/C/man2/setpgid.2:134
10756 msgid ""
10757 "B<setpgid>()  sets the PGID of the process specified by I<pid> to I<pgid>.  "
10758 "If I<pid> is zero, then the process ID of the calling process is used.  If "
10759 "I<pgid> is zero, then the PGID of the process specified by I<pid> is made "
10760 "the same as its process ID.  If B<setpgid>()  is used to move a process from "
10761 "one process group to another (as is done by some shells when creating "
10762 "pipelines), both process groups must be part of the same session (see "
10763 "B<setsid>(2)  and B<credentials>(7)).  In this case, the I<pgid> specifies "
10764 "an existing process group to be joined and the session ID of that group must "
10765 "match the session ID of the joining process."
10766 msgstr ""
10767 "B<setpgid>()  は I<pid> で指定したプロセスの PGID に I<pgid> を設定する。 "
10768 "I<pid> がゼロならば、呼び出し元プロセスのプロセス ID が pid として使用され"
10769 "る。 I<pgid> がゼロならば、 I<pid> で指定されたプロセスの PGID がそのプロセス"
10770 "のプロセス ID と 同じに設定される。 B<setpgid>()  をプロセスをあるプロセスグ"
10771 "ループから別のグループへ 移動するために使用する場合は (一部のシェルはパイプラ"
10772 "インを生成 する時にこれを行う)、両方のプロセスグループは同じセッションの 一部"
10773 "でなければならない (B<setsid>(2)  と B<credentials>(7)  参照)。この場合は "
10774 "I<pgid> は参加すべき既存の プロセスグループを指定し、そのセッション ID は参加"
10775 "するプロセスの セッション ID に一致しなければならない。"
10776
10777 #. type: Plain text
10778 #: build/C/man2/setpgid.2:139
10779 msgid ""
10780 "The POSIX.1 version of B<getpgrp>(), which takes no arguments, returns the "
10781 "PGID of the calling process."
10782 msgstr ""
10783 "POSIX.1 バージョンの B<getpgrp>()  は引き数を一つもとらず、 呼び出し元プロセ"
10784 "スの PGID を返す。"
10785
10786 #. type: Plain text
10787 #: build/C/man2/setpgid.2:150
10788 msgid ""
10789 "B<getpgid>()  returns the PGID of the process specified by I<pid>.  If "
10790 "I<pid> is zero, the process ID of the calling process is used.  (Retrieving "
10791 "the PGID of a process other than the caller is rarely necessary, and the "
10792 "POSIX.1 B<getpgrp>()  is preferred for that task.)"
10793 msgstr ""
10794 "B<getpgid>()  は I<pid> で指定されたプロセスの PGID を返す。 I<pid> がゼロな"
10795 "らば、呼び出し元プロセスのプロセス ID が pid として使用される。 (呼び出し元プ"
10796 "ロセス以外のプロセスの PGID の取得が必要になることは めったになく、呼び出し元"
10797 "プロセスの PGID を取得するには POSIX.1 バージョンの B<getpgrp>()  を使うのが"
10798 "望ましい。)"
10799
10800 #. type: Plain text
10801 #: build/C/man2/setpgid.2:155
10802 msgid ""
10803 "The System\\ V-style B<setpgrp>(), which takes no arguments, is equivalent "
10804 "to I<setpgid(0,\\ 0)>."
10805 msgstr ""
10806 "System\\ V バージョンの B<setpgrp>()  は引き数を一つもとらず、 I<setpgid(0,"
10807 "\\ 0)> と等価である。"
10808
10809 #. type: Plain text
10810 #: build/C/man2/setpgid.2:163
10811 msgid ""
10812 "The BSD-specific B<setpgrp>()  call, which takes arguments I<pid> and "
10813 "I<pgid>, is is a wrapper function that calls"
10814 msgstr ""
10815 "BSD 仕様の B<setpgrp>()  は I<pid> と I<pgid> を引き数にとり、 以下を呼び出す"
10816 "ラッパー関数である。"
10817
10818 #. type: Plain text
10819 #: build/C/man2/setpgid.2:165
10820 #, no-wrap
10821 msgid "    setpgid(pid, pgid)\n"
10822 msgstr "    setpgid(pid, pgid)\n"
10823
10824 #.  The true BSD setpgrp() system call differs in allowing the PGID
10825 #.  to be set to arbitrary values, rather than being restricted to
10826 #.  PGIDs in the same session.
10827 #. type: Plain text
10828 #: build/C/man2/setpgid.2:176
10829 msgid ""
10830 "Since glibc 2.19, the BSD-specific B<setpgrp>()  function is no longer "
10831 "exposed by I<E<lt>unistd.hE<gt>>; calls should be replaced with the "
10832 "B<setpgid>()  call shown above."
10833 msgstr ""
10834 "glibc 2.19 以降、 BSD 固有の B<setpgrp>() 関数はもはや I<E<lt>unistd.hE<gt>> "
10835 "では公開されない。 この関数の呼び出しは上記の B<setpgid>() の呼び出しで置き換"
10836 "えるべきである。"
10837
10838 #. type: Plain text
10839 #: build/C/man2/setpgid.2:182
10840 msgid ""
10841 "The BSD-specific B<getpgrp>()  call, which takes a single I<pid> argument, "
10842 "is a wrapper function that calls"
10843 msgstr ""
10844 "BSD 仕様の B<getpgrp>()  は I<pid> だけを引き数にとり、 以下を呼び出すラッ"
10845 "パー関数である。"
10846
10847 #. type: Plain text
10848 #: build/C/man2/setpgid.2:184
10849 #, no-wrap
10850 msgid "    getpgid(pid)\n"
10851 msgstr "    getpgid(pid)\n"
10852
10853 #. type: Plain text
10854 #: build/C/man2/setpgid.2:195
10855 msgid ""
10856 "Since glibc 2.19, the BSD-specific B<getpgrp>()  function is no longer "
10857 "exposed by I<E<lt>unistd.hE<gt>>; calls should be replaced with calls to the "
10858 "POSIX.1 B<getpgrp>()  which takes no arguments (if the intent is to obtain "
10859 "the caller's PGID), or with the B<getpgid>()  call shown above."
10860 msgstr ""
10861 "glibc 2.19 以降、 BSD 固有の B<getpgrp>() 関数はもはや I<E<lt>unistd.hE<gt>> "
10862 "では公開されない。 この関数の呼び出しは、引き数を取らない POSIX.1 の "
10863 "B<getpgrp>() の呼び出し (呼び出し元の PGID を取得する目的の場合)、もしくは上"
10864 "記の B<getpgid>() の呼び出しで置き換えるべきである。"
10865
10866 #. type: Plain text
10867 #: build/C/man2/setpgid.2:204
10868 msgid ""
10869 "On success, B<setpgid>()  and B<setpgrp>()  return zero.  On error, -1 is "
10870 "returned, and I<errno> is set appropriately."
10871 msgstr ""
10872 "B<setpgid>()  と B<setpgrp>()  は成功した場合、ゼロを返す。エラーの場合は -1 "
10873 "を返し、 I<errno> が適切に設定される。"
10874
10875 #. type: Plain text
10876 #: build/C/man2/setpgid.2:208
10877 msgid "The POSIX.1 B<getpgrp>()  always returns the PGID of the caller."
10878 msgstr ""
10879 "POSIX.1 バージョンの B<getpgrp>()  は常に呼び出しプロセスの PGID を返す。"
10880
10881 #. type: Plain text
10882 #: build/C/man2/setpgid.2:216
10883 msgid ""
10884 "B<getpgid>(), and the BSD-specific B<getpgrp>()  return a process group on "
10885 "success.  On error, -1 is returned, and I<errno> is set appropriately."
10886 msgstr ""
10887 "B<getpgid>()  と BSD 仕様の B<getpgrp>()  は成功した場合プロセスグループを返"
10888 "す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。"
10889
10890 #. type: Plain text
10891 #: build/C/man2/setpgid.2:225
10892 msgid ""
10893 "An attempt was made to change the process group ID of one of the children of "
10894 "the calling process and the child had already performed an B<execve>(2)  "
10895 "(B<setpgid>(), B<setpgrp>())."
10896 msgstr ""
10897 "呼び出し元プロセスの子プロセスのプロセスグループ ID を変更しようとしたが、 す"
10898 "でにその子プロセスは B<execve>(2)  を実行していた。 (B<setpgid>(), "
10899 "B<setpgrp>())"
10900
10901 #. type: Plain text
10902 #: build/C/man2/setpgid.2:231
10903 msgid "I<pgid> is less than 0 (B<setpgid>(), B<setpgrp>())."
10904 msgstr "I<pgid> が 0 より小さい。 (B<setpgid>(), B<setpgrp>())"
10905
10906 #. type: Plain text
10907 #: build/C/man2/setpgid.2:240
10908 msgid ""
10909 "An attempt was made to move a process into a process group in a different "
10910 "session, or to change the process group ID of one of the children of the "
10911 "calling process and the child was in a different session, or to change the "
10912 "process group ID of a session leader (B<setpgid>(), B<setpgrp>())."
10913 msgstr ""
10914 "プロセスを異なるセッションのプロセスグループに移動させようとした。 または呼び"
10915 "出し元プロセスの子プロセスのプロセスグループ ID を変更しようと したが、その子"
10916 "プロセスは別のセッションだった。 またはセッションリーダーのプロセスグループ "
10917 "ID を変更しようとした。 (B<setpgid>(), B<setpgrp>())"
10918
10919 #. type: Plain text
10920 #: build/C/man2/setpgid.2:250
10921 msgid ""
10922 "For B<getpgid>(): I<pid> does not match any process.  For B<setpgid>(): "
10923 "I<pid> is not the calling process and not a child of the calling process."
10924 msgstr ""
10925 "B<getpgid>()  の場合: I<pid> がどのプロセスにも一致しない。 B<setpgid>()  の"
10926 "場合: I<pid> が呼び出し元のプロセスではなく、呼び出し元のプロセスの子プロセス"
10927 "でもない。"
10928
10929 #. type: Plain text
10930 #: build/C/man2/setpgid.2:256
10931 msgid ""
10932 "B<setpgid>()  and the version of B<getpgrp>()  with no arguments conform to "
10933 "POSIX.1-2001."
10934 msgstr ""
10935 "B<setpgid>()  と、引き数なしバージョンの B<getpgrp>()  は POSIX.1-2001 に準拠"
10936 "している。"
10937
10938 #. type: Plain text
10939 #: build/C/man2/setpgid.2:265
10940 msgid ""
10941 "POSIX.1-2001 also specifies B<getpgid>()  and the version of B<setpgrp>()  "
10942 "that takes no arguments.  (POSIX.1-2008 marks this B<setpgrp>()  "
10943 "specification as obsolete.)"
10944 msgstr ""
10945 "POSIX.1-2001 は、 B<getpgid>()  と、引き数なしバージョンの B<setpgrp>()  も規"
10946 "定している。 POSIX.1-2008 は、この B<setpgrp>()  の仕様を廃止予定としている。"
10947
10948 #. type: Plain text
10949 #: build/C/man2/setpgid.2:272
10950 msgid ""
10951 "The version of B<getpgrp>()  with one argument and the version of "
10952 "B<setpgrp>()  that takes two arguments derive from 4.2BSD, and are not "
10953 "specified by POSIX.1."
10954 msgstr ""
10955 "引き数 1 個バージョンの B<getpgrp>()  と引き数 2 個バージョンの "
10956 "B<setpgrp>()  は 4.2BSD に由来し、 POSIX.1 では規定されていない。"
10957
10958 #. type: Plain text
10959 #: build/C/man2/setpgid.2:278
10960 msgid ""
10961 "A child created via B<fork>(2)  inherits its parent's process group ID.  The "
10962 "PGID is preserved across an B<execve>(2)."
10963 msgstr ""
10964 "B<fork>(2)  で作成された子プロセスは、親プロセスの PGID を継承する。 "
10965 "B<execve>(2)  の前後で PGID は保存される。"
10966
10967 #. type: Plain text
10968 #: build/C/man2/setpgid.2:281
10969 msgid ""
10970 "Each process group is a member of a session and each process is a member of "
10971 "the session of which its process group is a member."
10972 msgstr ""
10973 "各プロセスグループはセッションのメンバーであり、各プロセスは そのプロセスグ"
10974 "ループが所属しているセッションのメンバーである。"
10975
10976 #. type: Plain text
10977 #: build/C/man2/setpgid.2:308
10978 msgid ""
10979 "A session can have a controlling terminal.  At any time, one (and only one) "
10980 "of the process groups in the session can be the foreground process group for "
10981 "the terminal; the remaining process groups are in the background.  If a "
10982 "signal is generated from the terminal (e.g., typing the interrupt key to "
10983 "generate B<SIGINT>), that signal is sent to the foreground process group.  "
10984 "(See B<termios>(3)  for a description of the characters that generate "
10985 "signals.)  Only the foreground process group may B<read>(2)  from the "
10986 "terminal; if a background process group tries to B<read>(2)  from the "
10987 "terminal, then the group is sent a B<SIGTTIN> signal, which suspends it.  "
10988 "The B<tcgetpgrp>(3)  and B<tcsetpgrp>(3)  functions are used to get/set the "
10989 "foreground process group of the controlling terminal."
10990 msgstr ""
10991 "セッションは制御端末 (controlling terminal) を持つことができる。 いつでも、"
10992 "セッションに所属するプロセスグループの一つ (だけ) が 端末のフォアグランドのプ"
10993 "ロセスグループになることができ、 残りのプロセスグループはバックグラウンドにな"
10994 "る。 端末からシグナルが生成された場合 (例えば、中断キーを叩いて B<SIGINT> が"
10995 "生成されるなど)、そのシグナルはフォアグラウンドのプロセスグループ に送られる "
10996 "(シグナルを生成する文字の説明は B<termios>(3)  を参照)。 フォアグラウンドのプ"
10997 "ロセスグループだけが端末からの B<read>(2)  ができる。 バックグラウンドのプロ"
10998 "セスグループが端末からの B<read>(2)  を行おうとした場合、そのプロセスグループ"
10999 "にはシグナル B<SIGTTIN> が送られ、そのプロセスグループは一時停止 (suspend) す"
11000 "る。 関数 B<tcgetpgrp>(3)  と B<tcsetpgrp>(3)  を使うと、制御端末のフォアグラ"
11001 "ウンドのプロセスグループを 取得/設定できる。"
11002
11003 #. type: Plain text
11004 #: build/C/man2/setpgid.2:316
11005 msgid ""
11006 "The B<setpgid>()  and B<getpgrp>()  calls are used by programs such as "
11007 "B<bash>(1)  to create process groups in order to implement shell job control."
11008 msgstr ""
11009 "B<setpgid>()  と B<getpgrp>()  は、 B<bash>(1)  のようなプログラムで、シェル"
11010 "のジョブ制御 (job control) の実装のための プロセスグループを作成するのに使わ"
11011 "れる。"
11012
11013 #. type: Plain text
11014 #: build/C/man2/setpgid.2:326
11015 msgid ""
11016 "If a session has a controlling terminal, and the B<CLOCAL> flag for that "
11017 "terminal is not set, and a terminal hangup occurs, then the session leader "
11018 "is sent a B<SIGHUP>.  If the session leader exits, then a B<SIGHUP> signal "
11019 "will also be sent to each process in the foreground process group of the "
11020 "controlling terminal."
11021 msgstr ""
11022 "セッションが制御端末を持っていて、その端末に対して B<CLOCAL> フラグが設定され"
11023 "ておらず、端末のハングアップが起きた場合、 セッション・リーダーに B<SIGHUP> "
11024 "が送られる。 セッション・リーダーが終了した場合には、その制御端末の フォアグ"
11025 "ランドのプロセスグループに所属する各プロセスにも B<SIGHUP> シグナルが送られ"
11026 "る。"
11027
11028 #.  exit.3 refers to the following text:
11029 #. type: Plain text
11030 #: build/C/man2/setpgid.2:340
11031 msgid ""
11032 "If the exit of the process causes a process group to become orphaned, and if "
11033 "any member of the newly orphaned process group is stopped, then a B<SIGHUP> "
11034 "signal followed by a B<SIGCONT> signal will be sent to each process in the "
11035 "newly orphaned process group.  An orphaned process group is one in which the "
11036 "parent of every member of process group is either itself also a member of "
11037 "the process group or is a member of a process group in a different session "
11038 "(see also B<credentials>(7))."
11039 msgstr ""
11040 "プロセスの終了によってプロセスグループが孤児 (orphaned) になった際に、 その新"
11041 "たに孤児になったプロセスグループに停止しているメンバーがいれば、 その孤児に"
11042 "なったプロセスグループに属す全てのプロセスに B<SIGHUP> シグナルに続けて "
11043 "B<SIGCONT> シグナルが送られる。 孤児になった (orphaned) プロセスグループと"
11044 "は、 そのプロセスグループの全てのメンバーについて、メンバーの親プロセスが、 "
11045 "親プロセス自身もそのプロセスグループのメンバーか、 別のセッションに属すプロセ"
11046 "スグループのメンバーのいずれかであるような、 プロセスグループのことである。"
11047
11048 #. type: Plain text
11049 #: build/C/man2/setpgid.2:347
11050 msgid ""
11051 "B<getuid>(2), B<setsid>(2), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<termios>(3), "
11052 "B<credentials>(7)"
11053 msgstr ""
11054 "B<getuid>(2), B<setsid>(2), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<termios>(3), "
11055 "B<credentials>(7)"
11056
11057 #. type: TH
11058 #: build/C/man2/setresuid.2:26
11059 #, no-wrap
11060 msgid "SETRESUID"
11061 msgstr "SETRESUID"
11062
11063 #. type: Plain text
11064 #: build/C/man2/setresuid.2:29
11065 msgid "setresuid, setresgid - set real, effective and saved user or group ID"
11066 msgstr "setresuid, setresgid - ユーザやグループの 実、実効、保存 ID を設定する"
11067
11068 #. type: Plain text
11069 #: build/C/man2/setresuid.2:35
11070 msgid "B<int setresuid(uid_t >I<ruid>B<, uid_t >I<euid>B<, uid_t >I<suid>B<);>"
11071 msgstr ""
11072 "B<int setresuid(uid_t >I<ruid>B<, uid_t >I<euid>B<, uid_t >I<suid>B<);>"
11073
11074 #. type: Plain text
11075 #: build/C/man2/setresuid.2:37
11076 msgid "B<int setresgid(gid_t >I<rgid>B<, gid_t >I<egid>B<, gid_t >I<sgid>B<);>"
11077 msgstr ""
11078 "B<int setresgid(gid_t >I<rgid>B<, gid_t >I<egid>B<, gid_t >I<sgid>B<);>"
11079
11080 #. type: Plain text
11081 #: build/C/man2/setresuid.2:41
11082 msgid ""
11083 "B<setresuid>()  sets the real user ID, the effective user ID, and the saved "
11084 "set-user-ID of the calling process."
11085 msgstr ""
11086 "B<setresuid>()  は呼び出し元のプロセスの実 (real) ユーザーID、実効 "
11087 "(effective) ユーザーID、 保存 set-user-ID を設定する。"
11088
11089 #. type: Plain text
11090 #: build/C/man2/setresuid.2:47
11091 msgid ""
11092 "Unprivileged user processes may change the real UID, effective UID, and "
11093 "saved set-user-ID, each to one of: the current real UID, the current "
11094 "effective UID or the current saved set-user-ID."
11095 msgstr ""
11096 "非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set-user-ID を、 現在"
11097 "の実 UID、現在の実効 UID、現在の保存 set-user-ID のどれかに変更することができ"
11098 "る:"
11099
11100 #. type: Plain text
11101 #: build/C/man2/setresuid.2:51
11102 msgid ""
11103 "Privileged processes (on Linux, those having the B<CAP_SETUID> capability)  "
11104 "may set the real UID, effective UID, and saved set-user-ID to arbitrary "
11105 "values."
11106 msgstr ""
11107 "特権プロセス (Linux では B<CAP_SETUID> ケーパビリティ (capability) を持つ プ"
11108 "ロセス) は、実 UID、実効 UID、保存 set-user-ID を任意の値に設定できる。"
11109
11110 #. type: Plain text
11111 #: build/C/man2/setresuid.2:53
11112 msgid ""
11113 "If one of the arguments equals -1, the corresponding value is not changed."
11114 msgstr "引き数のどれかが -1 の場合はその値は変更されずに残される。"
11115
11116 #. type: Plain text
11117 #: build/C/man2/setresuid.2:57
11118 msgid ""
11119 "Regardless of what changes are made to the real UID, effective UID, and "
11120 "saved set-user-ID, the filesystem UID is always set to the same value as the "
11121 "(possibly new) effective UID."
11122 msgstr ""
11123 "実 UID、実効 UID、保存 set-user-ID にどんな変更が行われたかに関わらず、 ファ"
11124 "イルシステム UID は常に実効 UID (可能であれば変更後の新しい実効 UID)  と同じ"
11125 "値に設定される。"
11126
11127 #. type: Plain text
11128 #: build/C/man2/setresuid.2:64
11129 msgid ""
11130 "Completely analogously, B<setresgid>()  sets the real GID, effective GID, "
11131 "and saved set-group-ID of the calling process (and always modifies the "
11132 "filesystem GID to be the same as the effective GID), with the same "
11133 "restrictions for unprivileged processes."
11134 msgstr ""
11135 "全く同じように、 B<setresgid>()  は呼び出し元のプロセスの実 GID、実効 GID、保"
11136 "存 set-group-ID を設定する (さらにファイルシステム GID を実効 GID と同じ値に"
11137 "修正する)。 非特権プロセスは同様の制限を受ける。"
11138
11139 #. type: Plain text
11140 #: build/C/man2/setresuid.2:76
11141 msgid ""
11142 "I<Note>: there are cases where B<setresuid>()  can fail even when the caller "
11143 "is UID 0; it is a grave security error to omit checking for a failure return "
11144 "from B<setresuid>()."
11145 msgstr ""
11146
11147 #. type: TP
11148 #: build/C/man2/setresuid.2:77 build/C/man2/setresuid.2:84
11149 #: build/C/man2/setreuid.2:106 build/C/man2/setreuid.2:113
11150 #: build/C/man2/setuid.2:83 build/C/man2/setuid.2:90
11151 #, no-wrap
11152 msgid "B<EAGAIN>"
11153 msgstr "B<EAGAIN>"
11154
11155 #. type: Plain text
11156 #: build/C/man2/setresuid.2:84 build/C/man2/setreuid.2:113
11157 msgid ""
11158 "The call would change the caller's real UID (i.e., I<ruid> does not match "
11159 "the caller's real UID), but there was a temporary failure allocating the "
11160 "necessary kernel data structures."
11161 msgstr ""
11162
11163 #. type: Plain text
11164 #: build/C/man2/setresuid.2:99 build/C/man2/setreuid.2:128
11165 msgid ""
11166 "I<ruid> does not match the caller's real UID and this call would bring the "
11167 "number of processes belonging to the real user ID I<ruid> over the caller's "
11168 "B<RLIMIT_NPROC> resource limit.  Since Linux 3.1, this error case no longer "
11169 "occurs (but robust applications should check for this error); see the "
11170 "description of B<EAGAIN> in B<execve>(2)."
11171 msgstr ""
11172
11173 #. type: Plain text
11174 #: build/C/man2/setresuid.2:103 build/C/man2/setreuid.2:132
11175 msgid ""
11176 "One or more of the target user or group IDs is not valid in this user "
11177 "namespace."
11178 msgstr ""
11179
11180 #. type: Plain text
11181 #: build/C/man2/setresuid.2:107
11182 msgid ""
11183 "The calling process is not privileged (did not have the B<CAP_SETUID> "
11184 "capability) and tried to change the IDs to values that are not permitted."
11185 msgstr ""
11186 "呼び出したプロセスが特権を持たないのに (B<CAP_SETUID> ケーパビリティを持たな"
11187 "いのに)、 ID を許されていない値に変更しようとした。"
11188
11189 #. type: Plain text
11190 #: build/C/man2/setresuid.2:109
11191 msgid "These calls are available under Linux since Linux 2.1.44."
11192 msgstr "Linux ではバージョン 2.1.44 より利用可能になった。"
11193
11194 #. type: Plain text
11195 #: build/C/man2/setresuid.2:116
11196 msgid ""
11197 "Under HP-UX and FreeBSD, the prototype is found in I<E<lt>unistd.hE<gt>>.  "
11198 "Under Linux, the prototype is provided by glibc since version 2.3.2."
11199 msgstr ""
11200 "HP-UX や FreeBSD では I<E<lt>unistd.hE<gt>> にプロトタイプが存在する。 \n"
11201 "Linux では、glibc 2.3.2 以降で プロトタイプが提供されている。"
11202
11203 #. type: Plain text
11204 #: build/C/man2/setresuid.2:132
11205 msgid ""
11206 "The original Linux B<setresuid>()  and B<setresgid>()  system calls "
11207 "supported only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
11208 "B<setresuid32>()  and B<setresgid32>(), supporting 32-bit IDs.  The glibc "
11209 "B<setresuid>()  and B<setresgid>()  wrapper functions transparently deal "
11210 "with the variations across kernel versions."
11211 msgstr ""
11212 "元々の Linux の B<setresuid>() と B<setresgid>() システムコールは\n"
11213 "16 ビットのグループ ID だけに対応していた。\n"
11214 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11215 "B<setresuid32>() と B<setresgid32>() が追加された。\n"
11216 "glibc の B<setresuid>() と B<setresgid>() のラッパー関数は\n"
11217 "カーネルバージョンによるこの違いを吸収している。"
11218
11219 #. type: Plain text
11220 #: build/C/man2/setresuid.2:142
11221 msgid ""
11222 "B<getresuid>(2), B<getuid>(2), B<setfsgid>(2), B<setfsuid>(2), "
11223 "B<setreuid>(2), B<setuid>(2), B<capabilities>(7), B<credentials>(7), "
11224 "B<user_namespaces>(7)"
11225 msgstr ""
11226 "B<getresuid>(2), B<getuid>(2), B<setfsgid>(2), B<setfsuid>(2), "
11227 "B<setreuid>(2), B<setuid>(2), B<capabilities>(7), B<credentials>(7), "
11228 "B<user_namespaces>(7)"
11229
11230 #. type: TH
11231 #: build/C/man2/setreuid.2:45
11232 #, no-wrap
11233 msgid "SETREUID"
11234 msgstr "SETREUID"
11235
11236 #. type: Plain text
11237 #: build/C/man2/setreuid.2:48
11238 msgid "setreuid, setregid - set real and/or effective user or group ID"
11239 msgstr ""
11240 "setreuid, setregid - 実 (real) と実効 (effective) ユーザー (グループ) ID を設"
11241 "定する"
11242
11243 #. type: Plain text
11244 #: build/C/man2/setreuid.2:54
11245 msgid "B<int setreuid(uid_t >I<ruid>B<, uid_t >I<euid>B<);>"
11246 msgstr "B<int setreuid(uid_t >I<ruid>B<, uid_t >I<euid>B<);>"
11247
11248 #. type: Plain text
11249 #: build/C/man2/setreuid.2:56
11250 msgid "B<int setregid(gid_t >I<rgid>B<, gid_t >I<egid>B<);>"
11251 msgstr "B<int setregid(gid_t >I<rgid>B<, gid_t >I<egid>B<);>"
11252
11253 #. type: Plain text
11254 #: build/C/man2/setreuid.2:64
11255 msgid "B<setreuid>(), B<setregid>():"
11256 msgstr "B<setreuid>(), B<setregid>():"
11257
11258 #. type: Plain text
11259 #: build/C/man2/setreuid.2:68
11260 msgid ""
11261 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
11262 "_XOPEN_SOURCE_EXTENDED"
11263 msgstr ""
11264 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
11265 "_XOPEN_SOURCE_EXTENDED"
11266
11267 #. type: Plain text
11268 #: build/C/man2/setreuid.2:73
11269 msgid "B<setreuid>()  sets real and effective user IDs of the calling process."
11270 msgstr ""
11271 "B<setreuid>()  は呼び出し元のプロセスの実 (real) ユーザー ID と 実効 "
11272 "(effective) ユーザー ID を設定する。"
11273
11274 #. type: Plain text
11275 #: build/C/man2/setreuid.2:76
11276 msgid ""
11277 "Supplying a value of -1 for either the real or effective user ID forces the "
11278 "system to leave that ID unchanged."
11279 msgstr ""
11280 "実ユーザー ID や実効ユーザー ID に -1 を与えた場合、 システムはその ID を変更"
11281 "しない。"
11282
11283 #. type: Plain text
11284 #: build/C/man2/setreuid.2:79
11285 msgid ""
11286 "Unprivileged processes may only set the effective user ID to the real user "
11287 "ID, the effective user ID, or the saved set-user-ID."
11288 msgstr ""
11289 "非特権プロセスは実効ユーザー ID を実ユーザー ID または実効ユーザー ID または "
11290 "保存 set-user-ID にしか設定できない。"
11291
11292 #. type: Plain text
11293 #: build/C/man2/setreuid.2:82
11294 msgid ""
11295 "Unprivileged users may only set the real user ID to the real user ID or the "
11296 "effective user ID."
11297 msgstr ""
11298 "非特権ユーザーは、実ユーザー ID を実ユーザー ID または 実効ユーザー ID にしか"
11299 "設定できない。"
11300
11301 #. type: Plain text
11302 #: build/C/man2/setreuid.2:88
11303 msgid ""
11304 "If the real user ID is set (i.e., I<ruid> is not -1) or the effective user "
11305 "ID is set to a value not equal to the previous real user ID, the saved set-"
11306 "user-ID will be set to the new effective user ID."
11307 msgstr ""
11308 "実ユーザーID が設定されたり (I<ruid> が -1 ではない)、実効ユーザーID が前の実"
11309 "ユーザーID と 異った値に設定された場合、保存 set-user-ID には新しい実効ユー"
11310 "ザーID の値が設定される。"
11311
11312 #. type: Plain text
11313 #: build/C/man2/setreuid.2:93
11314 msgid ""
11315 "Completely analogously, B<setregid>()  sets real and effective group ID's of "
11316 "the calling process, and all of the above holds with \"group\" instead of "
11317 "\"user\"."
11318 msgstr ""
11319 "これと全く同様に、 B<setregid>()  は呼び出し元のプロセスの実グループ ID と実"
11320 "効グループ ID を設定し、 上記の説明で「ユーザー」を「グループ」に読み替えたこ"
11321 "とが成り立つ。"
11322
11323 #. type: Plain text
11324 #: build/C/man2/setreuid.2:105
11325 msgid ""
11326 "I<Note>: there are cases where B<setreuid>()  can fail even when the caller "
11327 "is UID 0; it is a grave security error to omit checking for a failure return "
11328 "from B<setreuid>()."
11329 msgstr ""
11330
11331 #. type: Plain text
11332 #: build/C/man2/setreuid.2:148
11333 msgid ""
11334 "The calling process is not privileged (Linux: does not have the "
11335 "B<CAP_SETUID> capability in the case of B<setreuid>(), or the B<CAP_SETGID> "
11336 "capability in the case of B<setregid>())  and a change other than (i)  "
11337 "swapping the effective user (group) ID with the real user (group) ID, or "
11338 "(ii) setting one to the value of the other or (iii) setting the effective "
11339 "user (group) ID to the value of the saved set-user-ID (saved set-group-ID) "
11340 "was specified."
11341 msgstr ""
11342 "呼び出し元のプロセスに特権がなく (Linux では B<setreuid>()  の場合に "
11343 "B<CAP_SETUID> ケーパビリティ (capability) がなく、 B<setregid>()  の場合に "
11344 "B<CAP_SETGID> ケーパビリティがない)、 以下のいずれでもない変更が指定された: "
11345 "(i) 実効ユーザー (グループ) ID と実ユーザー (グループ) ID を入れ換える。 "
11346 "(ii) 片方の値を他方に設定する。 (iii) 実効ユーザー (グループ) ID に保存 set-"
11347 "user-ID (保存 set-group-ID)  の値を設定する。"
11348
11349 #. type: Plain text
11350 #: build/C/man2/setreuid.2:154
11351 msgid ""
11352 "POSIX.1-2001, 4.3BSD (the B<setreuid>()  and B<setregid>()  function calls "
11353 "first appeared in 4.2BSD)."
11354 msgstr ""
11355 "POSIX.1-2001, 4.3BSD (B<setreuid>()  と B<setregid>()  関数コールは 4.2BSD で"
11356 "登場した)。"
11357
11358 #. type: Plain text
11359 #: build/C/man2/setreuid.2:158
11360 msgid ""
11361 "Setting the effective user (group) ID to the saved set-user-ID (saved set-"
11362 "group-ID) is possible since Linux 1.1.37 (1.1.38)."
11363 msgstr ""
11364 "実効ユーザー (グループ) ID を保存ユーザー (グループ) ID に 設定することが、"
11365 "Linux 1.1.37 (1.1.38) から可能になった。"
11366
11367 #. type: Plain text
11368 #: build/C/man2/setreuid.2:175
11369 msgid ""
11370 "POSIX.1 does not specify all of possible ID changes that are permitted on "
11371 "Linux for an unprivileged process.  For B<setreuid>(), the effective user ID "
11372 "can be made the same as the real user ID or the save set-user-ID, and it is "
11373 "unspecified whether unprivileged processes may set the real user ID to the "
11374 "real user ID, the effective user ID, or the saved set-user-ID.  For "
11375 "B<setregid>(), the real group ID can be changed to the value of the saved "
11376 "set-group-ID, and the effective group ID can be changed to the value of the "
11377 "real group ID or the saved set-group-ID.  The precise details of what ID "
11378 "changes are permitted vary across implementations."
11379 msgstr ""
11380 "POSIX.1 では、非特権プロセスに対して Linux 上で認められている ID の変更の 全"
11381 "パターンを規定しているわけではない。 B<setreuid>()  では、実効ユーザ ID を実"
11382 "ユーザ ID もしくは保存 set-user-ID と 同じ値にすることができるが、 非特権プロ"
11383 "セスが実ユーザ ID を実ユーザ ID、実効ユーザ ID、 保存 set-user-ID のどの値に"
11384 "も設定できるかは規定されていない。 B<setregid>()  では、実グループ ID を保存 "
11385 "set-group-ID と同じ値に変更でき、 実効グループ ID を実グループ ID や保存 set-"
11386 "group-ID と同じ値に変更できる。 どのような ID の変更が認められているかの正確"
11387 "な詳細は 実装ごとに異なる。"
11388
11389 #. type: Plain text
11390 #: build/C/man2/setreuid.2:178
11391 msgid ""
11392 "POSIX.1 makes no specification about the effect of these calls on the saved "
11393 "set-user-ID and saved set-group-ID."
11394 msgstr ""
11395 "POSIX.1 では、これらのシステムコールが保存 set-user-ID や 保存 set-group-ID "
11396 "に与える影響については規定していない。"
11397
11398 #. type: Plain text
11399 #: build/C/man2/setreuid.2:194
11400 msgid ""
11401 "The original Linux B<setreuid>()  and B<setregid>()  system calls supported "
11402 "only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
11403 "B<setreuid32>()  and B<setregid32>(), supporting 32-bit IDs.  The glibc "
11404 "B<setreuid>()  and B<setregid>()  wrapper functions transparently deal with "
11405 "the variations across kernel versions."
11406 msgstr ""
11407 "元々の Linux の B<setreuid>() と B<setregid>() システムコールは\n"
11408 "16 ビットのグループ ID だけに対応していた。\n"
11409 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11410 "B<setreuid32>() と B<setregid32>() が追加された。\n"
11411 "glibc の B<setreuid>() と B<setregid>() のラッパー関数は\n"
11412 "カーネルバージョンによるこの違いを吸収している。"
11413
11414 #. type: Plain text
11415 #: build/C/man2/setreuid.2:203
11416 msgid ""
11417 "B<getgid>(2), B<getuid>(2), B<seteuid>(2), B<setgid>(2), B<setresuid>(2), "
11418 "B<setuid>(2), B<capabilities>(7), B<user_namespaces>(7)"
11419 msgstr ""
11420 "B<getgid>(2), B<getuid>(2), B<seteuid>(2), B<setgid>(2), B<setresuid>(2), "
11421 "B<setuid>(2), B<capabilities>(7), B<user_namespaces>(7)"
11422
11423 #. type: TH
11424 #: build/C/man2/setsid.2:31
11425 #, no-wrap
11426 msgid "SETSID"
11427 msgstr "SETSID"
11428
11429 #. type: Plain text
11430 #: build/C/man2/setsid.2:34
11431 msgid "setsid - creates a session and sets the process group ID"
11432 msgstr "setsid - セッション (session) を作成し、プロセスグループ ID を設定する"
11433
11434 #. type: Plain text
11435 #: build/C/man2/setsid.2:39
11436 msgid "B<pid_t setsid(void);>"
11437 msgstr "B<pid_t setsid(void);>"
11438
11439 #. type: Plain text
11440 #: build/C/man2/setsid.2:50
11441 #, fuzzy
11442 #| msgid ""
11443 #| "B<setsid>()  creates a new session if the calling process is not a "
11444 #| "process group leader.  The calling process is the leader of the new "
11445 #| "session, the process group leader of the new process group, and has no "
11446 #| "controlling terminal.  The process group ID and session ID of the calling "
11447 #| "process are set to the PID of the calling process.  The calling process "
11448 #| "will be the only process in this new process group and in this new "
11449 #| "session."
11450 msgid ""
11451 "B<setsid>()  creates a new session if the calling process is not a process "
11452 "group leader.  The calling process is the leader of the new session (i.e., "
11453 "its session ID is made the same as it process ID).  The calling process also "
11454 "becomes the process group leader of a new process group in the session (i."
11455 "e., its process group ID is made the same as it process ID)."
11456 msgstr ""
11457 "B<setsid>()  は呼び出したプロセスがプロセスグループ・リーダー (process group "
11458 "leader) でなければ、新しいセッションを作成する。 呼び出したプロセスは新しい"
11459 "セッションのリーダー、新しいプロセスグループの プロセスグループ・リーダーとな"
11460 "り、端末の制御を持たない。 呼び出したプロセスのプロセスグループ ID とセッショ"
11461 "ン ID には、 呼び出したプロセスの PID が設定される。呼び出したプロセスはこの "
11462 "新しいプロセスグループ、この新しいセッションの唯一のプロセスとなる。"
11463
11464 #. type: Plain text
11465 #: build/C/man2/setsid.2:54
11466 msgid ""
11467 "The calling process will be the only process in the new process group and in "
11468 "the new session.  The new session has no controlling terminal."
11469 msgstr ""
11470
11471 #. type: Plain text
11472 #: build/C/man2/setsid.2:61
11473 msgid ""
11474 "On success, the (new) session ID of the calling process is returned.  On "
11475 "error, I<(pid_t)\\ -1> is returned, and I<errno> is set to indicate the "
11476 "error."
11477 msgstr ""
11478 "成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの"
11479 "場合は、 I<(pid_t)\\ -1> が返され、 I<error> にエラーを示す値が設定される。"
11480
11481 #. type: Plain text
11482 #: build/C/man2/setsid.2:68
11483 msgid ""
11484 "The process group ID of any process equals the PID of the calling process.  "
11485 "Thus, in particular, B<setsid>()  fails if the calling process is already a "
11486 "process group leader."
11487 msgstr ""
11488 "いずれかのプロセスのプロセスグループ ID が、 呼び出したプロセスの PID と等し"
11489 "い。 これは、呼び出したプロセスが既にプロセスリーダーの場合には B<setsid>()  "
11490 "は失敗することを意味する。"
11491
11492 #. type: Plain text
11493 #: build/C/man2/setsid.2:76
11494 msgid ""
11495 "A child created via B<fork>(2)  inherits its parent's session ID.  The "
11496 "session ID is preserved across an B<execve>(2)."
11497 msgstr ""
11498 "B<fork>(2)  で作成された子プロセスは、親プロセスのセッション ID を継承する。 "
11499 "B<execve>(2)  の前後でセッション ID は保存される。"
11500
11501 #. type: Plain text
11502 #: build/C/man2/setsid.2:93
11503 msgid ""
11504 "A process group leader is a process whose process group ID equals its PID.  "
11505 "Disallowing a process group leader from calling B<setsid()> prevents the "
11506 "possibility that a process group leader places itself in a new session while "
11507 "other processes in the process group remain in the original session; such a "
11508 "scenario would break the strict two-level hierarchy of sessions and process "
11509 "groups.  In order to be sure that B<setsid>()  will succeed, B<fork>(2)  and "
11510 "B<_exit>(2), and have the child do B<setsid>()."
11511 msgstr ""
11512
11513 #. type: Plain text
11514 #: build/C/man2/setsid.2:100
11515 msgid ""
11516 "B<setsid>(1), B<getsid>(2), B<setpgid>(2), B<setpgrp>(2), B<tcgetsid>(3), "
11517 "B<credentials>(7)"
11518 msgstr ""
11519 "B<setsid>(1), B<getsid>(2), B<setpgid>(2), B<setpgrp>(2), B<tcgetsid>(3), "
11520 "B<credentials>(7)"
11521
11522 #. type: TH
11523 #: build/C/man2/setuid.2:30
11524 #, no-wrap
11525 msgid "SETUID"
11526 msgstr "SETUID"
11527
11528 #. type: Plain text
11529 #: build/C/man2/setuid.2:33
11530 msgid "setuid - set user identity"
11531 msgstr "setuid - ユーザー識別 (identity) を設定する"
11532
11533 #. type: Plain text
11534 #: build/C/man2/setuid.2:39
11535 msgid "B<int setuid(uid_t >I<uid>B<);>"
11536 msgstr "B<int setuid(uid_t >I<uid>B<);>"
11537
11538 #. type: Plain text
11539 #: build/C/man2/setuid.2:44
11540 msgid ""
11541 "B<setuid>()  sets the effective user ID of the calling process.  If the "
11542 "effective UID of the caller is root, the real UID and saved set-user-ID are "
11543 "also set."
11544 msgstr ""
11545 "B<setuid>()  は呼び出し元のプロセスの実効 (effective) ユーザー ID を設定す"
11546 "る。 もし呼び出し元プロセスの実効 UID が root ならば、 実 (real) UID と保存 "
11547 "(saved) set-user-ID も設定される。"
11548
11549 #. type: Plain text
11550 #: build/C/man2/setuid.2:53
11551 msgid ""
11552 "Under Linux, B<setuid>()  is implemented like the POSIX version with the "
11553 "B<_POSIX_SAVED_IDS> feature.  This allows a set-user-ID (other than root) "
11554 "program to drop all of its user privileges, do some un-privileged work, and "
11555 "then reengage the original effective user ID in a secure manner."
11556 msgstr ""
11557 "Linux では、 B<setuid>()  は B<_POSIX_SAVED_IDS> をもった POSIX 版のように実"
11558 "装されている。 これは (ルート以外の) set-user-ID プログラムにそのユーザーの特"
11559 "権を 全て与え、特権の必要ない仕事をし、本来の実効ユーザー ID に 安全な方法で"
11560 "再び戻すことを許す。"
11561
11562 #. type: Plain text
11563 #: build/C/man2/setuid.2:63
11564 msgid ""
11565 "If the user is root or the program is set-user-ID-root, special care must be "
11566 "taken.  The B<setuid>()  function checks the effective user ID of the caller "
11567 "and if it is the superuser, all process-related user ID's are set to "
11568 "I<uid>.  After this has occurred, it is impossible for the program to regain "
11569 "root privileges."
11570 msgstr ""
11571 "ユーザーが root またはプログラムが root に set-user-ID されているならば、 特"
11572 "別の注意が払われる。 B<setuid>()  関数は呼び出し者の実効ユーザー ID をチェッ"
11573 "クし、 それがスーパーユーザーならば、 プロセスに関連する全てのユーザー ID に "
11574 "I<uid> を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得る"
11575 "ことはできない。"
11576
11577 #. type: Plain text
11578 #: build/C/man2/setuid.2:70
11579 msgid ""
11580 "Thus, a set-user-ID-root program wishing to temporarily drop root "
11581 "privileges, assume the identity of an unprivileged user, and then regain "
11582 "root privileges afterward cannot use B<setuid>().  You can accomplish this "
11583 "with B<seteuid>(2)."
11584 msgstr ""
11585 "したがって、set-user-ID-root プログラムで、一時的にルート特権を解除し、 非特"
11586 "権ユーザであるかのように振舞い、後でルート権限をもう一度得ようと する場合に"
11587 "は、 B<setuid>()  を使うことができない。その場合には、 B<seteuid>(2)  を使う"
11588 "必要がある。"
11589
11590 #. type: Plain text
11591 #: build/C/man2/setuid.2:82
11592 msgid ""
11593 "I<Note>: there are cases where B<setuid>()  can fail even when the caller is "
11594 "UID 0; it is a grave security error to omit checking for a failure return "
11595 "from B<setuid>()."
11596 msgstr ""
11597
11598 #. type: Plain text
11599 #: build/C/man2/setuid.2:90
11600 msgid ""
11601 "The call would change the caller's real UID (i.e., I<uid> does not match the "
11602 "caller's real UID), but there was a temporary failure allocating the "
11603 "necessary kernel data structures."
11604 msgstr ""
11605
11606 #. type: Plain text
11607 #: build/C/man2/setuid.2:105
11608 msgid ""
11609 "I<uid> does not match the real user ID of the caller and this call would "
11610 "bring the number of processes belonging to the real user ID I<uid> over the "
11611 "caller's B<RLIMIT_NPROC> resource limit.  Since Linux 3.1, this error case "
11612 "no longer occurs (but robust applications should check for this error); see "
11613 "the description of B<EAGAIN> in B<execve>(2)."
11614 msgstr ""
11615
11616 #. type: Plain text
11617 #: build/C/man2/setuid.2:110
11618 msgid "The user ID specified in I<uid> is not valid in this user namespace."
11619 msgstr ""
11620
11621 #. type: Plain text
11622 #: build/C/man2/setuid.2:117
11623 msgid ""
11624 "The user is not privileged (Linux: does not have the B<CAP_SETUID> "
11625 "capability) and I<uid> does not match the real UID or saved set-user-ID of "
11626 "the calling process."
11627 msgstr ""
11628 "ユーザーが特権を持たず (Linux では B<CAP_SETUID> ケーパビリティ (capability) "
11629 "を持たず)、 I<uid> が呼び出し元プロセスの実 UID または保存 set-user-ID と一致"
11630 "しない。"
11631
11632 #.  SVr4 documents an additional EINVAL error condition.
11633 #. type: Plain text
11634 #: build/C/man2/setuid.2:122
11635 msgid ""
11636 "SVr4, POSIX.1-2001.  Not quite compatible with the 4.4BSD call, which sets "
11637 "all of the real, saved, and effective user IDs."
11638 msgstr ""
11639 "SVr4, POSIX.1-2001.  4.4BSD のコールとは完全な互換性はない、 BSD のコールは"
11640 "実 (real)、保存 (saved)、実効 (effective) ID の全てを設定する。"
11641
11642 #. type: Plain text
11643 #: build/C/man2/setuid.2:130
11644 msgid ""
11645 "Linux has the concept of the filesystem user ID, normally equal to the "
11646 "effective user ID.  The B<setuid>()  call also sets the filesystem user ID "
11647 "of the calling process.  See B<setfsuid>(2)."
11648 msgstr ""
11649 "Linux はファイルシステム・ユーザー ID の概念を持つ。\n"
11650 "通常、これは実効ユーザー ID に等しい。 \n"
11651 "B<setuid>()  コールは呼び出し元のプロセスの\n"
11652 "ファイルシステム・ユーザー ID も設定する。 \n"
11653 "B<setfsuid>(2) も参照すること。"
11654
11655 #. type: Plain text
11656 #: build/C/man2/setuid.2:135
11657 msgid ""
11658 "If I<uid> is different from the old effective UID, the process will be "
11659 "forbidden from leaving core dumps."
11660 msgstr ""
11661 "I<uid> が前の実効 UID と異っていた場合、\n"
11662 "プロセスはコアダンプすることを禁止される。"
11663
11664 #. type: Plain text
11665 #: build/C/man2/setuid.2:145
11666 msgid ""
11667 "The original Linux B<setuid>()  system call supported only 16-bit user IDs.  "
11668 "Subsequently, Linux 2.4 added B<setuid32>()  supporting 32-bit IDs.  The "
11669 "glibc B<setuid>()  wrapper function transparently deals with the variation "
11670 "across kernel versions."
11671 msgstr ""
11672 "元々の Linux の B<setuid>() システムコールは\n"
11673 "16 ビットのグループ ID だけに対応していた。\n"
11674 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11675 "B<setuid32>() が追加された。\n"
11676 "glibc の B<setuid>() のラッパー関数は\n"
11677 "カーネルバージョンによるこの違いを吸収している。"
11678
11679 #. type: Plain text
11680 #: build/C/man2/setuid.2:153
11681 msgid ""
11682 "B<getuid>(2), B<seteuid>(2), B<setfsuid>(2), B<setreuid>(2), "
11683 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
11684 msgstr ""
11685 "B<getuid>(2), B<seteuid>(2), B<setfsuid>(2), B<setreuid>(2), "
11686 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
11687
11688 #. type: TH
11689 #: build/C/man7/svipc.7:40
11690 #, no-wrap
11691 msgid "SVIPC"
11692 msgstr "SVIPC"
11693
11694 #. type: Plain text
11695 #: build/C/man7/svipc.7:43
11696 msgid "svipc - System V interprocess communication mechanisms"
11697 msgstr "svipc - System V プロセス間通信機構"
11698
11699 #. type: Plain text
11700 #: build/C/man7/svipc.7:48
11701 #, no-wrap
11702 msgid ""
11703 "B<#include E<lt>sys/msg.hE<gt>>\n"
11704 "B<#include E<lt>sys/sem.hE<gt>>\n"
11705 "B<#include E<lt>sys/shm.hE<gt>>\n"
11706 msgstr ""
11707 "B<#include E<lt>sys/msg.hE<gt>>\n"
11708 "B<#include E<lt>sys/sem.hE<gt>>\n"
11709 "B<#include E<lt>sys/shm.hE<gt>>\n"
11710
11711 #. type: Plain text
11712 #: build/C/man7/svipc.7:56
11713 msgid ""
11714 "This manual page refers to the Linux implementation of the System V "
11715 "interprocess communication (IPC) mechanisms: message queues, semaphore sets, "
11716 "and shared memory segments.  In the following, the word I<resource> means an "
11717 "instantiation of one among such mechanisms."
11718 msgstr ""
11719 "このマニュアルページは System V プロセス間通信 (interprocess communication; "
11720 "IPC) 機構の Linux に おける実装を説明する。 このプロセス間通信機構には、 メッ"
11721 "セージキュー (message queue)、セマフォー集合 (semaphore set)、 共有メモリセグ"
11722 "メント (shared memory segment) などがある。以下で I<資源 (resource)> という用"
11723 "語を使用した場合にはこれらの機構のどれかを意味する。"
11724
11725 #. type: SS
11726 #: build/C/man7/svipc.7:56
11727 #, no-wrap
11728 msgid "Resource access permissions"
11729 msgstr "資源へのアクセス許可"
11730
11731 #. type: Plain text
11732 #: build/C/man7/svipc.7:64
11733 msgid ""
11734 "For each resource, the system uses a common structure of type I<struct "
11735 "ipc_perm> to store information needed in determining permissions to perform "
11736 "an IPC operation.  The I<ipc_perm> structure includes the following members:"
11737 msgstr ""
11738 "システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する ための情"
11739 "報を共通の構造体 I<struct ipc_perm> に格納して使用する。 I<ipc_perm> 構造体に"
11740 "は以下のメンバーが定義されている:"
11741
11742 #. type: Plain text
11743 #: build/C/man7/svipc.7:74
11744 #, no-wrap
11745 msgid ""
11746 "struct ipc_perm {\n"
11747 "    uid_t          cuid;   /* creator user ID */\n"
11748 "    gid_t          cgid;   /* creator group ID */\n"
11749 "    uid_t          uid;    /* owner user ID */\n"
11750 "    gid_t          gid;    /* owner group ID */\n"
11751 "    unsigned short mode;   /* r/w permissions */\n"
11752 "};\n"
11753 msgstr ""
11754 "struct ipc_perm {\n"
11755 "    uid_t          cuid;   /* 作成者のユーザーID */\n"
11756 "    gid_t          cgid;   /* 作成者のグループID */\n"
11757 "    uid_t          uid;    /* 所有者のユーザーID */\n"
11758 "    gid_t          gid;    /* 所有者のグループID */\n"
11759 "    unsigned short mode;   /* 読み書きの許可 */\n"
11760 "};\n"
11761
11762 #. type: Plain text
11763 #: build/C/man7/svipc.7:84
11764 msgid ""
11765 "The I<mode> member of the I<ipc_perm> structure defines, with its lower 9 "
11766 "bits, the access permissions to the resource for a process executing an IPC "
11767 "system call.  The permissions are interpreted as follows:"
11768 msgstr ""
11769 "I<ipc_perm> 構造体の I<mode> メンバーは以下の 9 ビットで、プロセスの IPC シス"
11770 "テムコール による資源へのアクセス許可を定義する。 許可は以下のように解釈され"
11771 "る:"
11772
11773 #. type: Plain text
11774 #: build/C/man7/svipc.7:88
11775 #, no-wrap
11776 msgid ""
11777 "    0400    Read by user.\n"
11778 "    0200    Write by user.\n"
11779 msgstr ""
11780 "    0400    ユーザーによる読み込み。\n"
11781 "    0200    ユーザーによる書き込み。\n"
11782
11783 #. type: Plain text
11784 #: build/C/man7/svipc.7:91
11785 #, no-wrap
11786 msgid ""
11787 "    0040    Read by group.\n"
11788 "    0020    Write by group.\n"
11789 msgstr ""
11790 "    0040    グループによる読み込み。\n"
11791 "    0020    グループによる書き込み。\n"
11792
11793 #. type: Plain text
11794 #: build/C/man7/svipc.7:94
11795 #, no-wrap
11796 msgid ""
11797 "    0004    Read by others.\n"
11798 "    0002    Write by others.\n"
11799 msgstr ""
11800 "    0004    他人による読み込み。\n"
11801 "    0002    他人による書き込み。\n"
11802
11803 #. type: Plain text
11804 #: build/C/man7/svipc.7:102
11805 msgid ""
11806 "Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.  "
11807 "Furthermore, \"write\" effectively means \"alter\" for a semaphore set."
11808 msgstr ""
11809 "システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマ"
11810 "フォーの場合には \"書き込み(write)\" は実際には \"変更(alter)\" を意味する。"
11811
11812 #. type: Plain text
11813 #: build/C/man7/svipc.7:105
11814 msgid ""
11815 "The same system header file also defines the following symbolic constants:"
11816 msgstr "同じヘッダーファイルには以下のシンボルの定義が含まれている:"
11817
11818 #. type: TP
11819 #: build/C/man7/svipc.7:105
11820 #, no-wrap
11821 msgid "B<IPC_CREAT>"
11822 msgstr "B<IPC_CREAT>"
11823
11824 #. type: Plain text
11825 #: build/C/man7/svipc.7:108
11826 msgid "Create entry if key doesn't exist."
11827 msgstr "キー(key)が存在しない場合には新たなエントリを作成する。"
11828
11829 #. type: TP
11830 #: build/C/man7/svipc.7:108
11831 #, no-wrap
11832 msgid "B<IPC_EXCL>"
11833 msgstr "B<IPC_EXCL>"
11834
11835 #. type: Plain text
11836 #: build/C/man7/svipc.7:111
11837 msgid "Fail if key exists."
11838 msgstr "キー(key)が存在する場合には失敗する。"
11839
11840 #. type: TP
11841 #: build/C/man7/svipc.7:111
11842 #, no-wrap
11843 msgid "B<IPC_NOWAIT>"
11844 msgstr "B<IPC_NOWAIT>"
11845
11846 #. type: Plain text
11847 #: build/C/man7/svipc.7:114
11848 msgid "Error if request must wait."
11849 msgstr "要求が待たされる場合にはエラーになる。"
11850
11851 #. type: TP
11852 #: build/C/man7/svipc.7:114
11853 #, no-wrap
11854 msgid "B<IPC_PRIVATE>"
11855 msgstr "B<IPC_PRIVATE>"
11856
11857 #. type: Plain text
11858 #: build/C/man7/svipc.7:117
11859 msgid "Private key."
11860 msgstr "プライベートキー。"
11861
11862 #. type: TP
11863 #: build/C/man7/svipc.7:117
11864 #, no-wrap
11865 msgid "B<IPC_RMID>"
11866 msgstr "B<IPC_RMID>"
11867
11868 #. type: Plain text
11869 #: build/C/man7/svipc.7:120
11870 msgid "Remove resource."
11871 msgstr "資源を削除する。"
11872
11873 #. type: TP
11874 #: build/C/man7/svipc.7:120
11875 #, no-wrap
11876 msgid "B<IPC_SET>"
11877 msgstr "B<IPC_SET>"
11878
11879 #. type: Plain text
11880 #: build/C/man7/svipc.7:123
11881 msgid "Set resource options."
11882 msgstr "資源にオプションを設定する。"
11883
11884 #. type: TP
11885 #: build/C/man7/svipc.7:123
11886 #, no-wrap
11887 msgid "B<IPC_STAT>"
11888 msgstr "B<IPC_STAT>"
11889
11890 #. type: Plain text
11891 #: build/C/man7/svipc.7:126
11892 msgid "Get resource options."
11893 msgstr "資源のオプションを取得する。"
11894
11895 #. type: Plain text
11896 #: build/C/man7/svipc.7:135
11897 msgid ""
11898 "Note that B<IPC_PRIVATE> is a I<key_t> type, while all the other symbolic "
11899 "constants are flag fields and can be OR'ed into an I<int> type variable."
11900 msgstr ""
11901 "B<IPC_PRIVATE> は I<key_t> 型である。その他の全てのシンボルはフラグフィールド"
11902 "として I<int> 変数に OR 演算で格納することができる。"
11903
11904 #. type: SS
11905 #: build/C/man7/svipc.7:135
11906 #, no-wrap
11907 msgid "Message queues"
11908 msgstr "メッセージキュー"
11909
11910 #. type: Plain text
11911 #: build/C/man7/svipc.7:143
11912 msgid ""
11913 "A message queue is uniquely identified by a positive integer (its I<msqid>)  "
11914 "and has an associated data structure of type I<struct msqid_ds>, defined in "
11915 "I<E<lt>sys/msg.hE<gt>>, containing the following members:"
11916 msgstr ""
11917 "メッセージキューは正の整数 (I<msqid>)  によって識別され、 I<E<lt>sys/msg."
11918 "hE<gt>> に定義されている構造体 I<struct msqid_ds> に結びつけられている。 この"
11919 "構造体は以下のメンバーを含んでいる:"
11920
11921 #. type: Plain text
11922 #: build/C/man7/svipc.7:156
11923 #, no-wrap
11924 msgid ""
11925 "struct msqid_ds {\n"
11926 "    struct ipc_perm msg_perm;\n"
11927 "    msgqnum_t       msg_qnum;    /* no of messages on queue */\n"
11928 "    msglen_t        msg_qbytes;  /* bytes max on a queue */\n"
11929 "    pid_t           msg_lspid;   /* PID of last msgsnd(2) call */\n"
11930 "    pid_t           msg_lrpid;   /* PID of last msgrcv(2) call */\n"
11931 "    time_t          msg_stime;   /* last msgsnd(2) time */\n"
11932 "    time_t          msg_rtime;   /* last msgrcv(2) time */\n"
11933 "    time_t          msg_ctime;   /* last change time */\n"
11934 "};\n"
11935 msgstr ""
11936 "struct msqid_ds {\n"
11937 "    struct ipc_perm msg_perm;\n"
11938 "    msgqnum_t       msg_qnum;    /* キューにあるメッセージの数 */\n"
11939 "    msglen_t        msg_qbytes;  /* キューの最大バイト数 */\n"
11940 "    pid_t           msg_lspid;   /* 最後に msgsnd(2) をした PID */\n"
11941 "    pid_t           msg_lrpid;   /* 最後に msgrcv(2) をした PID */\n"
11942 "    time_t          msg_stime;   /* 最後に msgsnd(2) をした時間 */\n"
11943 "    time_t          msg_rtime;   /* 最後に msgrcv(2) をした時間 */\n"
11944 "    time_t          msg_ctime;   /* 最後に変更された時間 */\n"
11945 "};\n"
11946
11947 #. type: TP
11948 #: build/C/man7/svipc.7:158
11949 #, no-wrap
11950 msgid "I<msg_perm>"
11951 msgstr "I<msg_perm>"
11952
11953 #. type: Plain text
11954 #: build/C/man7/svipc.7:163
11955 msgid ""
11956 "I<ipc_perm> structure that specifies the access permissions on the message "
11957 "queue."
11958 msgstr "メッセージキューへのアクセス許可を指定する I<ipc_perm> 構造体。"
11959
11960 #. type: TP
11961 #: build/C/man7/svipc.7:163
11962 #, no-wrap
11963 msgid "I<msg_qnum>"
11964 msgstr "I<msg_qnum>"
11965
11966 #. type: Plain text
11967 #: build/C/man7/svipc.7:166
11968 msgid "Number of messages currently on the message queue."
11969 msgstr "現在、このメッセージキューにあるメッセージの数。"
11970
11971 #. type: TP
11972 #: build/C/man7/svipc.7:166
11973 #, no-wrap
11974 msgid "I<msg_qbytes>"
11975 msgstr "I<msg_qbytes>"
11976
11977 #. type: Plain text
11978 #: build/C/man7/svipc.7:170
11979 msgid "Maximum number of bytes of message text allowed on the message queue."
11980 msgstr "メッセージキューに入れることができるメッセージの最大バイト数。"
11981
11982 #. type: TP
11983 #: build/C/man7/svipc.7:170
11984 #, no-wrap
11985 msgid "I<msg_lspid>"
11986 msgstr "I<msg_lspid>"
11987
11988 #. type: Plain text
11989 #: build/C/man7/svipc.7:175
11990 msgid "ID of the process that performed the last B<msgsnd>(2)  system call."
11991 msgstr "最後に B<msgsnd>(2)  システムコールを行なったプロセスの ID。"
11992
11993 #. type: TP
11994 #: build/C/man7/svipc.7:175
11995 #, no-wrap
11996 msgid "I<msg_lrpid>"
11997 msgstr "I<msg_lrpid>"
11998
11999 #. type: Plain text
12000 #: build/C/man7/svipc.7:180
12001 msgid "ID of the process that performed the last B<msgrcv>(2)  system call."
12002 msgstr "最後に B<msgrcv>(2)  システムコールを行なったプロセスの ID。"
12003
12004 #. type: TP
12005 #: build/C/man7/svipc.7:180
12006 #, no-wrap
12007 msgid "I<msg_stime>"
12008 msgstr "I<msg_stime>"
12009
12010 #. type: Plain text
12011 #: build/C/man7/svipc.7:185
12012 msgid "Time of the last B<msgsnd>(2)  system call."
12013 msgstr "最後に B<msgsnd>(2)  システムコールを行なった時間。"
12014
12015 #. type: TP
12016 #: build/C/man7/svipc.7:185
12017 #, no-wrap
12018 msgid "I<msg_rtime>"
12019 msgstr "I<msg_rtime>"
12020
12021 #. type: Plain text
12022 #: build/C/man7/svipc.7:190
12023 msgid "Time of the last B<msgrcv>(2)  system call."
12024 msgstr "最後に B<msgrcv>(2)  を行なった時間。"
12025
12026 #. type: TP
12027 #: build/C/man7/svipc.7:190
12028 #, no-wrap
12029 msgid "I<msg_ctime>"
12030 msgstr "I<msg_ctime>"
12031
12032 #. type: Plain text
12033 #: build/C/man7/svipc.7:196
12034 msgid ""
12035 "Time of the last system call that changed a member of the I<msqid_ds> "
12036 "structure."
12037 msgstr "最後に I<msqid_ds> 構造体のメンバーが変更された時間。"
12038
12039 #. type: SS
12040 #: build/C/man7/svipc.7:196
12041 #, no-wrap
12042 msgid "Semaphore sets"
12043 msgstr "セマフォー集合"
12044
12045 #. type: Plain text
12046 #: build/C/man7/svipc.7:204
12047 msgid ""
12048 "A semaphore set is uniquely identified by a positive integer (its I<semid>)  "
12049 "and has an associated data structure of type I<struct semid_ds>, defined in "
12050 "I<E<lt>sys/sem.hE<gt>>, containing the following members:"
12051 msgstr ""
12052 "セマフォー集合は正の整数 (I<semid>)  によって識別され、 I<E<lt>sys/sem."
12053 "hE<gt>> に定義されている構造体 I<struct semid_ds> に結びつけられている。 この"
12054 "構造体は以下のメンバーを含んでいる:"
12055
12056 #. type: Plain text
12057 #: build/C/man7/svipc.7:213
12058 #, no-wrap
12059 msgid ""
12060 "struct semid_ds {\n"
12061 "    struct ipc_perm sem_perm;\n"
12062 "    time_t          sem_otime;   /* last operation time */\n"
12063 "    time_t          sem_ctime;   /* last change time */\n"
12064 "    unsigned long   sem_nsems;   /* count of sems in set */\n"
12065 "};\n"
12066 msgstr ""
12067 "struct semid_ds {\n"
12068 "    struct ipc_perm sem_perm;\n"
12069 "    time_t          sem_otime;   /* 最後に操作した時間 */\n"
12070 "    time_t          sem_ctime;   /* 最後に変更した時間 */\n"
12071 "    unsigned long   sem_nsems;   /* 集合の中にあるセマフォー数 */\n"
12072 "};\n"
12073
12074 #. type: TP
12075 #: build/C/man7/svipc.7:215
12076 #, no-wrap
12077 msgid "I<sem_perm>"
12078 msgstr "I<sem_perm>"
12079
12080 #. type: Plain text
12081 #: build/C/man7/svipc.7:220
12082 msgid ""
12083 "I<ipc_perm> structure that specifies the access permissions on the semaphore "
12084 "set."
12085 msgstr "セマフォー集合へのアクセス許可を指定する I<ipc_perm> 構造体。"
12086
12087 #. type: TP
12088 #: build/C/man7/svipc.7:220
12089 #, no-wrap
12090 msgid "I<sem_otime>"
12091 msgstr "I<sem_otime>"
12092
12093 #. type: Plain text
12094 #: build/C/man7/svipc.7:225
12095 msgid "Time of last B<semop>(2)  system call."
12096 msgstr "最後に B<semop>(2)  システムコールを行なった時間。"
12097
12098 #. type: TP
12099 #: build/C/man7/svipc.7:225
12100 #, no-wrap
12101 msgid "I<sem_ctime>"
12102 msgstr "I<sem_ctime>"
12103
12104 #. type: Plain text
12105 #: build/C/man7/svipc.7:231
12106 msgid ""
12107 "Time of last B<semctl>(2)  system call that changed a member of the above "
12108 "structure or of one semaphore belonging to the set."
12109 msgstr ""
12110 "最後に B<semctl>(2)  を行なって上記の構造体のメンバーを変更するか、セマフォー"
12111 "集合に属する セマフォーを変更した時間。"
12112
12113 #. type: TP
12114 #: build/C/man7/svipc.7:231
12115 #, no-wrap
12116 msgid "I<sem_nsems>"
12117 msgstr "I<sem_nsems>"
12118
12119 #. type: Plain text
12120 #: build/C/man7/svipc.7:239
12121 msgid ""
12122 "Number of semaphores in the set.  Each semaphore of the set is referenced by "
12123 "a nonnegative integer ranging from B<0> to I<sem_nsems-1>."
12124 msgstr ""
12125 "セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは"
12126 "負でない整数によって参照され、 B<0> から I<sem_nsems-1> までの番号を持つ。"
12127
12128 #. type: Plain text
12129 #: build/C/man7/svipc.7:243
12130 msgid ""
12131 "A semaphore is a data structure of type I<struct sem> containing the "
12132 "following members:"
12133 msgstr ""
12134 "セマフォーは I<struct sem> 型のデータ構造体であり、以下のメンバーを含んでい"
12135 "る:"
12136
12137 #.     unsigned short semncnt; /* nr awaiting semval to increase */
12138 #.     unsigned short semzcnt; /* nr awaiting semval = 0 */
12139 #. type: Plain text
12140 #: build/C/man7/svipc.7:252
12141 #, no-wrap
12142 msgid ""
12143 "struct sem {\n"
12144 "    int semval;  /* semaphore value */\n"
12145 "    int sempid;  /* PID for last operation */\n"
12146 "};\n"
12147 msgstr ""
12148 "struct sem {\n"
12149 "    int semval;  /* セマフォーの値 */\n"
12150 "    int sempid;  /* 最後に操作したプロセス ID */\n"
12151 "};\n"
12152
12153 #. type: TP
12154 #: build/C/man7/svipc.7:254
12155 #, no-wrap
12156 msgid "I<semval>"
12157 msgstr "I<semval>"
12158
12159 #. type: Plain text
12160 #: build/C/man7/svipc.7:257
12161 msgid "Semaphore value: a nonnegative integer."
12162 msgstr "セマフォー値: 負でない整数。"
12163
12164 #. type: TP
12165 #: build/C/man7/svipc.7:257
12166 #, no-wrap
12167 msgid "I<sempid>"
12168 msgstr "I<sempid>"
12169
12170 #. .TP
12171 #. .I semncnt
12172 #. Number of processes suspended awaiting for
12173 #. .I semval
12174 #. to increase.
12175 #. .TP
12176 #. .I semznt
12177 #. Number of processes suspended awaiting for
12178 #. .I semval
12179 #. to become zero.
12180 #. type: Plain text
12181 #: build/C/man7/svipc.7:271
12182 msgid ""
12183 "ID of the last process that performed a semaphore operation on this "
12184 "semaphore."
12185 msgstr "このセマフォーを最後に操作したプロセスの ID。"
12186
12187 #. type: SS
12188 #: build/C/man7/svipc.7:271
12189 #, no-wrap
12190 msgid "Shared memory segments"
12191 msgstr "共有メモリセグメント"
12192
12193 #. type: Plain text
12194 #: build/C/man7/svipc.7:279
12195 msgid ""
12196 "A shared memory segment is uniquely identified by a positive integer (its "
12197 "I<shmid>)  and has an associated data structure of type I<struct shmid_ds>, "
12198 "defined in I<E<lt>sys/shm.hE<gt>>, containing the following members:"
12199 msgstr ""
12200 "共有メモリセグメントは正の整数 (I<shmid>)  によって識別され、 I<E<lt>sys/shm."
12201 "hE<gt>> に定義されている I<struct shmid_ds> 構造体に結びつけられている。 この"
12202 "構造体は以下のメンバーを含んでいる:"
12203
12204 #. type: Plain text
12205 #: build/C/man7/svipc.7:292
12206 #, no-wrap
12207 msgid ""
12208 "struct shmid_ds {\n"
12209 "    struct ipc_perm shm_perm;\n"
12210 "    size_t          shm_segsz;   /* size of segment */\n"
12211 "    pid_t           shm_cpid;    /* PID of creator */\n"
12212 "    pid_t           shm_lpid;    /* PID, last operation */\n"
12213 "    shmatt_t        shm_nattch;  /* no. of current attaches */\n"
12214 "    time_t          shm_atime;   /* time of last attach */\n"
12215 "    time_t          shm_dtime;   /* time of last detach */\n"
12216 "    time_t          shm_ctime;   /* time of last change */\n"
12217 "};\n"
12218 msgstr ""
12219 "struct shmid_ds {\n"
12220 "    struct ipc_perm shm_perm;\n"
12221 "    size_t          shm_segsz;   /* セグメントのサイズ */\n"
12222 "    pid_t           shm_cpid;    /* 作成者のプロセス ID */\n"
12223 "    pid_t           shm_lpid;    /* 最後に操作したプロセス ID */\n"
12224 "    shmatt_t        shm_nattch;  /* 現在、付加している数 */\n"
12225 "    time_t          shm_atime;   /* 最後に付加した時間 */\n"
12226 "    time_t          shm_dtime;   /* 最後に分離した時間 */\n"
12227 "    time_t          shm_ctime;   /* 最後に変更した時間 */\n"
12228 "};\n"
12229
12230 #. type: TP
12231 #: build/C/man7/svipc.7:294
12232 #, no-wrap
12233 msgid "I<shm_perm>"
12234 msgstr "I<shm_perm>"
12235
12236 #. type: Plain text
12237 #: build/C/man7/svipc.7:299
12238 msgid ""
12239 "I<ipc_perm> structure that specifies the access permissions on the shared "
12240 "memory segment."
12241 msgstr "共有メモリセグメントへのアクセス許可を指定した I<ipc_perm> 構造体。"
12242
12243 #. type: TP
12244 #: build/C/man7/svipc.7:299
12245 #, no-wrap
12246 msgid "I<shm_segsz>"
12247 msgstr "I<shm_segsz>"
12248
12249 #. type: Plain text
12250 #: build/C/man7/svipc.7:302
12251 msgid "Size in bytes of the shared memory segment."
12252 msgstr "共有メモリセグメントのバイト数。"
12253
12254 #. type: TP
12255 #: build/C/man7/svipc.7:302
12256 #, no-wrap
12257 msgid "I<shm_cpid>"
12258 msgstr "I<shm_cpid>"
12259
12260 #. type: Plain text
12261 #: build/C/man7/svipc.7:305
12262 msgid "ID of the process that created the shared memory segment."
12263 msgstr "共有メモリセグメントを作成したプロセスの ID。"
12264
12265 #. type: TP
12266 #: build/C/man7/svipc.7:305
12267 #, no-wrap
12268 msgid "I<shm_lpid>"
12269 msgstr "I<shm_lpid>"
12270
12271 #. type: Plain text
12272 #: build/C/man7/svipc.7:312
12273 msgid ""
12274 "ID of the last process that executed a B<shmat>(2)  or B<shmdt>(2)  system "
12275 "call."
12276 msgstr ""
12277 "最後に B<shmat>(2)  または B<shmdt>(2)  システムコールを実行したプロセスの "
12278 "ID。"
12279
12280 #. type: TP
12281 #: build/C/man7/svipc.7:312
12282 #, no-wrap
12283 msgid "I<shm_nattch>"
12284 msgstr "I<shm_nattch>"
12285
12286 #. type: Plain text
12287 #: build/C/man7/svipc.7:315
12288 msgid "Number of current alive attaches for this shared memory segment."
12289 msgstr "この共有メモリセグメントをメモリに付加 (attach) しているプロセスの数。"
12290
12291 #. type: TP
12292 #: build/C/man7/svipc.7:315
12293 #, no-wrap
12294 msgid "I<shm_atime>"
12295 msgstr "I<shm_atime>"
12296
12297 #. type: Plain text
12298 #: build/C/man7/svipc.7:320
12299 msgid "Time of the last B<shmat>(2)  system call."
12300 msgstr "最後に B<shmat>(2)  システムコールを行なった時間。"
12301
12302 #. type: TP
12303 #: build/C/man7/svipc.7:320
12304 #, no-wrap
12305 msgid "I<shm_dtime>"
12306 msgstr "I<shm_dtime>"
12307
12308 #. type: Plain text
12309 #: build/C/man7/svipc.7:325
12310 msgid "Time of the last B<shmdt>(2)  system call."
12311 msgstr "最後に B<shmdt>(2)  システムコールを行なった時間。"
12312
12313 #. type: TP
12314 #: build/C/man7/svipc.7:325
12315 #, no-wrap
12316 msgid "I<shm_ctime>"
12317 msgstr "I<shm_ctime>"
12318
12319 #. type: Plain text
12320 #: build/C/man7/svipc.7:331
12321 msgid "Time of the last B<shmctl>(2)  system call that changed I<shmid_ds>."
12322 msgstr ""
12323 "最後に B<shmctl>(2)  システムコールを行なって、 I<shmid_ds> 構造体を変更した"
12324 "時間。"
12325
12326 #. type: SS
12327 #: build/C/man7/svipc.7:331
12328 #, no-wrap
12329 msgid "IPC namespaces"
12330 msgstr ""
12331
12332 #. type: Plain text
12333 #: build/C/man7/svipc.7:335
12334 msgid ""
12335 "For a discussion of the interaction of System V IPC objects and IPC "
12336 "namespaces, see B<namespaces>(7)."
12337 msgstr ""
12338
12339 #. type: Plain text
12340 #: build/C/man7/svipc.7:353
12341 msgid ""
12342 "B<ipcmk>(1), B<ipcrm>(1), B<ipcs>(1), B<ipc>(2), B<msgctl>(2), B<msgget>(2), "
12343 "B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), B<semget>(2), B<semop>(2), "
12344 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<shmget>(2), B<ftok>(3), "
12345 "B<namespaces>(7)"
12346 msgstr ""
12347 "B<ipcmk>(1), B<ipcrm>(1), B<ipcs>(1), B<ipc>(2), B<msgctl>(2), B<msgget>(2), "
12348 "B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), B<semget>(2), B<semop>(2), "
12349 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<shmget>(2), B<ftok>(3), "
12350 "B<namespaces>(7)"
12351
12352 #. type: TH
12353 #: build/C/man3/ulimit.3:27
12354 #, no-wrap
12355 msgid "ULIMIT"
12356 msgstr "ULIMIT"
12357
12358 #. type: TH
12359 #: build/C/man3/ulimit.3:27
12360 #, no-wrap
12361 msgid "2008-08-06"
12362 msgstr "2008-08-06"
12363
12364 #. type: Plain text
12365 #: build/C/man3/ulimit.3:30
12366 msgid "ulimit - get and set user limits"
12367 msgstr "ulimit - ユーザー制限を取得・設定する"
12368
12369 #. type: Plain text
12370 #: build/C/man3/ulimit.3:32
12371 msgid "B<#include E<lt>ulimit.hE<gt>>"
12372 msgstr "B<#include E<lt>ulimit.hE<gt>>"
12373
12374 #. type: Plain text
12375 #: build/C/man3/ulimit.3:34
12376 msgid "B<long ulimit(int >I<cmd>B<, long >I<newlimit>B<);>"
12377 msgstr "B<long ulimit(int >I<cmd>B<, long >I<newlimit>B<);>"
12378
12379 #. type: Plain text
12380 #: build/C/man3/ulimit.3:46
12381 msgid ""
12382 "Warning: This routine is obsolete.  Use B<getrlimit>(2), B<setrlimit>(2), "
12383 "and B<sysconf>(3)  instead.  For the shell command B<ulimit>(), see "
12384 "B<bash>(1)."
12385 msgstr ""
12386 "注意: このルーチンは古い。 代わりに B<getrlimit>(2), B<setrlimit>(2), "
12387 "B<sysconf>(3)  などを用いること。 シェルコマンドとしての B<ulimit>()  につい"
12388 "ては、 B<bash>(1)  を見ること。"
12389
12390 #. type: Plain text
12391 #: build/C/man3/ulimit.3:53
12392 msgid ""
12393 "The B<ulimit>()  call will get or set some limit for the calling process.  "
12394 "The I<cmd> argument can have one of the following values."
12395 msgstr ""
12396 "B<ulimit>()  は呼び出し元のプロセスに関する制限のいくつかを取得・設定する。 "
12397 "I<cmd> 引き数には、以下の値のうちのどれか一つを与えることができる。"
12398
12399 #. type: TP
12400 #: build/C/man3/ulimit.3:53
12401 #, no-wrap
12402 msgid "B<UL_GETFSIZE>"
12403 msgstr "B<UL_GETFSIZE>"
12404
12405 #. type: Plain text
12406 #: build/C/man3/ulimit.3:56
12407 msgid "Return the limit on the size of a file, in units of 512 bytes."
12408 msgstr "ファイルサイズに関する制限を返す。単位は 512 バイト。"
12409
12410 #. type: TP
12411 #: build/C/man3/ulimit.3:56
12412 #, no-wrap
12413 msgid "B<UL_SETFSIZE>"
12414 msgstr "B<UL_SETFSIZE>"
12415
12416 #. type: Plain text
12417 #: build/C/man3/ulimit.3:59
12418 msgid "Set the limit on the size of a file."
12419 msgstr "ファイルサイズに関する制限を設定する。"
12420
12421 #. type: TP
12422 #: build/C/man3/ulimit.3:59
12423 #, no-wrap
12424 msgid "B<3>"
12425 msgstr "B<3>"
12426
12427 #. type: Plain text
12428 #: build/C/man3/ulimit.3:63
12429 msgid ""
12430 "(Not implemented for Linux.)  Return the maximum possible address of the "
12431 "data segment."
12432 msgstr ""
12433 "(Linux では実装されていない)  データセグメントで指定できるアドレスの最大値を"
12434 "返す。"
12435
12436 #. type: TP
12437 #: build/C/man3/ulimit.3:63
12438 #, no-wrap
12439 msgid "B<4>"
12440 msgstr "B<4>"
12441
12442 #. type: Plain text
12443 #: build/C/man3/ulimit.3:67
12444 msgid ""
12445 "(Implemented but no symbolic constant provided.)  Return the maximum number "
12446 "of files that the calling process can open."
12447 msgstr ""
12448 "(実装されているが、対応するシンボリックな定数は存在しない)  プロセスがオープ"
12449 "ンできるファイル数の最大値を返す。"
12450
12451 #. type: Plain text
12452 #: build/C/man3/ulimit.3:74
12453 msgid ""
12454 "On success, B<ulimit>()  returns a nonnegative value.  On error, -1 is "
12455 "returned, and I<errno> is set appropriately."
12456 msgstr ""
12457 "成功すると B<ulimit>()  は 0 または正の値を返す。 エラーが生じると -1 を返"
12458 "し、 I<errno> を適切な値に設定する。"
12459
12460 #. type: Plain text
12461 #: build/C/man3/ulimit.3:78
12462 msgid "A unprivileged process tried to increase a limit."
12463 msgstr "非特権プロセスが制限値を増加させようとした。"
12464
12465 #. type: Plain text
12466 #: build/C/man3/ulimit.3:83
12467 msgid "SVr4, POSIX.1-2001.  POSIX.1-2008 marks B<ulimit>()  as obsolete."
12468 msgstr ""
12469 "SVr4, POSIX.1-2001.  POSIX.1-2008 は B<ulimit>()  を廃止予定としている。"
12470
12471 #. type: Plain text
12472 #: build/C/man3/ulimit.3:88
12473 msgid "B<bash>(1), B<getrlimit>(2), B<setrlimit>(2), B<sysconf>(3)"
12474 msgstr "B<bash>(1), B<getrlimit>(2), B<setrlimit>(2), B<sysconf>(3)"
12475
12476 #. type: TH
12477 #: build/C/man7/user_namespaces.7:27
12478 #, no-wrap
12479 msgid "USER_NAMESPACES"
12480 msgstr ""
12481
12482 #. type: Plain text
12483 #: build/C/man7/user_namespaces.7:30
12484 msgid "user_namespaces - overview of Linux user namespaces"
12485 msgstr "user_namespaces - Linux ユーザー名前空間の概要"
12486
12487 #
12488 #.  FIXME: This page says very little about the interaction
12489 #.  of user namespaces and keys. Add something on this topic.
12490 #.  ============================================================
12491 #. type: Plain text
12492 #: build/C/man7/user_namespaces.7:56
12493 msgid ""
12494 "User namespaces isolate security-related identifiers and attributes, in "
12495 "particular, user IDs and group IDs (see B<credentials>(7)), the root "
12496 "directory, keys (see B<keyctl>(2)), and capabilities (see "
12497 "B<capabilities>(7)).  A process's user and group IDs can be different inside "
12498 "and outside a user namespace.  In particular, a process can have a normal "
12499 "unprivileged user ID outside a user namespace while at the same time having "
12500 "a user ID of 0 inside the namespace; in other words, the process has full "
12501 "privileges for operations inside the user namespace, but is unprivileged for "
12502 "operations outside the namespace."
12503 msgstr ""
12504
12505 #. type: SS
12506 #: build/C/man7/user_namespaces.7:56
12507 #, no-wrap
12508 msgid "Nested namespaces, namespace membership"
12509 msgstr ""
12510
12511 #. type: Plain text
12512 #: build/C/man7/user_namespaces.7:69
12513 msgid ""
12514 "User namespaces can be nested; that is, each user namespace\\(emexcept the "
12515 "initial (\"root\")  namespace\\(emhas a parent user namespace, and can have "
12516 "zero or more child user namespaces.  The parent user namespace is the user "
12517 "namespace of the process that creates the user namespace via a call to "
12518 "B<unshare>(2)  or B<clone>(2)  with the B<CLONE_NEWUSER> flag."
12519 msgstr ""
12520
12521 #.  commit 8742f229b635bf1c1c84a3dfe5e47c814c20b5c8
12522 #.  FIXME Explain the rationale for this limit. (What is the rationale?)
12523 #. type: Plain text
12524 #: build/C/man7/user_namespaces.7:80
12525 msgid ""
12526 "The kernel imposes (since version 3.11) a limit of 32 nested levels of user "
12527 "namespaces.  Calls to B<unshare>(2)  or B<clone>(2)  that would cause this "
12528 "limit to be exceeded fail with the error B<EUSERS>."
12529 msgstr ""
12530
12531 #. type: Plain text
12532 #: build/C/man7/user_namespaces.7:95
12533 msgid ""
12534 "Each process is a member of exactly one user namespace.  A process created "
12535 "via B<fork>(2)  or B<clone>(2)  without the B<CLONE_NEWUSER> flag is a "
12536 "member of the same user namespace as its parent.  A single-threaded process "
12537 "can join another user namespace with B<setns>(2)  if it has the "
12538 "B<CAP_SYS_ADMIN> in that namespace; upon doing so, it gains a full set of "
12539 "capabilities in that namespace."
12540 msgstr ""
12541
12542 #
12543 #.  ============================================================
12544 #. type: Plain text
12545 #: build/C/man7/user_namespaces.7:110
12546 msgid ""
12547 "A call to B<clone>(2)  or B<unshare>(2)  with the B<CLONE_NEWUSER> flag "
12548 "makes the new child process (for B<clone>(2))  or the caller (for "
12549 "B<unshare>(2))  a member of the new user namespace created by the call."
12550 msgstr ""
12551
12552 #. type: SS
12553 #: build/C/man7/user_namespaces.7:110
12554 #, no-wrap
12555 msgid "Capabilities"
12556 msgstr "ケーパビリティ"
12557
12558 #. type: Plain text
12559 #: build/C/man7/user_namespaces.7:132
12560 msgid ""
12561 "The child process created by B<clone>(2)  with the B<CLONE_NEWUSER> flag "
12562 "starts out with a complete set of capabilities in the new user namespace.  "
12563 "Likewise, a process that creates a new user namespace using B<unshare>(2)  "
12564 "or joins an existing user namespace using B<setns>(2)  gains a full set of "
12565 "capabilities in that namespace.  On the other hand, that process has no "
12566 "capabilities in the parent (in the case of B<clone>(2))  or previous (in the "
12567 "case of B<unshare>(2)  and B<setns>(2))  user namespace, even if the new "
12568 "namespace is created or joined by the root user (i.e., a process with user "
12569 "ID 0 in the root namespace)."
12570 msgstr ""
12571
12572 #. type: Plain text
12573 #: build/C/man7/user_namespaces.7:142
12574 msgid ""
12575 "Note that a call to B<execve>(2)  will cause a process's capabilities to be "
12576 "recalculated in the usual way (see B<capabilities>(7)), so that usually, "
12577 "unless it has a user ID of 0 within the namespace or the executable file has "
12578 "a nonempty inheritable capabilities mask, it will lose all capabilities.  "
12579 "See the discussion of user and group ID mappings, below."
12580 msgstr ""
12581
12582 #. type: Plain text
12583 #: build/C/man7/user_namespaces.7:167
12584 msgid ""
12585 "A call to B<clone>(2), B<unshare>(2), or B<setns>(2)  using the "
12586 "B<CLONE_NEWUSER> flag sets the \"securebits\" flags (see "
12587 "B<capabilities>(7))  to their default values (all flags disabled) in the "
12588 "child (for B<clone>(2))  or caller (for B<unshare>(2), or B<setns>(2)).  "
12589 "Note that because the caller no longer has capabilities in its original user "
12590 "namespace after a call to B<setns>(2), it is not possible for a process to "
12591 "reset its \"securebits\" flags while retaining its user namespace membership "
12592 "by using a pair of B<setns>(2)  calls to move to another user namespace and "
12593 "then return to its original user namespace."
12594 msgstr ""
12595
12596 #. type: Plain text
12597 #: build/C/man7/user_namespaces.7:173
12598 msgid ""
12599 "Having a capability inside a user namespace permits a process to perform "
12600 "operations (that require privilege)  only on resources governed by that "
12601 "namespace.  The rules for determining whether or not a process has a "
12602 "capability in a particular user namespace are as follows:"
12603 msgstr ""
12604
12605 #.  In the 3.8 sources, see security/commoncap.c::cap_capable():
12606 #. type: Plain text
12607 #: build/C/man7/user_namespaces.7:189
12608 msgid ""
12609 "A process has a capability inside a user namespace if it is a member of that "
12610 "namespace and it has the capability in its effective capability set.  A "
12611 "process can gain capabilities in its effective capability set in various "
12612 "ways.  For example, it may execute a set-user-ID program or an executable "
12613 "with associated file capabilities.  In addition, a process may gain "
12614 "capabilities via the effect of B<clone>(2), B<unshare>(2), or B<setns>(2), "
12615 "as already described."
12616 msgstr ""
12617
12618 #. type: Plain text
12619 #: build/C/man7/user_namespaces.7:193
12620 msgid ""
12621 "If a process has a capability in a user namespace, then it has that "
12622 "capability in all child (and further removed descendant)  namespaces as well."
12623 msgstr ""
12624
12625 #
12626 #.  * The owner of the user namespace in the parent of the
12627 #.  * user namespace has all caps.
12628 #.  (and likewise associates the effective group ID of the creating process
12629 #.  with the namespace).
12630 #.  See kernel commit 520d9eabce18edfef76a60b7b839d54facafe1f9 for a fix
12631 #.  on this point
12632 #.      This includes the case where the process executes a set-user-ID
12633 #.      program that confers the effective UID of the creator of the namespace.
12634 #.  ============================================================
12635 #. type: Plain text
12636 #: build/C/man7/user_namespaces.7:214
12637 msgid ""
12638 "When a user namespace is created, the kernel records the effective user ID "
12639 "of the creating process as being the \"owner\" of the namespace.  A process "
12640 "that resides in the parent of the user namespace and whose effective user ID "
12641 "matches the owner of the namespace has all capabilities in the namespace.  "
12642 "By virtue of the previous rule, this means that the process has all "
12643 "capabilities in all further removed descendant user namespaces as well."
12644 msgstr ""
12645
12646 #. type: SS
12647 #: build/C/man7/user_namespaces.7:214
12648 #, no-wrap
12649 msgid "Interaction of user namespaces and other types of namespaces"
12650 msgstr ""
12651
12652 #. type: Plain text
12653 #: build/C/man7/user_namespaces.7:219
12654 msgid ""
12655 "Starting in Linux 3.8, unprivileged processes can create user namespaces, "
12656 "and mount, PID, IPC, network, and UTS namespaces can be created with just "
12657 "the B<CAP_SYS_ADMIN> capability in the caller's user namespace."
12658 msgstr ""
12659
12660 #. type: Plain text
12661 #: build/C/man7/user_namespaces.7:225
12662 msgid ""
12663 "When a non-user-namespace is created, it is owned by the user namespace in "
12664 "which the creating process was a member at the time of the creation of the "
12665 "namespace.  Actions on the non-user-namespace require capabilities in the "
12666 "corresponding user namespace."
12667 msgstr ""
12668
12669 #. type: Plain text
12670 #: build/C/man7/user_namespaces.7:242
12671 msgid ""
12672 "If B<CLONE_NEWUSER> is specified along with other B<CLONE_NEW*> flags in a "
12673 "single B<clone>(2)  or B<unshare>(2)  call, the user namespace is guaranteed "
12674 "to be created first, giving the child (B<clone>(2))  or caller "
12675 "(B<unshare>(2))  privileges over the remaining namespaces created by the "
12676 "call.  Thus, it is possible for an unprivileged caller to specify this "
12677 "combination of flags."
12678 msgstr ""
12679
12680 #
12681 #.  ============================================================
12682 #. type: Plain text
12683 #: build/C/man7/user_namespaces.7:258
12684 msgid ""
12685 "When a new IPC, mount, network, PID, or UTS namespace is created via "
12686 "B<clone>(2)  or B<unshare>(2), the kernel records the user namespace of the "
12687 "creating process against the new namespace.  (This association can't be "
12688 "changed.)  When a process in the new namespace subsequently performs "
12689 "privileged operations that operate on global resources isolated by the "
12690 "namespace, the permission checks are performed according to the process's "
12691 "capabilities in the user namespace that the kernel associated with the new "
12692 "namespace."
12693 msgstr ""
12694
12695 #. type: SS
12696 #: build/C/man7/user_namespaces.7:258
12697 #, no-wrap
12698 msgid "Restrictions on mount namespaces"
12699 msgstr ""
12700
12701 #. type: Plain text
12702 #: build/C/man7/user_namespaces.7:261
12703 msgid "Note the following points with respect to mount namespaces:"
12704 msgstr ""
12705
12706 #. type: Plain text
12707 #: build/C/man7/user_namespaces.7:266
12708 msgid ""
12709 "A mount namespace has an owner user namespace.  A mount namespace whose "
12710 "owner user namespace is different from the owner user namespace of its "
12711 "parent mount namespace is considered a less privileged mount namespace."
12712 msgstr ""
12713
12714 #. type: Plain text
12715 #: build/C/man7/user_namespaces.7:272
12716 msgid ""
12717 "When creating a less privileged mount namespace, shared mounts are reduced "
12718 "to slave mounts.  This ensures that mappings performed in less privileged "
12719 "mount namespaces will not propagate to more privileged mount namespaces."
12720 msgstr ""
12721
12722 #.  FIXME .
12723 #.      What does "come as a single unit from more privileged mount" mean?
12724 #. type: Plain text
12725 #: build/C/man7/user_namespaces.7:285
12726 msgid ""
12727 "Mounts that come as a single unit from more privileged mount are locked "
12728 "together and may not be separated in a less privileged mount namespace.  "
12729 "(The B<unshare>(2)  B<CLONE_NEWNS> operation brings across all of the mounts "
12730 "from the original mount namespace as a single unit, and recursive mounts "
12731 "that propagate between mount namespaces propagate as a single unit.)"
12732 msgstr ""
12733
12734 #
12735 #.  commit 9566d6742852c527bf5af38af5cbb878dad75705
12736 #.  Author: Eric W. Biederman <ebiederm@xmission.com>
12737 #.  Date:   Mon Jul 28 17:26:07 2014 -0700
12738 #.       mnt: Correct permission checks in do_remount
12739 #. type: Plain text
12740 #: build/C/man7/user_namespaces.7:306
12741 msgid ""
12742 "The B<mount>(2)  flags B<MS_RDONLY>, B<MS_NOSUID>, B<MS_NOEXEC>, and the "
12743 "\"atime\" flags (B<MS_NOATIME>, B<MS_NODIRATIME>, B<MS_RELATIME)> settings "
12744 "become locked when propagated from a more privileged to a less privileged "
12745 "mount namespace, and may not be changed in the less privileged mount "
12746 "namespace."
12747 msgstr ""
12748
12749 #.  (As of 3.18-rc1 (in Al Viro's 2014-08-30 vfs.git#for-next tree))
12750 #. type: Plain text
12751 #: build/C/man7/user_namespaces.7:313
12752 msgid ""
12753 "A file or directory that is a mount point in one namespace that is not a "
12754 "mount point in another namespace, may be renamed, unlinked, or removed "
12755 "(B<rmdir>(2))  in the mount namespace in which it is not a mount point "
12756 "(subject to the usual permission checks)."
12757 msgstr ""
12758
12759 #
12760 #.  ============================================================
12761 #. type: Plain text
12762 #: build/C/man7/user_namespaces.7:324
12763 msgid ""
12764 "Previously, attempting to unlink, rename, or remove a file or directory that "
12765 "was a mount point in another mount namespace would result in the error "
12766 "B<EBUSY>.  That behavior had technical problems of enforcement (e.g., for "
12767 "NFS)  and permitted denial-of-service attacks against more privileged "
12768 "users.  (i.e., preventing individual files from being updated by bind "
12769 "mounting on top of them)."
12770 msgstr ""
12771
12772 #. type: SS
12773 #: build/C/man7/user_namespaces.7:324
12774 #, no-wrap
12775 msgid "User and group ID mappings: uid_map and gid_map"
12776 msgstr ""
12777
12778 #.  commit 22d917d80e842829d0ca0a561967d728eb1d6303
12779 #. type: Plain text
12780 #: build/C/man7/user_namespaces.7:339
12781 msgid ""
12782 "When a user namespace is created, it starts out without a mapping of user "
12783 "IDs (group IDs)  to the parent user namespace.  The I</proc/[pid]/uid_map> "
12784 "and I</proc/[pid]/gid_map> files (available since Linux 3.5)  expose the "
12785 "mappings for user and group IDs inside the user namespace for the process "
12786 "I<pid>.  These files can be read to view the mappings in a user namespace "
12787 "and written to (once) to define the mappings."
12788 msgstr ""
12789
12790 #. type: Plain text
12791 #: build/C/man7/user_namespaces.7:345
12792 msgid ""
12793 "The description in the following paragraphs explains the details for "
12794 "I<uid_map>; I<gid_map> is exactly the same, but each instance of \"user ID\" "
12795 "is replaced by \"group ID\"."
12796 msgstr ""
12797
12798 #. type: Plain text
12799 #: build/C/man7/user_namespaces.7:359
12800 msgid ""
12801 "The I<uid_map> file exposes the mapping of user IDs from the user namespace "
12802 "of the process I<pid> to the user namespace of the process that opened "
12803 "I<uid_map> (but see a qualification to this point below).  In other words, "
12804 "processes that are in different user namespaces will potentially see "
12805 "different values when reading from a particular I<uid_map> file, depending "
12806 "on the user ID mappings for the user namespaces of the reading processes."
12807 msgstr ""
12808
12809 #. type: Plain text
12810 #: build/C/man7/user_namespaces.7:371
12811 msgid ""
12812 "Each line in the I<uid_map> file specifies a 1-to-1 mapping of a range of "
12813 "contiguous user IDs between two user namespaces.  (When a user namespace is "
12814 "first created, this file is empty.)  The specification in each line takes "
12815 "the form of three numbers delimited by white space.  The first two numbers "
12816 "specify the starting user ID in each of the two user namespaces.  The third "
12817 "number specifies the length of the mapped range.  In detail, the fields are "
12818 "interpreted as follows:"
12819 msgstr ""
12820
12821 #. type: Plain text
12822 #: build/C/man7/user_namespaces.7:375
12823 msgid ""
12824 "The start of the range of user IDs in the user namespace of the process "
12825 "I<pid>."
12826 msgstr ""
12827
12828 #. type: Plain text
12829 #: build/C/man7/user_namespaces.7:383
12830 msgid ""
12831 "The start of the range of user IDs to which the user IDs specified by field "
12832 "one map.  How field two is interpreted depends on whether the process that "
12833 "opened I<uid_map> and the process I<pid> are in the same user namespace, as "
12834 "follows:"
12835 msgstr ""
12836
12837 #. type: Plain text
12838 #: build/C/man7/user_namespaces.7:389
12839 msgid ""
12840 "If the two processes are in different user namespaces: field two is the "
12841 "start of a range of user IDs in the user namespace of the process that "
12842 "opened I<uid_map>."
12843 msgstr ""
12844
12845 #. type: Plain text
12846 #: build/C/man7/user_namespaces.7:400
12847 msgid ""
12848 "If the two processes are in the same user namespace: field two is the start "
12849 "of the range of user IDs in the parent user namespace of the process "
12850 "I<pid>.  This case enables the opener of I<uid_map> (the common case here is "
12851 "opening I</proc/self/uid_map>)  to see the mapping of user IDs into the user "
12852 "namespace of the process that created this user namespace."
12853 msgstr ""
12854
12855 #. type: Plain text
12856 #: build/C/man7/user_namespaces.7:404
12857 msgid ""
12858 "The length of the range of user IDs that is mapped between the two user "
12859 "namespaces."
12860 msgstr ""
12861
12862 #. type: Plain text
12863 #: build/C/man7/user_namespaces.7:411
12864 msgid ""
12865 "System calls that return user IDs (group IDs)\\(emfor example, B<getuid>(2), "
12866 "B<getgid>(2), and the credential fields in the structure returned by "
12867 "B<stat>(2)\\(emreturn the user ID (group ID) mapped into the caller's user "
12868 "namespace."
12869 msgstr ""
12870
12871 #. type: Plain text
12872 #: build/C/man7/user_namespaces.7:419
12873 msgid ""
12874 "When a process accesses a file, its user and group IDs are mapped into the "
12875 "initial user namespace for the purpose of permission checking and assigning "
12876 "IDs when creating a file.  When a process retrieves file user and group IDs "
12877 "via B<stat>(2), the IDs are mapped in the opposite direction, to produce "
12878 "values relative to the process user and group ID mappings."
12879 msgstr ""
12880
12881 #. type: Plain text
12882 #: build/C/man7/user_namespaces.7:428
12883 msgid ""
12884 "The initial user namespace has no parent namespace, but, for consistency, "
12885 "the kernel provides dummy user and group ID mapping files for this "
12886 "namespace.  Looking at the I<uid_map> file (I<gid_map> is the same) from a "
12887 "shell in the initial namespace shows:"
12888 msgstr ""
12889
12890 #. type: Plain text
12891 #: build/C/man7/user_namespaces.7:433
12892 #, no-wrap
12893 msgid ""
12894 "$ B<cat /proc/$$/uid_map>\n"
12895 "         0          0 4294967295\n"
12896 msgstr ""
12897
12898 #
12899 #.  ============================================================
12900 #. type: Plain text
12901 #: build/C/man7/user_namespaces.7:453
12902 msgid ""
12903 "This mapping tells us that the range starting at user ID 0 in this namespace "
12904 "maps to a range starting at 0 in the (nonexistent) parent namespace, and the "
12905 "length of the range is the largest 32-bit unsigned integer.  (This "
12906 "deliberately leaves 4294967295 (the 32-bit signed -1 value) unmapped.  This "
12907 "is deliberate: I<(uid_t)\\ -\\1> is used in several interfaces (e.g., "
12908 "B<setreuid>(2))  as a way to specify \"no user ID\".  Leaving I<(uid_t)\\ -"
12909 "\\1> unmapped and unusable guarantees that there will be no confusion when "
12910 "using these interfaces."
12911 msgstr ""
12912
12913 #. type: SS
12914 #: build/C/man7/user_namespaces.7:453
12915 #, no-wrap
12916 msgid "Defining user and group ID mappings: writing to uid_map and gid_map"
12917 msgstr ""
12918
12919 #. type: Plain text
12920 #: build/C/man7/user_namespaces.7:469
12921 msgid ""
12922 "After the creation of a new user namespace, the I<uid_map> file of I<one> of "
12923 "the processes in the namespace may be written to I<once> to define the "
12924 "mapping of user IDs in the new user namespace.  An attempt to write more "
12925 "than once to a I<uid_map> file in a user namespace fails with the error "
12926 "B<EPERM>.  Similar rules apply for I<gid_map> files."
12927 msgstr ""
12928
12929 #. type: Plain text
12930 #: build/C/man7/user_namespaces.7:474
12931 msgid ""
12932 "The lines written to I<uid_map> (I<gid_map>)  must conform to the following "
12933 "rules:"
12934 msgstr ""
12935
12936 #. type: Plain text
12937 #: build/C/man7/user_namespaces.7:477
12938 msgid ""
12939 "The three fields must be valid numbers, and the last field must be greater "
12940 "than 0."
12941 msgstr ""
12942
12943 #. type: Plain text
12944 #: build/C/man7/user_namespaces.7:479
12945 msgid "Lines are terminated by newline characters."
12946 msgstr ""
12947
12948 #.  FIXME(Eric): the restriction "less than" rather than "less than or equal"
12949 #.  seems strangely arbitrary. Furthermore, the comment does not agree
12950 #.  with the code in kernel/user_namespace.c. Which is correct?
12951 #. type: Plain text
12952 #: build/C/man7/user_namespaces.7:492
12953 msgid ""
12954 "There is an (arbitrary) limit on the number of lines in the file.  As at "
12955 "Linux 3.8, the limit is five lines.  In addition, the number of bytes "
12956 "written to the file must be less than the system page size, and the write "
12957 "must be performed at the start of the file (i.e., B<lseek>(2)  and "
12958 "B<pwrite>(2)  can't be used to write to nonzero offsets in the file)."
12959 msgstr ""
12960
12961 #.  commit 0bd14b4fd72afd5df41e9fd59f356740f22fceba
12962 #. type: Plain text
12963 #: build/C/man7/user_namespaces.7:505
12964 msgid ""
12965 "The range of user IDs (group IDs)  specified in each line cannot overlap "
12966 "with the ranges in any other lines.  In the initial implementation (Linux "
12967 "3.8), this requirement was satisfied by a simplistic implementation that "
12968 "imposed the further requirement that the values in both field 1 and field 2 "
12969 "of successive lines must be in ascending numerical order, which prevented "
12970 "some otherwise valid maps from being created.  Linux 3.9 and later fix this "
12971 "limitation, allowing any valid set of nonoverlapping maps."
12972 msgstr ""
12973
12974 #. type: Plain text
12975 #: build/C/man7/user_namespaces.7:507
12976 msgid "At least one line must be written to the file."
12977 msgstr ""
12978
12979 #. type: Plain text
12980 #: build/C/man7/user_namespaces.7:510
12981 msgid "Writes that violate the above rules fail with the error B<EINVAL>."
12982 msgstr ""
12983
12984 #. type: Plain text
12985 #: build/C/man7/user_namespaces.7:515
12986 msgid ""
12987 "In order for a process to write to the I</proc/[pid]/uid_map> (I</proc/[pid]/"
12988 "gid_map>)  file, all of the following requirements must be met:"
12989 msgstr ""
12990
12991 #. type: Plain text
12992 #: build/C/man7/user_namespaces.7:521
12993 msgid ""
12994 "The writing process must have the B<CAP_SETUID> (B<CAP_SETGID>)  capability "
12995 "in the user namespace of the process I<pid>."
12996 msgstr ""
12997
12998 #. type: Plain text
12999 #: build/C/man7/user_namespaces.7:526
13000 msgid ""
13001 "The writing process must be in either the user namespace of the process "
13002 "I<pid> or inside the parent user namespace of the process I<pid>."
13003 msgstr ""
13004
13005 #. type: Plain text
13006 #: build/C/man7/user_namespaces.7:529
13007 msgid ""
13008 "The mapped user IDs (group IDs) must in turn have a mapping in the parent "
13009 "user namespace."
13010 msgstr ""
13011
13012 #. type: Plain text
13013 #: build/C/man7/user_namespaces.7:531
13014 msgid "One of the following is true:"
13015 msgstr ""
13016
13017 #. type: Plain text
13018 #: build/C/man7/user_namespaces.7:541
13019 msgid ""
13020 "The data written to I<uid_map> (I<gid_map>)  consists of a single line that "
13021 "maps the writing process's filesystem user ID (group ID) in the parent user "
13022 "namespace to a user ID (group ID)  in the user namespace.  The usual case "
13023 "here is that this single line provides a mapping for user ID of the process "
13024 "that created the namespace."
13025 msgstr ""
13026
13027 #. type: Plain text
13028 #: build/C/man7/user_namespaces.7:548
13029 msgid ""
13030 "The opening process has the B<CAP_SETUID> (B<CAP_SETGID>)  capability in the "
13031 "parent user namespace.  Thus, a privileged process can make mappings to "
13032 "arbitrary user IDs (group IDs)  in the parent user namespace."
13033 msgstr ""
13034
13035 #
13036 #.  ============================================================
13037 #. type: Plain text
13038 #: build/C/man7/user_namespaces.7:555
13039 msgid "Writes that violate the above rules fail with the error B<EPERM>."
13040 msgstr ""
13041
13042 #. type: SS
13043 #: build/C/man7/user_namespaces.7:555
13044 #, no-wrap
13045 msgid "Unmapped user and group IDs"
13046 msgstr ""
13047
13048 #.  from_kuid_munged(), from_kgid_munged()
13049 #. type: Plain text
13050 #: build/C/man7/user_namespaces.7:572
13051 msgid ""
13052 "There are various places where an unmapped user ID (group ID)  may be "
13053 "exposed to user space.  For example, the first process in a new user "
13054 "namespace may call B<getuid>()  before a user ID mapping has been defined "
13055 "for the namespace.  In most such cases, an unmapped user ID is converted to "
13056 "the overflow user ID (group ID); the default value for the overflow user ID "
13057 "(group ID) is 65534.  See the descriptions of I</proc/sys/kernel/"
13058 "overflowuid> and I</proc/sys/kernel/overflowgid> in B<proc>(5)."
13059 msgstr ""
13060
13061 #.  also SO_PEERCRED
13062 #. type: Plain text
13063 #: build/C/man7/user_namespaces.7:600
13064 msgid ""
13065 "The cases where unmapped IDs are mapped in this fashion include system calls "
13066 "that return user IDs (B<getuid>(2), B<getgid>(2), and similar), credentials "
13067 "passed over a UNIX domain socket, credentials returned by B<stat>(2), "
13068 "B<waitid>(2), and the System V IPC \"ctl\" B<IPC_STAT> operations, "
13069 "credentials exposed by I</proc/PID/status> and the files in I</proc/sysvipc/"
13070 "*>, credentials returned via the I<si_uid> field in the I<siginfo_t> "
13071 "received with a signal (see B<sigaction>(2)), credentials written to the "
13072 "process accounting file (see B<acct>(5)), and credentials returned with "
13073 "POSIX message queue notifications (see B<mq_notify>(3))."
13074 msgstr ""
13075
13076 #
13077 #.  from_kuid(), from_kgid()
13078 #.  Also F_GETOWNER_UIDS is an exception
13079 #.  ============================================================
13080 #. type: Plain text
13081 #: build/C/man7/user_namespaces.7:615
13082 msgid ""
13083 "There is one notable case where unmapped user and group IDs are I<not> "
13084 "converted to the corresponding overflow ID value.  When viewing a I<uid_map> "
13085 "or I<gid_map> file in which there is no mapping for the second field, that "
13086 "field is displayed as 4294967295 (-1 as an unsigned integer);"
13087 msgstr ""
13088
13089 #. type: SS
13090 #: build/C/man7/user_namespaces.7:615
13091 #, no-wrap
13092 msgid "Set-user-ID and set-group-ID programs"
13093 msgstr ""
13094
13095 #
13096 #.  ============================================================
13097 #. type: Plain text
13098 #: build/C/man7/user_namespaces.7:635
13099 msgid ""
13100 "When a process inside a user namespace executes a set-user-ID (set-group-ID) "
13101 "program, the process's effective user (group) ID inside the namespace is "
13102 "changed to whatever value is mapped for the user (group) ID of the file.  "
13103 "However, if either the user I<or> the group ID of the file has no mapping "
13104 "inside the namespace, the set-user-ID (set-group-ID) bit is silently "
13105 "ignored: the new program is executed, but the process's effective user "
13106 "(group) ID is left unchanged.  (This mirrors the semantics of executing a "
13107 "set-user-ID or set-group-ID program that resides on a filesystem that was "
13108 "mounted with the B<MS_NOSUID> flag, as described in B<mount>(2).)"
13109 msgstr ""
13110
13111 #. type: Plain text
13112 #: build/C/man7/user_namespaces.7:645
13113 msgid ""
13114 "When a process's user and group IDs are passed over a UNIX domain socket to "
13115 "a process in a different user namespace (see the description of "
13116 "B<SCM_CREDENTIALS> in B<unix>(7)), they are translated into the "
13117 "corresponding values as per the receiving process's user and group ID "
13118 "mappings."
13119 msgstr ""
13120
13121 #
13122 #.  ============================================================
13123 #. type: Plain text
13124 #: build/C/man7/user_namespaces.7:658
13125 msgid ""
13126 "Over the years, there have been a lot of features that have been added to "
13127 "the Linux kernel that have been made available only to privileged users "
13128 "because of their potential to confuse set-user-ID-root applications.  In "
13129 "general, it becomes safe to allow the root user in a user namespace to use "
13130 "those features because it is impossible, while in a user namespace, to gain "
13131 "more privilege than the root user of a user namespace has."
13132 msgstr ""
13133
13134 #. type: SS
13135 #: build/C/man7/user_namespaces.7:658
13136 #, no-wrap
13137 msgid "Availability"
13138 msgstr ""
13139
13140 #. type: Plain text
13141 #: build/C/man7/user_namespaces.7:666
13142 msgid ""
13143 "Use of user namespaces requires a kernel that is configured with the "
13144 "B<CONFIG_USER_NS> option.  User namespaces require support in a range of "
13145 "subsystems across the kernel.  When an unsupported subsystem is configured "
13146 "into the kernel, it is not possible to configure user namespaces support."
13147 msgstr ""
13148
13149 #.  commit d6970d4b726cea6d7a9bc4120814f95c09571fc3
13150 #. type: Plain text
13151 #: build/C/man7/user_namespaces.7:677
13152 msgid ""
13153 "As at Linux 3.8, most relevant subsystems supported user namespaces, but a "
13154 "number of filesystems did not have the infrastructure needed to map user and "
13155 "group IDs between user namespaces.  Linux 3.9 added the required "
13156 "infrastructure support for many of the remaining unsupported filesystems "
13157 "(Plan 9 (9P), Andrew File System (AFS), Ceph, CIFS, CODA, NFS, and OCFS2).  "
13158 "Linux 3.11 added support the last of the unsupported major filesystems, XFS."
13159 msgstr ""
13160
13161 #. type: Plain text
13162 #: build/C/man7/user_namespaces.7:686
13163 msgid ""
13164 "The program below is designed to allow experimenting with user namespaces, "
13165 "as well as other types of namespaces.  It creates namespaces as specified by "
13166 "command-line options and then executes a command inside those namespaces.  "
13167 "The comments and I<usage()> function inside the program provide a full "
13168 "explanation of the program.  The following shell session demonstrates its "
13169 "use."
13170 msgstr ""
13171
13172 #. type: Plain text
13173 #: build/C/man7/user_namespaces.7:688
13174 msgid "First, we look at the run-time environment:"
13175 msgstr ""
13176
13177 #. type: Plain text
13178 #: build/C/man7/user_namespaces.7:697
13179 #, no-wrap
13180 msgid ""
13181 "$ B<uname -rs>     # Need Linux 3.8 or later\n"
13182 "Linux 3.8.0\n"
13183 "$ B<id -u>         # Running as unprivileged user\n"
13184 "1000\n"
13185 "$ B<id -g>\n"
13186 "1000\n"
13187 msgstr ""
13188
13189 #. type: Plain text
13190 #: build/C/man7/user_namespaces.7:711
13191 msgid ""
13192 "Now start a new shell in new user (I<-U>), mount (I<-m>), and PID (I<-p>)  "
13193 "namespaces, with user ID (I<-M>)  and group ID (I<-G>)  1000 mapped to 0 "
13194 "inside the user namespace:"
13195 msgstr ""
13196
13197 #. type: Plain text
13198 #: build/C/man7/user_namespaces.7:715
13199 #, no-wrap
13200 msgid "$ B<./userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash>\n"
13201 msgstr ""
13202
13203 #. type: Plain text
13204 #: build/C/man7/user_namespaces.7:720
13205 msgid ""
13206 "The shell has PID 1, because it is the first process in the new PID "
13207 "namespace:"
13208 msgstr ""
13209
13210 #. type: Plain text
13211 #: build/C/man7/user_namespaces.7:725
13212 #, no-wrap
13213 msgid ""
13214 "bash$ B<echo $$>\n"
13215 "1\n"
13216 msgstr ""
13217
13218 #. type: Plain text
13219 #: build/C/man7/user_namespaces.7:730
13220 msgid ""
13221 "Inside the user namespace, the shell has user and group ID 0, and a full set "
13222 "of permitted and effective capabilities:"
13223 msgstr ""
13224
13225 #. type: Plain text
13226 #: build/C/man7/user_namespaces.7:740
13227 #, no-wrap
13228 msgid ""
13229 "bash$ B<cat /proc/$$/status | egrep '^[UG]id'>\n"
13230 "Uid:\t0\t0\t0\t0\n"
13231 "Gid:\t0\t0\t0\t0\n"
13232 "bash$ B<cat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'>\n"
13233 "CapInh:\t0000000000000000\n"
13234 "CapPrm:\t0000001fffffffff\n"
13235 "CapEff:\t0000001fffffffff\n"
13236 msgstr ""
13237
13238 #. type: Plain text
13239 #: build/C/man7/user_namespaces.7:748
13240 msgid ""
13241 "Mounting a new I</proc> filesystem and listing all of the processes visible "
13242 "in the new PID namespace shows that the shell can't see any processes "
13243 "outside the PID namespace:"
13244 msgstr ""
13245
13246 #. type: Plain text
13247 #: build/C/man7/user_namespaces.7:756
13248 #, no-wrap
13249 msgid ""
13250 "bash$ B<mount -t proc proc /proc>\n"
13251 "bash$ B<ps ax>\n"
13252 "  PID TTY      STAT   TIME COMMAND\n"
13253 "    1 pts/3    S      0:00 bash\n"
13254 "   22 pts/3    R+     0:00 ps ax\n"
13255 msgstr ""
13256
13257 #. type: SS
13258 #: build/C/man7/user_namespaces.7:758
13259 #, no-wrap
13260 msgid "Program source"
13261 msgstr ""
13262
13263 #. type: Plain text
13264 #: build/C/man7/user_namespaces.7:762
13265 #, no-wrap
13266 msgid "/* userns_child_exec.c\n"
13267 msgstr ""
13268
13269 #. type: Plain text
13270 #: build/C/man7/user_namespaces.7:764
13271 #, no-wrap
13272 msgid "   Licensed under GNU General Public License v2 or later\n"
13273 msgstr ""
13274
13275 #. type: Plain text
13276 #: build/C/man7/user_namespaces.7:780
13277 #, no-wrap
13278 msgid ""
13279 "   Create a child process that executes a shell command in new\n"
13280 "   namespace(s); allow UID and GID mappings to be specified when\n"
13281 "   creating a user namespace.\n"
13282 "*/\n"
13283 "#define _GNU_SOURCE\n"
13284 "#include E<lt>sched.hE<gt>\n"
13285 "#include E<lt>unistd.hE<gt>\n"
13286 "#include E<lt>stdlib.hE<gt>\n"
13287 "#include E<lt>sys/wait.hE<gt>\n"
13288 "#include E<lt>signal.hE<gt>\n"
13289 "#include E<lt>fcntl.hE<gt>\n"
13290 "#include E<lt>stdio.hE<gt>\n"
13291 "#include E<lt>string.hE<gt>\n"
13292 "#include E<lt>limits.hE<gt>\n"
13293 "#include E<lt>errno.hE<gt>\n"
13294 msgstr ""
13295
13296 #. type: Plain text
13297 #: build/C/man7/user_namespaces.7:783
13298 #, no-wrap
13299 msgid ""
13300 "/* A simple error-handling function: print an error message based\n"
13301 "   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
13302 msgstr ""
13303 "/* A simple error-handling function: print an error message based\n"
13304 "   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
13305
13306 #. type: Plain text
13307 #: build/C/man7/user_namespaces.7:786
13308 #, no-wrap
13309 msgid ""
13310 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
13311 "                        } while (0)\n"
13312 msgstr ""
13313 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
13314 "                        } while (0)\n"
13315
13316 #. type: Plain text
13317 #: build/C/man7/user_namespaces.7:791
13318 #, no-wrap
13319 msgid ""
13320 "struct child_args {\n"
13321 "    char **argv;        /* Command to be executed by child, with args */\n"
13322 "    int    pipe_fd[2];  /* Pipe used to synchronize parent and child */\n"
13323 "};\n"
13324 msgstr ""
13325 "struct child_args {\n"
13326 "    char **argv;        /* Command to be executed by child, with args */\n"
13327 "    int    pipe_fd[2];  /* Pipe used to synchronize parent and child */\n"
13328 "};\n"
13329
13330 #. type: Plain text
13331 #: build/C/man7/user_namespaces.7:793
13332 #, no-wrap
13333 msgid "static int verbose;\n"
13334 msgstr ""
13335
13336 #. type: Plain text
13337 #: build/C/man7/user_namespaces.7:826
13338 #, no-wrap
13339 msgid ""
13340 "static void\n"
13341 "usage(char *pname)\n"
13342 "{\n"
13343 "    fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n"
13344 "    fprintf(stderr, \"Create a child process that executes a shell \"\n"
13345 "            \"command in a new user namespace,\\en\"\n"
13346 "            \"and possibly also other new namespace(s).\\en\\en\");\n"
13347 "    fprintf(stderr, \"Options can be:\\en\\en\");\n"
13348 "#define fpe(str) fprintf(stderr, \"    %s\", str);\n"
13349 "    fpe(\"-i          New IPC namespace\\en\");\n"
13350 "    fpe(\"-m          New mount namespace\\en\");\n"
13351 "    fpe(\"-n          New network namespace\\en\");\n"
13352 "    fpe(\"-p          New PID namespace\\en\");\n"
13353 "    fpe(\"-u          New UTS namespace\\en\");\n"
13354 "    fpe(\"-U          New user namespace\\en\");\n"
13355 "    fpe(\"-M uid_map  Specify UID map for user namespace\\en\");\n"
13356 "    fpe(\"-G gid_map  Specify GID map for user namespace\\en\");\n"
13357 "    fpe(\"-z          Map user\\(aqs UID and GID to 0 in user namespace\\en\");\n"
13358 "    fpe(\"            (equivalent to: -M \\(aq0 E<lt>uidE<gt> 1\\(aq -G \\(aq0 E<lt>gidE<gt> 1\\(aq)\\en\");\n"
13359 "    fpe(\"-v          Display verbose messages\\en\");\n"
13360 "    fpe(\"\\en\");\n"
13361 "    fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n"
13362 "    fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n"
13363 "    fpe(\"\\en\");\n"
13364 "    fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n"
13365 "    fpe(\"\\en\");\n"
13366 "    fpe(\"    ID-inside-ns   ID-outside-ns   len\\en\");\n"
13367 "    fpe(\"\\en\");\n"
13368 "    fpe(\"A map string can contain multiple records, separated\"\n"
13369 "        \" by commas;\\en\");\n"
13370 "    fpe(\"the commas are replaced by newlines before writing\"\n"
13371 "        \" to map files.\\en\");\n"
13372 msgstr ""
13373 "static void\n"
13374 "usage(char *pname)\n"
13375 "{\n"
13376 "    fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n"
13377 "    fprintf(stderr, \"Create a child process that executes a shell \"\n"
13378 "            \"command in a new user namespace,\\en\"\n"
13379 "            \"and possibly also other new namespace(s).\\en\\en\");\n"
13380 "    fprintf(stderr, \"Options can be:\\en\\en\");\n"
13381 "#define fpe(str) fprintf(stderr, \"    %s\", str);\n"
13382 "    fpe(\"-i          New IPC namespace\\en\");\n"
13383 "    fpe(\"-m          New mount namespace\\en\");\n"
13384 "    fpe(\"-n          New network namespace\\en\");\n"
13385 "    fpe(\"-p          New PID namespace\\en\");\n"
13386 "    fpe(\"-u          New UTS namespace\\en\");\n"
13387 "    fpe(\"-U          New user namespace\\en\");\n"
13388 "    fpe(\"-M uid_map  Specify UID map for user namespace\\en\");\n"
13389 "    fpe(\"-G gid_map  Specify GID map for user namespace\\en\");\n"
13390 "    fpe(\"-z          Map user\\(aqs UID and GID to 0 in user namespace\\en\");\n"
13391 "    fpe(\"            (equivalent to: -M \\(aq0 E<lt>uidE<gt> 1\\(aq -G \\(aq0 E<lt>gidE<gt> 1\\(aq)\\en\");\n"
13392 "    fpe(\"-v          Display verbose messages\\en\");\n"
13393 "    fpe(\"\\en\");\n"
13394 "    fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n"
13395 "    fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n"
13396 "    fpe(\"\\en\");\n"
13397 "    fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n"
13398 "    fpe(\"\\en\");\n"
13399 "    fpe(\"    ID-inside-ns   ID-outside-ns   len\\en\");\n"
13400 "    fpe(\"\\en\");\n"
13401 "    fpe(\"A map string can contain multiple records, separated\"\n"
13402 "        \" by commas;\\en\");\n"
13403 "    fpe(\"the commas are replaced by newlines before writing\"\n"
13404 "        \" to map files.\\en\");\n"
13405
13406 #. type: Plain text
13407 #: build/C/man7/user_namespaces.7:834
13408 #, no-wrap
13409 msgid ""
13410 "/* Update the mapping file \\(aqmap_file\\(aq, with the value provided in\n"
13411 "   \\(aqmapping\\(aq, a string that defines a UID or GID mapping. A UID or\n"
13412 "   GID mapping consists of one or more newline-delimited records\n"
13413 "   of the form:\n"
13414 msgstr ""
13415
13416 #. type: Plain text
13417 #: build/C/man7/user_namespaces.7:836
13418 #, no-wrap
13419 msgid "       ID_inside-ns    ID-outside-ns   length\n"
13420 msgstr ""
13421
13422 #. type: Plain text
13423 #: build/C/man7/user_namespaces.7:841
13424 #, no-wrap
13425 msgid ""
13426 "   Requiring the user to supply a string that contains newlines is\n"
13427 "   of course inconvenient for command-line use. Thus, we permit the\n"
13428 "   use of commas to delimit records in this string, and replace them\n"
13429 "   with newlines before writing the string to the file. */\n"
13430 msgstr ""
13431
13432 #. type: Plain text
13433 #: build/C/man7/user_namespaces.7:847
13434 #, no-wrap
13435 msgid ""
13436 "static void\n"
13437 "update_map(char *mapping, char *map_file)\n"
13438 "{\n"
13439 "    int fd, j;\n"
13440 "    size_t map_len;     /* Length of \\(aqmapping\\(aq */\n"
13441 msgstr ""
13442 "static void\n"
13443 "update_map(char *mapping, char *map_file)\n"
13444 "{\n"
13445 "    int fd, j;\n"
13446 "    size_t map_len;     /* Length of \\(aqmapping\\(aq */\n"
13447
13448 #. type: Plain text
13449 #: build/C/man7/user_namespaces.7:849
13450 #, no-wrap
13451 msgid "    /* Replace commas in mapping string with newlines */\n"
13452 msgstr "    /* Replace commas in mapping string with newlines */\n"
13453
13454 #. type: Plain text
13455 #: build/C/man7/user_namespaces.7:854
13456 #, no-wrap
13457 msgid ""
13458 "    map_len = strlen(mapping);\n"
13459 "    for (j = 0; j E<lt> map_len; j++)\n"
13460 "        if (mapping[j] == \\(aq,\\(aq)\n"
13461 "            mapping[j] = \\(aq\\en\\(aq;\n"
13462 msgstr ""
13463 "    map_len = strlen(mapping);\n"
13464 "    for (j = 0; j E<lt> map_len; j++)\n"
13465 "        if (mapping[j] == \\(aq,\\(aq)\n"
13466 "            mapping[j] = \\(aq\\en\\(aq;\n"
13467
13468 #. type: Plain text
13469 #: build/C/man7/user_namespaces.7:861
13470 #, no-wrap
13471 msgid ""
13472 "    fd = open(map_file, O_RDWR);\n"
13473 "    if (fd == -1) {\n"
13474 "        fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n"
13475 "                strerror(errno));\n"
13476 "        exit(EXIT_FAILURE);\n"
13477 "    }\n"
13478 msgstr ""
13479 "    fd = open(map_file, O_RDWR);\n"
13480 "    if (fd == -1) {\n"
13481 "        fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n"
13482 "                strerror(errno));\n"
13483 "        exit(EXIT_FAILURE);\n"
13484 "    }\n"
13485
13486 #. type: Plain text
13487 #: build/C/man7/user_namespaces.7:867
13488 #, no-wrap
13489 msgid ""
13490 "    if (write(fd, mapping, map_len) != map_len) {\n"
13491 "        fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n"
13492 "                strerror(errno));\n"
13493 "        exit(EXIT_FAILURE);\n"
13494 "    }\n"
13495 msgstr ""
13496 "    if (write(fd, mapping, map_len) != map_len) {\n"
13497 "        fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n"
13498 "                strerror(errno));\n"
13499 "        exit(EXIT_FAILURE);\n"
13500 "    }\n"
13501
13502 #. type: Plain text
13503 #: build/C/man7/user_namespaces.7:870
13504 #, no-wrap
13505 msgid ""
13506 "    close(fd);\n"
13507 "}\n"
13508 msgstr ""
13509 "    close(fd);\n"
13510 "}\n"
13511
13512 #. type: Plain text
13513 #: build/C/man7/user_namespaces.7:876
13514 #, no-wrap
13515 msgid ""
13516 "static int              /* Start function for cloned child */\n"
13517 "childFunc(void *arg)\n"
13518 "{\n"
13519 "    struct child_args *args = (struct child_args *) arg;\n"
13520 "    char ch;\n"
13521 msgstr ""
13522 "static int              /* Start function for cloned child */\n"
13523 "childFunc(void *arg)\n"
13524 "{\n"
13525 "    struct child_args *args = (struct child_args *) arg;\n"
13526 "    char ch;\n"
13527
13528 #. type: Plain text
13529 #: build/C/man7/user_namespaces.7:881
13530 #, no-wrap
13531 msgid ""
13532 "    /* Wait until the parent has updated the UID and GID mappings.\n"
13533 "       See the comment in main(). We wait for end of file on a\n"
13534 "       pipe that will be closed by the parent process once it has\n"
13535 "       updated the mappings. */\n"
13536 msgstr ""
13537
13538 #. type: Plain text
13539 #: build/C/man7/user_namespaces.7:890
13540 #, no-wrap
13541 msgid ""
13542 "    close(args-E<gt>pipe_fd[1]);    /* Close our descriptor for the write\n"
13543 "                                   end of the pipe so that we see EOF\n"
13544 "                                   when parent closes its descriptor */\n"
13545 "    if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n"
13546 "        fprintf(stderr,\n"
13547 "                \"Failure in child: read from pipe returned != 0\\en\");\n"
13548 "        exit(EXIT_FAILURE);\n"
13549 "    }\n"
13550 msgstr ""
13551
13552 #. type: Plain text
13553 #: build/C/man7/user_namespaces.7:892
13554 #, no-wrap
13555 msgid "    /* Execute a shell command */\n"
13556 msgstr ""
13557
13558 #. type: Plain text
13559 #: build/C/man7/user_namespaces.7:897
13560 #, no-wrap
13561 msgid ""
13562 "    printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n"
13563 "    execvp(args-E<gt>argv[0], args-E<gt>argv);\n"
13564 "    errExit(\"execvp\");\n"
13565 "}\n"
13566 msgstr ""
13567 "    printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n"
13568 "    execvp(args-E<gt>argv[0], args-E<gt>argv);\n"
13569 "    errExit(\"execvp\");\n"
13570 "}\n"
13571
13572 #. type: Plain text
13573 #: build/C/man7/user_namespaces.7:899
13574 #, no-wrap
13575 msgid "#define STACK_SIZE (1024 * 1024)\n"
13576 msgstr "#define STACK_SIZE (1024 * 1024)\n"
13577
13578 #. type: Plain text
13579 #: build/C/man7/user_namespaces.7:901
13580 #, no-wrap
13581 msgid "static char child_stack[STACK_SIZE];    /* Space for child\\(aqs stack */\n"
13582 msgstr ""
13583
13584 #. type: Plain text
13585 #: build/C/man7/user_namespaces.7:912
13586 #, no-wrap
13587 msgid ""
13588 "int\n"
13589 "main(int argc, char *argv[])\n"
13590 "{\n"
13591 "    int flags, opt, map_zero;\n"
13592 "    pid_t child_pid;\n"
13593 "    struct child_args args;\n"
13594 "    char *uid_map, *gid_map;\n"
13595 "    const int MAP_BUF_SIZE = 100;\n"
13596 "    char map_buf[MAP_BUF_SIZE];\n"
13597 "    char map_path[PATH_MAX];\n"
13598 msgstr ""
13599 "int\n"
13600 "main(int argc, char *argv[])\n"
13601 "{\n"
13602 "    int flags, opt, map_zero;\n"
13603 "    pid_t child_pid;\n"
13604 "    struct child_args args;\n"
13605 "    char *uid_map, *gid_map;\n"
13606 "    const int MAP_BUF_SIZE = 100;\n"
13607 "    char map_buf[MAP_BUF_SIZE];\n"
13608 "    char map_path[PATH_MAX];\n"
13609
13610 #. type: Plain text
13611 #: build/C/man7/user_namespaces.7:919
13612 #, no-wrap
13613 msgid ""
13614 "    /* Parse command-line options. The initial \\(aq+\\(aq character in\n"
13615 "       the final getopt() argument prevents GNU-style permutation\n"
13616 "       of command-line options. That\\(aqs useful, since sometimes\n"
13617 "       the \\(aqcommand\\(aq to be executed by this program itself\n"
13618 "       has command-line options. We don\\(aqt want getopt() to treat\n"
13619 "       those as options to this program. */\n"
13620 msgstr ""
13621
13622 #. type: Plain text
13623 #: build/C/man7/user_namespaces.7:940
13624 #, no-wrap
13625 msgid ""
13626 "    flags = 0;\n"
13627 "    verbose = 0;\n"
13628 "    gid_map = NULL;\n"
13629 "    uid_map = NULL;\n"
13630 "    map_zero = 0;\n"
13631 "    while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n"
13632 "        switch (opt) {\n"
13633 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
13634 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
13635 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
13636 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
13637 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
13638 "        case \\(aqv\\(aq: verbose = 1;                  break;\n"
13639 "        case \\(aqz\\(aq: map_zero = 1;                 break;\n"
13640 "        case \\(aqM\\(aq: uid_map = optarg;             break;\n"
13641 "        case \\(aqG\\(aq: gid_map = optarg;             break;\n"
13642 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
13643 "        default:  usage(argv[0]);\n"
13644 "        }\n"
13645 "    }\n"
13646 msgstr ""
13647 "    flags = 0;\n"
13648 "    verbose = 0;\n"
13649 "    gid_map = NULL;\n"
13650 "    uid_map = NULL;\n"
13651 "    map_zero = 0;\n"
13652 "    while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n"
13653 "        switch (opt) {\n"
13654 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
13655 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
13656 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
13657 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
13658 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
13659 "        case \\(aqv\\(aq: verbose = 1;                  break;\n"
13660 "        case \\(aqz\\(aq: map_zero = 1;                 break;\n"
13661 "        case \\(aqM\\(aq: uid_map = optarg;             break;\n"
13662 "        case \\(aqG\\(aq: gid_map = optarg;             break;\n"
13663 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
13664 "        default:  usage(argv[0]);\n"
13665 "        }\n"
13666 "    }\n"
13667
13668 #. type: Plain text
13669 #: build/C/man7/user_namespaces.7:942
13670 #, no-wrap
13671 msgid "    /* -M or -G without -U is nonsensical */\n"
13672 msgstr ""
13673
13674 #. type: Plain text
13675 #: build/C/man7/user_namespaces.7:947
13676 #, no-wrap
13677 msgid ""
13678 "    if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n"
13679 "                !(flags & CLONE_NEWUSER)) ||\n"
13680 "            (map_zero && (uid_map != NULL || gid_map != NULL)))\n"
13681 "        usage(argv[0]);\n"
13682 msgstr ""
13683 "    if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n"
13684 "                !(flags & CLONE_NEWUSER)) ||\n"
13685 "            (map_zero && (uid_map != NULL || gid_map != NULL)))\n"
13686 "        usage(argv[0]);\n"
13687
13688 #. type: Plain text
13689 #: build/C/man7/user_namespaces.7:949
13690 #, no-wrap
13691 msgid "    args.argv = &argv[optind];\n"
13692 msgstr "    args.argv = &argv[optind];\n"
13693
13694 #. type: Plain text
13695 #: build/C/man7/user_namespaces.7:959
13696 #, no-wrap
13697 msgid ""
13698 "    /* We use a pipe to synchronize the parent and child, in order to\n"
13699 "       ensure that the parent sets the UID and GID maps before the child\n"
13700 "       calls execve(). This ensures that the child maintains its\n"
13701 "       capabilities during the execve() in the common case where we\n"
13702 "       want to map the child\\(aqs effective user ID to 0 in the new user\n"
13703 "       namespace. Without this synchronization, the child would lose\n"
13704 "       its capabilities if it performed an execve() with nonzero\n"
13705 "       user IDs (see the capabilities(7) man page for details of the\n"
13706 "       transformation of a process\\(aqs capabilities during execve()). */\n"
13707 msgstr ""
13708
13709 #. type: Plain text
13710 #: build/C/man7/user_namespaces.7:962
13711 #, no-wrap
13712 msgid ""
13713 "    if (pipe(args.pipe_fd) == -1)\n"
13714 "        errExit(\"pipe\");\n"
13715 msgstr ""
13716 "    if (pipe(args.pipe_fd) == -1)\n"
13717 "        errExit(\"pipe\");\n"
13718
13719 #. type: Plain text
13720 #: build/C/man7/user_namespaces.7:964
13721 #, no-wrap
13722 msgid "    /* Create the child in new namespace(s) */\n"
13723 msgstr ""
13724
13725 #. type: Plain text
13726 #: build/C/man7/user_namespaces.7:969
13727 #, no-wrap
13728 msgid ""
13729 "    child_pid = clone(childFunc, child_stack + STACK_SIZE,\n"
13730 "                      flags | SIGCHLD, &args);\n"
13731 "    if (child_pid == -1)\n"
13732 "        errExit(\"clone\");\n"
13733 msgstr ""
13734 "    child_pid = clone(childFunc, child_stack + STACK_SIZE,\n"
13735 "                      flags | SIGCHLD, &args);\n"
13736 "    if (child_pid == -1)\n"
13737 "        errExit(\"clone\");\n"
13738
13739 #. type: Plain text
13740 #: build/C/man7/user_namespaces.7:971
13741 #, no-wrap
13742 msgid "    /* Parent falls through to here */\n"
13743 msgstr ""
13744
13745 #. type: Plain text
13746 #: build/C/man7/user_namespaces.7:975
13747 #, no-wrap
13748 msgid ""
13749 "    if (verbose)\n"
13750 "        printf(\"%s: PID of child created by clone() is %ld\\en\",\n"
13751 "                argv[0], (long) child_pid);\n"
13752 msgstr ""
13753 "    if (verbose)\n"
13754 "        printf(\"%s: PID of child created by clone() is %ld\\en\",\n"
13755 "                argv[0], (long) child_pid);\n"
13756
13757 #. type: Plain text
13758 #: build/C/man7/user_namespaces.7:977
13759 #, no-wrap
13760 msgid "    /* Update the UID and GID maps in the child */\n"
13761 msgstr ""
13762
13763 #. type: Plain text
13764 #: build/C/man7/user_namespaces.7:996
13765 #, no-wrap
13766 msgid ""
13767 "    if (uid_map != NULL || map_zero) {\n"
13768 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/uid_map\",\n"
13769 "                (long) child_pid);\n"
13770 "        if (map_zero) {\n"
13771 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getuid());\n"
13772 "            uid_map = map_buf;\n"
13773 "        }\n"
13774 "        update_map(uid_map, map_path);\n"
13775 "    }\n"
13776 "    if (gid_map != NULL || map_zero) {\n"
13777 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/gid_map\",\n"
13778 "                (long) child_pid);\n"
13779 "        if (map_zero) {\n"
13780 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getgid());\n"
13781 "            gid_map = map_buf;\n"
13782 "        }\n"
13783 "        update_map(gid_map, map_path);\n"
13784 "    }\n"
13785 msgstr ""
13786 "    if (uid_map != NULL || map_zero) {\n"
13787 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/uid_map\",\n"
13788 "                (long) child_pid);\n"
13789 "        if (map_zero) {\n"
13790 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getuid());\n"
13791 "            uid_map = map_buf;\n"
13792 "        }\n"
13793 "        update_map(uid_map, map_path);\n"
13794 "    }\n"
13795 "    if (gid_map != NULL || map_zero) {\n"
13796 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/gid_map\",\n"
13797 "                (long) child_pid);\n"
13798 "        if (map_zero) {\n"
13799 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getgid());\n"
13800 "            gid_map = map_buf;\n"
13801 "        }\n"
13802 "        update_map(gid_map, map_path);\n"
13803 "    }\n"
13804
13805 #. type: Plain text
13806 #: build/C/man7/user_namespaces.7:999
13807 #, no-wrap
13808 msgid ""
13809 "    /* Close the write end of the pipe, to signal to the child that we\n"
13810 "       have updated the UID and GID maps */\n"
13811 msgstr ""
13812
13813 #. type: Plain text
13814 #: build/C/man7/user_namespaces.7:1001
13815 #, no-wrap
13816 msgid "    close(args.pipe_fd[1]);\n"
13817 msgstr "    close(args.pipe_fd[1]);\n"
13818
13819 #. type: Plain text
13820 #: build/C/man7/user_namespaces.7:1004
13821 #, no-wrap
13822 msgid ""
13823 "    if (waitpid(child_pid, NULL, 0) == -1)      /* Wait for child */\n"
13824 "        errExit(\"waitpid\");\n"
13825 msgstr ""
13826 "    if (waitpid(child_pid, NULL, 0) == -1)      /* Wait for child */\n"
13827 "        errExit(\"waitpid\");\n"
13828
13829 #. type: Plain text
13830 #: build/C/man7/user_namespaces.7:1007
13831 #, no-wrap
13832 msgid ""
13833 "    if (verbose)\n"
13834 "        printf(\"%s: terminating\\en\", argv[0]);\n"
13835 msgstr ""
13836 "    if (verbose)\n"
13837 "        printf(\"%s: terminating\\en\", argv[0]);\n"
13838
13839 #. type: Plain text
13840 #: build/C/man7/user_namespaces.7:1010
13841 #, no-wrap
13842 msgid ""
13843 "    exit(EXIT_SUCCESS);\n"
13844 "}\n"
13845 msgstr ""
13846 "    exit(EXIT_SUCCESS);\n"
13847 "}\n"
13848
13849 #.  From the shadow package
13850 #.  From the shadow package
13851 #.  From the shadow package
13852 #.  From the shadow package
13853 #. type: Plain text
13854 #: build/C/man7/user_namespaces.7:1024
13855 msgid ""
13856 "B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<setns>(2), B<unshare>(2), "
13857 "B<proc>(5), B<subgid>(5), B<subuid>(5), B<credentials>(7), "
13858 "B<capabilities>(7), B<namespaces>(7), B<pid_namespaces>(7)"
13859 msgstr ""
13860 "B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<setns>(2), B<unshare>(2), "
13861 "B<proc>(5), B<subgid>(5), B<subuid>(5), B<credentials>(7), "
13862 "B<capabilities>(7), B<namespaces>(7), B<pid_namespaces>(7)"
13863
13864 #. type: Plain text
13865 #: build/C/man7/user_namespaces.7:1027
13866 msgid ""
13867 "The kernel source file I<Documentation/namespaces/resource-control.txt>."
13868 msgstr ""
13869 "カーネルのソーフファイル I<Documentation/namespaces/resource-control.txt>"
13870
13871 #~ msgid "2013-02-11"
13872 #~ msgstr "2013-02-11"
13873
13874 #~ msgid ""
13875 #~ "A process group leader is a process with process group ID equal to its "
13876 #~ "PID.  In order to be sure that B<setsid>()  will succeed, B<fork>(2)  and "
13877 #~ "B<_exit>(2), and have the child do B<setsid>()."
13878 #~ msgstr ""
13879 #~ "プロセスグループ・リーダーとは、そのプロセスのプロセスグループ ID が その "
13880 #~ "PID に等しいプロセスである。 B<setsid>()  を確実に成功させるためには、 "
13881 #~ "B<fork>(2)  して B<exit>(2)  し、子プロセスで B<setsid>()  を行なえば良"
13882 #~ "い。"
13883
13884 #~ msgid ""
13885 #~ "I<uid> does not match the current UID and this call would bring that user "
13886 #~ "ID over its B<RLIMIT_NPROC> resource limit."
13887 #~ msgstr ""
13888 #~ "I<uid> が現在のユーザー ID と違う値で、 この呼び出しにより ユーザー ID が "
13889 #~ "リソース上限 B<RLIMIT_NPROC> を超えてしまう。"
13890
13891 #~ msgid ""
13892 #~ "The I<uid> does not match the current uid and I<uid> brings process over "
13893 #~ "its B<RLIMIT_NPROC> resource limit."
13894 #~ msgstr ""
13895 #~ "I<uid> が現在のユーザー ID とマッチせず、この I<uid> によってプロセスがリ"
13896 #~ "ソース上限 B<RLIMIT_NPROC> を超えた。"