OSDN Git Service

422821c389e916070ed455418f849d94577822f9
[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-23 22:22+0900\n"
10 "PO-Revision-Date: 2015-01-24 20:53+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 build/C/man2/seccomp.2: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 build/C/man2/seccomp.2: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 build/C/man2/seccomp.2: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 #: build/C/man2/seccomp.2:30
112 #, no-wrap
113 msgid "SYNOPSIS"
114 msgstr "書式"
115
116 #. type: Plain text
117 #: build/C/man2/acct.2:38
118 #, no-wrap
119 msgid "B<#include E<lt>unistd.hE<gt>>\n"
120 msgstr "B<#include E<lt>unistd.hE<gt>>\n"
121
122 #. type: Plain text
123 #: build/C/man2/acct.2:40
124 #, no-wrap
125 msgid "B<int acct(const char *>I<filename>B<);>\n"
126 msgstr "B<int acct(const char *>I<filename>B<);>\n"
127
128 #. type: Plain text
129 #: build/C/man2/acct.2:46 build/C/man2/getgroups.2:48
130 #: build/C/man2/getrlimit.2:84 build/C/man2/getsid.2:37
131 #: build/C/man3/group_member.3:36 build/C/man2/seteuid.2:44
132 #: build/C/man2/setpgid.2:71 build/C/man2/setreuid.2:60
133 msgid ""
134 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
135 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7)  参照):"
136
137 #. type: Plain text
138 #: build/C/man2/acct.2:50
139 msgid ""
140 "B<acct>(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E<lt>\\ 500)"
141 msgstr ""
142 "B<acct>(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E<lt>\\ 500)"
143
144 #. type: SH
145 #: build/C/man2/acct.2:50 build/C/man5/acct.5:30
146 #: build/C/man7/capabilities.7:51 build/C/man2/capget.2:24
147 #: build/C/man7/cpuset.7:28 build/C/man7/credentials.7:30
148 #: build/C/man2/getgid.2:36 build/C/man2/getgroups.2:52
149 #: build/C/man2/getpid.2:36 build/C/man2/getpriority.2:56
150 #: build/C/man2/getresuid.2:39 build/C/man2/getrlimit.2:88
151 #: build/C/man2/getrusage.2:48 build/C/man2/getsid.2:50
152 #: build/C/man2/getuid.2:37 build/C/man3/group_member.3:40
153 #: build/C/man2/iopl.2:40 build/C/man2/ioprio_set.2:35 build/C/man2/ipc.2:34
154 #: build/C/man7/namespaces.7:30 build/C/man7/pid_namespaces.7:30
155 #: build/C/man2/seteuid.2:53 build/C/man2/setfsgid.2:38
156 #: build/C/man2/setfsuid.2:38 build/C/man2/setgid.2:38
157 #: build/C/man2/setpgid.2:100 build/C/man2/setresuid.2:37
158 #: build/C/man2/setreuid.2:70 build/C/man2/setsid.2:41
159 #: build/C/man2/setuid.2:39 build/C/man7/svipc.7:49 build/C/man3/ulimit.3:34
160 #: build/C/man7/user_namespaces.7:30 build/C/man2/seccomp.2:43
161 #, no-wrap
162 msgid "DESCRIPTION"
163 msgstr "説明"
164
165 #. type: Plain text
166 #: build/C/man2/acct.2:60
167 msgid ""
168 "The B<acct>()  system call enables or disables process accounting.  If "
169 "called with the name of an existing file as its argument, accounting is "
170 "turned on, and records for each terminating process are appended to "
171 "I<filename> as it terminates.  An argument of NULL causes accounting to be "
172 "turned off."
173 msgstr ""
174 "B<acct>()  システムコールは、プロセス・アカウントの有効・無効を切り替える。 "
175 "既存のファイルの名前を引き数に指定して呼び出されたら、 アカウント (account) "
176 "が有効になり、 終了したプロセスの記録が I<filename> に追記される。 NULL を引"
177 "き数として呼び出されたらアカウントをオフにする。"
178
179 #. type: SH
180 #: build/C/man2/acct.2:60 build/C/man2/capget.2:160
181 #: build/C/man2/getgroups.2:92 build/C/man2/getpriority.2:104
182 #: build/C/man2/getresuid.2:50 build/C/man2/getrlimit.2:461
183 #: build/C/man2/getrusage.2:188 build/C/man2/getsid.2:58
184 #: build/C/man3/group_member.3:48 build/C/man2/iopl.2:66
185 #: build/C/man2/ioprio_set.2:149 build/C/man2/seteuid.2:67
186 #: build/C/man2/setfsgid.2:68 build/C/man2/setfsuid.2:68
187 #: build/C/man2/setgid.2:53 build/C/man2/setpgid.2:195
188 #: build/C/man2/setresuid.2:64 build/C/man2/setreuid.2:93
189 #: build/C/man2/setsid.2:54 build/C/man2/setuid.2:70 build/C/man3/ulimit.3:67
190 #: build/C/man2/seccomp.2:342
191 #, no-wrap
192 msgid "RETURN VALUE"
193 msgstr "返り値"
194
195 #. type: Plain text
196 #: build/C/man2/acct.2:65 build/C/man2/capget.2:165
197 #: build/C/man2/getresuid.2:55 build/C/man2/getrusage.2:193
198 #: build/C/man2/iopl.2:71 build/C/man2/seteuid.2:72 build/C/man2/setgid.2:58
199 #: build/C/man2/setresuid.2:69 build/C/man2/setreuid.2:98
200 #: build/C/man2/setuid.2:75
201 msgid ""
202 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
203 "appropriately."
204 msgstr ""
205 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
206 "定される。"
207
208 #. type: SH
209 #: build/C/man2/acct.2:65 build/C/man2/capget.2:179 build/C/man7/cpuset.7:1100
210 #: build/C/man2/getgid.2:42 build/C/man2/getgroups.2:106
211 #: build/C/man2/getpid.2:44 build/C/man2/getpriority.2:117
212 #: build/C/man2/getresuid.2:55 build/C/man2/getrlimit.2:466
213 #: build/C/man2/getrusage.2:193 build/C/man2/getsid.2:63
214 #: build/C/man2/getuid.2:43 build/C/man2/iopl.2:71
215 #: build/C/man2/ioprio_set.2:169 build/C/man2/seteuid.2:79
216 #: build/C/man2/setgid.2:58 build/C/man2/setpgid.2:216
217 #: build/C/man2/setresuid.2:76 build/C/man2/setreuid.2:105
218 #: build/C/man2/setsid.2:61 build/C/man2/setuid.2:82 build/C/man3/ulimit.3:74
219 #: build/C/man2/seccomp.2:358
220 #, no-wrap
221 msgid "ERRORS"
222 msgstr "エラー"
223
224 #. type: TP
225 #: build/C/man2/acct.2:66 build/C/man7/cpuset.7:1116
226 #: build/C/man7/cpuset.7:1123 build/C/man7/cpuset.7:1129
227 #: build/C/man7/cpuset.7:1137 build/C/man7/cpuset.7:1144
228 #: build/C/man2/getpriority.2:137 build/C/man2/setpgid.2:217
229 #, no-wrap
230 msgid "B<EACCES>"
231 msgstr "B<EACCES>"
232
233 #. type: Plain text
234 #: build/C/man2/acct.2:77
235 msgid ""
236 "Write permission is denied for the specified file, or search permission is "
237 "denied for one of the directories in the path prefix of I<filename> (see "
238 "also B<path_resolution>(7)), or I<filename> is not a regular file."
239 msgstr ""
240 "指定したファイルへの書き込み許可がなく、書き込みが拒否された。 または "
241 "I<filename> のディレクトリ部分の何れかのディレクトリに検索許可がなく拒否され"
242 "た (B<path_resolution>(7)  も参照すること)。 または I<filename> が通常 "
243 "(regular) のファイルでない。"
244
245 #. type: TP
246 #: build/C/man2/acct.2:77 build/C/man2/capget.2:180 build/C/man7/cpuset.7:1172
247 #: build/C/man2/getgroups.2:107 build/C/man2/getresuid.2:56
248 #: build/C/man2/getrlimit.2:467 build/C/man2/getrusage.2:194
249 #: build/C/man2/seccomp.2:369
250 #, no-wrap
251 msgid "B<EFAULT>"
252 msgstr "B<EFAULT>"
253
254 #. type: Plain text
255 #: build/C/man2/acct.2:81
256 msgid "I<filename> points outside your accessible address space."
257 msgstr "アクセスできるアドレス空間の外を I<filename> が指している。"
258
259 #. type: TP
260 #: build/C/man2/acct.2:81 build/C/man7/cpuset.7:1238
261 #: build/C/man7/cpuset.7:1246
262 #, no-wrap
263 msgid "B<EIO>"
264 msgstr "B<EIO>"
265
266 #. type: Plain text
267 #: build/C/man2/acct.2:85
268 msgid "Error writing to the file I<filename>."
269 msgstr "I<filename> への書き込みにエラーが発生した。"
270
271 #. type: TP
272 #: build/C/man2/acct.2:85
273 #, no-wrap
274 msgid "B<EISDIR>"
275 msgstr "B<EISDIR>"
276
277 #. type: Plain text
278 #: build/C/man2/acct.2:89
279 msgid "I<filename> is a directory."
280 msgstr "I<filename> がディレクトリである。"
281
282 #. type: TP
283 #: build/C/man2/acct.2:89
284 #, no-wrap
285 msgid "B<ELOOP>"
286 msgstr "B<ELOOP>"
287
288 #. type: Plain text
289 #: build/C/man2/acct.2:93
290 msgid "Too many symbolic links were encountered in resolving I<filename>."
291 msgstr "I<filename> の実体にたどり着くまでのシンボリックリンクの数が多すぎる。"
292
293 #. type: TP
294 #: build/C/man2/acct.2:93 build/C/man7/cpuset.7:1251
295 #: build/C/man7/cpuset.7:1258 build/C/man7/cpuset.7:1263
296 #, no-wrap
297 msgid "B<ENAMETOOLONG>"
298 msgstr "B<ENAMETOOLONG>"
299
300 #. type: Plain text
301 #: build/C/man2/acct.2:97
302 msgid "I<filename> was too long."
303 msgstr "I<filename> が長すぎる。"
304
305 #. type: TP
306 #: build/C/man2/acct.2:97
307 #, no-wrap
308 msgid "B<ENFILE>"
309 msgstr "B<ENFILE>"
310
311 #. type: Plain text
312 #: build/C/man2/acct.2:100
313 msgid "The system limit on the total number of open files has been reached."
314 msgstr "オープンされたファイルの総数がシステム制限に達した。"
315
316 #. type: TP
317 #: build/C/man2/acct.2:100 build/C/man7/cpuset.7:1275
318 #: build/C/man7/cpuset.7:1280
319 #, no-wrap
320 msgid "B<ENOENT>"
321 msgstr "B<ENOENT>"
322
323 #. type: Plain text
324 #: build/C/man2/acct.2:103
325 msgid "The specified filename does not exist."
326 msgstr "指定されたファイルが存在しない。"
327
328 #. type: TP
329 #: build/C/man2/acct.2:103 build/C/man7/cpuset.7:1287
330 #: build/C/man2/getgroups.2:127 build/C/man2/seccomp.2:413
331 #: build/C/man2/seccomp.2:416
332 #, no-wrap
333 msgid "B<ENOMEM>"
334 msgstr "B<ENOMEM>"
335
336 #. type: Plain text
337 #: build/C/man2/acct.2:106 build/C/man2/getgroups.2:130
338 #: build/C/man2/seccomp.2:416
339 msgid "Out of memory."
340 msgstr "メモリ不足。"
341
342 #. type: TP
343 #: build/C/man2/acct.2:106 build/C/man2/iopl.2:76
344 #, no-wrap
345 msgid "B<ENOSYS>"
346 msgstr "B<ENOSYS>"
347
348 #. type: Plain text
349 #: build/C/man2/acct.2:112
350 msgid ""
351 "BSD process accounting has not been enabled when the operating system kernel "
352 "was compiled.  The kernel configuration parameter controlling this feature "
353 "is B<CONFIG_BSD_PROCESS_ACCT>."
354 msgstr ""
355 "カーネルをコンパイルした時に BSD プロセス・アカウントが有効になっていない。 "
356 "この機能はカーネルのコンフィグの B<CONFIG_BSD_PROCESS_ACCT> パラメータによっ"
357 "て制御される。"
358
359 #. type: TP
360 #: build/C/man2/acct.2:112 build/C/man7/cpuset.7:1314
361 #, no-wrap
362 msgid "B<ENOTDIR>"
363 msgstr "B<ENOTDIR>"
364
365 #. type: Plain text
366 #: build/C/man2/acct.2:117
367 msgid ""
368 "A component used as a directory in I<filename> is not in fact a directory."
369 msgstr ""
370 "I<filename> の中でディレクトリして扱われている要素が、 実際はディレクトリでな"
371 "い。"
372
373 #. type: TP
374 #: build/C/man2/acct.2:117 build/C/man2/capget.2:191 build/C/man2/capget.2:196
375 #: build/C/man7/cpuset.7:1319 build/C/man2/getgroups.2:130
376 #: build/C/man2/getpriority.2:149 build/C/man2/getrlimit.2:483
377 #: build/C/man2/getrlimit.2:488 build/C/man2/getrlimit.2:496
378 #: build/C/man2/getsid.2:64 build/C/man2/iopl.2:79
379 #: build/C/man2/ioprio_set.2:179 build/C/man2/seteuid.2:83
380 #: build/C/man2/setgid.2:64 build/C/man2/setpgid.2:231
381 #: build/C/man2/setresuid.2:103 build/C/man2/setreuid.2:132
382 #: build/C/man2/setsid.2:62 build/C/man2/setuid.2:110 build/C/man3/ulimit.3:75
383 #, no-wrap
384 msgid "B<EPERM>"
385 msgstr "B<EPERM>"
386
387 #. type: Plain text
388 #: build/C/man2/acct.2:123
389 msgid ""
390 "The calling process has insufficient privilege to enable process "
391 "accounting.  On Linux the B<CAP_SYS_PACCT> capability is required."
392 msgstr ""
393 "呼び出したプロセスにはプロセス・アカウントを有効にするのに十分な特権がない。 "
394 "Linux では B<CAP_SYS_PACCT> ケーパビリティ (capability) が必要である。"
395
396 #. type: TP
397 #: build/C/man2/acct.2:123
398 #, no-wrap
399 msgid "B<EROFS>"
400 msgstr "B<EROFS>"
401
402 #. type: Plain text
403 #: build/C/man2/acct.2:127
404 msgid "I<filename> refers to a file on a read-only filesystem."
405 msgstr ""
406 "読み込みだけのファイルシステム上のファイルを I<filename> が参照している。"
407
408 #. type: TP
409 #: build/C/man2/acct.2:127
410 #, no-wrap
411 msgid "B<EUSERS>"
412 msgstr "B<EUSERS>"
413
414 #. type: Plain text
415 #: build/C/man2/acct.2:130
416 msgid "There are no more free file structures or we ran out of memory."
417 msgstr "使用可能なファイル構造体がないか、メモリが足りない。"
418
419 #. type: SH
420 #: build/C/man2/acct.2:130 build/C/man5/acct.5:153
421 #: build/C/man7/capabilities.7:1120 build/C/man2/capget.2:218
422 #: build/C/man7/credentials.7:287 build/C/man2/getgid.2:44
423 #: build/C/man2/getgroups.2:133 build/C/man2/getpid.2:46
424 #: build/C/man2/getpriority.2:157 build/C/man2/getresuid.2:67
425 #: build/C/man2/getrlimit.2:511 build/C/man2/getrusage.2:202
426 #: build/C/man2/getsid.2:79 build/C/man2/getuid.2:45
427 #: build/C/man3/group_member.3:55 build/C/man2/iopl.2:87
428 #: build/C/man2/ioprio_set.2:196 build/C/man2/ipc.2:45
429 #: build/C/man7/namespaces.7:359 build/C/man7/pid_namespaces.7:351
430 #: build/C/man2/seteuid.2:99 build/C/man2/setfsgid.2:75
431 #: build/C/man2/setfsuid.2:75 build/C/man2/setgid.2:71
432 #: build/C/man2/setpgid.2:250 build/C/man2/setresuid.2:109
433 #: build/C/man2/setreuid.2:148 build/C/man2/setsid.2:68
434 #: build/C/man2/setuid.2:117 build/C/man3/ulimit.3:78
435 #: build/C/man7/user_namespaces.7:645 build/C/man2/seccomp.2:435
436 #, no-wrap
437 msgid "CONFORMING TO"
438 msgstr "準拠"
439
440 #.  SVr4 documents an EBUSY error condition, but no EISDIR or ENOSYS.
441 #.  Also AIX and HP-UX document EBUSY (attempt is made
442 #.  to enable accounting when it is already enabled), as does Solaris
443 #.  (attempt is made to enable accounting using the same file that is
444 #.  currently being used).
445 #. type: Plain text
446 #: build/C/man2/acct.2:137
447 msgid "SVr4, 4.3BSD (but not POSIX)."
448 msgstr "SVr4, 4.3BSD (POSIX ではない)。"
449
450 #. type: SH
451 #: build/C/man2/acct.2:137 build/C/man5/acct.5:157
452 #: build/C/man7/capabilities.7:1126 build/C/man2/capget.2:220
453 #: build/C/man7/cpuset.7:1341 build/C/man7/credentials.7:293
454 #: build/C/man2/getgid.2:46 build/C/man2/getgroups.2:141
455 #: build/C/man2/getpid.2:48 build/C/man2/getpriority.2:160
456 #: build/C/man2/getresuid.2:70 build/C/man2/getrlimit.2:534
457 #: build/C/man2/getrusage.2:213 build/C/man2/getsid.2:81
458 #: build/C/man2/getuid.2:47 build/C/man2/iopl.2:91
459 #: build/C/man2/ioprio_set.2:198 build/C/man2/ipc.2:49
460 #: build/C/man2/seteuid.2:101 build/C/man2/setfsgid.2:79
461 #: build/C/man2/setfsuid.2:79 build/C/man2/setgid.2:73
462 #: build/C/man2/setpgid.2:272 build/C/man2/setresuid.2:112
463 #: build/C/man2/setreuid.2:154 build/C/man2/setsid.2:70
464 #: build/C/man2/setuid.2:122 build/C/man7/user_namespaces.7:648
465 #: build/C/man2/seccomp.2:439
466 #, no-wrap
467 msgid "NOTES"
468 msgstr "注意"
469
470 #. type: Plain text
471 #: build/C/man2/acct.2:140
472 msgid ""
473 "No accounting is produced for programs running when a system crash occurs.  "
474 "In particular, nonterminating processes are never accounted for."
475 msgstr ""
476 "システムがクラッシュした時に実行中だったプログラムのアカウントは生成されな"
477 "い。 特に、終了しないプログラムがアカウントされることはない。"
478
479 #. type: Plain text
480 #: build/C/man2/acct.2:143
481 msgid ""
482 "The structure of the records written to the accounting file is described in "
483 "B<acct>(5)."
484 msgstr ""
485 "アカウント用ファイルに書き込まれるレコードの構造体については B<acct>(5)  に説"
486 "明がある。"
487
488 #. type: SH
489 #: build/C/man2/acct.2:143 build/C/man5/acct.5:174
490 #: build/C/man7/capabilities.7:1183 build/C/man2/capget.2:228
491 #: build/C/man7/cpuset.7:1488 build/C/man7/credentials.7:304
492 #: build/C/man2/getgid.2:62 build/C/man2/getgroups.2:178
493 #: build/C/man2/getpid.2:100 build/C/man2/getpriority.2:232
494 #: build/C/man2/getresuid.2:86 build/C/man2/getrlimit.2:766
495 #: build/C/man2/getrusage.2:253 build/C/man2/getsid.2:84
496 #: build/C/man2/getuid.2:73 build/C/man3/group_member.3:57
497 #: build/C/man2/iopl.2:100 build/C/man2/ioprio_set.2:346 build/C/man2/ipc.2:57
498 #: build/C/man7/namespaces.7:364 build/C/man7/pid_namespaces.7:356
499 #: build/C/man2/seteuid.2:141 build/C/man2/setfsgid.2:123
500 #: build/C/man2/setfsuid.2:131 build/C/man2/setgid.2:83
501 #: build/C/man2/setpgid.2:340 build/C/man2/setresuid.2:132
502 #: build/C/man2/setreuid.2:194 build/C/man2/setsid.2:93
503 #: build/C/man2/setuid.2:145 build/C/man7/svipc.7:335 build/C/man3/ulimit.3:83
504 #: build/C/man7/user_namespaces.7:1011 build/C/man2/seccomp.2:662
505 #, no-wrap
506 msgid "SEE ALSO"
507 msgstr "関連項目"
508
509 #. type: Plain text
510 #: build/C/man2/acct.2:145
511 msgid "B<acct>(5)"
512 msgstr "B<acct>(5)"
513
514 #. type: SH
515 #: build/C/man2/acct.2:145 build/C/man5/acct.5:179
516 #: build/C/man7/capabilities.7:1205 build/C/man2/capget.2:232
517 #: build/C/man7/cpuset.7:1506 build/C/man7/credentials.7:340
518 #: build/C/man2/getgid.2:67 build/C/man2/getgroups.2:186
519 #: build/C/man2/getpid.2:111 build/C/man2/getpriority.2:241
520 #: build/C/man2/getresuid.2:92 build/C/man2/getrlimit.2:784
521 #: build/C/man2/getrusage.2:260 build/C/man2/getsid.2:88
522 #: build/C/man2/getuid.2:78 build/C/man3/group_member.3:62
523 #: build/C/man2/iopl.2:104 build/C/man2/ioprio_set.2:354 build/C/man2/ipc.2:70
524 #: build/C/man7/namespaces.7:377 build/C/man7/pid_namespaces.7:365
525 #: build/C/man2/seteuid.2:149 build/C/man2/setfsgid.2:128
526 #: build/C/man2/setfsuid.2:136 build/C/man2/setgid.2:90
527 #: build/C/man2/setpgid.2:347 build/C/man2/setresuid.2:142
528 #: build/C/man2/setreuid.2:203 build/C/man2/setsid.2:100
529 #: build/C/man2/setuid.2:153 build/C/man7/svipc.7:353 build/C/man3/ulimit.3:88
530 #: build/C/man7/user_namespaces.7:1027 build/C/man2/seccomp.2:679
531 #, no-wrap
532 msgid "COLOPHON"
533 msgstr "この文書について"
534
535 #. type: Plain text
536 #: build/C/man2/acct.2:153 build/C/man5/acct.5:187
537 #: build/C/man7/capabilities.7:1213 build/C/man2/capget.2:240
538 #: build/C/man7/cpuset.7:1514 build/C/man7/credentials.7:348
539 #: build/C/man2/getgid.2:75 build/C/man2/getgroups.2:194
540 #: build/C/man2/getpid.2:119 build/C/man2/getpriority.2:249
541 #: build/C/man2/getresuid.2:100 build/C/man2/getrlimit.2:792
542 #: build/C/man2/getrusage.2:268 build/C/man2/getsid.2:96
543 #: build/C/man2/getuid.2:86 build/C/man3/group_member.3:70
544 #: build/C/man2/iopl.2:112 build/C/man2/ioprio_set.2:362 build/C/man2/ipc.2:78
545 #: build/C/man7/namespaces.7:385 build/C/man7/pid_namespaces.7:373
546 #: build/C/man2/seteuid.2:157 build/C/man2/setfsgid.2:136
547 #: build/C/man2/setfsuid.2:144 build/C/man2/setgid.2:98
548 #: build/C/man2/setpgid.2:355 build/C/man2/setresuid.2:150
549 #: build/C/man2/setreuid.2:211 build/C/man2/setsid.2:108
550 #: build/C/man2/setuid.2:161 build/C/man7/svipc.7:361 build/C/man3/ulimit.3:96
551 #: build/C/man7/user_namespaces.7:1035 build/C/man2/seccomp.2:687
552 msgid ""
553 "This page is part of release 3.78 of the Linux I<man-pages> project.  A "
554 "description of the project, information about reporting bugs, and the latest "
555 "version of this page, can be found at \\%http://www.kernel.org/doc/man-"
556 "pages/."
557 msgstr ""
558 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.78 の一部\n"
559 "である。プロジェクトの説明とバグ報告に関する情報は\n"
560 "http://www.kernel.org/doc/man-pages/ に書かれている。"
561
562 #. type: TH
563 #: build/C/man5/acct.5:25
564 #, no-wrap
565 msgid "2008-06-15"
566 msgstr "2008-06-15"
567
568 #. type: Plain text
569 #: build/C/man5/acct.5:28
570 msgid "acct - process accounting file"
571 msgstr "acct - プロセス・アカウンティング・ファイル"
572
573 #. type: Plain text
574 #: build/C/man5/acct.5:30
575 msgid "B<#include E<lt>sys/acct.hE<gt>>"
576 msgstr "B<#include E<lt>sys/acct.hE<gt>>"
577
578 #. type: Plain text
579 #: build/C/man5/acct.5:36
580 msgid ""
581 "If the kernel is built with the process accounting option enabled "
582 "(B<CONFIG_BSD_PROCESS_ACCT>), then calling B<acct>(2)  starts process "
583 "accounting, for example:"
584 msgstr ""
585 "カーネルがプロセス・アカウンティングのオプション "
586 "(B<CONFIG_BSD_PROCESS_ACCT>)  を有効にして作成されていると、以下のように "
587 "B<acct>(2)  を呼び出すとプロセス・アカウンティングが開始される。"
588
589 #. type: Plain text
590 #: build/C/man5/acct.5:39
591 msgid "acct(\"/var/log/pacct\");"
592 msgstr "acct(\"/var/log/pacct\");"
593
594 #. type: Plain text
595 #: build/C/man5/acct.5:47
596 msgid ""
597 "When process accounting is enabled, the kernel writes a record to the "
598 "accounting file as each process on the system terminates.  This record "
599 "contains information about the terminated process, and is defined in "
600 "I<E<lt>sys/acct.hE<gt>> as follows:"
601 msgstr ""
602 "プロセス・アカウンティングが有効になっていると、カーネルは システム上の各プロ"
603 "セスが終了するたびにアカウンティングファイルに レコードを書き込む。 このレ"
604 "コードは、終了したプロセスに関する情報を保持するもので、 I<E<lt>sys/acct."
605 "hE<gt>> で以下のように定義されている。"
606
607 #. type: Plain text
608 #: build/C/man5/acct.5:51
609 #, no-wrap
610 msgid "#define ACCT_COMM 16\n"
611 msgstr "#define ACCT_COMM 16\n"
612
613 #. type: Plain text
614 #: build/C/man5/acct.5:53
615 #, no-wrap
616 msgid "typedef u_int16_t comp_t;\n"
617 msgstr "typedef u_int16_t comp_t;\n"
618
619 #. type: Plain text
620 #: build/C/man5/acct.5:77
621 #, no-wrap
622 msgid ""
623 "struct acct {\n"
624 "    char ac_flag;           /* Accounting flags */\n"
625 "    u_int16_t ac_uid;       /* Accounting user ID */\n"
626 "    u_int16_t ac_gid;       /* Accounting group ID */\n"
627 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
628 "    u_int32_t ac_btime;     /* Process creation time\n"
629 "                               (seconds since the Epoch) */\n"
630 "    comp_t    ac_utime;     /* User CPU time */\n"
631 "    comp_t    ac_stime;     /* System CPU time */\n"
632 "    comp_t    ac_etime;     /* Elapsed time */\n"
633 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
634 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
635 "    comp_t    ac_rw;        /* Blocks read or written (unused) */\n"
636 "    comp_t    ac_minflt;    /* Minor page faults */\n"
637 "    comp_t    ac_majflt;    /* Major page faults */\n"
638 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
639 "    u_int32_t ac_exitcode;  /* Process termination status\n"
640 "                               (see wait(2)) */\n"
641 "    char      ac_comm[ACCT_COMM+1];\n"
642 "                            /* Command name (basename of last\n"
643 "                               executed command; null-terminated) */\n"
644 "    char      ac_pad[I<X>];    /* padding bytes */\n"
645 "};\n"
646 msgstr ""
647 "struct acct {\n"
648 "    char ac_flag;           /* Accounting flags */\n"
649 "    u_int16_t ac_uid;       /* Accounting user ID */\n"
650 "    u_int16_t ac_gid;       /* Accounting group ID */\n"
651 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
652 "    u_int32_t ac_btime;     /* Process creation time\n"
653 "                               (seconds since the Epoch) */\n"
654 "    comp_t    ac_utime;     /* User CPU time */\n"
655 "    comp_t    ac_stime;     /* System CPU time */\n"
656 "    comp_t    ac_etime;     /* Elapsed time */\n"
657 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
658 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
659 "    comp_t    ac_rw;        /* Blocks read or written (unused) */\n"
660 "    comp_t    ac_minflt;    /* Minor page faults */\n"
661 "    comp_t    ac_majflt;    /* Major page faults */\n"
662 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
663 "    u_int32_t ac_exitcode;  /* Process termination status\n"
664 "                               (see wait(2)) */\n"
665 "    char      ac_comm[ACCT_COMM+1];\n"
666 "                            /* Command name (basename of last\n"
667 "                               executed command; null-terminated) */\n"
668 "    char      ac_pad[I<X>];    /* padding bytes */\n"
669 "};\n"
670
671 #. type: Plain text
672 #: build/C/man5/acct.5:84
673 #, no-wrap
674 msgid ""
675 "enum {          /* Bits that may be set in ac_flag field */\n"
676 "    AFORK = 0x01,           /* Has executed fork, but no exec */\n"
677 "    ASU   = 0x02,           /* Used superuser privileges */\n"
678 "    ACORE = 0x08,           /* Dumped core */\n"
679 "    AXSIG = 0x10            /* Killed by a signal */\n"
680 "};\n"
681 msgstr ""
682 "enum {          /* Bits that may be set in ac_flag field */\n"
683 "    AFORK = 0x01,           /* Has executed fork, but no exec */\n"
684 "    ASU   = 0x02,           /* Used superuser privileges */\n"
685 "    ACORE = 0x08,           /* Dumped core */\n"
686 "    AXSIG = 0x10            /* Killed by a signal */\n"
687 "};\n"
688
689 #. type: Plain text
690 #: build/C/man5/acct.5:94
691 msgid ""
692 "The I<comp_t> data type is a floating-point value consisting of a 3-bit, "
693 "base-8 exponent, and a 13-bit mantissa.  A value, I<c>, of this type can be "
694 "converted to a (long) integer as follows:"
695 msgstr ""
696 "データ型 I<comp_t> は浮動小数点値で、3 ビット幅の基数が 8 の指数部と 13 ビッ"
697 "ト幅の仮数部から 構成される。 I<comp_t> 型の値 I<c> は以下のようにして (long "
698 "型の) 整数に変換できる。"
699
700 #. type: Plain text
701 #: build/C/man5/acct.5:97
702 #, no-wrap
703 msgid "    v = (c & 0x1fff) E<lt>E<lt> (((c E<gt>E<gt> 13) & 0x7) * 3);\n"
704 msgstr "    v = (c & 0x1fff) E<lt>E<lt> (((c E<gt>E<gt> 13) & 0x7) * 3);\n"
705
706 #. type: Plain text
707 #: build/C/man5/acct.5:107
708 msgid ""
709 "The I<ac_utime>, I<ac_stime>, and I<ac_etime> fields measure time in \"clock "
710 "ticks\"; divide these values by I<sysconf(_SC_CLK_TCK)> to convert them to "
711 "seconds."
712 msgstr ""
713 "フィールド I<ac_utime>, I<ac_stime>, I<ac_etime> は \"clock ticks\" 単位で計"
714 "測した時間である。 これらの値を I<sysconf(_SC_CLK_TCK)> で割ると、秒に変換で"
715 "きる。"
716
717 #. type: SS
718 #: build/C/man5/acct.5:107
719 #, no-wrap
720 msgid "Version 3 accounting file format"
721 msgstr "バージョン 3 のアカウンティングファイルのフォーマット"
722
723 #. type: Plain text
724 #: build/C/man5/acct.5:122
725 msgid ""
726 "Since kernel 2.6.8, an optional alternative version of the accounting file "
727 "can be produced if the B<CONFIG_BSD_PROCESS_ACCT_V3> option is set when "
728 "building the kernel.  With this option is set, the records written to the "
729 "accounting file contain additional fields, and the width of I<c_uid> and "
730 "I<ac_gid> fields is widened from 16 to 32 bits (in line with the increased "
731 "size of UID and GIDs in Linux 2.4 and later).  The records are defined as "
732 "follows:"
733 msgstr ""
734 "カーネル 2.6.8 以降では、 別のバージョンのアカウンティングファイルを生成する"
735 "ことができ、 これを使うにはカーネル構築時に B<CONFIG_BSD_PROCESS_ACCT_V3> オ"
736 "プションが有効になっている必要がある。 このオプションが設定されると、アカウン"
737 "ティングファイルに書き込まれる レコードにフィールドが追加される。 また、"
738 "フィールド I<c_uid> と I<ac_gid> の幅が 16 ビットから 32 ビットに拡張される "
739 "(これは Linux 2.4 以降で UID と GID のサイズが増えているのに 対応したものであ"
740 "る)。 このレコードは以下のように定義されている。"
741
742 #. type: Plain text
743 #: build/C/man5/acct.5:147
744 #, no-wrap
745 msgid ""
746 "struct acct_v3 {\n"
747 "    char      ac_flag;      /* Flags */\n"
748 "    char      ac_version;   /* Always set to ACCT_VERSION (3) */\n"
749 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
750 "    u_int32_t ac_exitcode;  /* Process termination status */\n"
751 "    u_int32_t ac_uid;       /* Real user ID */\n"
752 "    u_int32_t ac_gid;       /* Real group ID */\n"
753 "    u_int32_t ac_pid;       /* Process ID */\n"
754 "    u_int32_t ac_ppid;      /* Parent process ID */\n"
755 "    u_int32_t ac_btime;     /* Process creation time */\n"
756 "    float     ac_etime;     /* Elapsed time */\n"
757 "    comp_t    ac_utime;     /* User CPU time */\n"
758 "    comp_t    ac_stime;     /* System time */\n"
759 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
760 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
761 "    comp_t    ac_rw;        /* Blocks read or written\n"
762 "                               (unused) */\n"
763 "    comp_t    ac_minflt;    /* Minor page faults */\n"
764 "    comp_t    ac_majflt;    /* Major page faults */\n"
765 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
766 "    char      ac_comm[ACCT_COMM]; /* Command name */\n"
767 "};\n"
768 msgstr ""
769 "struct acct_v3 {\n"
770 "    char      ac_flag;      /* Flags */\n"
771 "    char      ac_version;   /* Always set to ACCT_VERSION (3) */\n"
772 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
773 "    u_int32_t ac_exitcode;  /* Process termination status */\n"
774 "    u_int32_t ac_uid;       /* Real user ID */\n"
775 "    u_int32_t ac_gid;       /* Real group ID */\n"
776 "    u_int32_t ac_pid;       /* Process ID */\n"
777 "    u_int32_t ac_ppid;      /* Parent process ID */\n"
778 "    u_int32_t ac_btime;     /* Process creation time */\n"
779 "    float     ac_etime;     /* Elapsed time */\n"
780 "    comp_t    ac_utime;     /* User CPU time */\n"
781 "    comp_t    ac_stime;     /* System time */\n"
782 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
783 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
784 "    comp_t    ac_rw;        /* Blocks read or written\n"
785 "                               (unused) */\n"
786 "    comp_t    ac_minflt;    /* Minor page faults */\n"
787 "    comp_t    ac_majflt;    /* Major page faults */\n"
788 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
789 "    char      ac_comm[ACCT_COMM]; /* Command name */\n"
790 "};\n"
791
792 #. type: SH
793 #: build/C/man5/acct.5:149 build/C/man7/cpuset.7:1338
794 #: build/C/man2/getresuid.2:60 build/C/man2/getrlimit.2:506
795 #: build/C/man2/getsid.2:75 build/C/man2/ioprio_set.2:193
796 #: build/C/man2/setfsgid.2:71 build/C/man2/setfsuid.2:71
797 #: build/C/man2/setresuid.2:107 build/C/man2/seccomp.2:430
798 #, no-wrap
799 msgid "VERSIONS"
800 msgstr "バージョン"
801
802 #. type: Plain text
803 #: build/C/man5/acct.5:153
804 msgid "The I<acct_v3> structure is defined in glibc since version 2.6."
805 msgstr "I<acct_v3> 構造体はバージョン 2.6 以降の glibc で定義されている。"
806
807 #. type: Plain text
808 #: build/C/man5/acct.5:157
809 msgid ""
810 "Process accounting originated on BSD.  Although it is present on most "
811 "systems, it is not standardized, and the details vary somewhat between "
812 "systems."
813 msgstr ""
814 "プロセスアカウンティングは BSD 由来である。 この機能はほとんどのシステムに存"
815 "在するが、標準化されておらず、 その詳細はシステムによりいくらか異なる。"
816
817 #. type: Plain text
818 #: build/C/man5/acct.5:160
819 msgid ""
820 "Records in the accounting file are ordered by termination time of the "
821 "process."
822 msgstr "アカウンティングファイルのレコードは、プロセスの終了時刻の順序となる。"
823
824 #. type: Plain text
825 #: build/C/man5/acct.5:167
826 msgid ""
827 "In kernels up to and including 2.6.9, a separate accounting record is "
828 "written for each thread created using the NPTL threading library; since "
829 "Linux 2.6.10, a single accounting record is written for the entire process "
830 "on termination of the last thread in the process."
831 msgstr ""
832 "バージョン 2.6.9 以前のカーネルでは、 NPTL スレッドライブラリを使って作成され"
833 "たスレッドでは スレッド毎に別々のアカウンティングレコードが書き込まれてい"
834 "た。 Linux 2.6.10 以降では、プロセス内の最後のスレッドが終了すると、 プロセス"
835 "全体についてのアカウンティングレコードが一つだけ書き込まれる。"
836
837 #. type: Plain text
838 #: build/C/man5/acct.5:174
839 msgid ""
840 "The I<proc/sys/kernel/acct> file, described in B<proc>(5), defines settings "
841 "that control the behavior of process accounting when disk space runs low."
842 msgstr ""
843 "I<proc/sys/kernel/acct> ファイル (B<proc>(5)  で説明されている) は、ディスク"
844 "容量の残りが少なくなった際の プロセス・アカウンティングの動作を制御する設定を"
845 "保持している。"
846
847 #. type: Plain text
848 #: build/C/man5/acct.5:179
849 msgid "B<lastcomm>(1), B<acct>(2), B<accton>(8), B<sa>(8)"
850 msgstr "B<lastcomm>(1), B<acct>(2), B<accton>(8), B<sa>(8)"
851
852 #. type: TH
853 #: build/C/man7/capabilities.7:48
854 #, no-wrap
855 msgid "CAPABILITIES"
856 msgstr "CAPABILITIES"
857
858 #. type: TH
859 #: build/C/man7/capabilities.7:48 build/C/man2/getpid.2:25
860 #: build/C/man7/namespaces.7:27 build/C/man2/seteuid.2:29
861 #: build/C/man2/setgid.2:29 build/C/man2/setresuid.2:26
862 #: build/C/man2/setreuid.2:45 build/C/man2/setuid.2:30 build/C/man7/svipc.7:40
863 #: build/C/man7/user_namespaces.7:27
864 #, no-wrap
865 msgid "2014-09-21"
866 msgstr "2014-09-21"
867
868 #. type: Plain text
869 #: build/C/man7/capabilities.7:51
870 msgid "capabilities - overview of Linux capabilities"
871 msgstr "capabilities - Linux のケーパビリティ (capability) の概要"
872
873 #. type: Plain text
874 #: build/C/man7/capabilities.7:63
875 msgid ""
876 "For the purpose of performing permission checks, traditional UNIX "
877 "implementations distinguish two categories of processes: I<privileged> "
878 "processes (whose effective user ID is 0, referred to as superuser or root), "
879 "and I<unprivileged> processes (whose effective UID is nonzero).  Privileged "
880 "processes bypass all kernel permission checks, while unprivileged processes "
881 "are subject to full permission checking based on the process's credentials "
882 "(usually: effective UID, effective GID, and supplementary group list)."
883 msgstr ""
884 "権限のチェックを行う観点から見ると、伝統的な UNIX の実装では プロセスは二つの"
885 "カテゴリに分類できる: I<特権> プロセス (実効ユーザID が 0 のプロセス。ユーザ"
886 "ID 0 は スーパーユーザや root と呼ばれる) と I<非特権> プロセス (実効ユーザ"
887 "ID が 0 以外のプロセス) である。 非特権プロセスでは、プロセスの資格情報 (通常"
888 "は、実効UID 、実効GID と追加のグループリスト) に基づく権限チェックが行われる"
889 "のに対し、 特権プロセスでは全てのカーネルの権限チェックがバイパスされる。"
890
891 #. type: Plain text
892 #: build/C/man7/capabilities.7:70
893 msgid ""
894 "Starting with kernel 2.2, Linux divides the privileges traditionally "
895 "associated with superuser into distinct units, known as I<capabilities>, "
896 "which can be independently enabled and disabled.  Capabilities are a per-"
897 "thread attribute."
898 msgstr ""
899 "バージョン 2.2 以降の Linux では、 これまでスーパーユーザに結び付けられてきた"
900 "権限を、 いくつかのグループに分割している。これらのグループは I<ケーパビリ"
901 "ティ>(capability)  と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケー"
902 "パビリティはスレッド単位の属性である。"
903
904 #. type: SS
905 #: build/C/man7/capabilities.7:70
906 #, no-wrap
907 msgid "Capabilities list"
908 msgstr "ケーパビリティのリスト"
909
910 #. type: Plain text
911 #: build/C/man7/capabilities.7:73
912 msgid ""
913 "The following list shows the capabilities implemented on Linux, and the "
914 "operations or behaviors that each capability permits:"
915 msgstr ""
916 "以下のリストは、 Linux で実装されているケーパビリティと 各ケーパビリティが許"
917 "可する操作と動作をまとめたものである。"
918
919 #. type: TP
920 #: build/C/man7/capabilities.7:73
921 #, no-wrap
922 msgid "B<CAP_AUDIT_CONTROL> (since Linux 2.6.11)"
923 msgstr "B<CAP_AUDIT_CONTROL> (Linux 2.6.11 以降)"
924
925 #. type: Plain text
926 #: build/C/man7/capabilities.7:77
927 msgid ""
928 "Enable and disable kernel auditing; change auditing filter rules; retrieve "
929 "auditing status and filtering rules."
930 msgstr ""
931 "カーネル監査 (audit) の有効無効の切り替え、 監査のフィルタルールの変更、 監査"
932 "の状況やフィルタルールの取得ができる。"
933
934 #. type: TP
935 #: build/C/man7/capabilities.7:77
936 #, no-wrap
937 msgid "B<CAP_AUDIT_READ> (since Linux 3.16)"
938 msgstr "B<CAP_AUDIT_READ> (Linux 3.16 以降)"
939
940 #.  commit a29b694aa1739f9d76538e34ae25524f9c549d59
941 #.  commit 3a101b8de0d39403b2c7e5c23fd0b005668acf48
942 #. type: Plain text
943 #: build/C/man7/capabilities.7:82
944 msgid "Allow reading the audit log via a multicast netlink socket."
945 msgstr "マルチキャスト netlink ソケット経由で監査ログの読み出しができる。"
946
947 #. type: TP
948 #: build/C/man7/capabilities.7:82
949 #, no-wrap
950 msgid "B<CAP_AUDIT_WRITE> (since Linux 2.6.11)"
951 msgstr "B<CAP_AUDIT_WRITE> (Linux 2.6.11 以降)"
952
953 #. type: Plain text
954 #: build/C/man7/capabilities.7:85
955 msgid "Write records to kernel auditing log."
956 msgstr "カーネル監査のログにレコードを書き込む。"
957
958 #. type: TP
959 #: build/C/man7/capabilities.7:85
960 #, no-wrap
961 msgid "B<CAP_BLOCK_SUSPEND> (since Linux 3.5)"
962 msgstr "B<CAP_BLOCK_SUSPEND> (Linux 3.5 以降)"
963
964 #. type: Plain text
965 #: build/C/man7/capabilities.7:91
966 msgid ""
967 "Employ features that can block system suspend (B<epoll>(7)  B<EPOLLWAKEUP>, "
968 "I</proc/sys/wake_lock>)."
969 msgstr ""
970 "システムのサスペンドをブロックできる機能を使用する (B<epoll>(7)  "
971 "B<EPOLLWAKEUP>, I</proc/sys/wake_lock>)。"
972
973 #. type: TP
974 #: build/C/man7/capabilities.7:91
975 #, no-wrap
976 msgid "B<CAP_CHOWN>"
977 msgstr "B<CAP_CHOWN>"
978
979 #. type: Plain text
980 #: build/C/man7/capabilities.7:95
981 msgid "Make arbitrary changes to file UIDs and GIDs (see B<chown>(2))."
982 msgstr "ファイルの UID とGID を任意に変更する (B<chown>(2)  参照)。"
983
984 #. type: TP
985 #: build/C/man7/capabilities.7:95
986 #, no-wrap
987 msgid "B<CAP_DAC_OVERRIDE>"
988 msgstr "B<CAP_DAC_OVERRIDE>"
989
990 #. type: Plain text
991 #: build/C/man7/capabilities.7:99
992 msgid ""
993 "Bypass file read, write, and execute permission checks.  (DAC is an "
994 "abbreviation of \"discretionary access control\".)"
995 msgstr ""
996 "ファイルの読み出し、書き込み、実行の権限チェックをバイパスする (DAC は "
997 "\"discretionary access control (任意のアクセス制御)\" の略である)。"
998
999 #. type: TP
1000 #: build/C/man7/capabilities.7:99
1001 #, no-wrap
1002 msgid "B<CAP_DAC_READ_SEARCH>"
1003 msgstr "B<CAP_DAC_READ_SEARCH>"
1004
1005 #. type: IP
1006 #: build/C/man7/capabilities.7:103 build/C/man7/capabilities.7:106
1007 #: build/C/man7/capabilities.7:116 build/C/man7/capabilities.7:126
1008 #: build/C/man7/capabilities.7:130 build/C/man7/capabilities.7:132
1009 #: build/C/man7/capabilities.7:134 build/C/man7/capabilities.7:204
1010 #: build/C/man7/capabilities.7:206 build/C/man7/capabilities.7:208
1011 #: build/C/man7/capabilities.7:210 build/C/man7/capabilities.7:212
1012 #: build/C/man7/capabilities.7:214 build/C/man7/capabilities.7:216
1013 #: build/C/man7/capabilities.7:218 build/C/man7/capabilities.7:220
1014 #: build/C/man7/capabilities.7:244 build/C/man7/capabilities.7:246
1015 #: build/C/man7/capabilities.7:296 build/C/man7/capabilities.7:306
1016 #: build/C/man7/capabilities.7:312 build/C/man7/capabilities.7:317
1017 #: build/C/man7/capabilities.7:323 build/C/man7/capabilities.7:327
1018 #: build/C/man7/capabilities.7:334 build/C/man7/capabilities.7:337
1019 #: build/C/man7/capabilities.7:345 build/C/man7/capabilities.7:347
1020 #: build/C/man7/capabilities.7:356 build/C/man7/capabilities.7:365
1021 #: build/C/man7/capabilities.7:368 build/C/man7/capabilities.7:372
1022 #: build/C/man7/capabilities.7:380 build/C/man7/capabilities.7:383
1023 #: build/C/man7/capabilities.7:390 build/C/man7/capabilities.7:395
1024 #: build/C/man7/capabilities.7:401 build/C/man7/capabilities.7:405
1025 #: build/C/man7/capabilities.7:409 build/C/man7/capabilities.7:413
1026 #: build/C/man7/capabilities.7:417 build/C/man7/capabilities.7:444
1027 #: build/C/man7/capabilities.7:449 build/C/man7/capabilities.7:455
1028 #: build/C/man7/capabilities.7:458 build/C/man7/capabilities.7:461
1029 #: build/C/man7/capabilities.7:471 build/C/man7/capabilities.7:475
1030 #: build/C/man7/capabilities.7:492 build/C/man7/capabilities.7:495
1031 #: build/C/man7/capabilities.7:499 build/C/man7/capabilities.7:504
1032 #: build/C/man7/capabilities.7:513 build/C/man7/capabilities.7:518
1033 #: build/C/man7/capabilities.7:521 build/C/man7/capabilities.7:526
1034 #: build/C/man7/capabilities.7:529 build/C/man7/capabilities.7:532
1035 #: build/C/man7/capabilities.7:535 build/C/man7/capabilities.7:538
1036 #: build/C/man7/capabilities.7:543 build/C/man7/capabilities.7:545
1037 #: build/C/man7/capabilities.7:551 build/C/man7/capabilities.7:559
1038 #: build/C/man7/capabilities.7:561 build/C/man7/capabilities.7:565
1039 #: build/C/man7/capabilities.7:567 build/C/man7/capabilities.7:570
1040 #: build/C/man7/capabilities.7:574 build/C/man7/capabilities.7:576
1041 #: build/C/man7/capabilities.7:578 build/C/man7/capabilities.7:580
1042 #: build/C/man7/capabilities.7:589 build/C/man7/capabilities.7:596
1043 #: build/C/man7/capabilities.7:601 build/C/man7/capabilities.7:606
1044 #: build/C/man7/capabilities.7:611 build/C/man7/capabilities.7:636
1045 #: build/C/man7/capabilities.7:643 build/C/man7/capabilities.7:844
1046 #: build/C/man7/capabilities.7:852 build/C/man7/capabilities.7:1172
1047 #: build/C/man7/capabilities.7:1177 build/C/man7/cpuset.7:540
1048 #: build/C/man7/cpuset.7:545 build/C/man7/cpuset.7:550
1049 #: build/C/man7/cpuset.7:726 build/C/man7/cpuset.7:730
1050 #: build/C/man7/cpuset.7:927 build/C/man7/cpuset.7:930
1051 #: build/C/man7/cpuset.7:934 build/C/man7/cpuset.7:938
1052 #: build/C/man7/cpuset.7:942 build/C/man7/credentials.7:177
1053 #: build/C/man7/credentials.7:183 build/C/man7/credentials.7:195
1054 #: build/C/man7/credentials.7:217 build/C/man7/credentials.7:234
1055 #: build/C/man7/credentials.7:266 build/C/man7/credentials.7:269
1056 #: build/C/man7/credentials.7:280 build/C/man7/credentials.7:283
1057 #: build/C/man2/getrlimit.2:690 build/C/man2/getrlimit.2:693
1058 #: build/C/man7/namespaces.7:212 build/C/man7/namespaces.7:215
1059 #: build/C/man7/namespaces.7:228 build/C/man7/pid_namespaces.7:233
1060 #: build/C/man7/pid_namespaces.7:241 build/C/man7/pid_namespaces.7:252
1061 #: build/C/man7/user_namespaces.7:261 build/C/man7/user_namespaces.7:266
1062 #: build/C/man7/user_namespaces.7:272 build/C/man7/user_namespaces.7:285
1063 #: build/C/man7/user_namespaces.7:306 build/C/man7/user_namespaces.7:474
1064 #: build/C/man7/user_namespaces.7:477 build/C/man7/user_namespaces.7:479
1065 #: build/C/man7/user_namespaces.7:492 build/C/man7/user_namespaces.7:505
1066 #: build/C/man7/user_namespaces.7:532 build/C/man7/user_namespaces.7:541
1067 #: build/C/man2/seccomp.2:265 build/C/man2/seccomp.2:269
1068 #: build/C/man2/seccomp.2:272 build/C/man2/seccomp.2:277
1069 #: build/C/man2/seccomp.2:281 build/C/man2/seccomp.2:455
1070 #: build/C/man2/seccomp.2:463 build/C/man2/seccomp.2:469
1071 #, no-wrap
1072 msgid "*"
1073 msgstr "*"
1074
1075 #. type: Plain text
1076 #: build/C/man7/capabilities.7:106
1077 msgid ""
1078 "Bypass file read permission checks and directory read and execute permission "
1079 "checks;"
1080 msgstr ""
1081 "ファイルの読み出し権限のチェックとディレクトリの読み出しと実行 の権限チェック"
1082 "をバイパスする。"
1083
1084 #. type: Plain text
1085 #: build/C/man7/capabilities.7:109
1086 msgid "Invoke B<open_by_handle_at>(2)."
1087 msgstr "B<open_by_handle_at>(2) を起動する。"
1088
1089 #. type: TP
1090 #: build/C/man7/capabilities.7:112
1091 #, no-wrap
1092 msgid "B<CAP_FOWNER>"
1093 msgstr "B<CAP_FOWNER>"
1094
1095 #. type: Plain text
1096 #: build/C/man7/capabilities.7:126
1097 msgid ""
1098 "Bypass permission checks on operations that normally require the filesystem "
1099 "UID of the process to match the UID of the file (e.g., B<chmod>(2), "
1100 "B<utime>(2)), excluding those operations covered by B<CAP_DAC_OVERRIDE> and "
1101 "B<CAP_DAC_READ_SEARCH>;"
1102 msgstr ""
1103 "通常、プロセスのファイルシステム UID がファイルの UID に一致することが 要求さ"
1104 "れる操作 (例えば B<chmod>(2), B<utime>(2))  における権限チェックをバイパスす"
1105 "る。 但し、 B<CAP_DAC_OVERRIDE> か B<CAP_DAC_READ_SEARCH> によりチェックが行"
1106 "われる操作は除く。"
1107
1108 #. type: Plain text
1109 #: build/C/man7/capabilities.7:130
1110 msgid "set extended file attributes (see B<chattr>(1))  on arbitrary files;"
1111 msgstr ""
1112 "任意のファイルに対して拡張ファイル属性を設定する (B<chattr>(1)  参照)。"
1113
1114 #. type: Plain text
1115 #: build/C/man7/capabilities.7:132
1116 msgid "set Access Control Lists (ACLs) on arbitrary files;"
1117 msgstr "任意のファイルに対してアクセス制御リスト (ACL) を設定する。"
1118
1119 #. type: Plain text
1120 #: build/C/man7/capabilities.7:134
1121 msgid "ignore directory sticky bit on file deletion;"
1122 msgstr "ファイルの削除の際にディレクトリのスティッキービットを無視する。"
1123
1124 #. type: Plain text
1125 #: build/C/man7/capabilities.7:141
1126 msgid ""
1127 "specify B<O_NOATIME> for arbitrary files in B<open>(2)  and B<fcntl>(2)."
1128 msgstr ""
1129 "B<open>(2)  や B<fcntl>(2)  で任意のファイルに対して B<O_NOATIME> を指定す"
1130 "る。"
1131
1132 #. type: TP
1133 #: build/C/man7/capabilities.7:143
1134 #, no-wrap
1135 msgid "B<CAP_FSETID>"
1136 msgstr "B<CAP_FSETID>"
1137
1138 #. type: Plain text
1139 #: build/C/man7/capabilities.7:149
1140 msgid ""
1141 "Don't clear set-user-ID and set-group-ID permission bits when a file is "
1142 "modified; set the set-group-ID bit for a file whose GID does not match the "
1143 "filesystem or any of the supplementary GIDs of the calling process."
1144 msgstr ""
1145 "ファイルが変更されたときに set-user-ID とset-group-ID の許可ビットをクリア し"
1146 "ない。呼び出し元プロセスのファイルシステム GID と追加の GID のいずれとも GID "
1147 "が一致しないファイルに対して set-group-ID ビットを設定する。"
1148
1149 #. type: TP
1150 #: build/C/man7/capabilities.7:149
1151 #, no-wrap
1152 msgid "B<CAP_IPC_LOCK>"
1153 msgstr "B<CAP_IPC_LOCK>"
1154
1155 #.  FIXME . As at Linux 3.2, there are some strange uses of this capability
1156 #.  in other places; they probably should be replaced with something else.
1157 #. type: Plain text
1158 #: build/C/man7/capabilities.7:158
1159 msgid "Lock memory (B<mlock>(2), B<mlockall>(2), B<mmap>(2), B<shmctl>(2))."
1160 msgstr ""
1161 "メモリーのロック (B<mlock>(2), B<mlockall>(2), B<mmap>(2), B<shmctl>(2))  を"
1162 "行う。"
1163
1164 #. type: TP
1165 #: build/C/man7/capabilities.7:158
1166 #, no-wrap
1167 msgid "B<CAP_IPC_OWNER>"
1168 msgstr "B<CAP_IPC_OWNER>"
1169
1170 #. type: Plain text
1171 #: build/C/man7/capabilities.7:161
1172 msgid "Bypass permission checks for operations on System V IPC objects."
1173 msgstr ""
1174 "System V IPC オブジェクトに対する操作に関して権限チェックをバイパスする。"
1175
1176 #. type: TP
1177 #: build/C/man7/capabilities.7:161
1178 #, no-wrap
1179 msgid "B<CAP_KILL>"
1180 msgstr "B<CAP_KILL>"
1181
1182 #.  FIXME . CAP_KILL also has an effect for threads + setting child
1183 #.        termination signal to other than SIGCHLD: without this
1184 #.        capability, the termination signal reverts to SIGCHLD
1185 #.        if the child does an exec().  What is the rationale
1186 #.        for this?
1187 #. type: Plain text
1188 #: build/C/man7/capabilities.7:174
1189 msgid ""
1190 "Bypass permission checks for sending signals (see B<kill>(2)).  This "
1191 "includes use of the B<ioctl>(2)  B<KDSIGACCEPT> operation."
1192 msgstr ""
1193 "シグナルを送信する際に権限チェックをバイパスする (B<kill>(2)  参照)。これに"
1194 "は B<ioctl>(2)  の B<KDSIGACCEPT> 操作の使用も含まれる。"
1195
1196 #. type: TP
1197 #: build/C/man7/capabilities.7:174
1198 #, no-wrap
1199 msgid "B<CAP_LEASE> (since Linux 2.4)"
1200 msgstr "B<CAP_LEASE> (Linux 2.4 以降)"
1201
1202 #. type: Plain text
1203 #: build/C/man7/capabilities.7:178
1204 msgid "Establish leases on arbitrary files (see B<fcntl>(2))."
1205 msgstr "任意のファイルに対して ファイルリースを設定する (B<fcntl>(2)  参照)。"
1206
1207 #. type: TP
1208 #: build/C/man7/capabilities.7:178
1209 #, no-wrap
1210 msgid "B<CAP_LINUX_IMMUTABLE>"
1211 msgstr "B<CAP_LINUX_IMMUTABLE>"
1212
1213 #.  These attributes are now available on ext2, ext3, Reiserfs, XFS, JFS
1214 #. type: Plain text
1215 #: build/C/man7/capabilities.7:187
1216 msgid ""
1217 "Set the B<FS_APPEND_FL> and B<FS_IMMUTABLE_FL> inode flags (see "
1218 "B<chattr>(1))."
1219 msgstr ""
1220 "inode フラグ B<FS_APPEND_FL> と B<FS_IMMUTABLE_FL> を設定する (B<chattr>(1)  "
1221 "参照)。"
1222
1223 #. type: TP
1224 #: build/C/man7/capabilities.7:187
1225 #, no-wrap
1226 msgid "B<CAP_MAC_ADMIN> (since Linux 2.6.25)"
1227 msgstr "B<CAP_MAC_ADMIN> (Linux 2.6.25 以降)"
1228
1229 #. type: Plain text
1230 #: build/C/man7/capabilities.7:191
1231 msgid ""
1232 "Override Mandatory Access Control (MAC).  Implemented for the Smack Linux "
1233 "Security Module (LSM)."
1234 msgstr ""
1235 "強制アクセス制御 (MAC) を上書きする。 Smack Linux Security Module (LSM) 用に"
1236 "実装されている。"
1237
1238 #. type: TP
1239 #: build/C/man7/capabilities.7:191
1240 #, no-wrap
1241 msgid "B<CAP_MAC_OVERRIDE> (since Linux 2.6.25)"
1242 msgstr "B<CAP_MAC_OVERRIDE> (Linux 2.6.25 以降)"
1243
1244 #. type: Plain text
1245 #: build/C/man7/capabilities.7:195
1246 msgid ""
1247 "Allow MAC configuration or state changes.  Implemented for the Smack LSM."
1248 msgstr "MAC の設定や状態を変更する。 Smack LSM 用に実装されている。"
1249
1250 #. type: TP
1251 #: build/C/man7/capabilities.7:195
1252 #, no-wrap
1253 msgid "B<CAP_MKNOD> (since Linux 2.4)"
1254 msgstr "B<CAP_MKNOD> (Linux 2.4 以降)"
1255
1256 #. type: Plain text
1257 #: build/C/man7/capabilities.7:199
1258 msgid "Create special files using B<mknod>(2)."
1259 msgstr ""
1260 "(Linux 2.4 以降)  B<mknod>(2)  を使用してスペシャルファイルを作成する。"
1261
1262 #. type: TP
1263 #: build/C/man7/capabilities.7:199
1264 #, no-wrap
1265 msgid "B<CAP_NET_ADMIN>"
1266 msgstr "B<CAP_NET_ADMIN>"
1267
1268 #. type: Plain text
1269 #: build/C/man7/capabilities.7:202
1270 msgid "Perform various network-related operations:"
1271 msgstr "各種のネットワーク関係の操作を実行する:"
1272
1273 #. type: Plain text
1274 #: build/C/man7/capabilities.7:206
1275 msgid "interface configuration;"
1276 msgstr "インターフェースの設定"
1277
1278 #. type: Plain text
1279 #: build/C/man7/capabilities.7:208
1280 msgid "administration of IP firewall, masquerading, and accounting;"
1281 msgstr "IP のファイアウォール、マスカレード、アカウンティング"
1282
1283 #. type: Plain text
1284 #: build/C/man7/capabilities.7:210
1285 msgid "modify routing tables;"
1286 msgstr "ルーティングテーブルの変更"
1287
1288 #. type: Plain text
1289 #: build/C/man7/capabilities.7:212
1290 msgid "bind to any address for transparent proxying;"
1291 msgstr "透過的プロキシでの任意のアドレスの割り当て (bind)"
1292
1293 #. type: Plain text
1294 #: build/C/man7/capabilities.7:214
1295 msgid "set type-of-service (TOS)"
1296 msgstr "サービス種別 (type-of-service; TOS) のセット"
1297
1298 #. type: Plain text
1299 #: build/C/man7/capabilities.7:216
1300 msgid "clear driver statistics;"
1301 msgstr "ドライバの統計情報のクリア"
1302
1303 #. type: Plain text
1304 #: build/C/man7/capabilities.7:218
1305 msgid "set promiscuous mode;"
1306 msgstr "promiscuous モードをセットする"
1307
1308 #. type: Plain text
1309 #: build/C/man7/capabilities.7:220
1310 msgid "enabling multicasting;"
1311 msgstr "マルチキャストを有効にする"
1312
1313 #. type: Plain text
1314 #: build/C/man7/capabilities.7:231
1315 msgid ""
1316 "use B<setsockopt>(2)  to set the following socket options: B<SO_DEBUG>, "
1317 "B<SO_MARK>, B<SO_PRIORITY> (for a priority outside the range 0 to 6), "
1318 "B<SO_RCVBUFFORCE>, and B<SO_SNDBUFFORCE>."
1319 msgstr ""
1320 "B<setsockopt>(2) を使って以下のソケットオプションを設定する:\n"
1321 "B<SO_DEBUG>, B<SO_MARK>, \n"
1322 "B<SO_PRIORITY> (優先度を 0 から 6 以外に設定する場合),\n"
1323 "B<SO_RCVBUFFORCE>, and B<SO_SNDBUFFORCE>"
1324
1325 #. type: TP
1326 #: build/C/man7/capabilities.7:233
1327 #, no-wrap
1328 msgid "B<CAP_NET_BIND_SERVICE>"
1329 msgstr "B<CAP_NET_BIND_SERVICE>"
1330
1331 #. type: Plain text
1332 #: build/C/man7/capabilities.7:237
1333 msgid ""
1334 "Bind a socket to Internet domain privileged ports (port numbers less than "
1335 "1024)."
1336 msgstr ""
1337 "インターネットドメインの特権ポート (ポート番号が 1024 番未満)  をバインドでき"
1338 "る。"
1339
1340 #. type: TP
1341 #: build/C/man7/capabilities.7:237
1342 #, no-wrap
1343 msgid "B<CAP_NET_BROADCAST>"
1344 msgstr "B<CAP_NET_BROADCAST>"
1345
1346 #. type: Plain text
1347 #: build/C/man7/capabilities.7:240
1348 msgid "(Unused)  Make socket broadcasts, and listen to multicasts."
1349 msgstr ""
1350 "(未使用) ソケットのブロードキャストと、マルチキャストの待ち受けを行う。"
1351
1352 #. type: TP
1353 #: build/C/man7/capabilities.7:240
1354 #, no-wrap
1355 msgid "B<CAP_NET_RAW>"
1356 msgstr "B<CAP_NET_RAW>"
1357
1358 #. type: Plain text
1359 #: build/C/man7/capabilities.7:246
1360 msgid "use RAW and PACKET sockets;"
1361 msgstr "RAW ソケットと PACKET ソケットを使用する。"
1362
1363 #. type: Plain text
1364 #: build/C/man7/capabilities.7:248
1365 msgid "bind to any address for transparent proxying."
1366 msgstr "透過的プロキシでの任意のアドレスの割り当て (bind)"
1367
1368 #. type: TP
1369 #: build/C/man7/capabilities.7:251
1370 #, no-wrap
1371 msgid "B<CAP_SETGID>"
1372 msgstr "B<CAP_SETGID>"
1373
1374 #. type: Plain text
1375 #: build/C/man7/capabilities.7:257
1376 msgid ""
1377 "Make arbitrary manipulations of process GIDs and supplementary GID list; "
1378 "forge GID when passing socket credentials via UNIX domain sockets; write a "
1379 "group ID mapping in a user namespace (see B<user_namespaces>(7))."
1380 msgstr ""
1381 "プロセスの GID と追加の GID リストに対する任意の操作を行う。 UNIX ドメインソ"
1382 "ケット経由でソケットの資格情報 (credential) を渡す際に 偽の GID を渡すことが"
1383 "できる。 ユーザー名前空間にグループ ID マッピングを書き込むことができる "
1384 "(B<user_namespaces>(7) 参照)。"
1385
1386 #. type: TP
1387 #: build/C/man7/capabilities.7:257
1388 #, no-wrap
1389 msgid "B<CAP_SETFCAP> (since Linux 2.6.24)"
1390 msgstr "B<CAP_SETFCAP> (Linux 2.6.24 以降)"
1391
1392 #. type: Plain text
1393 #: build/C/man7/capabilities.7:260
1394 msgid "Set file capabilities."
1395 msgstr "ファイルケーパビリティを設定する。"
1396
1397 #. type: TP
1398 #: build/C/man7/capabilities.7:260
1399 #, no-wrap
1400 msgid "B<CAP_SETPCAP>"
1401 msgstr "B<CAP_SETPCAP>"
1402
1403 #. type: Plain text
1404 #: build/C/man7/capabilities.7:271
1405 msgid ""
1406 "If file capabilities are not supported: grant or remove any capability in "
1407 "the caller's permitted capability set to or from any other process.  (This "
1408 "property of B<CAP_SETPCAP> is not available when the kernel is configured to "
1409 "support file capabilities, since B<CAP_SETPCAP> has entirely different "
1410 "semantics for such kernels.)"
1411 msgstr ""
1412 "ファイルケーパビリティがサポートされていない場合: 呼び出し元が許可されている"
1413 "ケーパビリティセットに含まれる任意のケーパビリティを、 他のプロセスに付与した"
1414 "り、削除したりできる。 (カーネルがファイルケーパビリティをサポートしている場"
1415 "合、 B<CAP_SETPCAP> はこの役割を持たない。 なぜなら、ファイルケーパビリティを"
1416 "サポートしているカーネルでは B<CAP_SETPCAP> は全く別の意味を持つからである。)"
1417
1418 #. type: Plain text
1419 #: build/C/man7/capabilities.7:281
1420 msgid ""
1421 "If file capabilities are supported: add any capability from the calling "
1422 "thread's bounding set to its inheritable set; drop capabilities from the "
1423 "bounding set (via B<prctl>(2)  B<PR_CAPBSET_DROP>); make changes to the "
1424 "I<securebits> flags."
1425 msgstr ""
1426 "ファイルケーパビリティがサポートされている場合: 呼び出し元スレッドのバウン"
1427 "ディングセットの任意のケーパビリティを 自身の継承可能ケーパビリティセットに追"
1428 "加できる。 (B<prctl>(2)  B<PR_CAPBSET_DROP> を使って)  バウンディングセットか"
1429 "らケーパビリティを削除できる。 I<securebits> フラグを変更できる。"
1430
1431 #. type: TP
1432 #: build/C/man7/capabilities.7:281
1433 #, no-wrap
1434 msgid "B<CAP_SETUID>"
1435 msgstr "B<CAP_SETUID>"
1436
1437 #.  FIXME CAP_SETUID also an effect in exec(); document this.
1438 #. type: Plain text
1439 #: build/C/man7/capabilities.7:292
1440 msgid ""
1441 "Make arbitrary manipulations of process UIDs (B<setuid>(2), B<setreuid>(2), "
1442 "B<setresuid>(2), B<setfsuid>(2)); forge UID when passing socket credentials "
1443 "via UNIX domain sockets; write a user ID mapping in a user namespace (see "
1444 "B<user_namespaces>(7))."
1445 msgstr ""
1446 "プロセスの UID に対する任意の操作 (B<setuid>(2), B<setreuid>(2), "
1447 "B<setresuid>(2), B<setfsuid>(2))  を行う。 UNIX ドメインソケット経由でソケッ"
1448 "トの資格情報 (credential) を渡す際に 偽の UID を渡すことができる。 ユーザー名"
1449 "前空間にユーザー ID マッピングを書き込むことができる (B<user_namespaces>(7) "
1450 "参照)。"
1451
1452 #. type: TP
1453 #: build/C/man7/capabilities.7:292
1454 #, no-wrap
1455 msgid "B<CAP_SYS_ADMIN>"
1456 msgstr "B<CAP_SYS_ADMIN>"
1457
1458 #. type: Plain text
1459 #: build/C/man7/capabilities.7:306
1460 msgid ""
1461 "Perform a range of system administration operations including: "
1462 "B<quotactl>(2), B<mount>(2), B<umount>(2), B<swapon>(2), B<swapoff>(2), "
1463 "B<sethostname>(2), and B<setdomainname>(2);"
1464 msgstr ""
1465 "以下のシステム管理用の操作を実行する: B<quotactl>(2), B<mount>(2), "
1466 "B<umount>(2), B<swapon>(2), B<swapoff>(2), B<sethostname>(2), "
1467 "B<setdomainname>(2)."
1468
1469 #. type: Plain text
1470 #: build/C/man7/capabilities.7:312
1471 msgid ""
1472 "perform privileged B<syslog>(2)  operations (since Linux 2.6.37, "
1473 "B<CAP_SYSLOG> should be used to permit such operations);"
1474 msgstr ""
1475 "特権が必要な B<syslog>(2) の操作を実行する\n"
1476 "(Linux 2.6.37 以降では、このような操作を許可するには\n"
1477 "B<CAP_SYSLOG> を使うべきである)"
1478
1479 #. type: Plain text
1480 #: build/C/man7/capabilities.7:317
1481 msgid "perform B<VM86_REQUEST_IRQ> B<vm86>(2)  command;"
1482 msgstr "B<VM86_REQUEST_IRQ> B<vm86>(2) コマンドを実行する。"
1483
1484 #. type: Plain text
1485 #: build/C/man7/capabilities.7:323
1486 msgid ""
1487 "perform B<IPC_SET> and B<IPC_RMID> operations on arbitrary System V IPC "
1488 "objects;"
1489 msgstr ""
1490 "任意の System V IPC オブジェクトに対する B<IPC_SET> と B<IPC_RMID> 操作を実行"
1491 "する。"
1492
1493 #. type: Plain text
1494 #: build/C/man7/capabilities.7:327 build/C/man7/capabilities.7:574
1495 msgid "override B<RLIMIT_NPROC> resource limit;"
1496 msgstr "B<RLIMIT_NPROC> リソース制限を上書きする。"
1497
1498 #. type: Plain text
1499 #: build/C/man7/capabilities.7:334
1500 msgid ""
1501 "perform operations on I<trusted> and I<security> Extended Attributes (see "
1502 "B<attr>(5));"
1503 msgstr ""
1504 "拡張属性 I<trusted> と I<security> に対する操作を実行する (B<attr>(5)  参"
1505 "照)。"
1506
1507 #. type: Plain text
1508 #: build/C/man7/capabilities.7:337
1509 msgid "use B<lookup_dcookie>(2);"
1510 msgstr "B<lookup_dcookie>(2)  を呼び出す。"
1511
1512 #. type: Plain text
1513 #: build/C/man7/capabilities.7:345
1514 msgid ""
1515 "use B<ioprio_set>(2)  to assign B<IOPRIO_CLASS_RT> and (before Linux "
1516 "2.6.25)  B<IOPRIO_CLASS_IDLE> I/O scheduling classes;"
1517 msgstr ""
1518 "B<ioprio_set>(2)  を使って I/O スケジューリングクラス B<IOPRIO_CLASS_RT>, "
1519 "B<IOPRIO_CLASS_IDLE> を割り当てる (B<IOPRIO_CLASS_IDLE> は Linux 2.6.25 より"
1520 "前のバージョンのみ)。"
1521
1522 #. type: Plain text
1523 #: build/C/man7/capabilities.7:347
1524 msgid "forge PID when passing socket credentials via UNIX domain sockets;"
1525 msgstr ""
1526 "UNIX ドメインソケットでソケットの資格情報 (credential) を渡す際に偽の UID を"
1527 "渡す。"
1528
1529 #. type: Plain text
1530 #: build/C/man7/capabilities.7:356
1531 msgid ""
1532 "exceed I</proc/sys/fs/file-max>, the system-wide limit on the number of open "
1533 "files, in system calls that open files (e.g., B<accept>(2), B<execve>(2), "
1534 "B<open>(2), B<pipe>(2));"
1535 msgstr ""
1536 "ファイルをオープンするシステムコール (例えば B<accept>(2), B<execve>(2), "
1537 "B<open>(2), B<pipe>(2))  でシステム全体でオープンできるファイル数の上限 I</"
1538 "proc/sys/fs/file-max> を超過する。"
1539
1540 #. type: Plain text
1541 #: build/C/man7/capabilities.7:365
1542 msgid ""
1543 "employ B<CLONE_*> flags that create new namespaces with B<clone>(2)  and "
1544 "B<unshare>(2)  (but, since Linux 3.8, creating user namespaces does not "
1545 "require any capability);"
1546 msgstr ""
1547 "B<clone>(2) と B<unshare>(2) で新しい名前空間を作成する B<CLONE_*> フラグを利"
1548 "用する (ただし、 Linux 3.8 以降では、ユーザー名前空間の作成にどのケーパビリ"
1549 "ティも必要としない)。"
1550
1551 #. type: Plain text
1552 #: build/C/man7/capabilities.7:368
1553 msgid "call B<perf_event_open>(2);"
1554 msgstr "B<perf_event_open>(2) を呼び出す。"
1555
1556 #. type: Plain text
1557 #: build/C/man7/capabilities.7:372
1558 msgid "access privileged I<perf> event information;"
1559 msgstr "特権が必要な I<perf> イベントの情報にアクセスする。"
1560
1561 #. type: Plain text
1562 #: build/C/man7/capabilities.7:380
1563 msgid ""
1564 "call B<setns>(2)  (requires B<CAP_SYS_ADMIN> in the I<target> namespace);"
1565 msgstr ""
1566 "B<setns>(2) を呼び出す (I<target> 名前空間での B<CAP_SYS_ADMIN> が必要)。"
1567
1568 #. type: Plain text
1569 #: build/C/man7/capabilities.7:383
1570 msgid "call B<fanotify_init>(2);"
1571 msgstr "B<fanotify_init>(2) を呼び出す。"
1572
1573 #. type: Plain text
1574 #: build/C/man7/capabilities.7:390
1575 msgid "perform B<KEYCTL_CHOWN> and B<KEYCTL_SETPERM> B<keyctl>(2)  operations;"
1576 msgstr "B<keyctl>(2)  の B<KEYCTL_CHOWN> と B<KEYCTL_SETPERM> 操作を実行する。"
1577
1578 #. type: Plain text
1579 #: build/C/man7/capabilities.7:395
1580 msgid "perform B<madvise>(2)  B<MADV_HWPOISON> operation;"
1581 msgstr "B<madvise>(2)  の B<MADV_HWPOISON> 操作を実行する。"
1582
1583 #. type: Plain text
1584 #: build/C/man7/capabilities.7:401
1585 msgid ""
1586 "employ the B<TIOCSTI> B<ioctl>(2)  to insert characters into the input queue "
1587 "of a terminal other than the caller's controlling terminal;"
1588 msgstr ""
1589 "B<TIOCSTI> B<ioctl>(2) を使って、\n"
1590 "呼び出し元の制御端末以外の端末の入力キューに文字を挿入する。"
1591
1592 #. type: Plain text
1593 #: build/C/man7/capabilities.7:405
1594 msgid "employ the obsolete B<nfsservctl>(2)  system call;"
1595 msgstr "廃止予定の B<nfsservctl>(2) システムコールを使用する。"
1596
1597 #. type: Plain text
1598 #: build/C/man7/capabilities.7:409
1599 msgid "employ the obsolete B<bdflush>(2)  system call;"
1600 msgstr "廃止予定の B<bdflush>(2) システムコールを使用する。"
1601
1602 #. type: Plain text
1603 #: build/C/man7/capabilities.7:413
1604 msgid "perform various privileged block-device B<ioctl>(2)  operations;"
1605 msgstr ""
1606 "特権が必要なブロックデバイスに対する各種の B<ioctl>(2) 操作を\n"
1607 "実行する。"
1608
1609 #. type: Plain text
1610 #: build/C/man7/capabilities.7:417
1611 msgid "perform various privileged filesystem B<ioctl>(2)  operations;"
1612 msgstr ""
1613 "特権が必要なファイルシステムに対する各種の B<ioctl>(2) 操作を\n"
1614 "実行する。"
1615
1616 #. type: Plain text
1617 #: build/C/man7/capabilities.7:419
1618 msgid "perform administrative operations on many device drivers."
1619 msgstr "多くのデバイスドライバに対する管理命令を実行する。"
1620
1621 #. type: TP
1622 #: build/C/man7/capabilities.7:421
1623 #, no-wrap
1624 msgid "B<CAP_SYS_BOOT>"
1625 msgstr "B<CAP_SYS_BOOT>"
1626
1627 #. type: Plain text
1628 #: build/C/man7/capabilities.7:427
1629 msgid "Use B<reboot>(2)  and B<kexec_load>(2)."
1630 msgstr "B<reboot>(2)  と B<kexec_load>(2)  を呼び出す。"
1631
1632 #. type: TP
1633 #: build/C/man7/capabilities.7:427
1634 #, no-wrap
1635 msgid "B<CAP_SYS_CHROOT>"
1636 msgstr "B<CAP_SYS_CHROOT>"
1637
1638 #. type: Plain text
1639 #: build/C/man7/capabilities.7:431
1640 msgid "Use B<chroot>(2)."
1641 msgstr "B<chroot>(2).  を呼び出す。"
1642
1643 #. type: TP
1644 #: build/C/man7/capabilities.7:431
1645 #, no-wrap
1646 msgid "B<CAP_SYS_MODULE>"
1647 msgstr "B<CAP_SYS_MODULE>"
1648
1649 #. type: Plain text
1650 #: build/C/man7/capabilities.7:440
1651 msgid ""
1652 "Load and unload kernel modules (see B<init_module>(2)  and "
1653 "B<delete_module>(2)); in kernels before 2.6.25: drop capabilities from the "
1654 "system-wide capability bounding set."
1655 msgstr ""
1656 "カーネルモジュールのロード、アンロードを行う (B<init_module>(2)  と "
1657 "B<delete_module>(2)  を参照のこと)。 バージョン 2.6.25 より前のカーネルで、 "
1658 "システム全体のケーパビリティバウンディングセット (capability bounding set)  "
1659 "からケーパビリティを外す。"
1660
1661 #. type: TP
1662 #: build/C/man7/capabilities.7:440
1663 #, no-wrap
1664 msgid "B<CAP_SYS_NICE>"
1665 msgstr "B<CAP_SYS_NICE>"
1666
1667 #. type: Plain text
1668 #: build/C/man7/capabilities.7:449
1669 msgid ""
1670 "Raise process nice value (B<nice>(2), B<setpriority>(2))  and change the "
1671 "nice value for arbitrary processes;"
1672 msgstr ""
1673 "プロセスの nice 値の引き上げ (B<nice>(2), B<setpriority>(2))  や、任意のプロ"
1674 "セスの nice 値の変更を行う。"
1675
1676 #. type: Plain text
1677 #: build/C/man7/capabilities.7:455
1678 msgid ""
1679 "set real-time scheduling policies for calling process, and set scheduling "
1680 "policies and priorities for arbitrary processes (B<sched_setscheduler>(2), "
1681 "B<sched_setparam>(2), B<shed_setattr>(2));"
1682 msgstr ""
1683 "呼び出し元プロセスに対するリアルタイムスケジューリングポリシーと、 任意のプロ"
1684 "セスに対するスケジューリングポリシーと優先度を設定する "
1685 "(B<sched_setscheduler>(2), B<sched_setparam>(2), B<shed_setattr>(2))。"
1686
1687 #. type: Plain text
1688 #: build/C/man7/capabilities.7:458
1689 msgid "set CPU affinity for arbitrary processes (B<sched_setaffinity>(2));"
1690 msgstr ""
1691 "任意のプロセスに対する CPU affinity を設定できる (B<sched_setaffinity>(2))。"
1692
1693 #. type: Plain text
1694 #: build/C/man7/capabilities.7:461
1695 msgid ""
1696 "set I/O scheduling class and priority for arbitrary processes "
1697 "(B<ioprio_set>(2));"
1698 msgstr ""
1699 "任意のプロセスに対して I/O スケジューリングクラスと優先度を設定できる "
1700 "(B<ioprio_set>(2))。"
1701
1702 #.  FIXME CAP_SYS_NICE also has the following effect for
1703 #.  migrate_pages(2):
1704 #.      do_migrate_pages(mm, &old, &new,
1705 #.          capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
1706 #.  Document this.
1707 #. type: Plain text
1708 #: build/C/man7/capabilities.7:471
1709 msgid ""
1710 "apply B<migrate_pages>(2)  to arbitrary processes and allow processes to be "
1711 "migrated to arbitrary nodes;"
1712 msgstr ""
1713 "B<migrate_pages>(2)  を任意のプロセスに適用し、プロセスを任意のノードに移動す"
1714 "る。"
1715
1716 #. type: Plain text
1717 #: build/C/man7/capabilities.7:475
1718 msgid "apply B<move_pages>(2)  to arbitrary processes;"
1719 msgstr "B<move_pages>(2)  を任意のプロセスに対して行う。"
1720
1721 #. type: Plain text
1722 #: build/C/man7/capabilities.7:482
1723 msgid ""
1724 "use the B<MPOL_MF_MOVE_ALL> flag with B<mbind>(2)  and B<move_pages>(2)."
1725 msgstr ""
1726 "B<mbind>(2)  と B<move_pages>(2)  で B<MPOL_MF_MOVE_ALL> フラグを使用する。"
1727
1728 #. type: TP
1729 #: build/C/man7/capabilities.7:484
1730 #, no-wrap
1731 msgid "B<CAP_SYS_PACCT>"
1732 msgstr "B<CAP_SYS_PACCT>"
1733
1734 #. type: Plain text
1735 #: build/C/man7/capabilities.7:488
1736 msgid "Use B<acct>(2)."
1737 msgstr "B<acct>(2)  を呼び出す。"
1738
1739 #. type: TP
1740 #: build/C/man7/capabilities.7:488
1741 #, no-wrap
1742 msgid "B<CAP_SYS_PTRACE>"
1743 msgstr "B<CAP_SYS_PTRACE>"
1744
1745 #. type: Plain text
1746 #: build/C/man7/capabilities.7:495
1747 msgid "Trace arbitrary processes using B<ptrace>(2);"
1748 msgstr "B<ptrace>(2)  を使って任意のプロセスをトレースする。"
1749
1750 #. type: Plain text
1751 #: build/C/man7/capabilities.7:499
1752 msgid "apply B<get_robust_list>(2)  to arbitrary processes;"
1753 msgstr "B<get_robust_list>(2)  を任意のプロセスに対して行う。"
1754
1755 #. type: Plain text
1756 #: build/C/man7/capabilities.7:504
1757 msgid ""
1758 "transfer data to or from the memory of arbitrary processes using "
1759 "B<process_vm_readv>(2)  and B<process_vm_writev>(2)."
1760 msgstr ""
1761 "B<process_vm_readv>(2) と B<process_vm_writev>(2) を使って任意のプロセスのメ"
1762 "モリとの間でデータの送受信を行う。"
1763
1764 #. type: Plain text
1765 #: build/C/man7/capabilities.7:507
1766 msgid "inspect processes using B<kcmp>(2)."
1767 msgstr "B<kcmp>(2) を使ってプロセス内部を調査する。"
1768
1769 #. type: TP
1770 #: build/C/man7/capabilities.7:509
1771 #, no-wrap
1772 msgid "B<CAP_SYS_RAWIO>"
1773 msgstr "B<CAP_SYS_RAWIO>"
1774
1775 #. type: Plain text
1776 #: build/C/man7/capabilities.7:518
1777 msgid "Perform I/O port operations (B<iopl>(2)  and B<ioperm>(2));"
1778 msgstr "I/O ポート操作を実行する (B<iopl>(2)、 B<ioperm>(2))。"
1779
1780 #. type: Plain text
1781 #: build/C/man7/capabilities.7:521
1782 msgid "access I</proc/kcore>;"
1783 msgstr "I</proc/kcore> にアクセスする。"
1784
1785 #. type: Plain text
1786 #: build/C/man7/capabilities.7:526
1787 msgid "employ the B<FIBMAP> B<ioctl>(2)  operation;"
1788 msgstr "B<FIBMAP> B<ioctl>(2) 操作を使用する。"
1789
1790 #. type: Plain text
1791 #: build/C/man7/capabilities.7:529
1792 msgid ""
1793 "open devices for accessing x86 model-specific registers (MSRs, see B<msr>(4))"
1794 msgstr ""
1795 "x86 モデルに固有のレジスタ (MSR レジスタ群、 B<msr>(4) 参照) にアクセスするた"
1796 "めのデバイスをオープンする。"
1797
1798 #. type: Plain text
1799 #: build/C/man7/capabilities.7:532
1800 msgid "update I</proc/sys/vm/mmap_min_addr>;"
1801 msgstr "I</proc/sys/vm/mmap_min_addr> を更新する。"
1802
1803 #. type: Plain text
1804 #: build/C/man7/capabilities.7:535
1805 msgid ""
1806 "create memory mappings at addresses below the value specified by I</proc/sys/"
1807 "vm/mmap_min_addr>;"
1808 msgstr ""
1809 "I</proc/sys/vm/mmap_min_addr> で指定された値よりも小さなアドレスにメモリマッ"
1810 "ピングを作成する。"
1811
1812 #. type: Plain text
1813 #: build/C/man7/capabilities.7:538
1814 msgid "map files in I</proc/bus/pci>;"
1815 msgstr "I</proc/bus/pci> にあるファイルをマップする。"
1816
1817 #. type: Plain text
1818 #: build/C/man7/capabilities.7:543
1819 msgid "open I</dev/mem> and I</dev/kmem>;"
1820 msgstr "I</dev/mem> や I</dev/kmem> をオープンする。"
1821
1822 #. type: Plain text
1823 #: build/C/man7/capabilities.7:545
1824 msgid "perform various SCSI device commands;"
1825 msgstr "各種の SCSI デバイスコマンドを実行する。"
1826
1827 #. type: Plain text
1828 #: build/C/man7/capabilities.7:551
1829 msgid "perform certain operations on B<hpsa>(4)  and B<cciss>(4)  devices;"
1830 msgstr "B<hpsa>(4) デバイスや B<cciss>(4) デバイスの特定の操作を実行する。"
1831
1832 #. type: Plain text
1833 #: build/C/man7/capabilities.7:553
1834 msgid "perform a range of device-specific operations on other devices."
1835 msgstr "他のデバイスに対して各種のデバイス固有命令を実行する。"
1836
1837 #. type: TP
1838 #: build/C/man7/capabilities.7:555
1839 #, no-wrap
1840 msgid "B<CAP_SYS_RESOURCE>"
1841 msgstr "B<CAP_SYS_RESOURCE>"
1842
1843 #. type: Plain text
1844 #: build/C/man7/capabilities.7:561
1845 msgid "Use reserved space on ext2 filesystems;"
1846 msgstr "ext2 ファイルシステム上の予約されている領域を使用する。"
1847
1848 #. type: Plain text
1849 #: build/C/man7/capabilities.7:565
1850 msgid "make B<ioctl>(2)  calls controlling ext3 journaling;"
1851 msgstr "ext3 のジャーナル機能を制御する B<ioctl>(2)  を使用する。"
1852
1853 #. type: Plain text
1854 #: build/C/man7/capabilities.7:567
1855 msgid "override disk quota limits;"
1856 msgstr "ディスク quota の上限を上書きする。"
1857
1858 #. type: Plain text
1859 #: build/C/man7/capabilities.7:570
1860 msgid "increase resource limits (see B<setrlimit>(2));"
1861 msgstr "リソース上限を増やす (B<setrlimit>(2))。"
1862
1863 #. type: Plain text
1864 #: build/C/man7/capabilities.7:576
1865 msgid "override maximum number of consoles on console allocation;"
1866 msgstr "コンソール割り当てにおいてコンソールの最大数を上書きする。"
1867
1868 #. type: Plain text
1869 #: build/C/man7/capabilities.7:578
1870 msgid "override maximum number of keymaps;"
1871 msgstr "キーマップの最大数を上書きする。"
1872
1873 #. type: Plain text
1874 #: build/C/man7/capabilities.7:580
1875 msgid "allow more than 64hz interrupts from the real-time clock;"
1876 msgstr "リアルタイムクロックから秒間 64 回を越える回数の割り当てが許可する。"
1877
1878 #. type: Plain text
1879 #: build/C/man7/capabilities.7:589
1880 msgid ""
1881 "raise I<msg_qbytes> limit for a System V message queue above the limit in I</"
1882 "proc/sys/kernel/msgmnb> (see B<msgop>(2)  and B<msgctl>(2));"
1883 msgstr ""
1884 "メッセージキューに関する上限 I<msg_qbytes> を \n"
1885 "I</proc/sys/kernel/msgmnb> に指定されている上限よりも大きく設定する\n"
1886 "(B<msgop>(2) と B<msgctl>(2) 参照)。"
1887
1888 #. type: Plain text
1889 #: build/C/man7/capabilities.7:596
1890 msgid ""
1891 "override the I</proc/sys/fs/pipe-size-max> limit when setting the capacity "
1892 "of a pipe using the B<F_SETPIPE_SZ> B<fcntl>(2)  command."
1893 msgstr ""
1894 "B<F_SETPIPE_SZ> B<fcntl>(2) を使ってパイプの容量を設定する際に\n"
1895 "上限 I</proc/sys/fs/pipe-size-max> を上書きする。"
1896
1897 #. type: Plain text
1898 #: build/C/man7/capabilities.7:601
1899 msgid ""
1900 "use B<F_SETPIPE_SZ> to increase the capacity of a pipe above the limit "
1901 "specified by I</proc/sys/fs/pipe-max-size>;"
1902 msgstr ""
1903 "I</proc/sys/fs/pipe-max-size> に指定されている上限を超えてパイプの容量\n"
1904 "を増やすのに B<F_SETPIPE_SZ> を使用する。"
1905
1906 #. type: Plain text
1907 #: build/C/man7/capabilities.7:606
1908 msgid ""
1909 "override I</proc/sys/fs/mqueue/queues_max> limit when creating POSIX message "
1910 "queues (see B<mq_overview>(7));"
1911 msgstr ""
1912 "POSIX メッセージキューを作成する際に、\n"
1913 "上限 I</proc/sys/fs/mqueue/queues_max> を上書きする\n"
1914 "(B<mq_overview>(7) 参照)。"
1915
1916 #. type: Plain text
1917 #: build/C/man7/capabilities.7:611
1918 msgid "employ B<prctl>(2)  B<PR_SET_MM> operation;"
1919 msgstr "B<prctl>(2) B<PR_SET_MM> 操作を使用する。"
1920
1921 #. type: Plain text
1922 #: build/C/man7/capabilities.7:616
1923 msgid ""
1924 "set I</proc/PID/oom_score_adj> to a value lower than the value last set by a "
1925 "process with B<CAP_SYS_RESOURCE>."
1926 msgstr ""
1927 "B<CAP_SYS_RESOURCE> を持ったプロセスによって最後に設定された値よりも小さな値"
1928 "を I</proc/PID/oom_score_adj> に設定する。"
1929
1930 #. type: TP
1931 #: build/C/man7/capabilities.7:618
1932 #, no-wrap
1933 msgid "B<CAP_SYS_TIME>"
1934 msgstr "B<CAP_SYS_TIME>"
1935
1936 #. type: Plain text
1937 #: build/C/man7/capabilities.7:625
1938 msgid ""
1939 "Set system clock (B<settimeofday>(2), B<stime>(2), B<adjtimex>(2)); set real-"
1940 "time (hardware) clock."
1941 msgstr ""
1942 "システムクロックを変更する (B<settimeofday>(2), B<stime>(2), "
1943 "B<adjtimex>(2))。 リアルタイム (ハードウェア) クロックを変更する。"
1944
1945 #. type: TP
1946 #: build/C/man7/capabilities.7:625
1947 #, no-wrap
1948 msgid "B<CAP_SYS_TTY_CONFIG>"
1949 msgstr "B<CAP_SYS_TTY_CONFIG>"
1950
1951 #. type: Plain text
1952 #: build/C/man7/capabilities.7:632
1953 msgid ""
1954 "Use B<vhangup>(2); employ various privileged B<ioctl>(2)  operations on "
1955 "virtual terminals."
1956 msgstr ""
1957 "B<vhangup>(2) を使用する。\n"
1958 "特権が必要な仮想端末に関する各種の B<ioctl>(2) 操作を利用できる。"
1959
1960 #. type: TP
1961 #: build/C/man7/capabilities.7:632
1962 #, no-wrap
1963 msgid "B<CAP_SYSLOG> (since Linux 2.6.37)"
1964 msgstr "B<CAP_SYSLOG> (Linux 2.6.37 以降)"
1965
1966 #. type: Plain text
1967 #: build/C/man7/capabilities.7:643
1968 msgid ""
1969 "Perform privileged B<syslog>(2)  operations.  See B<syslog>(2)  for "
1970 "information on which operations require privilege."
1971 msgstr ""
1972 "特権が必要な B<syslog>(2) 操作を実行できる。\n"
1973 "どの操作が特権が必要かについての情報は B<syslog>(2) を参照。"
1974
1975 #. type: Plain text
1976 #: build/C/man7/capabilities.7:653
1977 msgid ""
1978 "View kernel addresses exposed via I</proc> and other interfaces when I</proc/"
1979 "sys/kernel/kptr_restrict> has the value 1.  (See the discussion of the "
1980 "I<kptr_restrict> in B<proc>(5).)"
1981 msgstr ""
1982 "I</proc/sys/kernel/kptr_restrict> の値が 1 の場合、 I</proc> や他のインター"
1983 "フェース経由で公開されているカーネルアドレスを参照する (B<proc>(5) の "
1984 "I<kptr_restrict> の議論を参照)。"
1985
1986 #. type: TP
1987 #: build/C/man7/capabilities.7:655
1988 #, no-wrap
1989 msgid "B<CAP_WAKE_ALARM> (since Linux 3.0)"
1990 msgstr "B<CAP_WAKE_ALARM> (Linux 3.0 以降)"
1991
1992 #. type: Plain text
1993 #: build/C/man7/capabilities.7:663
1994 msgid ""
1995 "Trigger something that will wake up the system (set B<CLOCK_REALTIME_ALARM> "
1996 "and B<CLOCK_BOOTTIME_ALARM> timers)."
1997 msgstr ""
1998 "システムを起こすトリガーを有効にする (タイマー B<CLOCK_REALTIME_ALARM>\n"
1999 "や B<CLOCK_BOOTTIME_ALARM> を設定する)。"
2000
2001 #. type: SS
2002 #: build/C/man7/capabilities.7:663
2003 #, no-wrap
2004 msgid "Past and current implementation"
2005 msgstr "過去と現在の実装"
2006
2007 #. type: Plain text
2008 #: build/C/man7/capabilities.7:665
2009 msgid "A full implementation of capabilities requires that:"
2010 msgstr "完全な形のケーパビリティを実装するには、以下の要件を満たす必要がある:"
2011
2012 #. type: IP
2013 #: build/C/man7/capabilities.7:665 build/C/man7/capabilities.7:816
2014 #: build/C/man7/capabilities.7:963 build/C/man7/capabilities.7:1016
2015 #: build/C/man7/user_namespaces.7:173 build/C/man7/user_namespaces.7:515
2016 #, no-wrap
2017 msgid "1."
2018 msgstr "1."
2019
2020 #. type: Plain text
2021 #: build/C/man7/capabilities.7:669
2022 msgid ""
2023 "For all privileged operations, the kernel must check whether the thread has "
2024 "the required capability in its effective set."
2025 msgstr ""
2026 "全ての特権操作について、カーネルはそのスレッドの実効ケーパビリティセットに 必"
2027 "要なケーパビリティがあるかを確認する。"
2028
2029 #. type: IP
2030 #: build/C/man7/capabilities.7:669 build/C/man7/capabilities.7:821
2031 #: build/C/man7/capabilities.7:969 build/C/man7/capabilities.7:1022
2032 #: build/C/man7/user_namespaces.7:189 build/C/man7/user_namespaces.7:521
2033 #, no-wrap
2034 msgid "2."
2035 msgstr "2."
2036
2037 #. type: Plain text
2038 #: build/C/man7/capabilities.7:672
2039 msgid ""
2040 "The kernel must provide system calls allowing a thread's capability sets to "
2041 "be changed and retrieved."
2042 msgstr ""
2043 "カーネルで、あるスレッドのケーパビリティセットを変更したり、 取得したりできる"
2044 "システムコールが提供される。"
2045
2046 #. type: IP
2047 #: build/C/man7/capabilities.7:672 build/C/man7/capabilities.7:972
2048 #: build/C/man7/capabilities.7:1026 build/C/man7/user_namespaces.7:193
2049 #: build/C/man7/user_namespaces.7:526
2050 #, no-wrap
2051 msgid "3."
2052 msgstr "3."
2053
2054 #. type: Plain text
2055 #: build/C/man7/capabilities.7:675
2056 msgid ""
2057 "The filesystem must support attaching capabilities to an executable file, so "
2058 "that a process gains those capabilities when the file is executed."
2059 msgstr ""
2060 "ファイルシステムが、実行可能ファイルにケーパビリティを付与でき、ファイル 実行"
2061 "時にそのケーパビリティをプロセスが取得できるような機能をサポートする。"
2062
2063 #. type: Plain text
2064 #: build/C/man7/capabilities.7:679
2065 msgid ""
2066 "Before kernel 2.6.24, only the first two of these requirements are met; "
2067 "since kernel 2.6.24, all three requirements are met."
2068 msgstr ""
2069 "カーネル 2.6.24 より前では、最初の 2つの要件のみが満たされている。 カーネル "
2070 "2.6.24 以降では、3つの要件すべてが満たされている。"
2071
2072 #. type: SS
2073 #: build/C/man7/capabilities.7:679
2074 #, no-wrap
2075 msgid "Thread capability sets"
2076 msgstr "スレッドケーパビリティセット"
2077
2078 #. type: Plain text
2079 #: build/C/man7/capabilities.7:682
2080 msgid ""
2081 "Each thread has three capability sets containing zero or more of the above "
2082 "capabilities:"
2083 msgstr ""
2084 "各スレッドは以下の 3種類のケーパビリティセットを持つ。各々のケーパビリティ"
2085 "セットは 上記のケーパビリティの組み合わせである (全てのケーパビリティが無効で"
2086 "もよい)。"
2087
2088 #. type: TP
2089 #: build/C/man7/capabilities.7:682
2090 #, no-wrap
2091 msgid "I<Permitted>:"
2092 msgstr "I<許可 (permitted)>:"
2093
2094 #. type: Plain text
2095 #: build/C/man7/capabilities.7:690
2096 msgid ""
2097 "This is a limiting superset for the effective capabilities that the thread "
2098 "may assume.  It is also a limiting superset for the capabilities that may be "
2099 "added to the inheritable set by a thread that does not have the "
2100 "B<CAP_SETPCAP> capability in its effective set."
2101 msgstr ""
2102 "そのスレッドが持つことになっている実効ケーパビリティの 限定的なスーパーセット"
2103 "である。 これは、実効ケーパビリティセットに B<CAP_SETPCAP> ケーパビリティを"
2104 "持っていないスレッドが継承可能ケーパビリティセットに 追加可能なケーパビリティ"
2105 "の限定的なスーパーセットでもある。"
2106
2107 #. type: Plain text
2108 #: build/C/man7/capabilities.7:696
2109 msgid ""
2110 "If a thread drops a capability from its permitted set, it can never "
2111 "reacquire that capability (unless it B<execve>(2)s either a set-user-ID-root "
2112 "program, or a program whose associated file capabilities grant that "
2113 "capability)."
2114 msgstr ""
2115 "許可ケーパビリティセットから削除してしまったケーパビリティは、 (set-user-ID-"
2116 "root プログラムか、 そのケーパビリティをファイルケーパビリティで許可している"
2117 "プログラムを B<execve>(2)  しない限りは) もう一度獲得することはできない。"
2118
2119 #. type: TP
2120 #: build/C/man7/capabilities.7:696
2121 #, no-wrap
2122 msgid "I<Inheritable>:"
2123 msgstr "I<継承可能 (inheritable)>:"
2124
2125 #. type: Plain text
2126 #: build/C/man7/capabilities.7:703
2127 msgid ""
2128 "This is a set of capabilities preserved across an B<execve>(2).  It provides "
2129 "a mechanism for a process to assign capabilities to the permitted set of the "
2130 "new program during an B<execve>(2)."
2131 msgstr ""
2132 "B<execve>(2)  を前後で保持されるケーパビリティセットである。 この仕組みを使う"
2133 "ことで、あるプロセスが B<execve>(2)  を行う際に新しいプログラムの許可ケーパビ"
2134 "リティセットとして 割り当てるケーパビリティを指定することができる。"
2135
2136 #. type: TP
2137 #: build/C/man7/capabilities.7:703 build/C/man7/capabilities.7:753
2138 #, no-wrap
2139 msgid "I<Effective>:"
2140 msgstr "I<実効 (effective)>:"
2141
2142 #. type: Plain text
2143 #: build/C/man7/capabilities.7:707
2144 msgid ""
2145 "This is the set of capabilities used by the kernel to perform permission "
2146 "checks for the thread."
2147 msgstr ""
2148 "カーネルがスレッドの権限 (permission) をチェックするときに 使用するケーパビリ"
2149 "ティセットである。"
2150
2151 #. type: Plain text
2152 #: build/C/man7/capabilities.7:713
2153 msgid ""
2154 "A child created via B<fork>(2)  inherits copies of its parent's capability "
2155 "sets.  See below for a discussion of the treatment of capabilities during "
2156 "B<execve>(2)."
2157 msgstr ""
2158 "B<fork>(2)  で作成される子プロセスは、親のケーパビリティセットのコピーを継承"
2159 "する。 B<execve>(2)  中のケーパビリティの扱いについては下記を参照のこと。"
2160
2161 #. type: Plain text
2162 #: build/C/man7/capabilities.7:717
2163 msgid ""
2164 "Using B<capset>(2), a thread may manipulate its own capability sets (see "
2165 "below)."
2166 msgstr ""
2167 "B<capset>(2)  を使うと、プロセスは自分自身のケーパビリティセット を操作するこ"
2168 "とができる (下記参照)。"
2169
2170 #.  commit 73efc0394e148d0e15583e13712637831f926720
2171 #. type: Plain text
2172 #: build/C/man7/capabilities.7:726
2173 msgid ""
2174 "Since Linux 3.2, the file I</proc/sys/kernel/cap_last_cap> exposes the "
2175 "numerical value of the highest capability supported by the running kernel; "
2176 "this can be used to determine the highest bit that may be set in a "
2177 "capability set."
2178 msgstr ""
2179 "Linux 3.2 以降では、 ファイル I</proc/sys/kernel/cap_last_cap> で、 実行中の"
2180 "カーネルでサポートされているケーパビリティの最大値を参照できる。 この情報を"
2181 "使って、 ケーパビリティセットに設定される可能性がある最上位ビットを判定するこ"
2182 "とができる。"
2183
2184 #. type: SS
2185 #: build/C/man7/capabilities.7:726
2186 #, no-wrap
2187 msgid "File capabilities"
2188 msgstr "ファイルケーパビリティ"
2189
2190 #. type: Plain text
2191 #: build/C/man7/capabilities.7:741
2192 msgid ""
2193 "Since kernel 2.6.24, the kernel supports associating capability sets with an "
2194 "executable file using B<setcap>(8).  The file capability sets are stored in "
2195 "an extended attribute (see B<setxattr>(2))  named I<security.capability>.  "
2196 "Writing to this extended attribute requires the B<CAP_SETFCAP> capability.  "
2197 "The file capability sets, in conjunction with the capability sets of the "
2198 "thread, determine the capabilities of a thread after an B<execve>(2)."
2199 msgstr ""
2200 "カーネル 2.6.24 以降では、 B<setcap>(8)  を使って実行ファイルにケーパビリティ"
2201 "セットを対応付けることができる。 ファイルケーパビリティセットは I<security."
2202 "capability> という名前の拡張属性に保存される (B<setxattr>(2)  参照)。この拡張"
2203 "属性への書き込みには B<CAP_SETFCAP> ケーパビリティが必要である。 ファイルケー"
2204 "パビリティセットとスレッドのケーパビリティセットの両方が 考慮され、 "
2205 "B<execve>(2)  後のスレッドのケーパビリティセットが決定される。"
2206
2207 #. type: Plain text
2208 #: build/C/man7/capabilities.7:743
2209 msgid "The three file capability sets are:"
2210 msgstr "3 つのファイルケーパビリティセットが定義されている。"
2211
2212 #. type: TP
2213 #: build/C/man7/capabilities.7:743
2214 #, no-wrap
2215 msgid "I<Permitted> (formerly known as I<forced>):"
2216 msgstr "I<許可 (Permitted)> (以前のI<強制 (Forced)>):"
2217
2218 #. type: Plain text
2219 #: build/C/man7/capabilities.7:747
2220 msgid ""
2221 "These capabilities are automatically permitted to the thread, regardless of "
2222 "the thread's inheritable capabilities."
2223 msgstr ""
2224 "スレッドの継承可能ケーパビリティに関わらず、そのスレッドに自動的に 認められる"
2225 "ケーパビリティ。"
2226
2227 #. type: TP
2228 #: build/C/man7/capabilities.7:747
2229 #, no-wrap
2230 msgid "I<Inheritable> (formerly known as I<allowed>):"
2231 msgstr "I<継承可能 (Inheritable)> (以前の I<許容 (Allowed)>):"
2232
2233 #. type: Plain text
2234 #: build/C/man7/capabilities.7:753
2235 msgid ""
2236 "This set is ANDed with the thread's inheritable set to determine which "
2237 "inheritable capabilities are enabled in the permitted set of the thread "
2238 "after the B<execve>(2)."
2239 msgstr ""
2240 "このセットと、スレッドの継承可能ケーパビリティセットとの 論理積 (AND) がとら"
2241 "れ、 B<execve>(2)  の後にそのスレッドの許可ケーパビリティセットで有効となる "
2242 "継承可能ケーパビリティが決定される。"
2243
2244 #. type: Plain text
2245 #: build/C/man7/capabilities.7:763
2246 msgid ""
2247 "This is not a set, but rather just a single bit.  If this bit is set, then "
2248 "during an B<execve>(2)  all of the new permitted capabilities for the thread "
2249 "are also raised in the effective set.  If this bit is not set, then after an "
2250 "B<execve>(2), none of the new permitted capabilities is in the new effective "
2251 "set."
2252 msgstr ""
2253 "これは集合ではなく、1 ビットの情報である。 このビットがセットされていると、 "
2254 "B<execve>(2)  実行中に、そのスレッドの新しい許可ケーパビリティが全て 実効ケー"
2255 "パビリティ集合においてもセットされる。 このビットがセットされていない場合、 "
2256 "B<execve>(2)  後には新しい許可ケーパビリティのどれも新しい実効ケーパビリティ"
2257 "集合 にセットされない。"
2258
2259 #. type: Plain text
2260 #: build/C/man7/capabilities.7:779
2261 msgid ""
2262 "Enabling the file effective capability bit implies that any file permitted "
2263 "or inheritable capability that causes a thread to acquire the corresponding "
2264 "permitted capability during an B<execve>(2)  (see the transformation rules "
2265 "described below) will also acquire that capability in its effective set.  "
2266 "Therefore, when assigning capabilities to a file (B<setcap>(8), "
2267 "B<cap_set_file>(3), B<cap_set_fd>(3)), if we specify the effective flag as "
2268 "being enabled for any capability, then the effective flag must also be "
2269 "specified as enabled for all other capabilities for which the corresponding "
2270 "permitted or inheritable flags is enabled."
2271 msgstr ""
2272 "ファイルの実効ケーパビリティビットを有効にするというのは、 B<execve>(2)  実行"
2273 "時に、ファイルの許可ケーパビリティと継承ケーパビリティに対応するものが スレッ"
2274 "ドの許可ケーパビリティセットとしてセットされるが、 これが実効ケーパビリティ"
2275 "セットにもセットされるということである (ケーパビリティの変換ルールは下記参"
2276 "照)。 したがって、ファイルにケーパビリティを割り当てる際 (B<setcap>(8), "
2277 "B<cap_set_file>(3), B<cap_set_fd>(3))、 いずれかのケーパビリティに対して実効"
2278 "フラグを有効と指定する場合、 許可フラグや継承可能フラグを有効にした他の全ての"
2279 "ケーパビリティ についても実効フラグを有効と指定しなければならない。"
2280
2281 #. type: SS
2282 #: build/C/man7/capabilities.7:779
2283 #, no-wrap
2284 msgid "Transformation of capabilities during execve()"
2285 msgstr "execve() 中のケーパビリティの変換"
2286
2287 #. type: Plain text
2288 #: build/C/man7/capabilities.7:785
2289 msgid ""
2290 "During an B<execve>(2), the kernel calculates the new capabilities of the "
2291 "process using the following algorithm:"
2292 msgstr ""
2293 "B<execve>(2)  実行時に、カーネルはプロセスの新しいケーパビリティを次の アルゴ"
2294 "リズムを用いて計算する:"
2295
2296 #. type: Plain text
2297 #: build/C/man7/capabilities.7:790
2298 #, no-wrap
2299 msgid ""
2300 "P'(permitted) = (P(inheritable) & F(inheritable)) |\n"
2301 "                (F(permitted) & cap_bset)\n"
2302 msgstr ""
2303 "P'(permitted) = (P(inheritable) & F(inheritable)) |\n"
2304 "                (F(permitted) & cap_bset)\n"
2305
2306 #. type: Plain text
2307 #: build/C/man7/capabilities.7:792
2308 #, no-wrap
2309 msgid "P'(effective) = F(effective) ? P'(permitted) : 0\n"
2310 msgstr "P'(effective) = F(effective) ? P'(permitted) : 0\n"
2311
2312 #. type: Plain text
2313 #: build/C/man7/capabilities.7:794
2314 #, no-wrap
2315 msgid "P'(inheritable) = P(inheritable)    [i.e., unchanged]\n"
2316 msgstr "P'(inheritable) = P(inheritable)    [つまり、変更されない]\n"
2317
2318 #. type: Plain text
2319 #: build/C/man7/capabilities.7:798
2320 msgid "where:"
2321 msgstr "各変数の意味は以下の通り:"
2322
2323 #. type: IP
2324 #: build/C/man7/capabilities.7:799
2325 #, no-wrap
2326 msgid "P"
2327 msgstr "P"
2328
2329 #. type: Plain text
2330 #: build/C/man7/capabilities.7:802
2331 msgid "denotes the value of a thread capability set before the B<execve>(2)"
2332 msgstr "B<execve>(2)  前のスレッドのケーパビリティセットの値"
2333
2334 #. type: IP
2335 #: build/C/man7/capabilities.7:802
2336 #, no-wrap
2337 msgid "P'"
2338 msgstr "P'"
2339
2340 #. type: Plain text
2341 #: build/C/man7/capabilities.7:805
2342 msgid "denotes the value of a capability set after the B<execve>(2)"
2343 msgstr "B<execve>(2)  後のスレッドのケーパビリティセットの値"
2344
2345 #. type: IP
2346 #: build/C/man7/capabilities.7:805
2347 #, no-wrap
2348 msgid "F"
2349 msgstr "F"
2350
2351 #. type: Plain text
2352 #: build/C/man7/capabilities.7:807
2353 msgid "denotes a file capability set"
2354 msgstr "ファイルケーパビリティセットの値"
2355
2356 #. type: IP
2357 #: build/C/man7/capabilities.7:807
2358 #, no-wrap
2359 msgid "cap_bset"
2360 msgstr "cap_bset"
2361
2362 #. type: Plain text
2363 #: build/C/man7/capabilities.7:809
2364 msgid "is the value of the capability bounding set (described below)."
2365 msgstr "ケーパビリティバウンディングセットの値 (下記参照)"
2366
2367 #. type: SS
2368 #: build/C/man7/capabilities.7:811
2369 #, no-wrap
2370 msgid "Capabilities and execution of programs by root"
2371 msgstr "ケーパビリティと、ルートによるプログラムの実行"
2372
2373 #. type: Plain text
2374 #: build/C/man7/capabilities.7:816
2375 msgid ""
2376 "In order to provide an all-powerful I<root> using capability sets, during an "
2377 "B<execve>(2):"
2378 msgstr ""
2379 "B<execve>(2)  時に、ケーパビリティセットを使って、全ての権限を持った I<root> "
2380 "を実現するには、以下のようにする。"
2381
2382 #. type: Plain text
2383 #: build/C/man7/capabilities.7:821
2384 msgid ""
2385 "If a set-user-ID-root program is being executed, or the real user ID of the "
2386 "process is 0 (root)  then the file inheritable and permitted sets are "
2387 "defined to be all ones (i.e., all capabilities enabled)."
2388 msgstr ""
2389 "set-user-ID-root プログラムが実行される場合、 またはプロセスの実ユーザ ID が "
2390 "0 (root) の場合、 ファイルの継承可能セットと許可セットを全て 1 (全てのケーパ"
2391 "ビリティが有効) に定義する。"
2392
2393 #. type: Plain text
2394 #: build/C/man7/capabilities.7:824
2395 msgid ""
2396 "If a set-user-ID-root program is being executed, then the file effective bit "
2397 "is defined to be one (enabled)."
2398 msgstr ""
2399 "set-user-ID-root プログラムが実行される場合、 ファイルの実効ケーパビリティ"
2400 "ビットを 1 (enabled) に定義する。"
2401
2402 #.  If a process with real UID 0, and nonzero effective UID does an
2403 #.  exec(), then it gets all capabilities in its
2404 #.  permitted set, and no effective capabilities
2405 #. type: Plain text
2406 #: build/C/man7/capabilities.7:839
2407 msgid ""
2408 "The upshot of the above rules, combined with the capabilities "
2409 "transformations described above, is that when a process B<execve>(2)s a set-"
2410 "user-ID-root program, or when a process with an effective UID of 0 "
2411 "B<execve>(2)s a program, it gains all capabilities in its permitted and "
2412 "effective capability sets, except those masked out by the capability "
2413 "bounding set.  This provides semantics that are the same as those provided "
2414 "by traditional UNIX systems."
2415 msgstr ""
2416 "上記のルールにケーパビリティ変換を適用した結果をまとめると、 プロセスが set-"
2417 "user-ID-root プログラムを B<execve>(2)  する場合、または実効 UID が 0 のプロ"
2418 "セスがプログラムを B<execve>(2)  する場合、許可と実効のケーパビリティセットの"
2419 "全ケーパビリティ (正確には、ケーパビリティバウンディングセットによるマスクで"
2420 "除外されるもの 以外の全てのケーパビリティ) を取得するということである。 これ"
2421 "により、伝統的な UNIX システムと同じ振る舞いができるようになっている。"
2422
2423 #. type: SS
2424 #: build/C/man7/capabilities.7:839
2425 #, no-wrap
2426 msgid "Capability bounding set"
2427 msgstr "ケーパビリティ・バウンディングセット"
2428
2429 #. type: Plain text
2430 #: build/C/man7/capabilities.7:844
2431 msgid ""
2432 "The capability bounding set is a security mechanism that can be used to "
2433 "limit the capabilities that can be gained during an B<execve>(2).  The "
2434 "bounding set is used in the following ways:"
2435 msgstr ""
2436 "ケーパビリティ・バウンディングセット (capability bounding set) は、 "
2437 "B<execve>(2)  時に獲得できるケーパビリティを制限するために使われる セキュリ"
2438 "ティ機構である。 バウンディングセットは以下のように使用される。"
2439
2440 #. type: Plain text
2441 #: build/C/man7/capabilities.7:852
2442 msgid ""
2443 "During an B<execve>(2), the capability bounding set is ANDed with the file "
2444 "permitted capability set, and the result of this operation is assigned to "
2445 "the thread's permitted capability set.  The capability bounding set thus "
2446 "places a limit on the permitted capabilities that may be granted by an "
2447 "executable file."
2448 msgstr ""
2449 "B<execve>(2)  実行時に、ケーパビリティ・バウンディングセットと ファイルの許可"
2450 "ケーパビリティセットの論理和 (AND) を取ったものが、 そのスレッドの許可ケーパ"
2451 "ビリティセットに割り当てられる。 つまり、ケーパビリティ・バウンディングセット"
2452 "は、 実行ファイルが認めている許可ケーパビリティに対して 制限を課す働きをす"
2453 "る。"
2454
2455 #. type: Plain text
2456 #: build/C/man7/capabilities.7:864
2457 msgid ""
2458 "(Since Linux 2.6.25)  The capability bounding set acts as a limiting "
2459 "superset for the capabilities that a thread can add to its inheritable set "
2460 "using B<capset>(2).  This means that if a capability is not in the bounding "
2461 "set, then a thread can't add this capability to its inheritable set, even if "
2462 "it was in its permitted capabilities, and thereby cannot have this "
2463 "capability preserved in its permitted set when it B<execve>(2)s a file that "
2464 "has the capability in its inheritable set."
2465 msgstr ""
2466 "(Linux 2.6.25 以降)  ケーパビリティ・バウンディングセットは、スレッドが "
2467 "B<capset>(2)  により自身の継承可能セットに追加可能なケーパビリティの母集団を "
2468 "制限する役割を持つ。 スレッドに許可されたケーパビリティであっても、バウンディ"
2469 "ングセットに 含まれていなければ、スレッドはそのケーパビリティは自身の継承可能"
2470 "セットに 追加できず、その結果、継承可能セットにそのケーパビリティを含むファイ"
2471 "ルを B<execve>(2)  する場合、そのケーパビリティを許可セットに持ち続けることが"
2472 "できない、 ということである。"
2473
2474 #. type: Plain text
2475 #: build/C/man7/capabilities.7:871
2476 msgid ""
2477 "Note that the bounding set masks the file permitted capabilities, but not "
2478 "the inherited capabilities.  If a thread maintains a capability in its "
2479 "inherited set that is not in its bounding set, then it can still gain that "
2480 "capability in its permitted set by executing a file that has the capability "
2481 "in its inherited set."
2482 msgstr ""
2483 "バウンディングセットがマスクを行うのは、継承可能ケーパビリティではなく、 ファ"
2484 "イルの許可ケーパビリティのマスクを行う点に注意すること。 あるスレッドの継承可"
2485 "能セットにそのスレッドのバウンディングセットに 存在しないケーパビリティが含ま"
2486 "れている場合、そのスレッドは、 継承可能セットに含まれるケーパビリティを持つ"
2487 "ファイルを実行することにより、 許可セットに含まれるケーパビリティも獲得できる"
2488 "ということである。"
2489
2490 #. type: Plain text
2491 #: build/C/man7/capabilities.7:874
2492 msgid ""
2493 "Depending on the kernel version, the capability bounding set is either a "
2494 "system-wide attribute, or a per-process attribute."
2495 msgstr ""
2496 "カーネルのバージョンにより、ケーパビリティ・バウンディングセットは システム共"
2497 "通の属性の場合と、プロセス単位の属性の場合がある。"
2498
2499 #. type: Plain text
2500 #: build/C/man7/capabilities.7:876
2501 msgid "B<Capability bounding set prior to Linux 2.6.25>"
2502 msgstr "B<Linux 2.6.25 より前のケーパビリティ・バウンディングセット>"
2503
2504 #. type: Plain text
2505 #: build/C/man7/capabilities.7:884
2506 msgid ""
2507 "In kernels before 2.6.25, the capability bounding set is a system-wide "
2508 "attribute that affects all threads on the system.  The bounding set is "
2509 "accessible via the file I</proc/sys/kernel/cap-bound>.  (Confusingly, this "
2510 "bit mask parameter is expressed as a signed decimal number in I</proc/sys/"
2511 "kernel/cap-bound>.)"
2512 msgstr ""
2513 "2.6.25 より前のカーネルでは、ケーパビリティ・バウンディングセットは システム"
2514 "共通の属性で、システム上の全てのスレッドに適用される。 バウンディングセット"
2515 "は I</proc/sys/kernel/cap-bound> ファイル経由で参照できる。 (間違えやすいが、"
2516 "このビットマスク形式のパラメータは、 I</proc/sys/kernel/cap-bound> では符号付"
2517 "きの十進数で表現される。)"
2518
2519 #. type: Plain text
2520 #: build/C/man7/capabilities.7:891
2521 msgid ""
2522 "Only the B<init> process may set capabilities in the capability bounding "
2523 "set; other than that, the superuser (more precisely: programs with the "
2524 "B<CAP_SYS_MODULE> capability) may only clear capabilities from this set."
2525 msgstr ""
2526 "B<init> プロセスだけがケーパビリティ・バウンディングセットで ケーパビリティを"
2527 "セットすることができる。 それ以外では、スーパーユーザ (より正確には、 "
2528 "B<CAP_SYS_MODULE> ケーパビリティを持ったプログラム) が、 ケーパビリティ・バウ"
2529 "ンディングセットのケーパビリティのクリアが できるだけである。"
2530
2531 #. type: Plain text
2532 #: build/C/man7/capabilities.7:900
2533 msgid ""
2534 "On a standard system the capability bounding set always masks out the "
2535 "B<CAP_SETPCAP> capability.  To remove this restriction (dangerous!), modify "
2536 "the definition of B<CAP_INIT_EFF_SET> in I<include/linux/capability.h> and "
2537 "rebuild the kernel."
2538 msgstr ""
2539 "通常のシステムでは、ケーパビリティ・バウンディングセットは、 B<CAP_SETPCAP> "
2540 "が無効になっている。 この制限を取り去るには (取り去るのは危険!)、 I<include/"
2541 "linux/capability.h> 内の B<CAP_INIT_EFF_SET> の定義を修正し、カーネルを再構築"
2542 "する必要がある。"
2543
2544 #. type: Plain text
2545 #: build/C/man7/capabilities.7:904
2546 msgid ""
2547 "The system-wide capability bounding set feature was added to Linux starting "
2548 "with kernel version 2.2.11."
2549 msgstr ""
2550 "システム共通のケーパビリティ・バウンディングセット機能は、 カーネル 2.2.11 以"
2551 "降で Linux に追加された。"
2552
2553 #. type: Plain text
2554 #: build/C/man7/capabilities.7:906
2555 msgid "B<Capability bounding set from Linux 2.6.25 onward>"
2556 msgstr "B<Linux 2.6.25 以降のケーパビリティ・バウンディングセット>"
2557
2558 #. type: Plain text
2559 #: build/C/man7/capabilities.7:911
2560 msgid ""
2561 "From Linux 2.6.25, the I<capability bounding set> is a per-thread "
2562 "attribute.  (There is no longer a system-wide capability bounding set.)"
2563 msgstr ""
2564 "Linux 2.6.25 以降では、 「ケーパビリティ・バウンディングセット」はスレッド単"
2565 "位の属性である (システム共通のケーパビリティ・バウンディングセットはもはや存"
2566 "在しない)。"
2567
2568 #. type: Plain text
2569 #: build/C/man7/capabilities.7:916
2570 msgid ""
2571 "The bounding set is inherited at B<fork>(2)  from the thread's parent, and "
2572 "is preserved across an B<execve>(2)."
2573 msgstr ""
2574 "バウンディングセットは B<fork>(2)  時にはスレッドの親プロセスから継承され、 "
2575 "B<execve>(2)  の前後では保持される。"
2576
2577 #. type: Plain text
2578 #: build/C/man7/capabilities.7:929
2579 msgid ""
2580 "A thread may remove capabilities from its capability bounding set using the "
2581 "B<prctl>(2)  B<PR_CAPBSET_DROP> operation, provided it has the "
2582 "B<CAP_SETPCAP> capability.  Once a capability has been dropped from the "
2583 "bounding set, it cannot be restored to that set.  A thread can determine if "
2584 "a capability is in its bounding set using the B<prctl>(2)  "
2585 "B<PR_CAPBSET_READ> operation."
2586 msgstr ""
2587 "スレッドが B<CAP_SETPCAP> ケーパビリティを持っている場合、そのスレッドは "
2588 "B<prctl>(2)  の B<PR_CAPBSET_DROP> 操作を使って自身のケーパビリティ・バウン"
2589 "ディングセットから ケーパビリティを削除することができる。 いったんケーパビリ"
2590 "ティをバウンディングセットから削除してしまうと、 スレッドはそのケーパビリティ"
2591 "を再度セットすることはできない。 B<prctl>(2)  の B<PR_CAPBSET_READ> 操作を使"
2592 "うことで、スレッドがあるケーパビリティが自身のバウンディングセット に含まれて"
2593 "いるかを知ることができる。"
2594
2595 #. type: Plain text
2596 #: build/C/man7/capabilities.7:947
2597 msgid ""
2598 "Removing capabilities from the bounding set is supported only if file "
2599 "capabilities are compiled into the kernel.  In kernels before Linux 2.6.33, "
2600 "file capabilities were an optional feature configurable via the "
2601 "B<CONFIG_SECURITY_FILE_CAPABILITIES> option.  Since Linux 2.6.33, the "
2602 "configuration option has been removed and file capabilities are always part "
2603 "of the kernel.  When file capabilities are compiled into the kernel, the "
2604 "B<init> process (the ancestor of all processes) begins with a full bounding "
2605 "set.  If file capabilities are not compiled into the kernel, then B<init> "
2606 "begins with a full bounding set minus B<CAP_SETPCAP>, because this "
2607 "capability has a different meaning when there are no file capabilities."
2608 msgstr ""
2609 "バウンディングセットからのケーパビリティの削除がサポートされるのは、\n"
2610 "カーネルのコンパイル時にファイルケーパビリティが有効になっている場合\n"
2611 "だけである。Linux 2.6.33 より前のカーネルでは、ファイルケーパビリティは\n"
2612 "設定オプション B<CONFIG_SECURITY_FILE_CAPABILITIES> で切り替えられる追加の\n"
2613 "機能であった。Linux 2.6.33 以降では、この設定オプションは削除され、\n"
2614 "ファイルケーパビリティは常にカーネルに組込まれるようになった。\n"
2615 "ファイルケーパビリティがカーネルにコンパイル時に組み込まれている場合、\n"
2616 "(全てのプロセスの先祖である) I<init> プロセスはバウンディングセットで\n"
2617 "全てのケーパビリティが セットされた状態で開始する。ファイルケーパビリティ\n"
2618 "が有効になっていない場合には、 I<init> はバウンディングセットで\n"
2619 "B<CAP_SETPCAP> 以外の全てのケーパビリティがセットされた状態で開始する。\n"
2620 "このようになっているのは、 B<CAP_SETPCAP> ケーパビリティがファイルケー\n"
2621 "パビリティがサポートされていない場合には 違った意味を持つからである。"
2622
2623 #. type: Plain text
2624 #: build/C/man7/capabilities.7:954
2625 msgid ""
2626 "Removing a capability from the bounding set does not remove it from the "
2627 "thread's inherited set.  However it does prevent the capability from being "
2628 "added back into the thread's inherited set in the future."
2629 msgstr ""
2630 "バウンディングセットからケーパビリティを削除しても、 スレッドの継承可能セット"
2631 "からはそのケーパビリティは削除されない。 しかしながら、バウンディングセットか"
2632 "らの削除により、 この先そのケーパビリティをスレッドの継承可能セットに追加する"
2633 "こと はできなくなる。"
2634
2635 #. type: SS
2636 #: build/C/man7/capabilities.7:954
2637 #, no-wrap
2638 msgid "Effect of user ID changes on capabilities"
2639 msgstr "ユーザ ID 変更のケーパビリティへの影響"
2640
2641 #. type: Plain text
2642 #: build/C/man7/capabilities.7:963
2643 msgid ""
2644 "To preserve the traditional semantics for transitions between 0 and nonzero "
2645 "user IDs, the kernel makes the following changes to a thread's capability "
2646 "sets on changes to the thread's real, effective, saved set, and filesystem "
2647 "user IDs (using B<setuid>(2), B<setresuid>(2), or similar):"
2648 msgstr ""
2649 "ユーザ ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、 ス"
2650 "レッドの実 UID、実効 UID、保存 set-user-ID、ファイルシステム UID が "
2651 "(B<setuid>(2), B<setresuid>(2)  などを使って) 変更された際に、カーネルはその"
2652 "スレッドのケーパビリティセットに 以下の変更を行う:"
2653
2654 #. type: Plain text
2655 #: build/C/man7/capabilities.7:969
2656 msgid ""
2657 "If one or more of the real, effective or saved set user IDs was previously "
2658 "0, and as a result of the UID changes all of these IDs have a nonzero value, "
2659 "then all capabilities are cleared from the permitted and effective "
2660 "capability sets."
2661 msgstr ""
2662 "UID の変更前には実 UID、実効 UID、保存 set-user-ID のうち 少なくとも一つが 0 "
2663 "で、変更後に実 UID、実効 UID、保存 set-user-ID が すべて 0 以外の値になった場"
2664 "合、許可と実効のケーパビリティセットの 全ケーパビリティをクリアする。"
2665
2666 #. type: Plain text
2667 #: build/C/man7/capabilities.7:972
2668 msgid ""
2669 "If the effective user ID is changed from 0 to nonzero, then all capabilities "
2670 "are cleared from the effective set."
2671 msgstr ""
2672 "実効 UID が 0 から 0 以外に変更された場合、 実効ケーパビリティセットの全ケー"
2673 "パビリティをクリアする。"
2674
2675 #. type: Plain text
2676 #: build/C/man7/capabilities.7:975
2677 msgid ""
2678 "If the effective user ID is changed from nonzero to 0, then the permitted "
2679 "set is copied to the effective set."
2680 msgstr ""
2681 "実効 UID が 0 以外から 0 に変更された場合、 許可ケーパビリティセットの内容を"
2682 "実効ケーパビリティセットにコピーする。"
2683
2684 #. type: IP
2685 #: build/C/man7/capabilities.7:975 build/C/man7/capabilities.7:1030
2686 #: build/C/man7/user_namespaces.7:529
2687 #, no-wrap
2688 msgid "4."
2689 msgstr "4."
2690
2691 #. type: Plain text
2692 #: build/C/man7/capabilities.7:993
2693 msgid ""
2694 "If the filesystem user ID is changed from 0 to nonzero (see B<setfsuid>(2)), "
2695 "then the following capabilities are cleared from the effective set: "
2696 "B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, "
2697 "B<CAP_FSETID>, B<CAP_LINUX_IMMUTABLE> (since Linux 2.6.30), "
2698 "B<CAP_MAC_OVERRIDE>, and B<CAP_MKNOD> (since Linux 2.6.30).  If the "
2699 "filesystem UID is changed from nonzero to 0, then any of these capabilities "
2700 "that are enabled in the permitted set are enabled in the effective set."
2701 msgstr ""
2702 "ファイルシステム UID が 0 から 0 以外に変更された場合 (B<setfsuid>(2)  参"
2703 "照)、実効ケーパビリティセットの以下のケーパビリティがクリアされる: "
2704 "B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, "
2705 "B<CAP_FSETID>, B<CAP_LINUX_IMMUTABLE> (Linux 2.6.30 以降), "
2706 "B<CAP_MAC_OVERRIDE>, B<CAP_MKNOD> (Linux 2.6.30 以降)。 ファイルシステム UID "
2707 "が 0 以外から 0 に変更された場合、 上記のケーパビリティのうち許可ケーパビリ"
2708 "ティセットで有効になっているものが 実効ケーパビリティセットで有効にされる。"
2709
2710 #. type: Plain text
2711 #: build/C/man7/capabilities.7:1001
2712 msgid ""
2713 "If a thread that has a 0 value for one or more of its user IDs wants to "
2714 "prevent its permitted capability set being cleared when it resets all of its "
2715 "user IDs to nonzero values, it can do so using the B<prctl>(2)  "
2716 "B<PR_SET_KEEPCAPS> operation."
2717 msgstr ""
2718 "各種 UID のうち少なくとも一つが 0 であるスレッドが、 その UID の全てが 0 以外"
2719 "になったときに許可ケーパビリティセットが クリアされないようにしたい場合に"
2720 "は、 B<prctl>(2)  の B<PR_SET_KEEPCAPS> 操作を使えばよい。"
2721
2722 #. type: SS
2723 #: build/C/man7/capabilities.7:1001
2724 #, no-wrap
2725 msgid "Programmatically adjusting capability sets"
2726 msgstr "プログラムでケーパビリティセットを調整する"
2727
2728 #. type: Plain text
2729 #: build/C/man7/capabilities.7:1016
2730 msgid ""
2731 "A thread can retrieve and change its capability sets using the B<capget>(2)  "
2732 "and B<capset>(2)  system calls.  However, the use of B<cap_get_proc>(3)  and "
2733 "B<cap_set_proc>(3), both provided in the I<libcap> package, is preferred for "
2734 "this purpose.  The following rules govern changes to the thread capability "
2735 "sets:"
2736 msgstr ""
2737 "各スレッドは、 B<capget>(2)  や B<capset>(2)  を使って、自身のケーパビリティ"
2738 "セットを取得したり変更したりできる。 ただし、これを行うには、 I<libcap> パッ"
2739 "ケージで提供されている B<cap_get_proc>(3)  や B<cap_set_proc>(3)  を使うのが"
2740 "望ましい。 スレッドのケーパビリティセットの変更には以下のルールが適用される。"
2741
2742 #. type: Plain text
2743 #: build/C/man7/capabilities.7:1022
2744 msgid ""
2745 "If the caller does not have the B<CAP_SETPCAP> capability, the new "
2746 "inheritable set must be a subset of the combination of the existing "
2747 "inheritable and permitted sets."
2748 msgstr ""
2749 "呼び出し側が B<CAP_SETPCAP> ケーパビリティを持っていない場合、新しい継承可能"
2750 "セットは、 既存の継承可能セットと許可セットの積集合 (AND) の部分集合で なけれ"
2751 "ばならない。"
2752
2753 #. type: Plain text
2754 #: build/C/man7/capabilities.7:1026
2755 msgid ""
2756 "(Since Linux 2.6.25)  The new inheritable set must be a subset of the "
2757 "combination of the existing inheritable set and the capability bounding set."
2758 msgstr ""
2759 "(Linux 2.6.25 以降)  新しい継承可能セットは、既存の継承可能セットとケーパビリ"
2760 "ティ・ バウンディングセットの積集合 (AND) の部分集合でなければならない。"
2761
2762 #. type: Plain text
2763 #: build/C/man7/capabilities.7:1030
2764 msgid ""
2765 "The new permitted set must be a subset of the existing permitted set (i.e., "
2766 "it is not possible to acquire permitted capabilities that the thread does "
2767 "not currently have)."
2768 msgstr ""
2769 "新しい許可セットは、既存の許可セットの部分集合でなければならない (つまり、そ"
2770 "のスレッドが現在持っていない許可ケーパビリティを 獲得することはできない)。"
2771
2772 #. type: Plain text
2773 #: build/C/man7/capabilities.7:1032
2774 msgid "The new effective set must be a subset of the new permitted set."
2775 msgstr ""
2776 "新しい実効ケーパビリティセットは新しい許可ケーパビリティセットの 部分集合に"
2777 "なっていなければならない。"
2778
2779 #. type: SS
2780 #: build/C/man7/capabilities.7:1032
2781 #, no-wrap
2782 msgid "The securebits flags: establishing a capabilities-only environment"
2783 msgstr "securebits フラグ: ケーパビリティだけの環境を構築する"
2784
2785 #.  For some background:
2786 #.        see http://lwn.net/Articles/280279/ and
2787 #.        http://article.gmane.org/gmane.linux.kernel.lsm/5476/
2788 #. type: Plain text
2789 #: build/C/man7/capabilities.7:1043
2790 msgid ""
2791 "Starting with kernel 2.6.26, and with a kernel in which file capabilities "
2792 "are enabled, Linux implements a set of per-thread I<securebits> flags that "
2793 "can be used to disable special handling of capabilities for UID 0 "
2794 "(I<root>).  These flags are as follows:"
2795 msgstr ""
2796 "カーネル 2.6.26 以降で、 ファイルケーパビリティが有効になったカーネルでは、 "
2797 "スレッド単位の I<securebits> フラグが実装されており、このフラグを使うと UID "
2798 "0 (I<root>)  に対するケーパビリティの特別扱いを無効することができる。 以下の"
2799 "ようなフラグがある。"
2800
2801 #. type: TP
2802 #: build/C/man7/capabilities.7:1043
2803 #, no-wrap
2804 msgid "B<SECBIT_KEEP_CAPS>"
2805 msgstr "B<SECBIT_KEEP_CAPS>"
2806
2807 #. type: Plain text
2808 #: build/C/man7/capabilities.7:1055
2809 msgid ""
2810 "Setting this flag allows a thread that has one or more 0 UIDs to retain its "
2811 "capabilities when it switches all of its UIDs to a nonzero value.  If this "
2812 "flag is not set, then such a UID switch causes the thread to lose all "
2813 "capabilities.  This flag is always cleared on an B<execve>(2).  (This flag "
2814 "provides the same functionality as the older B<prctl>(2)  B<PR_SET_KEEPCAPS> "
2815 "operation.)"
2816 msgstr ""
2817 "このフラグをセットされている場合、UID が 0 のスレッドの UID が 0 以外の値に "
2818 "切り替わる際に、そのスレッドはケーパビリティを維持することができる。 このフラ"
2819 "グがセットされていない場合には、UID が 0 から 0 以外の値に 切り替わると、その"
2820 "スレッドは全てのケーパビリティを失う。 このフラグは B<execve>(2)  時には全て"
2821 "クリアされる (このフラグは、以前の B<prctl>(2)  の B<PR_SET_KEEPCAPS> 操作と"
2822 "同じ機能を提供するものである)。"
2823
2824 #. type: TP
2825 #: build/C/man7/capabilities.7:1055
2826 #, no-wrap
2827 msgid "B<SECBIT_NO_SETUID_FIXUP>"
2828 msgstr "B<SECBIT_NO_SETUID_FIXUP>"
2829
2830 #. type: Plain text
2831 #: build/C/man7/capabilities.7:1062
2832 msgid ""
2833 "Setting this flag stops the kernel from adjusting capability sets when the "
2834 "threads's effective and filesystem UIDs are switched between zero and "
2835 "nonzero values.  (See the subsection I<Effect of User ID Changes on "
2836 "Capabilities>.)"
2837 msgstr ""
2838 "このフラグをセットすると、スレッドの実効 UID とファイルシステム UID が 0 と "
2839 "0 以外の間で切り替わった場合に、 カーネルはケーパビリティセットの調整を行わな"
2840 "くなる (「ユーザ ID 変更のケーパビリティへの影響」の節を参照)。"
2841
2842 #. type: TP
2843 #: build/C/man7/capabilities.7:1062
2844 #, no-wrap
2845 msgid "B<SECBIT_NOROOT>"
2846 msgstr "B<SECBIT_NOROOT>"
2847
2848 #. type: Plain text
2849 #: build/C/man7/capabilities.7:1070
2850 msgid ""
2851 "If this bit is set, then the kernel does not grant capabilities when a set-"
2852 "user-ID-root program is executed, or when a process with an effective or "
2853 "real UID of 0 calls B<execve>(2).  (See the subsection I<Capabilities and "
2854 "execution of programs by root>.)"
2855 msgstr ""
2856 "このビットがセットされている場合、 set-user-ID-root プログラムの実行時や、 実"
2857 "効 UID か 実 UID が 0 のプロセスが B<execve>(2)  を呼び出した時に、カーネルは"
2858 "ケーパビリティを許可しない (「ケーパビリティと、ルートによるプログラムの実"
2859 "行」の節を参照)。"
2860
2861 #. type: Plain text
2862 #: build/C/man7/capabilities.7:1080
2863 msgid ""
2864 "Each of the above \"base\" flags has a companion \"locked\" flag.  Setting "
2865 "any of the \"locked\" flags is irreversible, and has the effect of "
2866 "preventing further changes to the corresponding \"base\" flag.  The locked "
2867 "flags are: B<SECBIT_KEEP_CAPS_LOCKED>, B<SECBIT_NO_SETUID_FIXUP_LOCKED>, and "
2868 "B<SECBIT_NOROOT_LOCKED>."
2869 msgstr ""
2870 "上記の \"base\" フラグの各々には対応する \"locked\" フラグが存在する。 いずれ"
2871 "の \"locked\" フラグも一度セットされると戻すことはできず、 それ以降は対応す"
2872 "る \"base\" フラグを変更することができなくなる。 \"locked\" フラグは "
2873 "B<SECBIT_KEEP_CAPS_LOCKED>, B<SECBIT_NO_SETUID_FIXUP_LOCKED>, "
2874 "B<SECBIT_NOROOT_LOCKED> という名前である。"
2875
2876 #. type: Plain text
2877 #: build/C/man7/capabilities.7:1092
2878 msgid ""
2879 "The I<securebits> flags can be modified and retrieved using the B<prctl>(2)  "
2880 "B<PR_SET_SECUREBITS> and B<PR_GET_SECUREBITS> operations.  The "
2881 "B<CAP_SETPCAP> capability is required to modify the flags."
2882 msgstr ""
2883 "I<securebits> フラグは、 B<prctl>(2)  の操作 B<PR_SET_SECUREBITS> や "
2884 "B<PR_GET_SECUREBITS> を使うことで変更したり取得したりできる。 フラグを変更す"
2885 "るには B<CAP_SETPCAP> ケーパビリティが必要である。"
2886
2887 #. type: Plain text
2888 #: build/C/man7/capabilities.7:1101
2889 msgid ""
2890 "The I<securebits> flags are inherited by child processes.  During an "
2891 "B<execve>(2), all of the flags are preserved, except B<SECBIT_KEEP_CAPS> "
2892 "which is always cleared."
2893 msgstr ""
2894 "I<securebits> フラグは子プロセスに継承される。 B<execve>(2) においては、\n"
2895 "B<SECBIT_KEEP_CAPS> が常にクリアされる以外は、全てのフラグが保持される。"
2896
2897 #. type: Plain text
2898 #: build/C/man7/capabilities.7:1106
2899 msgid ""
2900 "An application can use the following call to lock itself, and all of its "
2901 "descendants, into an environment where the only way of gaining capabilities "
2902 "is by executing a program with associated file capabilities:"
2903 msgstr ""
2904 "アプリケーションは、以下の呼び出しを行うことにより、 自分自身および子孫となる"
2905 "プロセス全てに対して、 必要なファイルケーパビリティを持ったプログラムを実行し"
2906 "ない限り、 対応するケーパビリティを獲得できないような状況に閉じこめることがで"
2907 "きる。"
2908
2909 #. type: Plain text
2910 #: build/C/man7/capabilities.7:1115
2911 #, no-wrap
2912 msgid ""
2913 "prctl(PR_SET_SECUREBITS,\n"
2914 "        SECBIT_KEEP_CAPS_LOCKED |\n"
2915 "        SECBIT_NO_SETUID_FIXUP |\n"
2916 "        SECBIT_NO_SETUID_FIXUP_LOCKED |\n"
2917 "        SECBIT_NOROOT |\n"
2918 "        SECBIT_NOROOT_LOCKED);\n"
2919 msgstr ""
2920 "prctl(PR_SET_SECUREBITS,\n"
2921 "        SECBIT_KEEP_CAPS_LOCKED |\n"
2922 "        SECBIT_NO_SETUID_FIXUP |\n"
2923 "        SECBIT_NO_SETUID_FIXUP_LOCKED |\n"
2924 "        SECBIT_NOROOT |\n"
2925 "        SECBIT_NOROOT_LOCKED);\n"
2926
2927 #. type: SS
2928 #: build/C/man7/capabilities.7:1117
2929 #, no-wrap
2930 msgid "Interaction with user namespaces"
2931 msgstr "ユーザー名前空間との相互作用"
2932
2933 #. type: Plain text
2934 #: build/C/man7/capabilities.7:1120
2935 msgid ""
2936 "For a discussion of the interaction of capabilities and user namespaces, see "
2937 "B<user_namespaces>(7)."
2938 msgstr ""
2939 "ケーパリビティとユーザー名前空間の相互の影響に関する議論は "
2940 "B<user_namespaces>(7) を参照。"
2941
2942 #. type: Plain text
2943 #: build/C/man7/capabilities.7:1126
2944 msgid ""
2945 "No standards govern capabilities, but the Linux capability implementation is "
2946 "based on the withdrawn POSIX.1e draft standard; see E<.UR http://wt."
2947 "tuxomania.net\\:/publications\\:/posix.1e/> E<.UE .>"
2948 msgstr ""
2949 "ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった "
2950 "POSIX.1e 草案に基づいて実装されている。 E<.UR http://wt.xpilot.org\\:/"
2951 "publications\\:/posix.1e/> E<.UE> を参照。"
2952
2953 #. type: Plain text
2954 #: build/C/man7/capabilities.7:1131
2955 msgid ""
2956 "Since kernel 2.5.27, capabilities are an optional kernel component, and can "
2957 "be enabled/disabled via the B<CONFIG_SECURITY_CAPABILITIES> kernel "
2958 "configuration option."
2959 msgstr ""
2960 "カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となって"
2961 "おり、カーネル設定オプション B<CONFIG_SECURITY_CAPABILITIES> により有効/無効"
2962 "を切り替えることができる。"
2963
2964 #.  7b9a7ec565505699f503b4fcf61500dceb36e744
2965 #. type: Plain text
2966 #: build/C/man7/capabilities.7:1145
2967 msgid ""
2968 "The I</proc/PID/task/TID/status> file can be used to view the capability "
2969 "sets of a thread.  The I</proc/PID/status> file shows the capability sets of "
2970 "a process's main thread.  Before Linux 3.8, nonexistent capabilities were "
2971 "shown as being enabled (1) in these sets.  Since Linux 3.8, all nonexistent "
2972 "capabilities (above B<CAP_LAST_CAP>)  are shown as disabled (0)."
2973 msgstr ""
2974 "I</proc/PID/task/TID/status> ファイルを使うと、スレッドのケーパビリティセット"
2975 "を見ることができる。 I</proc/PID/status> ファイルには、プロセスのメインスレッ"
2976 "ドのケーパビリティセットが表示される。 Linux 3.8 より前では、 これらのケーパ"
2977 "ビリティセットの表示で、 存在しないケーパビリティはすべて有効 (1) として表示"
2978 "される。 Linux 3.8 以降では、 存在しないケーパビリティはすべて無効 (0) として"
2979 "表示される。 (B<CAP_LAST_CAP> より大きい値を持つケーパビリティが存在しない"
2980 "ケーパビリティである)。"
2981
2982 #. type: Plain text
2983 #: build/C/man7/capabilities.7:1160
2984 msgid ""
2985 "The I<libcap> package provides a suite of routines for setting and getting "
2986 "capabilities that is more comfortable and less likely to change than the "
2987 "interface provided by B<capset>(2)  and B<capget>(2).  This package also "
2988 "provides the B<setcap>(8)  and B<getcap>(8)  programs.  It can be found at"
2989 msgstr ""
2990 "I<libcap> パッケージは、ケーパビリティを設定・取得するための ルーチン群を提供"
2991 "している。これらのインタフェースは、 B<capset>(2)  と B<capget>(2)  が提供す"
2992 "るインターフェースと比べて、より使いやすく、変更される可能性が少ない。 この"
2993 "パッケージでは、 B<setcap>(8), B<getcap>(8)  というプログラムも提供されてい"
2994 "る。 パッケージは以下で入手できる。"
2995
2996 #. type: Plain text
2997 #: build/C/man7/capabilities.7:1163
2998 msgid ""
2999 "E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/libs\\:/security\\:/linux-"
3000 "privs> E<.UE .>"
3001 msgstr ""
3002 "E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/libs\\:/security\\:/linux-"
3003 "privs> E<.UE .>"
3004
3005 #. type: Plain text
3006 #: build/C/man7/capabilities.7:1172
3007 msgid ""
3008 "Before kernel 2.6.24, and since kernel 2.6.24 if file capabilities are not "
3009 "enabled, a thread with the B<CAP_SETPCAP> capability can manipulate the "
3010 "capabilities of threads other than itself.  However, this is only "
3011 "theoretically possible, since no thread ever has B<CAP_SETPCAP> in either of "
3012 "these cases:"
3013 msgstr ""
3014 "バージョン 2.6.24 より前、およびファイルケーパビリティが 有効になっていない"
3015 "2.6.24 以降のカーネルでは、 B<CAP_SETPCAP> ケーパビリティを持ったスレッドは自"
3016 "分以外のスレッドの ケーパビリティを操作できる。 しかしながら、これは理論的に"
3017 "可能というだけである。 以下のいずれかの場合においても、どのスレッドも "
3018 "B<CAP_SETPCAP> ケーパビリティを持つことはないからである。"
3019
3020 #. type: Plain text
3021 #: build/C/man7/capabilities.7:1177
3022 msgid ""
3023 "In the pre-2.6.25 implementation the system-wide capability bounding set, I</"
3024 "proc/sys/kernel/cap-bound>, always masks out this capability, and this can "
3025 "not be changed without modifying the kernel source and rebuilding."
3026 msgstr ""
3027 "2.6.25 より前の実装では、システム共通のケーパビリティ・バウンディングセット "
3028 "I</proc/sys/kernel/cap-bound> ではこのケーパビリティは常に無効になっており、 "
3029 "ソースを変更してカーネルを再コンパイルしない限り、 これを変更することはできな"
3030 "い。"
3031
3032 #. type: Plain text
3033 #: build/C/man7/capabilities.7:1183
3034 msgid ""
3035 "If file capabilities are disabled in the current implementation, then "
3036 "B<init> starts out with this capability removed from its per-process "
3037 "bounding set, and that bounding set is inherited by all other processes "
3038 "created on the system."
3039 msgstr ""
3040 "現在の実装ではファイルケーパビリティが無効になっている場合、 プロセス毎のバウ"
3041 "ンディングセットからこのケーパビリティを抜いて B<init> は開始され、 システム"
3042 "上で生成される他の全てのプロセスでこのバウンディングセットが 継承される。"
3043
3044 #. type: Plain text
3045 #: build/C/man7/capabilities.7:1202
3046 msgid ""
3047 "B<capsh>(1), B<capget>(2), B<prctl>(2), B<setfsuid>(2), B<cap_clear>(3), "
3048 "B<cap_copy_ext>(3), B<cap_from_text>(3), B<cap_get_file>(3), "
3049 "B<cap_get_proc>(3), B<cap_init>(3), B<capgetp>(3), B<capsetp>(3), "
3050 "B<libcap>(3), B<credentials>(7), B<user_namespaces>(7), B<pthreads>(7), "
3051 "B<getcap>(8), B<setcap>(8)"
3052 msgstr ""
3053 "B<capsh>(1), B<capget>(2), B<prctl>(2), B<setfsuid>(2), B<cap_clear>(3), "
3054 "B<cap_copy_ext>(3), B<cap_from_text>(3), B<cap_get_file>(3), "
3055 "B<cap_get_proc>(3), B<cap_init>(3), B<capgetp>(3), B<capsetp>(3), "
3056 "B<libcap>(3), B<credentials>(7), B<user_namespaces>(7), B<pthreads>(7), "
3057 "B<getcap>(8), B<setcap>(8)"
3058
3059 #. type: Plain text
3060 #: build/C/man7/capabilities.7:1205
3061 msgid "I<include/linux/capability.h> in the Linux kernel source tree"
3062 msgstr "Linux カーネルソース内の I<include/linux/capability.h>"
3063
3064 #. type: TH
3065 #: build/C/man2/capget.2:15
3066 #, no-wrap
3067 msgid "CAPGET"
3068 msgstr "CAPGET"
3069
3070 #. type: TH
3071 #: build/C/man2/capget.2:15
3072 #, no-wrap
3073 msgid "2013-03-11"
3074 msgstr "2013-03-11"
3075
3076 #. type: Plain text
3077 #: build/C/man2/capget.2:18
3078 msgid "capget, capset - set/get capabilities of thread(s)"
3079 msgstr "capget, capset - スレッドのケーパビリティを設定/取得する"
3080
3081 #. type: Plain text
3082 #: build/C/man2/capget.2:20
3083 msgid "B<#include E<lt>sys/capability.hE<gt>>"
3084 msgstr "B<#include E<lt>sys/capability.hE<gt>>"
3085
3086 #. type: Plain text
3087 #: build/C/man2/capget.2:22
3088 msgid ""
3089 "B<int capget(cap_user_header_t >I<hdrp>B<, cap_user_data_t >I<datap>B<);>"
3090 msgstr ""
3091 "B<int capget(cap_user_header_t >I<hdrp>B<, cap_user_data_t >I<datap>B<);>"
3092
3093 #. type: Plain text
3094 #: build/C/man2/capget.2:24
3095 msgid ""
3096 "B<int capset(cap_user_header_t >I<hdrp>B<, const cap_user_data_t "
3097 ">I<datap>B<);>"
3098 msgstr ""
3099 "B<int capset(cap_user_header_t >I<hdrp>B<, const cap_user_data_t "
3100 ">I<datap>B<);>"
3101
3102 #. type: Plain text
3103 #: build/C/man2/capget.2:35
3104 msgid ""
3105 "As of Linux 2.2, the power of the superuser (root) has been partitioned into "
3106 "a set of discrete capabilities.  Each thread has a set of effective "
3107 "capabilities identifying which capabilities (if any) it may currently "
3108 "exercise.  Each thread also has a set of inheritable capabilities that may "
3109 "be passed through an B<execve>(2)  call, and a set of permitted capabilities "
3110 "that it can make effective or inheritable."
3111 msgstr ""
3112 "Linux 2.2 で、スーパーユーザー (root) の権限は、個別のケーパビリティ "
3113 "(capabilities) へと分割され、その集合として表現されるようになった。 各スレッ"
3114 "ドは「実効ケーパビリティ (effective capability) の集合」を持ち、 それによって"
3115 "現在どの操作が実行可能かを識別できる。 また、各スレッドは、 「継承可能ケーパ"
3116 "ビリティ (inheritable capability) の集合」と 「許可ケーパビリティ (permitted "
3117 "capability) の集合」を持つ。 「継承可能ケーパビリティの集合」は "
3118 "B<execve>(2)  を通じて渡すことができるケーパビリティの集合であり、 「許可ケー"
3119 "パビリティ (permitted capability) の集合」は 実効ケーパビリティや継承可能ケー"
3120 "パビリティとして有効にできる ケーパビリティを規定するものである。"
3121
3122 #. type: Plain text
3123 #: build/C/man2/capget.2:44
3124 msgid ""
3125 "These two system calls are the raw kernel interface for getting and setting "
3126 "thread capabilities.  Not only are these system calls specific to Linux, but "
3127 "the kernel API is likely to change and use of these system calls (in "
3128 "particular the format of the I<cap_user_*_t> types) is subject to extension "
3129 "with each kernel revision, but old programs will keep working."
3130 msgstr ""
3131 "この二つのシステムコールはスレッドのケーパビリティを取得したり設定したりする"
3132 "ための 生のカーネルインターフェースである。 これらのシステムコールは Linux 特"
3133 "有であるというだけでなく、 カーネル API は変更されるかもしれず、これらのシス"
3134 "テムコールの使用法 (特に I<cap_user_*_t> 型という書式) はカーネルのリビジョン"
3135 "毎に拡張されるかもしれないが、 以前のプログラムはそのまま動作する。"
3136
3137 #. type: Plain text
3138 #: build/C/man2/capget.2:55
3139 msgid ""
3140 "The portable interfaces are B<cap_set_proc>(3)  and B<cap_get_proc>(3); if "
3141 "possible, you should use those interfaces in applications.  If you wish to "
3142 "use the Linux extensions in applications, you should use the easier-to-use "
3143 "interfaces B<capsetp>(3)  and B<capgetp>(3)."
3144 msgstr ""
3145 "移植性のあるインターフェースは B<cap_set_proc>(3)  と B<cap_get_proc>(3)  で"
3146 "ある。 可能ならばアプリケーションはこれらの関数を使用すべきである。 アプリ"
3147 "ケーションに Linux 拡張を使用したい場合には、より簡単に 使えるインターフェー"
3148 "スである B<capsetp>(3)  と B<capgetp>(3)  を使用すべきである。"
3149
3150 #. type: SS
3151 #: build/C/man2/capget.2:55
3152 #, no-wrap
3153 msgid "Current details"
3154 msgstr "現在の詳細"
3155
3156 #. type: Plain text
3157 #: build/C/man2/capget.2:58
3158 msgid ""
3159 "Now that you have been warned, some current kernel details.  The structures "
3160 "are defined as follows."
3161 msgstr ""
3162 "現在のカーネルの詳細について注意を述べておく。 構造体は以下のように定義され"
3163 "る。"
3164
3165 #. type: Plain text
3166 #: build/C/man2/capget.2:63
3167 #, no-wrap
3168 msgid ""
3169 "#define _LINUX_CAPABILITY_VERSION_1  0x19980330\n"
3170 "#define _LINUX_CAPABILITY_U32S_1     1\n"
3171 msgstr ""
3172 "#define _LINUX_CAPABILITY_VERSION_1  0x19980330\n"
3173 "#define _LINUX_CAPABILITY_U32S_1     1\n"
3174
3175 #. type: Plain text
3176 #: build/C/man2/capget.2:66
3177 #, no-wrap
3178 msgid ""
3179 "#define _LINUX_CAPABILITY_VERSION_2  0x20071026\n"
3180 "#define _LINUX_CAPABILITY_U32S_2     2\n"
3181 msgstr ""
3182 "#define _LINUX_CAPABILITY_VERSION_2  0x20071026\n"
3183 "#define _LINUX_CAPABILITY_U32S_2     2\n"
3184
3185 #. type: Plain text
3186 #: build/C/man2/capget.2:71
3187 #, no-wrap
3188 msgid ""
3189 "typedef struct __user_cap_header_struct {\n"
3190 "   __u32 version;\n"
3191 "   int pid;\n"
3192 "} *cap_user_header_t;\n"
3193 msgstr ""
3194 "typedef struct __user_cap_header_struct {\n"
3195 "   __u32 version;\n"
3196 "   int pid;\n"
3197 "} *cap_user_header_t;\n"
3198
3199 #. type: Plain text
3200 #: build/C/man2/capget.2:77
3201 #, no-wrap
3202 msgid ""
3203 "typedef struct __user_cap_data_struct {\n"
3204 "   __u32 effective;\n"
3205 "   __u32 permitted;\n"
3206 "   __u32 inheritable;\n"
3207 "} *cap_user_data_t;\n"
3208 msgstr ""
3209 "typedef struct __user_cap_data_struct {\n"
3210 "   __u32 effective;\n"
3211 "   __u32 permitted;\n"
3212 "   __u32 inheritable;\n"
3213 "} *cap_user_data_t;\n"
3214
3215 #. type: Plain text
3216 #: build/C/man2/capget.2:96
3217 msgid ""
3218 "The I<effective>, I<permitted>, and I<inheritable> fields are bit masks of "
3219 "the capabilities defined in B<capabilities>(7).  Note the B<CAP_*> values "
3220 "are bit indexes and need to be bit-shifted before ORing into the bit "
3221 "fields.  To define the structures for passing to the system call you have to "
3222 "use the I<struct __user_cap_header_struct> and I<struct "
3223 "__user_cap_data_struct> names because the typedefs are only pointers."
3224 msgstr ""
3225 "フィールド I<effective>, I<permitted>, I<inheritable> は、 "
3226 "B<capabilities>(7)  で定義されるケーパビリティのビットマスクである。 "
3227 "I<CAP_*> はビット番号を表すインデックス値であり、 ビットフィールドに OR を行"
3228 "う前に I<CAP_*> の値の分だけビットシフトを行う必要がある。 typedef の方はポイ"
3229 "ンタなので、 このシステムコールに渡す構造体を定義するには、 I<struct "
3230 "__user_cap_header_struct> と I<struct __user_cap_data_struct> という名前を使"
3231 "用しなければならない。"
3232
3233 #. type: Plain text
3234 #: build/C/man2/capget.2:108
3235 msgid ""
3236 "Kernels prior to 2.6.25 prefer 32-bit capabilities with version "
3237 "B<_LINUX_CAPABILITY_VERSION_1>, and kernels 2.6.25+ prefer 64-bit "
3238 "capabilities with version B<_LINUX_CAPABILITY_VERSION_2>.  Note, 64-bit "
3239 "capabilities use I<datap>[0] and I<datap>[1], whereas 32-bit capabilities "
3240 "use only I<datap>[0]."
3241 msgstr ""
3242 "カーネル 2.6.25 より前では、バージョン B<_LINUX_CAPABILITY_VERSION_1> の 32 "
3243 "ビットケーパビリティが推奨である。 カーネル 2.6.25 以降では、バージョン "
3244 "B<_LINUX_CAPABILITY_VERSION_2> の 64 ビットケーパビリティが推奨である。 64 "
3245 "ビットケーパビリティでは I<datap>[0] と I<datap>[1] が使用されるのに対し、 "
3246 "32 ビットケーパビリティでは I<datap>[0] だけが使用される。"
3247
3248 #. type: Plain text
3249 #: build/C/man2/capget.2:112
3250 msgid ""
3251 "Another change affecting the behavior of these system calls is kernel "
3252 "support for file capabilities (VFS capability support).  This support is "
3253 "currently a compile time option (added in kernel 2.6.24)."
3254 msgstr ""
3255 "これらのシステムコールの挙動に影響があるもう一つの変更点は、 ファイルケーパビ"
3256 "リティ (file capabilities) のカーネルによるサポート (VFS ケーパビリティのサ"
3257 "ポート) である。 VFS ケーパビリティのサポートは現在のところコンパイル時のオプ"
3258 "ションである (カーネル 2.6.24 で追加された)。"
3259
3260 #. type: Plain text
3261 #: build/C/man2/capget.2:119
3262 msgid ""
3263 "For B<capget>()  calls, one can probe the capabilities of any process by "
3264 "specifying its process ID with the I<hdrp-E<gt>pid> field value."
3265 msgstr ""
3266 "B<capget>()  では、 I<hdrp-E<gt>pid> のフィールド値にケーパビリティを知りたい"
3267 "プロセスのプロセス ID を 指定することで、任意のプロセスのケーパビリティを調べ"
3268 "ることができる。"
3269
3270 #. type: SS
3271 #: build/C/man2/capget.2:119
3272 #, no-wrap
3273 msgid "With VFS capability support"
3274 msgstr "VFS ケーパビリティがサポートされている場合"
3275
3276 #. type: Plain text
3277 #: build/C/man2/capget.2:131
3278 msgid ""
3279 "VFS Capability support creates a file-attribute method for adding "
3280 "capabilities to privileged executables.  This privilege model obsoletes "
3281 "kernel support for one process asynchronously setting the capabilities of "
3282 "another.  That is, with VFS support, for B<capset>()  calls the only "
3283 "permitted values for I<hdrp-E<gt>pid> are 0 or B<getpid>(2), which are "
3284 "equivalent."
3285 msgstr ""
3286 "VFS ケーパビリティのサポートでは、特権実行ファイルにケーパビリティを 追加する"
3287 "ためのファイル属性メソッドが作成された。 この特権モデルの導入により、あるプロ"
3288 "セスにより別のプロセスのケーパビリティ を非同期に設定する機能のカーネルによる"
3289 "サポートは廃止される。 つまり、VFS サポートでは、 B<capset>()  を呼び出す際"
3290 "に I<hdrp-E<gt>pid> の値として許されるのは 0 と B<getpid>(2)  が返す値だけと"
3291 "なる (どちらの値でも等価である)。"
3292
3293 #. type: SS
3294 #: build/C/man2/capget.2:131
3295 #, no-wrap
3296 msgid "Without VFS capability support"
3297 msgstr "VFS ケーパビリティがサポートされていない場合"
3298
3299 #. type: Plain text
3300 #: build/C/man2/capget.2:157
3301 msgid ""
3302 "When the kernel does not support VFS capabilities, B<capset>()  calls can "
3303 "operate on the capabilities of the thread specified by the I<pid> field of "
3304 "I<hdrp> when that is nonzero, or on the capabilities of the calling thread "
3305 "if I<pid> is 0.  If I<pid> refers to a single-threaded process, then I<pid> "
3306 "can be specified as a traditional process ID; operating on a thread of a "
3307 "multithreaded process requires a thread ID of the type returned by "
3308 "B<gettid>(2).  For B<capset>(), I<pid> can also be: -1, meaning perform the "
3309 "change on all threads except the caller and B<init>(1); or a value less than "
3310 "-1, in which case the change is applied to all members of the process group "
3311 "whose ID is -I<pid>."
3312 msgstr ""
3313 "カーネルが VFS ケーパビリティをサポートしていない場合、 I<hdrp> の I<pid> "
3314 "フィールドが 0 以外であれば、 B<capset>()  の操作対象は I<pid> で指定されたス"
3315 "レッドのケーパビリティになる。 I<pid> が 0 の場合は呼び出し元のスレッドのケー"
3316 "パビリティが操作対象となる。 I<pid> がシングルスレッド・プロセスを参照してい"
3317 "る場合、 I<pid> は以前から使われているプロセスID を使って指定できる。 マルチ"
3318 "スレッド・プロセス内のあるスレッドを対象にする場合は、 B<gettid>(2)  が返すス"
3319 "レッドID を用いて指定する必要がある。 また、 B<capset>()  では -1 や -1 より"
3320 "小さな値を指定することもできる。 -1 は呼び出し元と B<init>(1)  を除く全てのス"
3321 "レッドを対象として変更を行うことを、 -1 より小さな値は ID が -I<pid> のプロセ"
3322 "スグループの全メンバ を対象として変更を行うことを意味する。"
3323
3324 #. type: Plain text
3325 #: build/C/man2/capget.2:160
3326 msgid "For details on the data, see B<capabilities>(7)."
3327 msgstr "このデータの詳細は B<capabilities>(7)  を参照すること。"
3328
3329 #. type: Plain text
3330 #: build/C/man2/capget.2:179
3331 msgid ""
3332 "The calls will fail with the error B<EINVAL>, and set the I<version> field "
3333 "of I<hdrp> to the kernel preferred value of B<_LINUX_CAPABILITY_VERSION_?> "
3334 "when an unsupported I<version> value is specified.  In this way, one can "
3335 "probe what the current preferred capability revision is."
3336 msgstr ""
3337 "I<hdrp> のフィールド I<version> にサポートされていない値が指定された場合、 呼"
3338 "び出しはエラー B<EINVAL> で失敗し、 I<version> にカーネル推奨の "
3339 "B<_LINUX_CAPABILITY_VERSION_?> を設定する。 このようにして、現在の推奨ケーパ"
3340 "ビリティ・リビジョンが何かを 調べることができる。"
3341
3342 #. type: Plain text
3343 #: build/C/man2/capget.2:188
3344 msgid ""
3345 "Bad memory address.  I<hdrp> must not be NULL.  I<datap> may be NULL only "
3346 "when the user is trying to determine the preferred capability version format "
3347 "supported by the kernel."
3348 msgstr ""
3349 "不正なメモリアドレス。 I<hdrp> は NULL であってはならない。 I<datap> に NULL "
3350 "を指定してよいのは、ユーザがカーネルがサポートしている 推奨のケーパビリティ・"
3351 "バージョンを判定しようとしているときだけである。"
3352
3353 #. type: TP
3354 #: build/C/man2/capget.2:188 build/C/man7/cpuset.7:1180
3355 #: build/C/man7/cpuset.7:1189 build/C/man7/cpuset.7:1198
3356 #: build/C/man7/cpuset.7:1208 build/C/man7/cpuset.7:1217
3357 #: build/C/man7/cpuset.7:1224 build/C/man7/cpuset.7:1231
3358 #: build/C/man2/getgroups.2:114 build/C/man2/getgroups.2:121
3359 #: build/C/man2/getpriority.2:118 build/C/man2/getrlimit.2:471
3360 #: build/C/man2/getrusage.2:198 build/C/man2/iopl.2:72
3361 #: build/C/man2/ioprio_set.2:170 build/C/man2/seteuid.2:80
3362 #: build/C/man2/setgid.2:59 build/C/man2/setpgid.2:225
3363 #: build/C/man2/setresuid.2:99 build/C/man2/setreuid.2:128
3364 #: build/C/man2/setuid.2:105 build/C/man2/seccomp.2:373
3365 #: build/C/man2/seccomp.2:380 build/C/man2/seccomp.2:387
3366 #: build/C/man2/seccomp.2:393 build/C/man2/seccomp.2:402
3367 #, no-wrap
3368 msgid "B<EINVAL>"
3369 msgstr "B<EINVAL>"
3370
3371 #. type: Plain text
3372 #: build/C/man2/capget.2:191
3373 msgid "One of the arguments was invalid."
3374 msgstr "引き数のどれかが無効である。"
3375
3376 #. type: Plain text
3377 #: build/C/man2/capget.2:196
3378 msgid ""
3379 "An attempt was made to add a capability to the Permitted set, or to set a "
3380 "capability in the Effective or Inheritable sets that is not in the Permitted "
3381 "set."
3382 msgstr ""
3383 "「許可ケーパビリティセット」にケーパビリティを追加しようとしているか、 もしく"
3384 "は「許可ケーパビリティセット」に含まれないケーパビリティを 「実効ケーパビリ"
3385 "ティセット」や「継承可能ケーパビリティセット」に セットしようとしている。"
3386
3387 #. type: Plain text
3388 #: build/C/man2/capget.2:215
3389 msgid ""
3390 "The caller attempted to use B<capset>()  to modify the capabilities of a "
3391 "thread other than itself, but lacked sufficient privilege.  For kernels "
3392 "supporting VFS capabilities, this is never permitted.  For kernels lacking "
3393 "VFS support, the B<CAP_SETPCAP> capability is required.  (A bug in kernels "
3394 "before 2.6.11 meant that this error could also occur if a thread without "
3395 "this capability tried to change its own capabilities by specifying the "
3396 "I<pid> field as a nonzero value (i.e., the value returned by B<getpid>(2))  "
3397 "instead of 0.)"
3398 msgstr ""
3399 "呼び出し元が自分以外のスレッドのケーパビリティを B<capset>()  を使って修正し"
3400 "ようとしたが、十分な特権がなかった。 VFS ケーパビリティをサポートしているカー"
3401 "ネルでは、 この操作が許可されることは決してない。 VFS ケーパビリティをサポー"
3402 "トしていないカーネルでは、 B<CAP_SETPCAP> ケーパビリティが必要である。 (バー"
3403 "ジョン 2.6.11 より前のカーネルには、 このケーパビリティを持たないスレッドが "
3404 "I<pid> フィールドに 0 でない値 (つまり、0 の代わりに B<getpid>(2)  が返す値) "
3405 "を指定して自分自身のケーパビリティを変更しようとした場合にも、 このエラーが発"
3406 "生するというバグがあった。)"
3407
3408 #. type: TP
3409 #: build/C/man2/capget.2:215 build/C/man7/cpuset.7:1330
3410 #: build/C/man2/getpriority.2:126 build/C/man2/getrlimit.2:502
3411 #: build/C/man2/getsid.2:70 build/C/man2/ioprio_set.2:187
3412 #: build/C/man2/setpgid.2:240 build/C/man2/seccomp.2:426
3413 #, no-wrap
3414 msgid "B<ESRCH>"
3415 msgstr "B<ESRCH>"
3416
3417 #. type: Plain text
3418 #: build/C/man2/capget.2:218
3419 msgid "No such thread."
3420 msgstr "そのようなスレッドが存在しない。"
3421
3422 #. type: Plain text
3423 #: build/C/man2/capget.2:220 build/C/man2/ioprio_set.2:198
3424 msgid "These system calls are Linux-specific."
3425 msgstr "これらのシステムコールは Linux 独自である。"
3426
3427 #. type: Plain text
3428 #: build/C/man2/capget.2:225
3429 msgid ""
3430 "The portable interface to the capability querying and setting functions is "
3431 "provided by the I<libcap> library and is available here:"
3432 msgstr ""
3433 "ケーパビリティを設定したり取得したりする機能のための移植性ある インターフェー"
3434 "スは I<libcap> ライブラリによって提供される。 このライブラリは以下から入手で"
3435 "きる:"
3436
3437 #. type: Plain text
3438 #: build/C/man2/capget.2:228
3439 msgid ""
3440 "E<.UR http://git.kernel.org/cgit\\:/linux\\:/kernel\\:/git\\:/morgan\\:\\:/"
3441 "libcap.git> E<.UE>"
3442 msgstr ""
3443 "E<.UR http://git.kernel.org/cgit\\:/linux\\:/kernel\\:/git\\:/morgan\\:\\:/"
3444 "libcap.git> E<.UE>"
3445
3446 #. type: Plain text
3447 #: build/C/man2/capget.2:232
3448 msgid "B<clone>(2), B<gettid>(2), B<capabilities>(7)"
3449 msgstr "B<clone>(2), B<gettid>(2), B<capabilities>(7)"
3450
3451 #. type: TH
3452 #: build/C/man7/cpuset.7:25
3453 #, no-wrap
3454 msgid "CPUSET"
3455 msgstr "CPUSET"
3456
3457 #. type: TH
3458 #: build/C/man7/cpuset.7:25
3459 #, no-wrap
3460 msgid "2014-05-21"
3461 msgstr "2014-05-21"
3462
3463 #. type: Plain text
3464 #: build/C/man7/cpuset.7:28
3465 msgid "cpuset - confine processes to processor and memory node subsets"
3466 msgstr ""
3467
3468 #. type: Plain text
3469 #: build/C/man7/cpuset.7:35
3470 msgid ""
3471 "The cpuset filesystem is a pseudo-filesystem interface to the kernel cpuset "
3472 "mechanism, which is used to control the processor placement and memory "
3473 "placement of processes.  It is commonly mounted at I</dev/cpuset>."
3474 msgstr ""
3475
3476 #. type: Plain text
3477 #: build/C/man7/cpuset.7:52
3478 msgid ""
3479 "On systems with kernels compiled with built in support for cpusets, all "
3480 "processes are attached to a cpuset, and cpusets are always present.  If a "
3481 "system supports cpusets, then it will have the entry B<nodev cpuset> in the "
3482 "file I</proc/filesystems>.  By mounting the cpuset filesystem (see the "
3483 "B<EXAMPLE> section below), the administrator can configure the cpusets on a "
3484 "system to control the processor and memory placement of processes on that "
3485 "system.  By default, if the cpuset configuration on a system is not modified "
3486 "or if the cpuset filesystem is not even mounted, then the cpuset mechanism, "
3487 "though present, has no affect on the system's behavior."
3488 msgstr ""
3489
3490 #. type: Plain text
3491 #: build/C/man7/cpuset.7:54
3492 msgid "A cpuset defines a list of CPUs and memory nodes."
3493 msgstr ""
3494
3495 #. type: Plain text
3496 #: build/C/man7/cpuset.7:63
3497 msgid ""
3498 "The CPUs of a system include all the logical processing units on which a "
3499 "process can execute, including, if present, multiple processor cores within "
3500 "a package and Hyper-Threads within a processor core.  Memory nodes include "
3501 "all distinct banks of main memory; small and SMP systems typically have just "
3502 "one memory node that contains all the system's main memory, while NUMA (non-"
3503 "uniform memory access) systems have multiple memory nodes."
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man7/cpuset.7:73
3508 msgid ""
3509 "Cpusets are represented as directories in a hierarchical pseudo-filesystem, "
3510 "where the top directory in the hierarchy (I</dev/cpuset>)  represents the "
3511 "entire system (all online CPUs and memory nodes)  and any cpuset that is the "
3512 "child (descendant) of another parent cpuset contains a subset of that "
3513 "parent's CPUs and memory nodes.  The directories and files representing "
3514 "cpusets have normal filesystem permissions."
3515 msgstr ""
3516
3517 #. type: Plain text
3518 #: build/C/man7/cpuset.7:84
3519 msgid ""
3520 "Every process in the system belongs to exactly one cpuset.  A process is "
3521 "confined to run only on the CPUs in the cpuset it belongs to, and to "
3522 "allocate memory only on the memory nodes in that cpuset.  When a process "
3523 "B<fork>(2)s, the child process is placed in the same cpuset as its parent.  "
3524 "With sufficient privilege, a process may be moved from one cpuset to another "
3525 "and the allowed CPUs and memory nodes of an existing cpuset may be changed."
3526 msgstr ""
3527
3528 #. type: Plain text
3529 #: build/C/man7/cpuset.7:92
3530 msgid ""
3531 "When the system begins booting, a single cpuset is defined that includes all "
3532 "CPUs and memory nodes on the system, and all processes are in that cpuset.  "
3533 "During the boot process, or later during normal system operation, other "
3534 "cpusets may be created, as subdirectories of this top cpuset, under the "
3535 "control of the system administrator, and processes may be placed in these "
3536 "other cpusets."
3537 msgstr ""
3538
3539 #. type: Plain text
3540 #: build/C/man7/cpuset.7:114
3541 msgid ""
3542 "Cpusets are integrated with the B<sched_setaffinity>(2)  scheduling affinity "
3543 "mechanism and the B<mbind>(2)  and B<set_mempolicy>(2)  memory-placement "
3544 "mechanisms in the kernel.  Neither of these mechanisms let a process make "
3545 "use of a CPU or memory node that is not allowed by that process's cpuset.  "
3546 "If changes to a process's cpuset placement conflict with these other "
3547 "mechanisms, then cpuset placement is enforced even if it means overriding "
3548 "these other mechanisms.  The kernel accomplishes this overriding by silently "
3549 "restricting the CPUs and memory nodes requested by these other mechanisms to "
3550 "those allowed by the invoking process's cpuset.  This can result in these "
3551 "other calls returning an error, if for example, such a call ends up "
3552 "requesting an empty set of CPUs or memory nodes, after that request is "
3553 "restricted to the invoking process's cpuset."
3554 msgstr ""
3555
3556 #. type: Plain text
3557 #: build/C/man7/cpuset.7:120
3558 msgid ""
3559 "Typically, a cpuset is used to manage the CPU and memory-node confinement "
3560 "for a set of cooperating processes such as a batch scheduler job, and these "
3561 "other mechanisms are used to manage the placement of individual processes or "
3562 "memory regions within that set or job."
3563 msgstr ""
3564
3565 #. type: SH
3566 #: build/C/man7/cpuset.7:120
3567 #, no-wrap
3568 msgid "FILES"
3569 msgstr "ファイル"
3570
3571 #. type: Plain text
3572 #: build/C/man7/cpuset.7:125
3573 msgid ""
3574 "Each directory below I</dev/cpuset> represents a cpuset and contains a fixed "
3575 "set of pseudo-files describing the state of that cpuset."
3576 msgstr ""
3577
3578 #. type: Plain text
3579 #: build/C/man7/cpuset.7:135
3580 msgid ""
3581 "New cpusets are created using the B<mkdir>(2)  system call or the "
3582 "B<mkdir>(1)  command.  The properties of a cpuset, such as its flags, "
3583 "allowed CPUs and memory nodes, and attached processes, are queried and "
3584 "modified by reading or writing to the appropriate file in that cpuset's "
3585 "directory, as listed below."
3586 msgstr ""
3587
3588 #. type: Plain text
3589 #: build/C/man7/cpuset.7:141
3590 msgid ""
3591 "The pseudo-files in each cpuset directory are automatically created when the "
3592 "cpuset is created, as a result of the B<mkdir>(2)  invocation.  It is not "
3593 "possible to directly add or remove these pseudo-files."
3594 msgstr ""
3595
3596 #. type: Plain text
3597 #: build/C/man7/cpuset.7:149
3598 msgid ""
3599 "A cpuset directory that contains no child cpuset directories, and has no "
3600 "attached processes, can be removed using B<rmdir>(2)  or B<rmdir>(1).  It is "
3601 "not necessary, or possible, to remove the pseudo-files inside the directory "
3602 "before removing it."
3603 msgstr ""
3604
3605 #. type: Plain text
3606 #: build/C/man7/cpuset.7:163
3607 msgid ""
3608 "The pseudo-files in each cpuset directory are small text files that may be "
3609 "read and written using traditional shell utilities such as B<cat>(1), and "
3610 "B<echo>(1), or from a program by using file I/O library functions or system "
3611 "calls, such as B<open>(2), B<read>(2), B<write>(2), and B<close>(2)."
3612 msgstr ""
3613
3614 #.  ====================== tasks ======================
3615 #. type: Plain text
3616 #: build/C/man7/cpuset.7:168
3617 msgid ""
3618 "The pseudo-files in a cpuset directory represent internal kernel state and "
3619 "do not have any persistent image on disk.  Each of these per-cpuset files is "
3620 "listed and described below."
3621 msgstr ""
3622
3623 #. type: TP
3624 #: build/C/man7/cpuset.7:168
3625 #, no-wrap
3626 msgid "I<tasks>"
3627 msgstr "I<tasks>"
3628
3629 #. type: Plain text
3630 #: build/C/man7/cpuset.7:178
3631 msgid ""
3632 "List of the process IDs (PIDs) of the processes in that cpuset.  The list is "
3633 "formatted as a series of ASCII decimal numbers, each followed by a newline.  "
3634 "A process may be added to a cpuset (automatically removing it from the "
3635 "cpuset that previously contained it) by writing its PID to that cpuset's "
3636 "I<tasks> file (with or without a trailing newline)."
3637 msgstr ""
3638
3639 #.  =================== notify_on_release ===================
3640 #. type: Plain text
3641 #: build/C/man7/cpuset.7:186
3642 msgid ""
3643 "B<Warning:> only one PID may be written to the I<tasks> file at a time.  If "
3644 "a string is written that contains more than one PID, only the first one will "
3645 "be used."
3646 msgstr ""
3647
3648 #. type: TP
3649 #: build/C/man7/cpuset.7:186
3650 #, no-wrap
3651 msgid "I<notify_on_release>"
3652 msgstr "I<notify_on_release>"
3653
3654 #.  ====================== cpus ======================
3655 #. type: Plain text
3656 #: build/C/man7/cpuset.7:195
3657 msgid ""
3658 "Flag (0 or 1).  If set (1), that cpuset will receive special handling after "
3659 "it is released, that is, after all processes cease using it (i.e., terminate "
3660 "or are moved to a different cpuset)  and all child cpuset directories have "
3661 "been removed.  See the B<Notify On Release> section, below."
3662 msgstr ""
3663
3664 #. type: TP
3665 #: build/C/man7/cpuset.7:195
3666 #, no-wrap
3667 msgid "I<cpuset.cpus>"
3668 msgstr "I<cpuset.cpus>"
3669
3670 #. type: Plain text
3671 #: build/C/man7/cpuset.7:202
3672 msgid ""
3673 "List of the physical numbers of the CPUs on which processes in that cpuset "
3674 "are allowed to execute.  See B<List Format> below for a description of the "
3675 "format of I<cpus>."
3676 msgstr ""
3677
3678 #.  ==================== cpu_exclusive ====================
3679 #. type: Plain text
3680 #: build/C/man7/cpuset.7:208
3681 msgid ""
3682 "The CPUs allowed to a cpuset may be changed by writing a new list to its "
3683 "I<cpus> file."
3684 msgstr ""
3685
3686 #. type: TP
3687 #: build/C/man7/cpuset.7:208
3688 #, no-wrap
3689 msgid "I<cpuset.cpu_exclusive>"
3690 msgstr "I<cpuset.cpu_exclusive>"
3691
3692 #. type: Plain text
3693 #: build/C/man7/cpuset.7:215
3694 msgid ""
3695 "Flag (0 or 1).  If set (1), the cpuset has exclusive use of its CPUs (no "
3696 "sibling or cousin cpuset may overlap CPUs).  By default this is off (0).  "
3697 "Newly created cpusets also initially default this to off (0)."
3698 msgstr ""
3699
3700 #.  ====================== mems ======================
3701 #. type: Plain text
3702 #: build/C/man7/cpuset.7:237
3703 msgid ""
3704 "Two cpusets are I<sibling> cpusets if they share the same parent cpuset in "
3705 "the I</dev/cpuset> hierarchy.  Two cpusets are I<cousin> cpusets if neither "
3706 "is the ancestor of the other.  Regardless of the I<cpu_exclusive> setting, "
3707 "if one cpuset is the ancestor of another, and if both of these cpusets have "
3708 "nonempty I<cpus>, then their I<cpus> must overlap, because the I<cpus> of "
3709 "any cpuset are always a subset of the I<cpus> of its parent cpuset."
3710 msgstr ""
3711
3712 #. type: TP
3713 #: build/C/man7/cpuset.7:237
3714 #, no-wrap
3715 msgid "I<cpuset.mems>"
3716 msgstr "I<cpuset.mems>"
3717
3718 #.  ==================== mem_exclusive ====================
3719 #. type: Plain text
3720 #: build/C/man7/cpuset.7:245
3721 msgid ""
3722 "List of memory nodes on which processes in this cpuset are allowed to "
3723 "allocate memory.  See B<List Format> below for a description of the format "
3724 "of I<mems>."
3725 msgstr ""
3726
3727 #. type: TP
3728 #: build/C/man7/cpuset.7:245
3729 #, no-wrap
3730 msgid "I<cpuset.mem_exclusive>"
3731 msgstr "I<cpuset.mem_exclusive>"
3732
3733 #. type: Plain text
3734 #: build/C/man7/cpuset.7:253
3735 msgid ""
3736 "Flag (0 or 1).  If set (1), the cpuset has exclusive use of its memory nodes "
3737 "(no sibling or cousin may overlap).  Also if set (1), the cpuset is a "
3738 "B<Hardwall> cpuset (see below).  By default this is off (0).  Newly created "
3739 "cpusets also initially default this to off (0)."
3740 msgstr ""
3741
3742 #.  ==================== mem_hardwall ====================
3743 #. type: Plain text
3744 #: build/C/man7/cpuset.7:261
3745 msgid ""
3746 "Regardless of the I<mem_exclusive> setting, if one cpuset is the ancestor of "
3747 "another, then their memory nodes must overlap, because the memory nodes of "
3748 "any cpuset are always a subset of the memory nodes of that cpuset's parent "
3749 "cpuset."
3750 msgstr ""
3751
3752 #. type: TP
3753 #: build/C/man7/cpuset.7:261
3754 #, no-wrap
3755 msgid "I<cpuset.mem_hardwall> (since Linux 2.6.26)"
3756 msgstr "I<cpuset.mem_hardwall> (Linux 2.6.26 以降)"
3757
3758 #.  ==================== memory_migrate ====================
3759 #. type: Plain text
3760 #: build/C/man7/cpuset.7:272
3761 msgid ""
3762 "Flag (0 or 1).  If set (1), the cpuset is a B<Hardwall> cpuset (see below).  "
3763 "Unlike B<mem_exclusive>, there is no constraint on whether cpusets marked "
3764 "B<mem_hardwall> may have overlapping memory nodes with sibling or cousin "
3765 "cpusets.  By default this is off (0).  Newly created cpusets also initially "
3766 "default this to off (0)."
3767 msgstr ""
3768
3769 #. type: TP
3770 #: build/C/man7/cpuset.7:272
3771 #, no-wrap
3772 msgid "I<cpuset.memory_migrate> (since Linux 2.6.16)"
3773 msgstr "I<cpuset.memory_migrate> (Linux 2.6.16 以降)"
3774
3775 #.  ==================== memory_pressure ====================
3776 #. type: Plain text
3777 #: build/C/man7/cpuset.7:279
3778 msgid ""
3779 "Flag (0 or 1).  If set (1), then memory migration is enabled.  By default "
3780 "this is off (0).  See the B<Memory Migration> section, below."
3781 msgstr ""
3782
3783 #. type: TP
3784 #: build/C/man7/cpuset.7:279
3785 #, no-wrap
3786 msgid "I<cpuset.memory_pressure> (since Linux 2.6.16)"
3787 msgstr "I<cpuset.memory_pressure> (Linux 2.6.16 以降)"
3788
3789 #.  ================= memory_pressure_enabled =================
3790 #. type: Plain text
3791 #: build/C/man7/cpuset.7:292
3792 msgid ""
3793 "A measure of how much memory pressure the processes in this cpuset are "
3794 "causing.  See the B<Memory Pressure> section, below.  Unless "
3795 "I<memory_pressure_enabled> is enabled, always has value zero (0).  This file "
3796 "is read-only.  See the B<WARNINGS> section, below."
3797 msgstr ""
3798
3799 #. type: TP
3800 #: build/C/man7/cpuset.7:292
3801 #, no-wrap
3802 msgid "I<cpuset.memory_pressure_enabled> (since Linux 2.6.16)"
3803 msgstr "I<cpuset.memory_pressure_enabled> (Linux 2.6.16 以降)"
3804
3805 #.  ================== memory_spread_page ==================
3806 #. type: Plain text
3807 #: build/C/man7/cpuset.7:304
3808 msgid ""
3809 "Flag (0 or 1).  This file is present only in the root cpuset, normally I</"
3810 "dev/cpuset>.  If set (1), the I<memory_pressure> calculations are enabled "
3811 "for all cpusets in the system.  By default this is off (0).  See the "
3812 "B<Memory Pressure> section, below."
3813 msgstr ""
3814
3815 #. type: TP
3816 #: build/C/man7/cpuset.7:304
3817 #, no-wrap
3818 msgid "I<cpuset.memory_spread_page> (since Linux 2.6.17)"
3819 msgstr "I<cpuset.memory_spread_page> (Linux 2.6.17 以降)"
3820
3821 #.  ================== memory_spread_slab ==================
3822 #. type: Plain text
3823 #: build/C/man7/cpuset.7:314
3824 msgid ""
3825 "Flag (0 or 1).  If set (1), pages in the kernel page cache (filesystem "
3826 "buffers) are uniformly spread across the cpuset.  By default this is off (0) "
3827 "in the top cpuset, and inherited from the parent cpuset in newly created "
3828 "cpusets.  See the B<Memory Spread> section, below."
3829 msgstr ""
3830
3831 #. type: TP
3832 #: build/C/man7/cpuset.7:314
3833 #, no-wrap
3834 msgid "I<cpuset.memory_spread_slab> (since Linux 2.6.17)"
3835 msgstr "I<cpuset.memory_spread_slab> (Linux 2.6.17 以降)"
3836
3837 #.  ================== sched_load_balance ==================
3838 #. type: Plain text
3839 #: build/C/man7/cpuset.7:325
3840 msgid ""
3841 "Flag (0 or 1).  If set (1), the kernel slab caches for file I/O (directory "
3842 "and inode structures) are uniformly spread across the cpuset.  By default "
3843 "this is off (0) in the top cpuset, and inherited from the parent cpuset in "
3844 "newly created cpusets.  See the B<Memory Spread> section, below."
3845 msgstr ""
3846
3847 #. type: TP
3848 #: build/C/man7/cpuset.7:325
3849 #, no-wrap
3850 msgid "I<cpuset.sched_load_balance> (since Linux 2.6.24)"
3851 msgstr "I<cpuset.sched_load_balance> (Linux 2.6.24 以降)"
3852
3853 #.  ================== sched_relax_domain_level ==================
3854 #. type: Plain text
3855 #: build/C/man7/cpuset.7:339
3856 msgid ""
3857 "Flag (0 or 1).  If set (1, the default) the kernel will automatically load "
3858 "balance processes in that cpuset over the allowed CPUs in that cpuset.  If "
3859 "cleared (0) the kernel will avoid load balancing processes in this cpuset, "
3860 "I<unless> some other cpuset with overlapping CPUs has its "
3861 "I<sched_load_balance> flag set.  See B<Scheduler Load Balancing>, below, for "
3862 "further details."
3863 msgstr ""
3864
3865 #. type: TP
3866 #: build/C/man7/cpuset.7:339
3867 #, no-wrap
3868 msgid "I<cpuset.sched_relax_domain_level> (since Linux 2.6.26)"
3869 msgstr "I<cpuset.sched_relax_domain_level> (Linux 2.6.26 以降)"
3870
3871 #.  ================== proc cpuset ==================
3872 #. type: Plain text
3873 #: build/C/man7/cpuset.7:359
3874 msgid ""
3875 "Integer, between -1 and a small positive value.  The "
3876 "I<sched_relax_domain_level> controls the width of the range of CPUs over "
3877 "which the kernel scheduler performs immediate rebalancing of runnable tasks "
3878 "across CPUs.  If I<sched_load_balance> is disabled, then the setting of "
3879 "I<sched_relax_domain_level> does not matter, as no such load balancing is "
3880 "done.  If I<sched_load_balance> is enabled, then the higher the value of the "
3881 "I<sched_relax_domain_level>, the wider the range of CPUs over which "
3882 "immediate load balancing is attempted.  See B<Scheduler Relax Domain Level>, "
3883 "below, for further details."
3884 msgstr ""
3885
3886 #.  ================== proc status ==================
3887 #. type: Plain text
3888 #: build/C/man7/cpuset.7:367
3889 msgid ""
3890 "In addition to the above pseudo-files in each directory below I</dev/"
3891 "cpuset>, each process has a pseudo-file, I</proc/E<lt>pidE<gt>/cpuset>, that "
3892 "displays the path of the process's cpuset directory relative to the root of "
3893 "the cpuset filesystem."
3894 msgstr ""
3895
3896 #. type: Plain text
3897 #: build/C/man7/cpuset.7:378
3898 msgid ""
3899 "Also the I</proc/E<lt>pidE<gt>/status> file for each process has four added "
3900 "lines, displaying the process's I<Cpus_allowed> (on which CPUs it may be "
3901 "scheduled) and I<Mems_allowed> (on which memory nodes it may obtain memory), "
3902 "in the two formats B<Mask Format> and B<List Format> (see below)  as shown "
3903 "in the following example:"
3904 msgstr ""
3905
3906 #. type: Plain text
3907 #: build/C/man7/cpuset.7:385
3908 #, no-wrap
3909 msgid ""
3910 "Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff\n"
3911 "Cpus_allowed_list:     0-127\n"
3912 "Mems_allowed:   ffffffff,ffffffff\n"
3913 "Mems_allowed_list:     0-63\n"
3914 msgstr ""
3915 "Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff\n"
3916 "Cpus_allowed_list:     0-127\n"
3917 "Mems_allowed:   ffffffff,ffffffff\n"
3918 "Mems_allowed_list:     0-63\n"
3919
3920 #.  ================== EXTENDED CAPABILITIES ==================
3921 #. type: Plain text
3922 #: build/C/man7/cpuset.7:391
3923 msgid ""
3924 "The \"allowed\" fields were added in Linux 2.6.24; the \"allowed_list\" "
3925 "fields were added in Linux 2.6.26."
3926 msgstr ""
3927
3928 #. type: SH
3929 #: build/C/man7/cpuset.7:391
3930 #, no-wrap
3931 msgid "EXTENDED CAPABILITIES"
3932 msgstr "拡張ケーパビリティ"
3933
3934 #.  ================== Exclusive Cpusets ==================
3935 #. type: Plain text
3936 #: build/C/man7/cpuset.7:399
3937 msgid ""
3938 "In addition to controlling which I<cpus> and I<mems> a process is allowed to "
3939 "use, cpusets provide the following extended capabilities."
3940 msgstr ""
3941
3942 #. type: SS
3943 #: build/C/man7/cpuset.7:399
3944 #, no-wrap
3945 msgid "Exclusive cpusets"
3946 msgstr ""
3947
3948 #. type: Plain text
3949 #: build/C/man7/cpuset.7:406
3950 msgid ""
3951 "If a cpuset is marked I<cpu_exclusive> or I<mem_exclusive>, no other cpuset, "
3952 "other than a direct ancestor or descendant, may share any of the same CPUs "
3953 "or memory nodes."
3954 msgstr ""
3955
3956 #.  ================== Hardwall ==================
3957 #. type: Plain text
3958 #: build/C/man7/cpuset.7:432
3959 msgid ""
3960 "A cpuset that is I<mem_exclusive> restricts kernel allocations for buffer "
3961 "cache pages and other internal kernel data pages commonly shared by the "
3962 "kernel across multiple users.  All cpusets, whether I<mem_exclusive> or not, "
3963 "restrict allocations of memory for user space.  This enables configuring a "
3964 "system so that several independent jobs can share common kernel data, while "
3965 "isolating each job's user allocation in its own cpuset.  To do this, "
3966 "construct a large I<mem_exclusive> cpuset to hold all the jobs, and "
3967 "construct child, non-I<mem_exclusive> cpusets for each individual job.  Only "
3968 "a small amount of kernel memory, such as requests from interrupt handlers, "
3969 "is allowed to be placed on memory nodes outside even a I<mem_exclusive> "
3970 "cpuset."
3971 msgstr ""
3972
3973 #. type: SS
3974 #: build/C/man7/cpuset.7:432
3975 #, no-wrap
3976 msgid "Hardwall"
3977 msgstr ""
3978
3979 #. type: Plain text
3980 #: build/C/man7/cpuset.7:447
3981 msgid ""
3982 "A cpuset that has I<mem_exclusive> or I<mem_hardwall> set is a I<hardwall> "
3983 "cpuset.  A I<hardwall> cpuset restricts kernel allocations for page, buffer, "
3984 "and other data commonly shared by the kernel across multiple users.  All "
3985 "cpusets, whether I<hardwall> or not, restrict allocations of memory for user "
3986 "space."
3987 msgstr ""
3988
3989 #. type: Plain text
3990 #: build/C/man7/cpuset.7:458
3991 msgid ""
3992 "This enables configuring a system so that several independent jobs can share "
3993 "common kernel data, such as filesystem pages, while isolating each job's "
3994 "user allocation in its own cpuset.  To do this, construct a large "
3995 "I<hardwall> cpuset to hold all the jobs, and construct child cpusets for "
3996 "each individual job which are not I<hardwall> cpusets."
3997 msgstr ""
3998
3999 #.  ================== Notify On Release ==================
4000 #. type: Plain text
4001 #: build/C/man7/cpuset.7:464
4002 msgid ""
4003 "Only a small amount of kernel memory, such as requests from interrupt "
4004 "handlers, is allowed to be taken outside even a I<hardwall> cpuset."
4005 msgstr ""
4006
4007 #. type: SS
4008 #: build/C/man7/cpuset.7:464
4009 #, no-wrap
4010 msgid "Notify on release"
4011 msgstr ""
4012
4013 #. type: Plain text
4014 #: build/C/man7/cpuset.7:476
4015 msgid ""
4016 "If the I<notify_on_release> flag is enabled (1) in a cpuset, then whenever "
4017 "the last process in the cpuset leaves (exits or attaches to some other "
4018 "cpuset)  and the last child cpuset of that cpuset is removed, the kernel "
4019 "will run the command I</sbin/cpuset_release_agent>, supplying the pathname "
4020 "(relative to the mount point of the cpuset filesystem) of the abandoned "
4021 "cpuset.  This enables automatic removal of abandoned cpusets."
4022 msgstr ""
4023
4024 #. type: Plain text
4025 #: build/C/man7/cpuset.7:484
4026 msgid ""
4027 "The default value of I<notify_on_release> in the root cpuset at system boot "
4028 "is disabled (0).  The default value of other cpusets at creation is the "
4029 "current value of their parent's I<notify_on_release> setting."
4030 msgstr ""
4031
4032 #. type: Plain text
4033 #: build/C/man7/cpuset.7:492
4034 msgid ""
4035 "The command I</sbin/cpuset_release_agent> is invoked, with the name (I</dev/"
4036 "cpuset> relative path)  of the to-be-released cpuset in I<argv[1]>."
4037 msgstr ""
4038
4039 #. type: Plain text
4040 #: build/C/man7/cpuset.7:496
4041 msgid ""
4042 "The usual contents of the command I</sbin/cpuset_release_agent> is simply "
4043 "the shell script:"
4044 msgstr ""
4045
4046 #. type: Plain text
4047 #: build/C/man7/cpuset.7:501
4048 #, no-wrap
4049 msgid ""
4050 "#!/bin/sh\n"
4051 "rmdir /dev/cpuset/$1\n"
4052 msgstr ""
4053 "#!/bin/sh\n"
4054 "rmdir /dev/cpuset/$1\n"
4055
4056 #.  ================== Memory Pressure ==================
4057 #. type: Plain text
4058 #: build/C/man7/cpuset.7:509
4059 msgid ""
4060 "As with other flag values below, this flag can be changed by writing an "
4061 "ASCII number 0 or 1 (with optional trailing newline)  into the file, to "
4062 "clear or set the flag, respectively."
4063 msgstr ""
4064
4065 #. type: SS
4066 #: build/C/man7/cpuset.7:509
4067 #, no-wrap
4068 msgid "Memory pressure"
4069 msgstr ""
4070
4071 #. type: Plain text
4072 #: build/C/man7/cpuset.7:515
4073 msgid ""
4074 "The I<memory_pressure> of a cpuset provides a simple per-cpuset running "
4075 "average of the rate that the processes in a cpuset are attempting to free up "
4076 "in-use memory on the nodes of the cpuset to satisfy additional memory "
4077 "requests."
4078 msgstr ""
4079
4080 #. type: Plain text
4081 #: build/C/man7/cpuset.7:519
4082 msgid ""
4083 "This enables batch managers that are monitoring jobs running in dedicated "
4084 "cpusets to efficiently detect what level of memory pressure that job is "
4085 "causing."
4086 msgstr ""
4087
4088 #. type: Plain text
4089 #: build/C/man7/cpuset.7:526
4090 msgid ""
4091 "This is useful both on tightly managed systems running a wide mix of "
4092 "submitted jobs, which may choose to terminate or reprioritize jobs that are "
4093 "trying to use more memory than allowed on the nodes assigned them, and with "
4094 "tightly coupled, long-running, massively parallel scientific computing jobs "
4095 "that will dramatically fail to meet required performance goals if they start "
4096 "to use more memory than allowed to them."
4097 msgstr ""
4098
4099 #. type: Plain text
4100 #: build/C/man7/cpuset.7:531
4101 msgid ""
4102 "This mechanism provides a very economical way for the batch manager to "
4103 "monitor a cpuset for signs of memory pressure.  It's up to the batch manager "
4104 "or other user code to decide what action to take if it detects signs of "
4105 "memory pressure."
4106 msgstr ""
4107
4108 #. type: Plain text
4109 #: build/C/man7/cpuset.7:538
4110 msgid ""
4111 "Unless memory pressure calculation is enabled by setting the pseudo-file I</"
4112 "dev/cpuset/cpuset.memory_pressure_enabled>, it is not computed for any "
4113 "cpuset, and reads from any I<memory_pressure> always return zero, as "
4114 "represented by the ASCII string \"0\\en\".  See the B<WARNINGS> section, "
4115 "below."
4116 msgstr ""
4117
4118 #. type: Plain text
4119 #: build/C/man7/cpuset.7:540
4120 msgid "A per-cpuset, running average is employed for the following reasons:"
4121 msgstr ""
4122
4123 #. type: Plain text
4124 #: build/C/man7/cpuset.7:545
4125 msgid ""
4126 "Because this meter is per-cpuset rather than per-process or per virtual "
4127 "memory region, the system load imposed by a batch scheduler monitoring this "
4128 "metric is sharply reduced on large systems, because a scan of the tasklist "
4129 "can be avoided on each set of queries."
4130 msgstr ""
4131
4132 #. type: Plain text
4133 #: build/C/man7/cpuset.7:550
4134 msgid ""
4135 "Because this meter is a running average rather than an accumulating counter, "
4136 "a batch scheduler can detect memory pressure with a single read, instead of "
4137 "having to read and accumulate results for a period of time."
4138 msgstr ""
4139
4140 #. type: Plain text
4141 #: build/C/man7/cpuset.7:556
4142 msgid ""
4143 "Because this meter is per-cpuset rather than per-process, the batch "
4144 "scheduler can obtain the key information\\(emmemory pressure in a cpuset"
4145 "\\(emwith a single read, rather than having to query and accumulate results "
4146 "over all the (dynamically changing)  set of processes in the cpuset."
4147 msgstr ""
4148
4149 #. type: Plain text
4150 #: build/C/man7/cpuset.7:564
4151 msgid ""
4152 "The I<memory_pressure> of a cpuset is calculated using a per-cpuset simple "
4153 "digital filter that is kept within the kernel.  For each cpuset, this filter "
4154 "tracks the recent rate at which processes attached to that cpuset enter the "
4155 "kernel direct reclaim code."
4156 msgstr ""
4157
4158 #. type: Plain text
4159 #: build/C/man7/cpuset.7:573
4160 msgid ""
4161 "The kernel direct reclaim code is entered whenever a process has to satisfy "
4162 "a memory page request by first finding some other page to repurpose, due to "
4163 "lack of any readily available already free pages.  Dirty filesystem pages "
4164 "are repurposed by first writing them to disk.  Unmodified filesystem buffer "
4165 "pages are repurposed by simply dropping them, though if that page is needed "
4166 "again, it will have to be reread from disk."
4167 msgstr ""
4168
4169 #.  ================== Memory Spread ==================
4170 #. type: Plain text
4171 #: build/C/man7/cpuset.7:581
4172 msgid ""
4173 "The I<cpuset.memory_pressure> file provides an integer number representing "
4174 "the recent (half-life of 10 seconds) rate of entries to the direct reclaim "
4175 "code caused by any process in the cpuset, in units of reclaims attempted per "
4176 "second, times 1000."
4177 msgstr ""
4178
4179 #. type: SS
4180 #: build/C/man7/cpuset.7:581
4181 #, no-wrap
4182 msgid "Memory spread"
4183 msgstr ""
4184
4185 #. type: Plain text
4186 #: build/C/man7/cpuset.7:589
4187 msgid ""
4188 "There are two Boolean flag files per cpuset that control where the kernel "
4189 "allocates pages for the filesystem buffers and related in-kernel data "
4190 "structures.  They are called I<cpuset.memory_spread_page> and I<cpuset."
4191 "memory_spread_slab>."
4192 msgstr ""
4193
4194 #. type: Plain text
4195 #: build/C/man7/cpuset.7:596
4196 msgid ""
4197 "If the per-cpuset Boolean flag file I<cpuset.memory_spread_page> is set, "
4198 "then the kernel will spread the filesystem buffers (page cache) evenly over "
4199 "all the nodes that the faulting process is allowed to use, instead of "
4200 "preferring to put those pages on the node where the process is running."
4201 msgstr ""
4202
4203 #. type: Plain text
4204 #: build/C/man7/cpuset.7:604
4205 msgid ""
4206 "If the per-cpuset Boolean flag file I<cpuset.memory_spread_slab> is set, "
4207 "then the kernel will spread some filesystem-related slab caches, such as "
4208 "those for inodes and directory entries, evenly over all the nodes that the "
4209 "faulting process is allowed to use, instead of preferring to put those pages "
4210 "on the node where the process is running."
4211 msgstr ""
4212
4213 #. type: Plain text
4214 #: build/C/man7/cpuset.7:609
4215 msgid ""
4216 "The setting of these flags does not affect the data segment (see B<brk>(2))  "
4217 "or stack segment pages of a process."
4218 msgstr ""
4219
4220 #. type: Plain text
4221 #: build/C/man7/cpuset.7:617
4222 msgid ""
4223 "By default, both kinds of memory spreading are off and the kernel prefers to "
4224 "allocate memory pages on the node local to where the requesting process is "
4225 "running.  If that node is not allowed by the process's NUMA memory policy or "
4226 "cpuset configuration or if there are insufficient free memory pages on that "
4227 "node, then the kernel looks for the nearest node that is allowed and has "
4228 "sufficient free memory."
4229 msgstr ""
4230
4231 #. type: Plain text
4232 #: build/C/man7/cpuset.7:620
4233 msgid ""
4234 "When new cpusets are created, they inherit the memory spread settings of "
4235 "their parent."
4236 msgstr ""
4237
4238 #. type: Plain text
4239 #: build/C/man7/cpuset.7:635
4240 msgid ""
4241 "Setting memory spreading causes allocations for the affected page or slab "
4242 "caches to ignore the process's NUMA memory policy and be spread instead.  "
4243 "However, the effect of these changes in memory placement caused by cpuset-"
4244 "specified memory spreading is hidden from the B<mbind>(2)  or "
4245 "B<set_mempolicy>(2)  calls.  These two NUMA memory policy calls always "
4246 "appear to behave as if no cpuset-specified memory spreading is in effect, "
4247 "even if it is.  If cpuset memory spreading is subsequently turned off, the "
4248 "NUMA memory policy most recently specified by these calls is automatically "
4249 "reapplied."
4250 msgstr ""
4251
4252 #. type: Plain text
4253 #: build/C/man7/cpuset.7:644
4254 msgid ""
4255 "Both I<cpuset.memory_spread_page> and I<cpuset.memory_spread_slab> are "
4256 "Boolean flag files.  By default they contain \"0\", meaning that the feature "
4257 "is off for that cpuset.  If a \"1\" is written to that file, that turns the "
4258 "named feature on."
4259 msgstr ""
4260
4261 #. type: Plain text
4262 #: build/C/man7/cpuset.7:647
4263 msgid ""
4264 "Cpuset-specified memory spreading behaves similarly to what is known (in "
4265 "other contexts) as round-robin or interleave memory placement."
4266 msgstr ""
4267
4268 #. type: Plain text
4269 #: build/C/man7/cpuset.7:650
4270 msgid ""
4271 "Cpuset-specified memory spreading can provide substantial performance "
4272 "improvements for jobs that:"
4273 msgstr ""
4274
4275 #. type: IP
4276 #: build/C/man7/cpuset.7:650 build/C/man7/user_namespaces.7:384
4277 #, no-wrap
4278 msgid "a)"
4279 msgstr "a)"
4280
4281 #. type: Plain text
4282 #: build/C/man7/cpuset.7:654
4283 msgid ""
4284 "need to place thread-local data on memory nodes close to the CPUs which are "
4285 "running the threads that most frequently access that data; but also"
4286 msgstr ""
4287
4288 #. type: IP
4289 #: build/C/man7/cpuset.7:654 build/C/man7/user_namespaces.7:389
4290 #, no-wrap
4291 msgid "b)"
4292 msgstr "b)"
4293
4294 #. type: Plain text
4295 #: build/C/man7/cpuset.7:657
4296 msgid ""
4297 "need to access large filesystem data sets that must to be spread across the "
4298 "several nodes in the job's cpuset in order to fit."
4299 msgstr ""
4300
4301 #.  ================== Memory Migration ==================
4302 #. type: Plain text
4303 #: build/C/man7/cpuset.7:664
4304 msgid ""
4305 "Without this policy, the memory allocation across the nodes in the job's "
4306 "cpuset can become very uneven, especially for jobs that might have just a "
4307 "single thread initializing or reading in the data set."
4308 msgstr ""
4309
4310 #. type: SS
4311 #: build/C/man7/cpuset.7:664
4312 #, no-wrap
4313 msgid "Memory migration"
4314 msgstr ""
4315
4316 #. type: Plain text
4317 #: build/C/man7/cpuset.7:673
4318 msgid ""
4319 "Normally, under the default setting (disabled) of I<cpuset.memory_migrate>, "
4320 "once a page is allocated (given a physical page of main memory), then that "
4321 "page stays on whatever node it was allocated, so long as it remains "
4322 "allocated, even if the cpuset's memory-placement policy I<mems> subsequently "
4323 "changes."
4324 msgstr ""
4325
4326 #. type: Plain text
4327 #: build/C/man7/cpuset.7:679
4328 msgid ""
4329 "When memory migration is enabled in a cpuset, if the I<mems> setting of the "
4330 "cpuset is changed, then any memory page in use by any process in the cpuset "
4331 "that is on a memory node that is no longer allowed will be migrated to a "
4332 "memory node that is allowed."
4333 msgstr ""
4334
4335 #. type: Plain text
4336 #: build/C/man7/cpuset.7:685
4337 msgid ""
4338 "Furthermore, if a process is moved into a cpuset with I<memory_migrate> "
4339 "enabled, any memory pages it uses that were on memory nodes allowed in its "
4340 "previous cpuset, but which are not allowed in its new cpuset, will be "
4341 "migrated to a memory node allowed in the new cpuset."
4342 msgstr ""
4343
4344 #.  ================== Scheduler Load Balancing ==================
4345 #. type: Plain text
4346 #: build/C/man7/cpuset.7:693
4347 msgid ""
4348 "The relative placement of a migrated page within the cpuset is preserved "
4349 "during these migration operations if possible.  For example, if the page was "
4350 "on the second valid node of the prior cpuset, then the page will be placed "
4351 "on the second valid node of the new cpuset, if possible."
4352 msgstr ""
4353
4354 #. type: SS
4355 #: build/C/man7/cpuset.7:693
4356 #, no-wrap
4357 msgid "Scheduler load balancing"
4358 msgstr ""
4359
4360 #. type: Plain text
4361 #: build/C/man7/cpuset.7:700
4362 msgid ""
4363 "The kernel scheduler automatically load balances processes.  If one CPU is "
4364 "underutilized, the kernel will look for processes on other more overloaded "
4365 "CPUs and move those processes to the underutilized CPU, within the "
4366 "constraints of such placement mechanisms as cpusets and "
4367 "B<sched_setaffinity>(2)."
4368 msgstr ""
4369
4370 #. type: Plain text
4371 #: build/C/man7/cpuset.7:713
4372 msgid ""
4373 "The algorithmic cost of load balancing and its impact on key shared kernel "
4374 "data structures such as the process list increases more than linearly with "
4375 "the number of CPUs being balanced.  For example, it costs more to load "
4376 "balance across one large set of CPUs than it does to balance across two "
4377 "smaller sets of CPUs, each of half the size of the larger set.  (The precise "
4378 "relationship between the number of CPUs being balanced and the cost of load "
4379 "balancing depends on implementation details of the kernel process scheduler, "
4380 "which is subject to change over time, as improved kernel scheduler "
4381 "algorithms are implemented.)"
4382 msgstr ""
4383
4384 #. type: Plain text
4385 #: build/C/man7/cpuset.7:719
4386 msgid ""
4387 "The per-cpuset flag I<sched_load_balance> provides a mechanism to suppress "
4388 "this automatic scheduler load balancing in cases where it is not needed and "
4389 "suppressing it would have worthwhile performance benefits."
4390 msgstr ""
4391
4392 #. type: Plain text
4393 #: build/C/man7/cpuset.7:723
4394 msgid ""
4395 "By default, load balancing is done across all CPUs, except those marked "
4396 "isolated using the kernel boot time \"isolcpus=\" argument.  (See "
4397 "B<Scheduler Relax Domain Level>, below, to change this default.)"
4398 msgstr ""
4399
4400 #. type: Plain text
4401 #: build/C/man7/cpuset.7:726
4402 msgid ""
4403 "This default load balancing across all CPUs is not well suited to the "
4404 "following two situations:"
4405 msgstr ""
4406
4407 #. type: Plain text
4408 #: build/C/man7/cpuset.7:730
4409 msgid ""
4410 "On large systems, load balancing across many CPUs is expensive.  If the "
4411 "system is managed using cpusets to place independent jobs on separate sets "
4412 "of CPUs, full load balancing is unnecessary."
4413 msgstr ""
4414
4415 #. type: Plain text
4416 #: build/C/man7/cpuset.7:734
4417 msgid ""
4418 "Systems supporting real-time on some CPUs need to minimize system overhead "
4419 "on those CPUs, including avoiding process load balancing if that is not "
4420 "needed."
4421 msgstr ""
4422
4423 #. type: Plain text
4424 #: build/C/man7/cpuset.7:744
4425 msgid ""
4426 "When the per-cpuset flag I<sched_load_balance> is enabled (the default "
4427 "setting), it requests load balancing across all the CPUs in that cpuset's "
4428 "allowed CPUs, ensuring that load balancing can move a process (not otherwise "
4429 "pinned, as by B<sched_setaffinity>(2))  from any CPU in that cpuset to any "
4430 "other."
4431 msgstr ""
4432
4433 #. type: Plain text
4434 #: build/C/man7/cpuset.7:753
4435 msgid ""
4436 "When the per-cpuset flag I<sched_load_balance> is disabled, then the "
4437 "scheduler will avoid load balancing across the CPUs in that cpuset, "
4438 "I<except> in so far as is necessary because some overlapping cpuset has "
4439 "I<sched_load_balance> enabled."
4440 msgstr ""
4441
4442 #. type: Plain text
4443 #: build/C/man7/cpuset.7:761
4444 msgid ""
4445 "So, for example, if the top cpuset has the flag I<sched_load_balance> "
4446 "enabled, then the scheduler will load balance across all CPUs, and the "
4447 "setting of the I<sched_load_balance> flag in other cpusets has no effect, as "
4448 "we're already fully load balancing."
4449 msgstr ""
4450
4451 #. type: Plain text
4452 #: build/C/man7/cpuset.7:766
4453 msgid ""
4454 "Therefore in the above two situations, the flag I<sched_load_balance> should "
4455 "be disabled in the top cpuset, and only some of the smaller, child cpusets "
4456 "would have this flag enabled."
4457 msgstr ""
4458
4459 #. type: Plain text
4460 #: build/C/man7/cpuset.7:774
4461 msgid ""
4462 "When doing this, you don't usually want to leave any unpinned processes in "
4463 "the top cpuset that might use nontrivial amounts of CPU, as such processes "
4464 "may be artificially constrained to some subset of CPUs, depending on the "
4465 "particulars of this flag setting in descendant cpusets.  Even if such a "
4466 "process could use spare CPU cycles in some other CPUs, the kernel scheduler "
4467 "might not consider the possibility of load balancing that process to the "
4468 "underused CPU."
4469 msgstr ""
4470
4471 #.  ================== Scheduler Relax Domain Level ==================
4472 #. type: Plain text
4473 #: build/C/man7/cpuset.7:780
4474 msgid ""
4475 "Of course, processes pinned to a particular CPU can be left in a cpuset that "
4476 "disables I<sched_load_balance> as those processes aren't going anywhere else "
4477 "anyway."
4478 msgstr ""
4479
4480 #. type: SS
4481 #: build/C/man7/cpuset.7:780
4482 #, no-wrap
4483 msgid "Scheduler relax domain level"
4484 msgstr ""
4485
4486 #. type: Plain text
4487 #: build/C/man7/cpuset.7:801
4488 msgid ""
4489 "The kernel scheduler performs immediate load balancing whenever a CPU "
4490 "becomes free or another task becomes runnable.  This load balancing works to "
4491 "ensure that as many CPUs as possible are usefully employed running tasks.  "
4492 "The kernel also performs periodic load balancing off the software clock "
4493 "described in B<time>(7).  The setting of I<sched_relax_domain_level> applies "
4494 "only to immediate load balancing.  Regardless of the "
4495 "I<sched_relax_domain_level> setting, periodic load balancing is attempted "
4496 "over all CPUs (unless disabled by turning off I<sched_load_balance>.)  In "
4497 "any case, of course, tasks will be scheduled to run only on CPUs allowed by "
4498 "their cpuset, as modified by B<sched_setaffinity>(2)  system calls."
4499 msgstr ""
4500
4501 #. type: Plain text
4502 #: build/C/man7/cpuset.7:809
4503 msgid ""
4504 "On small systems, such as those with just a few CPUs, immediate load "
4505 "balancing is useful to improve system interactivity and to minimize wasteful "
4506 "idle CPU cycles.  But on large systems, attempting immediate load balancing "
4507 "across a large number of CPUs can be more costly than it is worth, depending "
4508 "on the particular performance characteristics of the job mix and the "
4509 "hardware."
4510 msgstr ""
4511
4512 #. type: Plain text
4513 #: build/C/man7/cpuset.7:817
4514 msgid ""
4515 "The exact meaning of the small integer values of I<sched_relax_domain_level> "
4516 "will depend on internal implementation details of the kernel scheduler code "
4517 "and on the non-uniform architecture of the hardware.  Both of these will "
4518 "evolve over time and vary by system architecture and kernel version."
4519 msgstr ""
4520
4521 #. type: Plain text
4522 #: build/C/man7/cpuset.7:822
4523 msgid ""
4524 "As of this writing, when this capability was introduced in Linux 2.6.26, on "
4525 "certain popular architectures, the positive values of "
4526 "I<sched_relax_domain_level> have the following meanings."
4527 msgstr ""
4528
4529 #. type: IP
4530 #: build/C/man7/cpuset.7:824
4531 #, no-wrap
4532 msgid "B<(1)>"
4533 msgstr "B<(1)>"
4534
4535 #. type: Plain text
4536 #: build/C/man7/cpuset.7:827
4537 msgid ""
4538 "Perform immediate load balancing across Hyper-Thread siblings on the same "
4539 "core."
4540 msgstr ""
4541
4542 #. type: IP
4543 #: build/C/man7/cpuset.7:827
4544 #, no-wrap
4545 msgid "B<(2)>"
4546 msgstr "B<(2)>"
4547
4548 #. type: Plain text
4549 #: build/C/man7/cpuset.7:829
4550 msgid ""
4551 "Perform immediate load balancing across other cores in the same package."
4552 msgstr ""
4553
4554 #. type: IP
4555 #: build/C/man7/cpuset.7:829
4556 #, no-wrap
4557 msgid "B<(3)>"
4558 msgstr "B<(3)>"
4559
4560 #. type: Plain text
4561 #: build/C/man7/cpuset.7:832
4562 msgid ""
4563 "Perform immediate load balancing across other CPUs on the same node or blade."
4564 msgstr ""
4565
4566 #. type: IP
4567 #: build/C/man7/cpuset.7:832
4568 #, no-wrap
4569 msgid "B<(4)>"
4570 msgstr "B<(4)>"
4571
4572 #. type: Plain text
4573 #: build/C/man7/cpuset.7:835
4574 msgid ""
4575 "Perform immediate load balancing across over several (implementation detail) "
4576 "nodes [On NUMA systems]."
4577 msgstr ""
4578
4579 #. type: IP
4580 #: build/C/man7/cpuset.7:835
4581 #, no-wrap
4582 msgid "B<(5)>"
4583 msgstr "B<(5)>"
4584
4585 #. type: Plain text
4586 #: build/C/man7/cpuset.7:838
4587 msgid ""
4588 "Perform immediate load balancing across over all CPUs in system [On NUMA "
4589 "systems]."
4590 msgstr ""
4591
4592 #. type: Plain text
4593 #: build/C/man7/cpuset.7:847
4594 msgid ""
4595 "The I<sched_relax_domain_level> value of zero (0) always means don't perform "
4596 "immediate load balancing, hence that load balancing is done only "
4597 "periodically, not immediately when a CPU becomes available or another task "
4598 "becomes runnable."
4599 msgstr ""
4600
4601 #. type: Plain text
4602 #: build/C/man7/cpuset.7:855
4603 msgid ""
4604 "The I<sched_relax_domain_level> value of minus one (-1)  always means use "
4605 "the system default value.  The system default value can vary by architecture "
4606 "and kernel version.  This system default value can be changed by kernel boot-"
4607 "time \"relax_domain_level=\" argument."
4608 msgstr ""
4609
4610 #. type: Plain text
4611 #: build/C/man7/cpuset.7:863
4612 msgid ""
4613 "In the case of multiple overlapping cpusets which have conflicting "
4614 "I<sched_relax_domain_level> values, then the highest such value applies to "
4615 "all CPUs in any of the overlapping cpusets.  In such cases, the value "
4616 "B<minus one (-1)> is the lowest value, overridden by any other value, and "
4617 "the value B<zero (0)> is the next lowest value."
4618 msgstr ""
4619
4620 #. type: SH
4621 #: build/C/man7/cpuset.7:863
4622 #, no-wrap
4623 msgid "FORMATS"
4624 msgstr ""
4625
4626 #.  ================== Mask Format ==================
4627 #. type: Plain text
4628 #: build/C/man7/cpuset.7:867
4629 msgid ""
4630 "The following formats are used to represent sets of CPUs and memory nodes."
4631 msgstr ""
4632
4633 #. type: SS
4634 #: build/C/man7/cpuset.7:867
4635 #, no-wrap
4636 msgid "Mask format"
4637 msgstr ""
4638
4639 #. type: Plain text
4640 #: build/C/man7/cpuset.7:872
4641 msgid ""
4642 "The B<Mask Format> is used to represent CPU and memory-node bit masks in the "
4643 "I</proc/E<lt>pidE<gt>/status> file."
4644 msgstr ""
4645
4646 #. type: Plain text
4647 #: build/C/man7/cpuset.7:880
4648 msgid ""
4649 "This format displays each 32-bit word in hexadecimal (using ASCII characters "
4650 "\"0\" - \"9\" and \"a\" - \"f\"); words are filled with leading zeros, if "
4651 "required.  For masks longer than one word, a comma separator is used between "
4652 "words.  Words are displayed in big-endian order, which has the most "
4653 "significant bit first.  The hex digits within a word are also in big-endian "
4654 "order."
4655 msgstr ""
4656
4657 #. type: Plain text
4658 #: build/C/man7/cpuset.7:883
4659 msgid ""
4660 "The number of 32-bit words displayed is the minimum number needed to display "
4661 "all bits of the bit mask, based on the size of the bit mask."
4662 msgstr ""
4663
4664 #. type: Plain text
4665 #: build/C/man7/cpuset.7:885
4666 msgid "Examples of the B<Mask Format>:"
4667 msgstr ""
4668
4669 #. type: Plain text
4670 #: build/C/man7/cpuset.7:893
4671 #, no-wrap
4672 msgid ""
4673 "00000001                        # just bit 0 set\n"
4674 "40000000,00000000,00000000      # just bit 94 set\n"
4675 "00000001,00000000,00000000      # just bit 64 set\n"
4676 "000000ff,00000000               # bits 32-39 set\n"
4677 "00000000,000e3862               # 1,5,6,11-13,17-19 set\n"
4678 msgstr ""
4679 "00000001                        # just bit 0 set\n"
4680 "40000000,00000000,00000000      # just bit 94 set\n"
4681 "00000001,00000000,00000000      # just bit 64 set\n"
4682 "000000ff,00000000               # bits 32-39 set\n"
4683 "00000000,000e3862               # 1,5,6,11-13,17-19 set\n"
4684
4685 #. type: Plain text
4686 #: build/C/man7/cpuset.7:897
4687 msgid "A mask with bits 0, 1, 2, 4, 8, 16, 32, and 64 set displays as:"
4688 msgstr ""
4689
4690 #. type: Plain text
4691 #: build/C/man7/cpuset.7:901
4692 #, no-wrap
4693 msgid "00000001,00000001,00010117\n"
4694 msgstr "00000001,00000001,00010117\n"
4695
4696 #.  ================== List Format ==================
4697 #. type: Plain text
4698 #: build/C/man7/cpuset.7:908
4699 msgid ""
4700 "The first \"1\" is for bit 64, the second for bit 32, the third for bit 16, "
4701 "the fourth for bit 8, the fifth for bit 4, and the \"7\" is for bits 2, 1, "
4702 "and 0."
4703 msgstr ""
4704
4705 #. type: SS
4706 #: build/C/man7/cpuset.7:908
4707 #, no-wrap
4708 msgid "List format"
4709 msgstr ""
4710
4711 #. type: Plain text
4712 #: build/C/man7/cpuset.7:915
4713 msgid ""
4714 "The B<List Format> for I<cpus> and I<mems> is a comma-separated list of CPU "
4715 "or memory-node numbers and ranges of numbers, in ASCII decimal."
4716 msgstr ""
4717
4718 #. type: Plain text
4719 #: build/C/man7/cpuset.7:917
4720 msgid "Examples of the B<List Format>:"
4721 msgstr ""
4722
4723 #. type: Plain text
4724 #: build/C/man7/cpuset.7:922
4725 #, no-wrap
4726 msgid ""
4727 "0-4,9           # bits 0, 1, 2, 3, 4, and 9 set\n"
4728 "0-2,7,12-14     # bits 0, 1, 2, 7, 12, 13, and 14 set\n"
4729 msgstr ""
4730 "0-4,9           # bits 0, 1, 2, 3, 4, and 9 set\n"
4731 "0-2,7,12-14     # bits 0, 1, 2, 7, 12, 13, and 14 set\n"
4732
4733 #.  ================== RULES ==================
4734 #. type: SH
4735 #: build/C/man7/cpuset.7:925
4736 #, no-wrap
4737 msgid "RULES"
4738 msgstr ""
4739
4740 #. type: Plain text
4741 #: build/C/man7/cpuset.7:927
4742 msgid "The following rules apply to each cpuset:"
4743 msgstr ""
4744
4745 #. type: Plain text
4746 #: build/C/man7/cpuset.7:930
4747 msgid ""
4748 "Its CPUs and memory nodes must be a (possibly equal)  subset of its parent's."
4749 msgstr ""
4750
4751 #. type: Plain text
4752 #: build/C/man7/cpuset.7:934
4753 msgid "It can be marked I<cpu_exclusive> only if its parent is."
4754 msgstr ""
4755
4756 #. type: Plain text
4757 #: build/C/man7/cpuset.7:938
4758 msgid "It can be marked I<mem_exclusive> only if its parent is."
4759 msgstr ""
4760
4761 #. type: Plain text
4762 #: build/C/man7/cpuset.7:942
4763 msgid "If it is I<cpu_exclusive>, its CPUs may not overlap any sibling."
4764 msgstr ""
4765
4766 #.  ================== PERMISSIONS ==================
4767 #. type: Plain text
4768 #: build/C/man7/cpuset.7:947
4769 msgid ""
4770 "If it is I<memory_exclusive>, its memory nodes may not overlap any sibling."
4771 msgstr ""
4772
4773 #. type: SH
4774 #: build/C/man7/cpuset.7:947
4775 #, no-wrap
4776 msgid "PERMISSIONS"
4777 msgstr ""
4778
4779 #. type: Plain text
4780 #: build/C/man7/cpuset.7:952
4781 msgid ""
4782 "The permissions of a cpuset are determined by the permissions of the "
4783 "directories and pseudo-files in the cpuset filesystem, normally mounted at "
4784 "I</dev/cpuset>."
4785 msgstr ""
4786
4787 #. type: Plain text
4788 #: build/C/man7/cpuset.7:961
4789 msgid ""
4790 "For instance, a process can put itself in some other cpuset (than its "
4791 "current one) if it can write the I<tasks> file for that cpuset.  This "
4792 "requires execute permission on the encompassing directories and write "
4793 "permission on the I<tasks> file."
4794 msgstr ""
4795
4796 #. type: Plain text
4797 #: build/C/man7/cpuset.7:968
4798 msgid ""
4799 "An additional constraint is applied to requests to place some other process "
4800 "in a cpuset.  One process may not attach another to a cpuset unless it would "
4801 "have permission to send that process a signal (see B<kill>(2))."
4802 msgstr ""
4803
4804 #. type: Plain text
4805 #: build/C/man7/cpuset.7:979
4806 msgid ""
4807 "A process may create a child cpuset if it can access and write the parent "
4808 "cpuset directory.  It can modify the CPUs or memory nodes in a cpuset if it "
4809 "can access that cpuset's directory (execute permissions on the each of the "
4810 "parent directories) and write the corresponding I<cpus> or I<mems> file."
4811 msgstr ""
4812
4813 #. type: Plain text
4814 #: build/C/man7/cpuset.7:1000
4815 msgid ""
4816 "There is one minor difference between the manner in which these permissions "
4817 "are evaluated and the manner in which normal filesystem operation "
4818 "permissions are evaluated.  The kernel interprets relative pathnames "
4819 "starting at a process's current working directory.  Even if one is operating "
4820 "on a cpuset file, relative pathnames are interpreted relative to the "
4821 "process's current working directory, not relative to the process's current "
4822 "cpuset.  The only ways that cpuset paths relative to a process's current "
4823 "cpuset can be used are if either the process's current working directory is "
4824 "its cpuset (it first did a B<cd> or B<chdir>(2)  to its cpuset directory "
4825 "beneath I</dev/cpuset>, which is a bit unusual)  or if some user code "
4826 "converts the relative cpuset path to a full filesystem path."
4827 msgstr ""
4828
4829 #.  ================== WARNINGS ==================
4830 #. type: Plain text
4831 #: build/C/man7/cpuset.7:1015
4832 msgid ""
4833 "In theory, this means that user code should specify cpusets using absolute "
4834 "pathnames, which requires knowing the mount point of the cpuset filesystem "
4835 "(usually, but not necessarily, I</dev/cpuset>).  In practice, all user level "
4836 "code that this author is aware of simply assumes that if the cpuset "
4837 "filesystem is mounted, then it is mounted at I</dev/cpuset>.  Furthermore, "
4838 "it is common practice for carefully written user code to verify the presence "
4839 "of the pseudo-file I</dev/cpuset/tasks> in order to verify that the cpuset "
4840 "pseudo-filesystem is currently mounted."
4841 msgstr ""
4842
4843 #. type: SH
4844 #: build/C/man7/cpuset.7:1015
4845 #, no-wrap
4846 msgid "WARNINGS"
4847 msgstr ""
4848
4849 #. type: SS
4850 #: build/C/man7/cpuset.7:1016
4851 #, no-wrap
4852 msgid "Enabling memory_pressure"
4853 msgstr ""
4854
4855 #. type: Plain text
4856 #: build/C/man7/cpuset.7:1025
4857 msgid ""
4858 "By default, the per-cpuset file I<cpuset.memory_pressure> always contains "
4859 "zero (0).  Unless this feature is enabled by writing \"1\" to the pseudo-"
4860 "file I</dev/cpuset/cpuset.memory_pressure_enabled>, the kernel does not "
4861 "compute per-cpuset I<memory_pressure>."
4862 msgstr ""
4863
4864 #. type: SS
4865 #: build/C/man7/cpuset.7:1025
4866 #, no-wrap
4867 msgid "Using the echo command"
4868 msgstr ""
4869
4870 #.  Gack!  csh(1)'s echo does this
4871 #. type: Plain text
4872 #: build/C/man7/cpuset.7:1036
4873 msgid ""
4874 "When using the B<echo> command at the shell prompt to change the values of "
4875 "cpuset files, beware that the built-in B<echo> command in some shells does "
4876 "not display an error message if the B<write>(2)  system call fails.  For "
4877 "example, if the command:"
4878 msgstr ""
4879
4880 #. type: Plain text
4881 #: build/C/man7/cpuset.7:1040
4882 #, no-wrap
4883 msgid "echo 19 E<gt> cpuset.mems\n"
4884 msgstr "echo 19 E<gt> cpuset.mems\n"
4885
4886 #. type: Plain text
4887 #: build/C/man7/cpuset.7:1053
4888 msgid ""
4889 "failed because memory node 19 was not allowed (perhaps the current system "
4890 "does not have a memory node 19), then the B<echo> command might not display "
4891 "any error.  It is better to use the B</bin/echo> external command to change "
4892 "cpuset file settings, as this command will display B<write>(2)  errors, as "
4893 "in the example:"
4894 msgstr ""
4895
4896 #. type: Plain text
4897 #: build/C/man7/cpuset.7:1058
4898 #, no-wrap
4899 msgid ""
4900 "/bin/echo 19 E<gt> cpuset.mems\n"
4901 "/bin/echo: write error: Invalid argument\n"
4902 msgstr ""
4903 "/bin/echo 19 E<gt> cpuset.mems\n"
4904 "/bin/echo: write error: Invalid argument\n"
4905
4906 #.  ================== EXCEPTIONS ==================
4907 #. type: SH
4908 #: build/C/man7/cpuset.7:1061
4909 #, no-wrap
4910 msgid "EXCEPTIONS"
4911 msgstr ""
4912
4913 #. type: SS
4914 #: build/C/man7/cpuset.7:1062
4915 #, no-wrap
4916 msgid "Memory placement"
4917 msgstr ""
4918
4919 #. type: Plain text
4920 #: build/C/man7/cpuset.7:1065
4921 msgid ""
4922 "Not all allocations of system memory are constrained by cpusets, for the "
4923 "following reasons."
4924 msgstr ""
4925
4926 #. type: Plain text
4927 #: build/C/man7/cpuset.7:1080
4928 msgid ""
4929 "If hot-plug functionality is used to remove all the CPUs that are currently "
4930 "assigned to a cpuset, then the kernel will automatically update the "
4931 "I<cpus_allowed> of all processes attached to CPUs in that cpuset to allow "
4932 "all CPUs.  When memory hot-plug functionality for removing memory nodes is "
4933 "available, a similar exception is expected to apply there as well.  In "
4934 "general, the kernel prefers to violate cpuset placement, rather than "
4935 "starving a process that has had all its allowed CPUs or memory nodes taken "
4936 "offline.  User code should reconfigure cpusets to refer only to online CPUs "
4937 "and memory nodes when using hot-plug to add or remove such resources."
4938 msgstr ""
4939
4940 #. type: Plain text
4941 #: build/C/man7/cpuset.7:1088
4942 msgid ""
4943 "A few kernel-critical, internal memory-allocation requests, marked "
4944 "GFP_ATOMIC, must be satisfied immediately.  The kernel may drop some request "
4945 "or malfunction if one of these allocations fail.  If such a request cannot "
4946 "be satisfied within the current process's cpuset, then we relax the cpuset, "
4947 "and look for memory anywhere we can find it.  It's better to violate the "
4948 "cpuset than stress the kernel."
4949 msgstr ""
4950
4951 #. type: Plain text
4952 #: build/C/man7/cpuset.7:1092
4953 msgid ""
4954 "Allocations of memory requested by kernel drivers while processing an "
4955 "interrupt lack any relevant process context, and are not confined by cpusets."
4956 msgstr ""
4957
4958 #. type: SS
4959 #: build/C/man7/cpuset.7:1092
4960 #, no-wrap
4961 msgid "Renaming cpusets"
4962 msgstr ""
4963
4964 #.  ================== ERRORS ==================
4965 #. type: Plain text
4966 #: build/C/man7/cpuset.7:1100
4967 msgid ""
4968 "You can use the B<rename>(2)  system call to rename cpusets.  Only simple "
4969 "renaming is supported; that is, changing the name of a cpuset directory is "
4970 "permitted, but moving a directory into a different directory is not "
4971 "permitted."
4972 msgstr ""
4973
4974 #. type: Plain text
4975 #: build/C/man7/cpuset.7:1104
4976 msgid ""
4977 "The Linux kernel implementation of cpusets sets I<errno> to specify the "
4978 "reason for a failed system call affecting cpusets."
4979 msgstr ""
4980
4981 #. type: Plain text
4982 #: build/C/man7/cpuset.7:1109
4983 msgid ""
4984 "The possible I<errno> settings and their meaning when set on a failed cpuset "
4985 "call are as listed below."
4986 msgstr ""
4987
4988 #. type: TP
4989 #: build/C/man7/cpuset.7:1109
4990 #, no-wrap
4991 msgid "B<E2BIG>"
4992 msgstr "B<E2BIG>"
4993
4994 #. type: Plain text
4995 #: build/C/man7/cpuset.7:1116
4996 msgid ""
4997 "Attempted a B<write>(2)  on a special cpuset file with a length larger than "
4998 "some kernel-determined upper limit on the length of such writes."
4999 msgstr ""
5000
5001 #. type: Plain text
5002 #: build/C/man7/cpuset.7:1123
5003 msgid ""
5004 "Attempted to B<write>(2)  the process ID (PID) of a process to a cpuset "
5005 "I<tasks> file when one lacks permission to move that process."
5006 msgstr ""
5007
5008 #. type: Plain text
5009 #: build/C/man7/cpuset.7:1129
5010 msgid ""
5011 "Attempted to add, using B<write>(2), a CPU or memory node to a cpuset, when "
5012 "that CPU or memory node was not already in its parent."
5013 msgstr ""
5014
5015 #. type: Plain text
5016 #: build/C/man7/cpuset.7:1137
5017 msgid ""
5018 "Attempted to set, using B<write>(2), I<cpuset.cpu_exclusive> or I<cpuset."
5019 "mem_exclusive> on a cpuset whose parent lacks the same setting."
5020 msgstr ""
5021
5022 #. type: Plain text
5023 #: build/C/man7/cpuset.7:1144
5024 msgid "Attempted to B<write>(2)  a I<cpuset.memory_pressure> file."
5025 msgstr ""
5026
5027 #. type: Plain text
5028 #: build/C/man7/cpuset.7:1147
5029 msgid "Attempted to create a file in a cpuset directory."
5030 msgstr ""
5031
5032 #. type: TP
5033 #: build/C/man7/cpuset.7:1147 build/C/man7/cpuset.7:1152
5034 #: build/C/man7/cpuset.7:1157
5035 #, no-wrap
5036 msgid "B<EBUSY>"
5037 msgstr "B<EBUSY>"
5038
5039 #. type: Plain text
5040 #: build/C/man7/cpuset.7:1152
5041 msgid ""
5042 "Attempted to remove, using B<rmdir>(2), a cpuset with attached processes."
5043 msgstr ""
5044
5045 #. type: Plain text
5046 #: build/C/man7/cpuset.7:1157
5047 msgid "Attempted to remove, using B<rmdir>(2), a cpuset with child cpusets."
5048 msgstr ""
5049
5050 #. type: Plain text
5051 #: build/C/man7/cpuset.7:1162
5052 msgid ""
5053 "Attempted to remove a CPU or memory node from a cpuset that is also in a "
5054 "child of that cpuset."
5055 msgstr ""
5056
5057 #. type: TP
5058 #: build/C/man7/cpuset.7:1162 build/C/man7/cpuset.7:1167
5059 #, no-wrap
5060 msgid "B<EEXIST>"
5061 msgstr "B<EEXIST>"
5062
5063 #. type: Plain text
5064 #: build/C/man7/cpuset.7:1167
5065 msgid "Attempted to create, using B<mkdir>(2), a cpuset that already exists."
5066 msgstr ""
5067
5068 #. type: Plain text
5069 #: build/C/man7/cpuset.7:1172
5070 msgid "Attempted to B<rename>(2)  a cpuset to a name that already exists."
5071 msgstr ""
5072
5073 #. type: Plain text
5074 #: build/C/man7/cpuset.7:1180
5075 msgid ""
5076 "Attempted to B<read>(2)  or B<write>(2)  a cpuset file using a buffer that "
5077 "is outside the writing processes accessible address space."
5078 msgstr ""
5079
5080 #. type: Plain text
5081 #: build/C/man7/cpuset.7:1189
5082 msgid ""
5083 "Attempted to change a cpuset, using B<write>(2), in a way that would violate "
5084 "a I<cpu_exclusive> or I<mem_exclusive> attribute of that cpuset or any of "
5085 "its siblings."
5086 msgstr ""
5087
5088 #. type: Plain text
5089 #: build/C/man7/cpuset.7:1198
5090 msgid ""
5091 "Attempted to B<write>(2)  an empty I<cpuset.cpus> or I<cpuset.mems> list to "
5092 "a cpuset which has attached processes or child cpusets."
5093 msgstr ""
5094
5095 #. type: Plain text
5096 #: build/C/man7/cpuset.7:1208
5097 msgid ""
5098 "Attempted to B<write>(2)  a I<cpuset.cpus> or I<cpuset.mems> list which "
5099 "included a range with the second number smaller than the first number."
5100 msgstr ""
5101
5102 #. type: Plain text
5103 #: build/C/man7/cpuset.7:1217
5104 msgid ""
5105 "Attempted to B<write>(2)  a I<cpuset.cpus> or I<cpuset.mems> list which "
5106 "included an invalid character in the string."
5107 msgstr ""
5108
5109 #. type: Plain text
5110 #: build/C/man7/cpuset.7:1224
5111 msgid ""
5112 "Attempted to B<write>(2)  a list to a I<cpuset.cpus> file that did not "
5113 "include any online CPUs."
5114 msgstr ""
5115
5116 #. type: Plain text
5117 #: build/C/man7/cpuset.7:1231
5118 msgid ""
5119 "Attempted to B<write>(2)  a list to a I<cpuset.mems> file that did not "
5120 "include any online memory nodes."
5121 msgstr ""
5122
5123 #. type: Plain text
5124 #: build/C/man7/cpuset.7:1238
5125 msgid ""
5126 "Attempted to B<write>(2)  a list to a I<cpuset.mems> file that included a "
5127 "node that held no memory."
5128 msgstr ""
5129
5130 #. type: Plain text
5131 #: build/C/man7/cpuset.7:1246
5132 msgid ""
5133 "Attempted to B<write>(2)  a string to a cpuset I<tasks> file that does not "
5134 "begin with an ASCII decimal integer."
5135 msgstr ""
5136
5137 #. type: Plain text
5138 #: build/C/man7/cpuset.7:1251
5139 msgid "Attempted to B<rename>(2)  a cpuset into a different directory."
5140 msgstr ""
5141
5142 #. type: Plain text
5143 #: build/C/man7/cpuset.7:1258
5144 msgid ""
5145 "Attempted to B<read>(2)  a I</proc/E<lt>pidE<gt>/cpuset> file for a cpuset "
5146 "path that is longer than the kernel page size."
5147 msgstr ""
5148
5149 #. type: Plain text
5150 #: build/C/man7/cpuset.7:1263
5151 msgid ""
5152 "Attempted to create, using B<mkdir>(2), a cpuset whose base directory name "
5153 "is longer than 255 characters."
5154 msgstr ""
5155
5156 #. type: Plain text
5157 #: build/C/man7/cpuset.7:1270
5158 msgid ""
5159 "Attempted to create, using B<mkdir>(2), a cpuset whose full pathname, "
5160 "including the mount point (typically \"/dev/cpuset/\") prefix, is longer "
5161 "than 4095 characters."
5162 msgstr ""
5163
5164 #. type: TP
5165 #: build/C/man7/cpuset.7:1270
5166 #, no-wrap
5167 msgid "B<ENODEV>"
5168 msgstr "B<ENODEV>"
5169
5170 #. type: Plain text
5171 #: build/C/man7/cpuset.7:1275
5172 msgid ""
5173 "The cpuset was removed by another process at the same time as a B<write>(2)  "
5174 "was attempted on one of the pseudo-files in the cpuset directory."
5175 msgstr ""
5176
5177 #. type: Plain text
5178 #: build/C/man7/cpuset.7:1280
5179 msgid ""
5180 "Attempted to create, using B<mkdir>(2), a cpuset in a parent cpuset that "
5181 "doesn't exist."
5182 msgstr ""
5183
5184 #. type: Plain text
5185 #: build/C/man7/cpuset.7:1287
5186 msgid ""
5187 "Attempted to B<access>(2)  or B<open>(2)  a nonexistent file in a cpuset "
5188 "directory."
5189 msgstr ""
5190
5191 #. type: Plain text
5192 #: build/C/man7/cpuset.7:1292
5193 msgid ""
5194 "Insufficient memory is available within the kernel; can occur on a variety "
5195 "of system calls affecting cpusets, but only if the system is extremely short "
5196 "of memory."
5197 msgstr ""
5198
5199 #. type: TP
5200 #: build/C/man7/cpuset.7:1292 build/C/man7/cpuset.7:1304
5201 #, no-wrap
5202 msgid "B<ENOSPC>"
5203 msgstr "B<ENOSPC>"
5204
5205 #. type: Plain text
5206 #: build/C/man7/cpuset.7:1304
5207 msgid ""
5208 "Attempted to B<write>(2)  the process ID (PID)  of a process to a cpuset "
5209 "I<tasks> file when the cpuset had an empty I<cpuset.cpus> or empty I<cpuset."
5210 "mems> setting."
5211 msgstr ""
5212
5213 #. type: Plain text
5214 #: build/C/man7/cpuset.7:1314
5215 msgid ""
5216 "Attempted to B<write>(2)  an empty I<cpuset.cpus> or I<cpuset.mems> setting "
5217 "to a cpuset that has tasks attached."
5218 msgstr ""
5219
5220 #. type: Plain text
5221 #: build/C/man7/cpuset.7:1319
5222 msgid "Attempted to B<rename>(2)  a nonexistent cpuset."
5223 msgstr ""
5224
5225 #. type: Plain text
5226 #: build/C/man7/cpuset.7:1322
5227 msgid "Attempted to remove a file from a cpuset directory."
5228 msgstr ""
5229
5230 #. type: TP
5231 #: build/C/man7/cpuset.7:1322
5232 #, no-wrap
5233 msgid "B<ERANGE>"
5234 msgstr "B<ERANGE>"
5235
5236 #. type: Plain text
5237 #: build/C/man7/cpuset.7:1330
5238 msgid ""
5239 "Specified a I<cpuset.cpus> or I<cpuset.mems> list to the kernel which "
5240 "included a number too large for the kernel to set in its bit masks."
5241 msgstr ""
5242
5243 #.  ================== VERSIONS ==================
5244 #. type: Plain text
5245 #: build/C/man7/cpuset.7:1338
5246 msgid ""
5247 "Attempted to B<write>(2)  the process ID (PID) of a nonexistent process to a "
5248 "cpuset I<tasks> file."
5249 msgstr ""
5250
5251 #.  ================== NOTES ==================
5252 #. type: Plain text
5253 #: build/C/man7/cpuset.7:1341
5254 msgid "Cpusets appeared in version 2.6.12 of the Linux kernel."
5255 msgstr ""
5256
5257 #.  ================== BUGS ==================
5258 #. type: Plain text
5259 #: build/C/man7/cpuset.7:1352
5260 msgid ""
5261 "Despite its name, the I<pid> parameter is actually a thread ID, and each "
5262 "thread in a threaded group can be attached to a different cpuset.  The value "
5263 "returned from a call to B<gettid>(2)  can be passed in the argument I<pid>."
5264 msgstr ""
5265
5266 #. type: SH
5267 #: build/C/man7/cpuset.7:1352 build/C/man2/getpriority.2:225
5268 #: build/C/man2/getrlimit.2:577 build/C/man2/ioprio_set.2:337
5269 #: build/C/man2/setfsgid.2:106 build/C/man2/setfsuid.2:114
5270 #, no-wrap
5271 msgid "BUGS"
5272 msgstr "バグ"
5273
5274 #.  ================== EXAMPLE ==================
5275 #. type: Plain text
5276 #: build/C/man7/cpuset.7:1365
5277 msgid ""
5278 "I<cpuset.memory_pressure> cpuset files can be opened for writing, creation, "
5279 "or truncation, but then the B<write>(2)  fails with I<errno> set to "
5280 "B<EACCES>, and the creation and truncation options on B<open>(2)  have no "
5281 "effect."
5282 msgstr ""
5283
5284 #. type: SH
5285 #: build/C/man7/cpuset.7:1365 build/C/man2/getrlimit.2:710
5286 #: build/C/man7/namespaces.7:361 build/C/man7/pid_namespaces.7:353
5287 #: build/C/man7/user_namespaces.7:677 build/C/man2/seccomp.2:476
5288 #, no-wrap
5289 msgid "EXAMPLE"
5290 msgstr "例"
5291
5292 #. type: Plain text
5293 #: build/C/man7/cpuset.7:1368
5294 msgid ""
5295 "The following examples demonstrate querying and setting cpuset options using "
5296 "shell commands."
5297 msgstr ""
5298
5299 #. type: SS
5300 #: build/C/man7/cpuset.7:1368
5301 #, no-wrap
5302 msgid "Creating and attaching to a cpuset."
5303 msgstr ""
5304
5305 #. type: Plain text
5306 #: build/C/man7/cpuset.7:1371
5307 msgid ""
5308 "To create a new cpuset and attach the current command shell to it, the steps "
5309 "are:"
5310 msgstr ""
5311
5312 #. type: IP
5313 #: build/C/man7/cpuset.7:1373 build/C/man7/cpuset.7:1412
5314 #, no-wrap
5315 msgid "1)"
5316 msgstr "1)"
5317
5318 #. type: Plain text
5319 #: build/C/man7/cpuset.7:1375
5320 msgid "mkdir /dev/cpuset (if not already done)"
5321 msgstr ""
5322
5323 #. type: IP
5324 #: build/C/man7/cpuset.7:1375 build/C/man7/cpuset.7:1418
5325 #, no-wrap
5326 msgid "2)"
5327 msgstr "2)"
5328
5329 #. type: Plain text
5330 #: build/C/man7/cpuset.7:1377
5331 msgid "mount -t cpuset none /dev/cpuset (if not already done)"
5332 msgstr ""
5333
5334 #. type: IP
5335 #: build/C/man7/cpuset.7:1377 build/C/man7/cpuset.7:1421
5336 #, no-wrap
5337 msgid "3)"
5338 msgstr "3)"
5339
5340 #. type: Plain text
5341 #: build/C/man7/cpuset.7:1380
5342 msgid "Create the new cpuset using B<mkdir>(1)."
5343 msgstr ""
5344
5345 #. type: IP
5346 #: build/C/man7/cpuset.7:1380 build/C/man7/cpuset.7:1424
5347 #, no-wrap
5348 msgid "4)"
5349 msgstr "4)"
5350
5351 #. type: Plain text
5352 #: build/C/man7/cpuset.7:1382
5353 msgid "Assign CPUs and memory nodes to the new cpuset."
5354 msgstr ""
5355
5356 #. type: IP
5357 #: build/C/man7/cpuset.7:1382 build/C/man7/cpuset.7:1429
5358 #, no-wrap
5359 msgid "5)"
5360 msgstr "5)"
5361
5362 #. type: Plain text
5363 #: build/C/man7/cpuset.7:1384
5364 msgid "Attach the shell to the new cpuset."
5365 msgstr ""
5366
5367 #. type: Plain text
5368 #: build/C/man7/cpuset.7:1389
5369 msgid ""
5370 "For example, the following sequence of commands will set up a cpuset named "
5371 "\"Charlie\", containing just CPUs 2 and 3, and memory node 1, and then "
5372 "attach the current shell to that cpuset."
5373 msgstr ""
5374
5375 #. type: Plain text
5376 #: build/C/man7/cpuset.7:1403
5377 #, no-wrap
5378 msgid ""
5379 "$B< mkdir /dev/cpuset>\n"
5380 "$B< mount -t cpuset cpuset /dev/cpuset>\n"
5381 "$B< cd /dev/cpuset>\n"
5382 "$B< mkdir Charlie>\n"
5383 "$B< cd Charlie>\n"
5384 "$B< /bin/echo 2-3 E<gt> cpuset.cpus>\n"
5385 "$B< /bin/echo 1 E<gt> cpuset.mems>\n"
5386 "$B< /bin/echo $$ E<gt> tasks>\n"
5387 "# The current shell is now running in cpuset Charlie\n"
5388 "# The next line should display '/Charlie'\n"
5389 "$B< cat /proc/self/cpuset>\n"
5390 msgstr ""
5391 "$B< mkdir /dev/cpuset>\n"
5392 "$B< mount -t cpuset cpuset /dev/cpuset>\n"
5393 "$B< cd /dev/cpuset>\n"
5394 "$B< mkdir Charlie>\n"
5395 "$B< cd Charlie>\n"
5396 "$B< /bin/echo 2-3 E<gt> cpuset.cpus>\n"
5397 "$B< /bin/echo 1 E<gt> cpuset.mems>\n"
5398 "$B< /bin/echo $$ E<gt> tasks>\n"
5399 "# The current shell is now running in cpuset Charlie\n"
5400 "# The next line should display '/Charlie'\n"
5401 "$B< cat /proc/self/cpuset>\n"
5402
5403 #. type: SS
5404 #: build/C/man7/cpuset.7:1405
5405 #, no-wrap
5406 msgid "Migrating a job to different memory nodes."
5407 msgstr ""
5408
5409 #. type: Plain text
5410 #: build/C/man7/cpuset.7:1410
5411 msgid ""
5412 "To migrate a job (the set of processes attached to a cpuset)  to different "
5413 "CPUs and memory nodes in the system, including moving the memory pages "
5414 "currently allocated to that job, perform the following steps."
5415 msgstr ""
5416
5417 #. type: Plain text
5418 #: build/C/man7/cpuset.7:1418
5419 msgid ""
5420 "Let's say we want to move the job in cpuset I<alpha> (CPUs 4-7 and memory "
5421 "nodes 2-3) to a new cpuset I<beta> (CPUs 16-19 and memory nodes 8-9)."
5422 msgstr ""
5423
5424 #. type: Plain text
5425 #: build/C/man7/cpuset.7:1421
5426 msgid "First create the new cpuset I<beta>."
5427 msgstr ""
5428
5429 #. type: Plain text
5430 #: build/C/man7/cpuset.7:1424
5431 msgid "Then allow CPUs 16-19 and memory nodes 8-9 in I<beta>."
5432 msgstr ""
5433
5434 #. type: Plain text
5435 #: build/C/man7/cpuset.7:1429
5436 msgid "Then enable I<memory_migration> in I<beta>."
5437 msgstr ""
5438
5439 #. type: Plain text
5440 #: build/C/man7/cpuset.7:1434
5441 msgid "Then move each process from I<alpha> to I<beta>."
5442 msgstr ""
5443
5444 #. type: Plain text
5445 #: build/C/man7/cpuset.7:1437
5446 msgid "The following sequence of commands accomplishes this."
5447 msgstr ""
5448
5449 #. type: Plain text
5450 #: build/C/man7/cpuset.7:1447
5451 #, no-wrap
5452 msgid ""
5453 "$B< cd /dev/cpuset>\n"
5454 "$B< mkdir beta>\n"
5455 "$B< cd beta>\n"
5456 "$B< /bin/echo 16-19 E<gt> cpuset.cpus>\n"
5457 "$B< /bin/echo 8-9 E<gt> cpuset.mems>\n"
5458 "$B< /bin/echo 1 E<gt> cpuset.memory_migrate>\n"
5459 "$B< while read i; do /bin/echo $i; done E<lt> ../alpha/tasks E<gt> tasks>\n"
5460 msgstr ""
5461 "$B< cd /dev/cpuset>\n"
5462 "$B< mkdir beta>\n"
5463 "$B< cd beta>\n"
5464 "$B< /bin/echo 16-19 E<gt> cpuset.cpus>\n"
5465 "$B< /bin/echo 8-9 E<gt> cpuset.mems>\n"
5466 "$B< /bin/echo 1 E<gt> cpuset.memory_migrate>\n"
5467 "$B< while read i; do /bin/echo $i; done E<lt> ../alpha/tasks E<gt> tasks>\n"
5468
5469 #. type: Plain text
5470 #: build/C/man7/cpuset.7:1456
5471 msgid ""
5472 "The above should move any processes in I<alpha> to I<beta>, and any memory "
5473 "held by these processes on memory nodes 2-3 to memory nodes 8-9, "
5474 "respectively."
5475 msgstr ""
5476
5477 #. type: Plain text
5478 #: build/C/man7/cpuset.7:1458
5479 msgid "Notice that the last step of the above sequence did not do:"
5480 msgstr ""
5481
5482 #. type: Plain text
5483 #: build/C/man7/cpuset.7:1462
5484 #, no-wrap
5485 msgid "$B< cp ../alpha/tasks tasks>\n"
5486 msgstr "$B< cp ../alpha/tasks tasks>\n"
5487
5488 #. type: Plain text
5489 #: build/C/man7/cpuset.7:1473
5490 msgid ""
5491 "The I<while> loop, rather than the seemingly easier use of the B<cp>(1)  "
5492 "command, was necessary because only one process PID at a time may be written "
5493 "to the I<tasks> file."
5494 msgstr ""
5495
5496 #. type: Plain text
5497 #: build/C/man7/cpuset.7:1481
5498 msgid ""
5499 "The same effect (writing one PID at a time) as the I<while> loop can be "
5500 "accomplished more efficiently, in fewer keystrokes and in syntax that works "
5501 "on any shell, but alas more obscurely, by using the B<-u> (unbuffered) "
5502 "option of B<sed>(1):"
5503 msgstr ""
5504
5505 #. type: Plain text
5506 #: build/C/man7/cpuset.7:1485
5507 #, no-wrap
5508 msgid "$B< sed -un p E<lt> ../alpha/tasks E<gt> tasks>\n"
5509 msgstr "$B< sed -un p E<lt> ../alpha/tasks E<gt> tasks>\n"
5510
5511 #. type: Plain text
5512 #: build/C/man7/cpuset.7:1503
5513 msgid ""
5514 "B<taskset>(1), B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), "
5515 "B<sched_getaffinity>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
5516 "B<set_mempolicy>(2), B<CPU_SET>(3), B<proc>(5), B<numa>(7), B<sched>(7), "
5517 "B<migratepages>(8), B<numactl>(8)"
5518 msgstr ""
5519 "B<taskset>(1), B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), "
5520 "B<sched_getaffinity>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
5521 "B<set_mempolicy>(2), B<CPU_SET>(3), B<proc>(5), B<numa>(7), B<sched>(7), "
5522 "B<migratepages>(8), B<numactl>(8)"
5523
5524 #. type: Plain text
5525 #: build/C/man7/cpuset.7:1506
5526 msgid "I<Documentation/cpusets.txt> in the Linux kernel source tree"
5527 msgstr "Linux カーネルソース内の I<Documentation/cpusets.txt>"
5528
5529 #. type: TH
5530 #: build/C/man7/credentials.7:27
5531 #, no-wrap
5532 msgid "CREDENTIALS"
5533 msgstr "CREDENTIALS"
5534
5535 #. type: TH
5536 #: build/C/man7/credentials.7:27 build/C/man2/setsid.2:31
5537 #, no-wrap
5538 msgid "2014-12-31"
5539 msgstr "2014-12-31"
5540
5541 #. type: Plain text
5542 #: build/C/man7/credentials.7:30
5543 msgid "credentials - process identifiers"
5544 msgstr "credentials - 認証に用いられるプロセスの識別子"
5545
5546 #. type: SS
5547 #: build/C/man7/credentials.7:31
5548 #, no-wrap
5549 msgid "Process ID (PID)"
5550 msgstr "プロセスID (PID)"
5551
5552 #. type: Plain text
5553 #: build/C/man7/credentials.7:41
5554 msgid ""
5555 "Each process has a unique nonnegative integer identifier that is assigned "
5556 "when the process is created using B<fork>(2).  A process can obtain its PID "
5557 "using B<getpid>(2).  A PID is represented using the type I<pid_t> (defined "
5558 "in I<E<lt>sys/types.hE<gt>>)."
5559 msgstr ""
5560 "各プロセスは、負でない整数の一意な識別子を持つ。 この識別子は B<fork>(2)  を"
5561 "使ってプロセスが生成される際に割り当てられる。 プロセスは B<getpid>(2)  を"
5562 "使って自分の PID を取得できる。 PID は I<pid_t> 型で表現される (I<pid_t> は "
5563 "I<E<lt>sys/types.hE<gt>> で定義されている)。"
5564
5565 #.  .BR sched_rr_get_interval (2),
5566 #.  .BR sched_getaffinity (2),
5567 #.  .BR sched_setaffinity (2),
5568 #.  .BR sched_getparam (2),
5569 #.  .BR sched_setparam (2),
5570 #.  .BR sched_setscheduler (2),
5571 #.  .BR sched_getscheduler (2),
5572 #.  .BR getsid (2),
5573 #.  .BR waitid (2),
5574 #.  .BR wait4 (2),
5575 #. type: Plain text
5576 #: build/C/man7/credentials.7:62
5577 msgid ""
5578 "PIDs are used in a range of system calls to identify the process affected by "
5579 "the call, for example: B<kill>(2), B<ptrace>(2), B<setpriority>(2)  "
5580 "B<setpgid>(2), B<setsid>(2), B<sigqueue>(3), and B<waitpid>(2)."
5581 msgstr ""
5582 "PID は各種のシステムコールでそのシステムコールが作用するプロセスを 特定するた"
5583 "めに使用される。以下に例を挙げる: B<kill>(2), B<ptrace>(2), "
5584 "B<setpriority>(2), B<setpgid>(2), B<setsid>(2), B<sigqueue>(3), "
5585 "B<waitpid>(2)."
5586
5587 #. type: Plain text
5588 #: build/C/man7/credentials.7:65
5589 msgid "A process's PID is preserved across an B<execve>(2)."
5590 msgstr "プロセスの PID は B<execve>(2)  の前後で不変である。"
5591
5592 #. type: SS
5593 #: build/C/man7/credentials.7:65
5594 #, no-wrap
5595 msgid "Parent process ID (PPID)"
5596 msgstr "親プロセス ID (PPID)"
5597
5598 #. type: Plain text
5599 #: build/C/man7/credentials.7:73
5600 msgid ""
5601 "A process's parent process ID identifies the process that created this "
5602 "process using B<fork>(2).  A process can obtain its PPID using "
5603 "B<getppid>(2).  A PPID is represented using the type I<pid_t>."
5604 msgstr ""
5605 "プロセスの親プロセスの ID は、 B<fork>(2)  を使ってそのプロセスを生成したプロ"
5606 "セスを示す。 プロセスは B<getppid>(2)  を使って自分の PPID を取得できる。 "
5607 "PPID は I<pid_t> 型で表現される。"
5608
5609 #. type: Plain text
5610 #: build/C/man7/credentials.7:76
5611 msgid "A process's PPID is preserved across an B<execve>(2)."
5612 msgstr "プロセスの PPID は B<execve>(2)  の前後で不変である。"
5613
5614 #. type: SS
5615 #: build/C/man7/credentials.7:76
5616 #, no-wrap
5617 msgid "Process group ID and session ID"
5618 msgstr "プロセスグループ ID とセッション ID"
5619
5620 #. type: Plain text
5621 #: build/C/man7/credentials.7:84
5622 msgid ""
5623 "Each process has a session ID and a process group ID, both represented using "
5624 "the type I<pid_t>.  A process can obtain its session ID using B<getsid>(2), "
5625 "and its process group ID using B<getpgrp>(2)."
5626 msgstr ""
5627 "各プロセスはセッション ID とプロセスグループ ID を持つ。 これらの ID はどちら"
5628 "も I<pid_t> 型で表現される。 プロセスは、それぞれ B<getsid>(2), "
5629 "B<getpgrp>(2)  を使って自分のセッション ID、プロセスグループ ID を取得でき"
5630 "る。"
5631
5632 #. type: Plain text
5633 #: build/C/man7/credentials.7:90
5634 msgid ""
5635 "A child created by B<fork>(2)  inherits its parent's session ID and process "
5636 "group ID.  A process's session ID and process group ID are preserved across "
5637 "an B<execve>(2)."
5638 msgstr ""
5639 "B<fork>(2)  で生成された子プロセスは親プロセスのセッション ID とプロセスグ"
5640 "ループ ID を継承する。プロセスのセッション ID とプロセスグループ ID は "
5641 "B<execve>(2)  の前後で不変である。"
5642
5643 #. type: Plain text
5644 #: build/C/man7/credentials.7:103
5645 msgid ""
5646 "Sessions and process groups are abstractions devised to support shell job "
5647 "control.  A process group (sometimes called a \"job\") is a collection of "
5648 "processes that share the same process group ID; the shell creates a new "
5649 "process group for the process(es) used to execute single command or pipeline "
5650 "(e.g., the two processes created to execute the command \"ls\\ |\\ wc\" are "
5651 "placed in the same process group).  A process's group membership can be set "
5652 "using B<setpgid>(2).  The process whose process ID is the same as its "
5653 "process group ID is the I<process group leader> for that group."
5654 msgstr ""
5655 "セッションとプロセスグループの概念は、シェルのジョブ制御を行うために 考案され"
5656 "たものである。 プロセスグループ (時には「ジョブ」と呼ばれることもある) は、 "
5657 "同じプロセスグループ ID を共有するプロセスの集まりである。 シェルは、一つのコ"
5658 "マンドもしくはパイプラインの実行に使われるプロセス群に 対して一つのプロセスグ"
5659 "ループを生成する (例えば、コマンド \"ls\\ |\\ wc\" を実行するために生成される"
5660 "二つのプロセスは 同じプロセスグループに置かれる)。 所属するプロセスグループ"
5661 "は B<setpgid>(2)  を使って設定できる。 自身のプロセス ID がプロセスグループ "
5662 "ID と同じプロセスは、 そのグループの「プロセスグループ・リーダー」である。"
5663
5664 #. type: Plain text
5665 #: build/C/man7/credentials.7:115
5666 msgid ""
5667 "A session is a collection of processes that share the same session ID.  All "
5668 "of the members of a process group also have the same session ID (i.e., all "
5669 "of the members of a process group always belong to the same session, so that "
5670 "sessions and process groups form a strict two-level hierarchy of "
5671 "processes.)  A new session is created when a process calls B<setsid>(2), "
5672 "which creates a new session whose session ID is the same as the PID of the "
5673 "process that called B<setsid>(2).  The creator of the session is called the "
5674 "I<session leader>."
5675 msgstr ""
5676 "セッションは、同じセッション ID を共有するプロセスの集まりである。 ある一つの"
5677 "プロセスグループの全メンバーは同じセッション ID を持つ (つまり、一つのプロセ"
5678 "スグループのメンバーは全て同じセッションに所属し、 これにより、セッションとプ"
5679 "ロセスグループで二階層のプロセス階層が形成できる)。 新たなセッションの生成は"
5680 "プロセスが B<setsid>(2)  を呼び出すことで行う。 B<setsid>(2)  は、 "
5681 "B<setsid>(2)  を呼び出したプロセスの PID と同じ値のセッション ID を持つ 新た"
5682 "なセッションを生成する。 セッションの生成者は「セッション・リーダー」と呼ばれ"
5683 "る。"
5684
5685 #. type: Plain text
5686 #: build/C/man7/credentials.7:124
5687 msgid ""
5688 "All of the processes in a session share a I<controlling terminal>.  The "
5689 "controlling terminal is established when the session leader first opens a "
5690 "terminal (unless the B<O_NOCTTY> flag is specified when calling "
5691 "B<open>(2)).  A terminal may be the controlling terminal of at most one "
5692 "session."
5693 msgstr ""
5694 "あるセッションの全プロセスは一つの I<制御端末> を共有する。 セッションリー"
5695 "ダーが最初に端末をオープンした際に制御端末は設定される (B<open>(2) の呼び出し"
5696 "で B<O_NOCTTY> フラグが指定された場合を除く)。 一つの端末は、最大でも一つの"
5697 "セッションの制御端末にしかなれない。"
5698
5699 #. type: Plain text
5700 #: build/C/man7/credentials.7:146
5701 msgid ""
5702 "At most one of the jobs in a session may be the I<foreground job>; other "
5703 "jobs in the session are I<background jobs>.  Only the foreground job may "
5704 "read from the terminal; when a process in the background attempts to read "
5705 "from the terminal, its process group is sent a B<SIGTTIN> signal, which "
5706 "suspends the job.  If the B<TOSTOP> flag has been set for the terminal (see "
5707 "B<termios>(3)), then only the foreground job may write to the terminal; "
5708 "writes from background job cause a B<SIGTTOU> signal to be generated, which "
5709 "suspends the job.  When terminal keys that generate a signal (such as the "
5710 "I<interrupt> key, normally control-C)  are pressed, the signal is sent to "
5711 "the processes in the foreground job."
5712 msgstr ""
5713 "一つのセッションのジョブの中で、I<フォアグラウンドジョブ>になれるのは最大でも"
5714 "一つで、そのセッションの他のジョブはI<バックグラウンドジョブ>である。 フォア"
5715 "グラウンドジョブだけが端末からの読み込みを行える。 バックグラウンドのプロセス"
5716 "が端末から読み込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグ"
5717 "ナルである B<SIGTTIN> が所属するプロセスグループに対して送信される。 端末に "
5718 "B<TOSTOP> フラグがセットされていた場合 (B<termios>(3) 参照)、 フォアグラウン"
5719 "ドジョブだけが端末への書き込みを行える。 バックグラウンドのプロセスが端末への"
5720 "書き込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグナルであ"
5721 "る B<SIGTTOU> が生成される。 シグナルを生成する端末キー (例えば I<中断>キー、"
5722 "通常は control-C) が押された場合、 そのシグナルはフォアグラウンドジョブのプロ"
5723 "セスに送信される。"
5724
5725 #. type: Plain text
5726 #: build/C/man7/credentials.7:167
5727 msgid ""
5728 "Various system calls and library functions may operate on all members of a "
5729 "process group, including B<kill>(2), B<killpg>(2), B<getpriority>(2), "
5730 "B<setpriority>(2), B<ioprio_get>(2), B<ioprio_set>(2), B<waitid>(2), and "
5731 "B<waitpid>(2).  See also the discussion of the B<F_GETOWN>, B<F_GETOWN_EX>, "
5732 "B<F_SETOWN>, and B<F_SETOWN_EX> operations in B<fcntl>(2)."
5733 msgstr ""
5734 "様々なシステムコールやライブラリ関数で、プロセスグループの全メンバーに対して"
5735 "操作を行うことができる。 例えば、 B<kill>(2), B<killpg>(2), "
5736 "B<getpriority>(2), B<setpriority>(2), B<ioprio_get>(2), B<ioprio_set>(2), "
5737 "B<waitid>(2), B<waitpid>(2) など。 B<fcntl>(2) の操作 B<F_GETOWN>, "
5738 "B<F_GETOWN_EX>, B<F_SETOWN>, B<F_SETOWN_EX> の議論も参照。"
5739
5740 #. type: SS
5741 #: build/C/man7/credentials.7:167
5742 #, no-wrap
5743 msgid "User and group identifiers"
5744 msgstr "ユーザ ID とグループ ID"
5745
5746 #. type: Plain text
5747 #: build/C/man7/credentials.7:175
5748 msgid ""
5749 "Each process has various associated user and groups IDs.  These IDs are "
5750 "integers, respectively represented using the types I<uid_t> and I<gid_t> "
5751 "(defined in I<E<lt>sys/types.hE<gt>>)."
5752 msgstr ""
5753 "各プロセスは、数種類のユーザ ID とグループ ID を持つ。 ユーザ ID、グループ "
5754 "ID は整数で、それぞれ I<uid_t>, I<gid_t> 型で表現される (これらは I<E<lt>sys/"
5755 "types.hE<gt>> で定義されている)。"
5756
5757 #. type: Plain text
5758 #: build/C/man7/credentials.7:177
5759 msgid "On Linux, each process has the following user and group identifiers:"
5760 msgstr ""
5761 "Linux では、各プロセスは以下のような種類のユーザ ID とグループ ID を持つ。"
5762
5763 #. type: Plain text
5764 #: build/C/man7/credentials.7:183
5765 msgid ""
5766 "Real user ID and real group ID.  These IDs determine who owns the process.  "
5767 "A process can obtain its real user (group) ID using B<getuid>(2)  "
5768 "(B<getgid>(2))."
5769 msgstr ""
5770 "実ユーザ ID と実グループ ID。 これらの ID によりプロセスの所有者が決定され"
5771 "る。 プロセスが自分の実ユーザ ID、実グループ ID を取得するには、それぞれ "
5772 "B<getuid>(2), B<getgid>(2)  を使用する。"
5773
5774 #. type: Plain text
5775 #: build/C/man7/credentials.7:195
5776 msgid ""
5777 "Effective user ID and effective group ID.  These IDs are used by the kernel "
5778 "to determine the permissions that the process will have when accessing "
5779 "shared resources such as message queues, shared memory, and semaphores.  On "
5780 "most UNIX systems, these IDs also determine the permissions when accessing "
5781 "files.  However, Linux uses the filesystem IDs described below for this "
5782 "task.  A process can obtain its effective user (group) ID using "
5783 "B<geteuid>(2)  (B<getegid>(2))."
5784 msgstr ""
5785 "実効ユーザ ID と実効グループ ID。 これらの ID は、メッセージキュー、共有メモ"
5786 "リ、セマフォなどの 共有リソースにアクセスしようとした際にそのプロセスがアクセ"
5787 "ス許可を 持っているかをカーネルが判定するのに使用される。 ほとんどの UNIX シ"
5788 "ステムでは、これらの ID はファイルへのアクセス時の アクセス許可の判定にも使用"
5789 "される。 しかしながら、Linux ではファイルへのアクセス許可の判定には 後述の"
5790 "ファイルシステム ID が使用される。 プロセスが自分の実効ユーザ ID、実効グルー"
5791 "プ ID を取得するには、それぞれ B<geteuid>(2), B<getegid>(2)  を使用する。"
5792
5793 #. type: Plain text
5794 #: build/C/man7/credentials.7:217
5795 msgid ""
5796 "Saved set-user-ID and saved set-group-ID.  These IDs are used in set-user-ID "
5797 "and set-group-ID programs to save a copy of the corresponding effective IDs "
5798 "that were set when the program was executed (see B<execve>(2)).  A set-user-"
5799 "ID program can assume and drop privileges by switching its effective user ID "
5800 "back and forth between the values in its real user ID and saved set-user-"
5801 "ID.  This switching is done via calls to B<seteuid>(2), B<setreuid>(2), or "
5802 "B<setresuid>(2).  A set-group-ID program performs the analogous tasks using "
5803 "B<setegid>(2), B<setregid>(2), or B<setresgid>(2).  A process can obtain its "
5804 "saved set-user-ID (set-group-ID) using B<getresuid>(2)  (B<getresgid>(2))."
5805 msgstr ""
5806 "保存 (saved) set-user-ID と保存 set-group-ID。 これらの ID は、set-user-ID "
5807 "や set-group-ID されたプログラムにおいて、 プログラムの実行時に設定された実"
5808 "効 ID のコピーを保存するために 使用される (B<execve>(2)  参照)。 set-user-ID "
5809 "プログラムは、実効ユーザ ID を実ユーザID と保存 set-user-ID の間で行ったり来"
5810 "たり切り替えることで、特権を得たり落としたりできる。 この切り替えは "
5811 "B<seteuid>(2), B<setreuid>(2), B<setresuid>(2)  を呼び出すことで実行できる。 "
5812 "set-group-ID プログラムは、 B<setegid>(2), B<setregid>(2), B<setresgid>(2)  "
5813 "を使って同様のことができる。 プロセスが自分の保存 set-user-ID、保存 set-"
5814 "group-ID を取得するには、 B<getresuid(2),> B<getresgids>(2)  をそれぞれ使用す"
5815 "る。"
5816
5817 #. type: Plain text
5818 #: build/C/man7/credentials.7:234
5819 msgid ""
5820 "Filesystem user ID and filesystem group ID (Linux-specific).  These IDs, in "
5821 "conjunction with the supplementary group IDs described below, are used to "
5822 "determine permissions for accessing files; see B<path_resolution>(7)  for "
5823 "details.  Whenever a process's effective user (group) ID is changed, the "
5824 "kernel also automatically changes the filesystem user (group) ID to the same "
5825 "value.  Consequently, the filesystem IDs normally have the same values as "
5826 "the corresponding effective ID, and the semantics for file-permission checks "
5827 "are thus the same on Linux as on other UNIX systems.  The filesystem IDs can "
5828 "be made to differ from the effective IDs by calling B<setfsuid>(2)  and "
5829 "B<setfsgid>(2)."
5830 msgstr ""
5831 "ファイルシステム・ユーザ ID とファイルシステム・グループ ID (Linux 固有)。 こ"
5832 "れらの ID は、後述の補助グループ ID と組み合わせて使用され、 ファイルへのアク"
5833 "セス権の決定に利用される。詳細は B<path_resolution>(7)  を参照。 プロセスの実"
5834 "効 ID (ユーザ ID や グループ ID) が変更されるたびに、 カーネルは自動的に対応"
5835 "するファイルシステム ID を同じ値に変更する。 その結果、ファイルシステム ID は"
5836 "通常は対応する実効 ID と同じ値となり、 ファイルのアクセス権のチェック方法は "
5837 "Linux と他の UNIX システムで同じである。 ファイルシステム ID は実効 ID とは異"
5838 "なる値にすることができ、 変更は B<setfsuid>(2)  と B<setfsgid>(2)  を呼び出し"
5839 "て行う。"
5840
5841 #.  Since kernel 2.6.4, the limit is visible via the read-only file
5842 #.  /proc/sys/kernel/ngroups_max.
5843 #.  As at 2.6.22-rc2, this file is still read-only.
5844 #. type: Plain text
5845 #: build/C/man7/credentials.7:253
5846 msgid ""
5847 "Supplementary group IDs.  This is a set of additional group IDs that are "
5848 "used for permission checks when accessing files and other shared resources.  "
5849 "On Linux kernels before 2.6.4, a process can be a member of up to 32 "
5850 "supplementary groups; since kernel 2.6.4, a process can be a member of up to "
5851 "65536 supplementary groups.  The call I<sysconf(_SC_NGROUPS_MAX)> can be "
5852 "used to determine the number of supplementary groups of which a process may "
5853 "be a member.  A process can obtain its set of supplementary group IDs using "
5854 "B<getgroups>(2), and can modify the set using B<setgroups>(2)."
5855 msgstr ""
5856 "補助グループ ID。 この ID は、ファイルや他の共有リソースへのアクセス時にアク"
5857 "セス許可の チェックに使用される、追加のグループ ID の集合である。 カーネル "
5858 "2.6.4 より前の Linux では、一つのプロセスあたりの 補助グループのメンバー数は"
5859 "最大で 32 である。 カーネル 2.6.4 以降では、一つのプロセスあたりの 補助グルー"
5860 "プのメンバー数は最大で 65536 である。 I<sysconf(_SC_NGROUPS_MAX)> を呼び出す"
5861 "ことで、あるプロセスがメンバーとなることができる可能性のある 補助グループ数を"
5862 "知ることができる。 プロセスは、自分の補助グループ ID の集合を "
5863 "B<getgroups>(2)  で取得でき、 B<setgroups>(2)  で集合を変更できる。"
5864
5865 #. type: Plain text
5866 #: build/C/man7/credentials.7:263
5867 msgid ""
5868 "A child process created by B<fork>(2)  inherits copies of its parent's user "
5869 "and groups IDs.  During an B<execve>(2), a process's real user and group ID "
5870 "and supplementary group IDs are preserved; the effective and saved set IDs "
5871 "may be changed, as described in B<execve>(2)."
5872 msgstr ""
5873 "B<fork>(2)  で生成された子プロセスは親プロセスのユーザ ID とグループ ID を継"
5874 "承する。 B<execve>(2)  の間、プロセスの実ユーザ/グループ ID と補助グループ "
5875 "ID 集合は不変である。 実効 ID と保存セット ID は変更される可能性がある "
5876 "(B<execve>(2)  で説明されている)。"
5877
5878 #. type: Plain text
5879 #: build/C/man7/credentials.7:266
5880 msgid ""
5881 "Aside from the purposes noted above, a process's user IDs are also employed "
5882 "in a number of other contexts:"
5883 msgstr "上記の目的以外にも、プロセスのユーザ ID は他の様々な場面で利用される。"
5884
5885 #. type: Plain text
5886 #: build/C/man7/credentials.7:269
5887 msgid "when determining the permissions for sending signals (see B<kill>(2));"
5888 msgstr "シグナルを送る許可の判定時 (B<kill>(2)  参照)"
5889
5890 #. type: Plain text
5891 #: build/C/man7/credentials.7:280
5892 msgid ""
5893 "when determining the permissions for setting process-scheduling parameters "
5894 "(nice value, real time scheduling policy and priority, CPU affinity, I/O "
5895 "priority) using B<setpriority>(2), B<sched_setaffinity>(2), "
5896 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_setattr>(2), and "
5897 "B<ioprio_set>(2);"
5898 msgstr ""
5899 "プロセスのスケジューリング関連のパラメータ (nice 値、 リアルタイム・スケ"
5900 "ジューリングポリシーや優先度、CPU affinity、 入出力優先度) の設定許可の判定"
5901 "時。 スケジューリング関連のパラメータ設定には B<setpriority>(2), "
5902 "B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
5903 "B<sched_setattr>(2), B<ioprio_set>(2)  が使用される。"
5904
5905 #. type: Plain text
5906 #: build/C/man7/credentials.7:283
5907 msgid "when checking resource limits (see B<getrlimit>(2));"
5908 msgstr "リソース上限のチェック時 (B<getrlimit>(2)  参照)"
5909
5910 #. type: Plain text
5911 #: build/C/man7/credentials.7:287
5912 msgid ""
5913 "when checking the limit on the number of inotify instances that the process "
5914 "may create (see B<inotify>(7))."
5915 msgstr ""
5916 "プロセスが生成できる inotify インスタンス数の上限のチェック時 (B<inotify>(7) "
5917 "参照)"
5918
5919 #. type: Plain text
5920 #: build/C/man7/credentials.7:293
5921 msgid ""
5922 "Process IDs, parent process IDs, process group IDs, and session IDs are "
5923 "specified in POSIX.1-2001.  The real, effective, and saved set user and "
5924 "groups IDs, and the supplementary group IDs, are specified in POSIX.1-2001.  "
5925 "The filesystem user and group IDs are a Linux extension."
5926 msgstr ""
5927 "プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は "
5928 "POSIX.1-2001 で規定されている。 実 ID、実効 ID、保存セット ID のユーザ ID / "
5929 "グループ ID および 補助グループ ID は POSIX.1-2001 で規定されている。 ファイ"
5930 "ルシステム・ユーザ ID / グループ ID は Linux による拡張である。"
5931
5932 #. type: Plain text
5933 #: build/C/man7/credentials.7:304
5934 msgid ""
5935 "The POSIX threads specification requires that credentials are shared by all "
5936 "of the threads in a process.  However, at the kernel level, Linux maintains "
5937 "separate user and group credentials for each thread.  The NPTL threading "
5938 "implementation does some work to ensure that any change to user or group "
5939 "credentials (e.g., calls to B<setuid>(2), B<setresuid>(2))  is carried "
5940 "through to all of the POSIX threads in a process."
5941 msgstr ""
5942 "POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで 共有される"
5943 "ことを求めている。 しかしながら、カーネルのレベルでは、Linux はスレッド毎に"
5944 "別々の ユーザとグループに関する識別子を管理している。 NPTL スレッド実装が、"
5945 "(例えば B<setuid>(2), B<setresuid>(2)  などの呼び出しによる) ユーザやグループ"
5946 "に関する識別子に対する変更が プロセス内の全ての POSIX スレッドに対して反映さ"
5947 "れることを保証する ための処理を行っている。"
5948
5949 #. type: Plain text
5950 #: build/C/man7/credentials.7:340
5951 msgid ""
5952 "B<bash>(1), B<csh>(1), B<ps>(1), B<access>(2), B<execve>(2), "
5953 "B<faccessat>(2), B<fork>(2), B<getgroups>(2), B<getpgrp>(2), B<getpid>(2), "
5954 "B<getppid>(2), B<getsid>(2), B<kill>(2), B<killpg>(2), B<setegid>(2), "
5955 "B<seteuid>(2), B<setfsgid>(2), B<setfsuid>(2), B<setgid>(2), "
5956 "B<setgroups>(2), B<setresgid>(2), B<setresuid>(2), B<setuid>(2), "
5957 "B<waitpid>(2), B<euidaccess>(3), B<initgroups>(3), B<tcgetpgrp>(3), "
5958 "B<tcsetpgrp>(3), B<capabilities>(7), B<namespaces>(7), "
5959 "B<path_resolution>(7), B<pid_namespaces>(7), B<signal>(7), "
5960 "B<user_namespaces>(7), B<unix>(7)"
5961 msgstr ""
5962 "B<bash>(1), B<csh>(1), B<ps>(1), B<access>(2), B<execve>(2), "
5963 "B<faccessat>(2), B<fork>(2), B<getgroups>(2), B<getpgrp>(2), B<getpid>(2), "
5964 "B<getppid>(2), B<getsid>(2), B<kill>(2), B<killpg>(2), B<setegid>(2), "
5965 "B<seteuid>(2), B<setfsgid>(2), B<setfsuid>(2), B<setgid>(2), "
5966 "B<setgroups>(2), B<setresgid>(2), B<setresuid>(2), B<setuid>(2), "
5967 "B<waitpid>(2), B<euidaccess>(3), B<initgroups>(3), B<tcgetpgrp>(3), "
5968 "B<tcsetpgrp>(3), B<capabilities>(7), B<namespaces>(7), "
5969 "B<path_resolution>(7), B<pid_namespaces>(7), B<signal>(7), "
5970 "B<user_namespaces>(7), B<unix>(7)"
5971
5972 #. type: TH
5973 #: build/C/man2/getgid.2:25
5974 #, no-wrap
5975 msgid "GETGID"
5976 msgstr "GETGID"
5977
5978 #. type: TH
5979 #: build/C/man2/getgid.2:25 build/C/man2/getresuid.2:28
5980 #: build/C/man2/getuid.2:26
5981 #, no-wrap
5982 msgid "2010-11-22"
5983 msgstr "2010-11-22"
5984
5985 #. type: Plain text
5986 #: build/C/man2/getgid.2:28
5987 msgid "getgid, getegid - get group identity"
5988 msgstr "getgid, getegid - グループ ID を得る"
5989
5990 #. type: Plain text
5991 #: build/C/man2/getgid.2:30 build/C/man2/getgroups.2:38
5992 #: build/C/man2/getpid.2:32 build/C/man2/getresuid.2:35
5993 #: build/C/man2/getsid.2:31 build/C/man2/getuid.2:31
5994 #: build/C/man3/group_member.3:30 build/C/man2/seteuid.2:36
5995 #: build/C/man2/setgid.2:36 build/C/man2/setpgid.2:53
5996 #: build/C/man2/setresuid.2:33 build/C/man2/setreuid.2:52
5997 #: build/C/man2/setsid.2:37 build/C/man2/setuid.2:37
5998 msgid "B<#include E<lt>unistd.hE<gt>>"
5999 msgstr "B<#include E<lt>unistd.hE<gt>>"
6000
6001 #. type: Plain text
6002 #: build/C/man2/getgid.2:32 build/C/man2/getgroups.2:36
6003 #: build/C/man2/getpid.2:30 build/C/man2/getuid.2:33 build/C/man2/seteuid.2:34
6004 #: build/C/man2/setgid.2:34 build/C/man2/setreuid.2:50
6005 #: build/C/man2/setuid.2:35
6006 msgid "B<#include E<lt>sys/types.hE<gt>>"
6007 msgstr "B<#include E<lt>sys/types.hE<gt>>"
6008
6009 #. type: Plain text
6010 #: build/C/man2/getgid.2:34
6011 msgid "B<gid_t getgid(void);>"
6012 msgstr "B<gid_t getgid(void);>"
6013
6014 #. type: Plain text
6015 #: build/C/man2/getgid.2:36
6016 msgid "B<gid_t getegid(void);>"
6017 msgstr "B<gid_t getegid(void);>"
6018
6019 #. type: Plain text
6020 #: build/C/man2/getgid.2:39
6021 msgid "B<getgid>()  returns the real group ID of the calling process."
6022 msgstr "B<getgid>()  は呼び出し元のプロセスの実グループ ID を返す。"
6023
6024 #. type: Plain text
6025 #: build/C/man2/getgid.2:42
6026 msgid "B<getegid>()  returns the effective group ID of the calling process."
6027 msgstr "B<getegid>()  は呼び出し元のプロセスの実効グループ ID を返す。"
6028
6029 #. type: Plain text
6030 #: build/C/man2/getgid.2:44 build/C/man2/getpid.2:46 build/C/man2/getuid.2:45
6031 msgid "These functions are always successful."
6032 msgstr "これらの関数は常に成功する。"
6033
6034 #. type: Plain text
6035 #: build/C/man2/getgid.2:46 build/C/man2/getuid.2:47
6036 msgid "POSIX.1-2001, 4.3BSD."
6037 msgstr "POSIX.1-2001, 4.3BSD."
6038
6039 #. type: Plain text
6040 #: build/C/man2/getgid.2:62
6041 msgid ""
6042 "The original Linux B<getgid>()  and B<getegid>()  system calls supported "
6043 "only 16-bit group IDs.  Subsequently, Linux 2.4 added B<getgid32>()  and "
6044 "B<getegid32>(), supporting 32-bit IDs.  The glibc B<getgid>()  and "
6045 "B<getegid>()  wrapper functions transparently deal with the variations "
6046 "across kernel versions."
6047 msgstr ""
6048 "元々の Linux の B<getgid>() と B<getegid>() システムコールは\n"
6049 "16 ビットのグループ ID だけに対応していた。\n"
6050 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6051 "B<getgid32>() と B<getegid32>() が追加された。\n"
6052 "glibc の B<getgid>() と B<getegid>() のラッパー関数は\n"
6053 "カーネルバージョンによるこの違いを吸収している。"
6054
6055 #. type: Plain text
6056 #: build/C/man2/getgid.2:67
6057 msgid "B<getresgid>(2), B<setgid>(2), B<setregid>(2), B<credentials>(7)"
6058 msgstr "B<getresgid>(2), B<setgid>(2), B<setregid>(2), B<credentials>(7)"
6059
6060 #. type: TH
6061 #: build/C/man2/getgroups.2:31
6062 #, no-wrap
6063 msgid "GETGROUPS"
6064 msgstr "GETGROUPS"
6065
6066 #. type: TH
6067 #: build/C/man2/getgroups.2:31 build/C/man2/getpriority.2:45
6068 #, no-wrap
6069 msgid "2014-08-19"
6070 msgstr "2014-08-19"
6071
6072 #. type: Plain text
6073 #: build/C/man2/getgroups.2:34
6074 msgid "getgroups, setgroups - get/set list of supplementary group IDs"
6075 msgstr "getgroups, setgroups - 補助グループ ID のリストを取得/設定する"
6076
6077 #. type: Plain text
6078 #: build/C/man2/getgroups.2:40
6079 msgid "B<int getgroups(int >I<size>B<, gid_t >I<list>B<[]);>"
6080 msgstr "B<int getgroups(int >I<size>B<, gid_t >I<list>B<[]);>"
6081
6082 #. type: Plain text
6083 #: build/C/man2/getgroups.2:42
6084 msgid "B<#include E<lt>grp.hE<gt>>"
6085 msgstr "B<#include E<lt>grp.hE<gt>>"
6086
6087 #. type: Plain text
6088 #: build/C/man2/getgroups.2:44
6089 msgid "B<int setgroups(size_t >I<size>B<, const gid_t *>I<list>B<);>"
6090 msgstr "B<int setgroups(size_t >I<size>B<, const gid_t *>I<list>B<);>"
6091
6092 #. type: Plain text
6093 #: build/C/man2/getgroups.2:52
6094 msgid "B<setgroups>(): _BSD_SOURCE"
6095 msgstr "B<setgroups>(): _BSD_SOURCE"
6096
6097 #. type: Plain text
6098 #: build/C/man2/getgroups.2:70
6099 msgid ""
6100 "B<getgroups>()  returns the supplementary group IDs of the calling process "
6101 "in I<list>.  The argument I<size> should be set to the maximum number of "
6102 "items that can be stored in the buffer pointed to by I<list>.  If the "
6103 "calling process is a member of more than I<size> supplementary groups, then "
6104 "an error results.  It is unspecified whether the effective group ID of the "
6105 "calling process is included in the returned list.  (Thus, an application "
6106 "should also call B<getegid>(2)  and add or remove the resulting value.)"
6107 msgstr ""
6108 "B<getgroups>()  は呼び出し元プロセスの補助グループ (supplementary group) ID "
6109 "を I<list> に返す。 I<size> 引き数には、 I<list> により参照されるバッファに格"
6110 "納できる要素の最大数を設定すべきである。 呼び出し元プロセスが I<size> 個より"
6111 "多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロ"
6112 "セスの実効グループ ID が、 返されるリストに含まれるかどうかは規定されていな"
6113 "い (したがって、アプリケーションは B<getegid>(2)  を呼び出し、その結果の値を"
6114 "追加・削除すべきである)。"
6115
6116 #. type: Plain text
6117 #: build/C/man2/getgroups.2:81
6118 msgid ""
6119 "If I<size> is zero, I<list> is not modified, but the total number of "
6120 "supplementary group IDs for the process is returned.  This allows the caller "
6121 "to determine the size of a dynamically allocated I<list> to be used in a "
6122 "further call to B<getgroups>()."
6123 msgstr ""
6124 "I<size> が 0 ならば、 I<list> は修正されないが、そのプロセスの補助グループ "
6125 "ID の合計数が返される。 これを使うことで、それ以降の B<getgroups>()  の呼び出"
6126 "しで必要となる動的割り当てバッファ I<list> のサイズを、呼び出し元が決定するこ"
6127 "とができる。"
6128
6129 #. type: Plain text
6130 #: build/C/man2/getgroups.2:92
6131 msgid ""
6132 "B<setgroups>()  sets the supplementary group IDs for the calling process.  "
6133 "Appropriate privileges (Linux: the B<CAP_SETGID> capability) are required.  "
6134 "The I<size> argument specifies the number of supplementary group IDs in the "
6135 "buffer pointed to by I<list>."
6136 msgstr ""
6137 "B<setgroups>()  は、呼び出し元プロセスの補助グループ ID を設定する。 適切な特"
6138 "権 (Linux では B<CAP_SETGID> ケーパビリティ (capability)) が必要である。 "
6139 "I<size> 引き数には、 I<list> により参照されるバッファに格納された補助グルー"
6140 "プ ID の数を指定する。"
6141
6142 #. type: Plain text
6143 #: build/C/man2/getgroups.2:99
6144 msgid ""
6145 "On success, B<getgroups>()  returns the number of supplementary group IDs.  "
6146 "On error, -1 is returned, and I<errno> is set appropriately."
6147 msgstr ""
6148 "B<getgroups>()  は、成功すると補助グループ ID の数を返す。 エラーの場合 -1 を"
6149 "返し、 I<errno> を適切に設定する。"
6150
6151 #. type: Plain text
6152 #: build/C/man2/getgroups.2:106
6153 msgid ""
6154 "On success, B<setgroups>()  returns 0.  On error, -1 is returned, and "
6155 "I<errno> is set appropriately."
6156 msgstr ""
6157 "B<setgroups>()  は、成功すると 0 を返す。 エラーの場合 -1 を返し、 I<errno> "
6158 "を適切に設定する。"
6159
6160 #. type: Plain text
6161 #: build/C/man2/getgroups.2:111
6162 msgid "I<list> has an invalid address."
6163 msgstr "I<list> が不正なアドレスである。"
6164
6165 #. type: Plain text
6166 #: build/C/man2/getgroups.2:114
6167 msgid "B<getgroups>()  can additionally fail with the following error:"
6168 msgstr "B<getgroups>()  は、上記に加えて以下のエラーで失敗する可能性がある。"
6169
6170 #. type: Plain text
6171 #: build/C/man2/getgroups.2:118
6172 msgid ""
6173 "I<size> is less than the number of supplementary group IDs, but is not zero."
6174 msgstr "I<size> が補助グループ ID の数より小さいが 0 でない。"
6175
6176 #. type: Plain text
6177 #: build/C/man2/getgroups.2:121
6178 msgid "B<setgroups>()  can additionally fail with the following errors:"
6179 msgstr "B<setgroups>()  は、上記に加えて以下のエラーで失敗する可能性がある。"
6180
6181 #. type: Plain text
6182 #: build/C/man2/getgroups.2:127
6183 msgid ""
6184 "I<size> is greater than B<NGROUPS_MAX> (32 before Linux 2.6.4; 65536 since "
6185 "Linux 2.6.4)."
6186 msgstr ""
6187 "I<size> が B<NGROUPS_MAX> より大きい (B<NGROUPS_MAX> は Linux 2.6.4 より前で"
6188 "は 32、Linux 2.6.4 以降では 65536)。"
6189
6190 #. type: Plain text
6191 #: build/C/man2/getgroups.2:133
6192 msgid "The calling process has insufficient privilege."
6193 msgstr "呼び出し元プロセスが十分な特権を持っていない。"
6194
6195 #. type: Plain text
6196 #: build/C/man2/getgroups.2:141
6197 msgid ""
6198 "SVr4, 4.3BSD.  The B<getgroups>()  function is in POSIX.1-2001.  Since "
6199 "B<setgroups>()  requires privilege, it is not covered by POSIX.1-2001."
6200 msgstr ""
6201 "SVr4, 4.3BSD.  B<getgroups>()  関数は POSIX.1-2001 に準拠している。 "
6202 "B<setgroups>()  は特権を必要とするため、POSIX.1-2001 に従っていない。"
6203
6204 #. type: Plain text
6205 #: build/C/man2/getgroups.2:153
6206 msgid ""
6207 "A process can have up to B<NGROUPS_MAX> supplementary group IDs in addition "
6208 "to the effective group ID.  The constant B<NGROUPS_MAX> is defined in "
6209 "I<E<lt>limits.hE<gt>>.  The set of supplementary group IDs is inherited from "
6210 "the parent process, and preserved across an B<execve>(2)."
6211 msgstr ""
6212 "プロセスは、実効グループ ID に加え、最大 B<NGROUPS_MAX> までの補助グループ "
6213 "ID を持つことができる。 定数 B<NGROUPS_MAX> は I<E<lt>limits.hE<gt>> で定義さ"
6214 "れている。 補助グループ ID の集合は親プロセスから継承され、 B<execve>(2)  の"
6215 "前後で保持される。"
6216
6217 #. type: Plain text
6218 #: build/C/man2/getgroups.2:156
6219 msgid ""
6220 "The maximum number of supplementary group IDs can be found at run time using "
6221 "B<sysconf>(3):"
6222 msgstr ""
6223 "補助グループ ID の最大数は、実行時に B<sysconf>(3)  を使って以下のようにして"
6224 "調べることができる:"
6225
6226 #. type: Plain text
6227 #: build/C/man2/getgroups.2:160
6228 #, no-wrap
6229 msgid ""
6230 "    long ngroups_max;\n"
6231 "    ngroups_max = sysconf(_SC_NGROUPS_MAX);\n"
6232 msgstr ""
6233 "    long ngroups_max;\n"
6234 "    ngroups_max = sysconf(_SC_NGROUPS_MAX);\n"
6235
6236 #. type: Plain text
6237 #: build/C/man2/getgroups.2:168
6238 msgid ""
6239 "The maximum return value of B<getgroups>()  cannot be larger than one more "
6240 "than this value.  Since Linux 2.6.4, the maximum number of supplementary "
6241 "group IDs is also exposed via the Linux-specific read-only file, I</proc/sys/"
6242 "kernel/ngroups_max>."
6243 msgstr ""
6244 "B<getgroups>() の返り値の最大値は、この値より大きくなることはない。 Linux "
6245 "2.6.4 以降では、補助グループ ID の最大数も Linux 固有の読み込み専用のファイ"
6246 "ル I</proc/sys/kernel/ngroups_max> 経由で公開されている。"
6247
6248 #. type: Plain text
6249 #: build/C/man2/getgroups.2:178
6250 msgid ""
6251 "The original Linux B<getgroups>()  system call supported only 16-bit group "
6252 "IDs.  Subsequently, Linux 2.4 added B<getgroups32>(), supporting 32-bit "
6253 "IDs.  The glibc B<getgroups>()  wrapper function transparently deals with "
6254 "the variation across kernel versions."
6255 msgstr ""
6256 "元々の Linux の B<getgroups>() システムコールは 16 ビットのグループ ID だけ\n"
6257 "に対応していた。その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6258 "B<getgroups>() が追加された。glibc の B<getgroups> のラッパー関数はカーネル\n"
6259 "バージョンによるこの違いを吸収している。"
6260
6261 #. type: Plain text
6262 #: build/C/man2/getgroups.2:186
6263 msgid ""
6264 "B<getgid>(2), B<setgid>(2), B<getgrouplist>(3), B<group_member>(3), "
6265 "B<initgroups>(3), B<capabilities>(7), B<credentials>(7)"
6266 msgstr ""
6267 "B<getgid>(2), B<setgid>(2), B<getgrouplist>(3), B<group_member>(3), "
6268 "B<initgroups>(3), B<capabilities>(7), B<credentials>(7)"
6269
6270 #. type: TH
6271 #: build/C/man2/getpid.2:25
6272 #, no-wrap
6273 msgid "GETPID"
6274 msgstr "GETPID"
6275
6276 #. type: Plain text
6277 #: build/C/man2/getpid.2:28
6278 msgid "getpid, getppid - get process identification"
6279 msgstr "getpid, getppid - プロセス ID を得る"
6280
6281 #. type: Plain text
6282 #: build/C/man2/getpid.2:34
6283 msgid "B<pid_t getpid(void);>"
6284 msgstr "B<pid_t getpid(void);>"
6285
6286 #. type: Plain text
6287 #: build/C/man2/getpid.2:36
6288 msgid "B<pid_t getppid(void);>"
6289 msgstr "B<pid_t getppid(void);>"
6290
6291 #. type: Plain text
6292 #: build/C/man2/getpid.2:41
6293 msgid ""
6294 "B<getpid>()  returns the process ID of the calling process.  (This is often "
6295 "used by routines that generate unique temporary filenames.)"
6296 msgstr ""
6297 "B<getpid>()  は呼び出し元のプロセスのプロセス ID を返す。(テンポラリ用のファ"
6298 "イル名として 他と重ならない名前を生成するルーチンでしばしば使用される。)"
6299
6300 #. type: Plain text
6301 #: build/C/man2/getpid.2:44
6302 msgid ""
6303 "B<getppid>()  returns the process ID of the parent of the calling process."
6304 msgstr "B<getppid>()  は呼び出し元のプロセスの親プロセスのプロセス ID を返す。"
6305
6306 #. type: Plain text
6307 #: build/C/man2/getpid.2:48
6308 msgid "POSIX.1-2001, 4.3BSD, SVr4."
6309 msgstr "POSIX.1-2001, 4.3BSD, SVr4."
6310
6311 #.  The following program demonstrates this "feature":
6312 #.  #define _GNU_SOURCE
6313 #.  #include <sys/syscall.h>
6314 #.  #include <sys/wait.h>
6315 #.  #include <stdio.h>
6316 #.  #include <stdlib.h>
6317 #.  #include <unistd.h>
6318 #.  int
6319 #.  main(int argc, char *argv[])
6320 #.  {
6321 #.     /* The following statement fills the getpid() cache */
6322 #.     printf("parent PID = %ld
6323 #. ", (long) getpid());
6324 #.     if (syscall(SYS_fork) == 0) {
6325 #.         if (getpid() != syscall(SYS_getpid))
6326 #.             printf("child getpid() mismatch: getpid()=%ld; "
6327 #.                     "syscall(SYS_getpid)=%ld
6328 #. ",
6329 #.                     (long) getpid(), (long) syscall(SYS_getpid));
6330 #.         exit(EXIT_SUCCESS);
6331 #.     }
6332 #.     wait(NULL);
6333 #. }
6334 #. type: Plain text
6335 #: build/C/man2/getpid.2:100
6336 msgid ""
6337 "Since glibc version 2.3.4, the glibc wrapper function for B<getpid>()  "
6338 "caches PIDs, so as to avoid additional system calls when a process calls "
6339 "B<getpid>()  repeatedly.  Normally this caching is invisible, but its "
6340 "correct operation relies on support in the wrapper functions for B<fork>(2), "
6341 "B<vfork>(2), and B<clone>(2): if an application bypasses the glibc wrappers "
6342 "for these system calls by using B<syscall>(2), then a call to B<getpid>()  "
6343 "in the child will return the wrong value (to be precise: it will return the "
6344 "PID of the parent process).  See also B<clone>(2)  for discussion of a case "
6345 "where B<getpid>()  may return the wrong value even when invoking "
6346 "B<clone>(2)  via the glibc wrapper function."
6347 msgstr ""
6348 "glibc バージョン 2.3.4 以降では、 glibc の B<getpid>()  のラッパー関数は PID "
6349 "をキャッシュする。 これは、プロセスが繰り返し B<getpid>()  を呼び出した場合に"
6350 "その都度システムコールを呼ぶのを避けるためである。 通常は、このキャッシュ処理"
6351 "が見えることはないが、 キャッシュ処理が正しく働くためには B<fork>(2), "
6352 "B<vfork>(2), B<clone>(2)  のラッパー関数でのサポートが必要である。 アプリケー"
6353 "ションがこれらのシステムコールを呼び出す際に、 glibc のラッパー関数を経由せず"
6354 "に B<syscall>(2)  を使った場合には、子プロセスで B<getpid>()  を呼び出すと間"
6355 "違った値が返ることだろう (正確にいうと、親プロセスの PID が返される)。 "
6356 "B<clone>(2)  を glibc のラッパー関数経由で起動した際にも B<getpid>()  が間"
6357 "違った値を返す場合があり、これに関する議論は B<clone>(2)  も参照してほしい。"
6358
6359 #. type: Plain text
6360 #: build/C/man2/getpid.2:111
6361 msgid ""
6362 "B<clone>(2), B<fork>(2), B<kill>(2), B<exec>(3), B<mkstemp>(3), "
6363 "B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3), B<credentials>(7), "
6364 "B<pid_namespaces>(7)"
6365 msgstr ""
6366 "B<clone>(2), B<fork>(2), B<kill>(2), B<exec>(3), B<mkstemp>(3), "
6367 "B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3), B<credentials>(7), "
6368 "B<pid_namespaces>(7)"
6369
6370 #. type: TH
6371 #: build/C/man2/getpriority.2:45
6372 #, no-wrap
6373 msgid "GETPRIORITY"
6374 msgstr "GETPRIORITY"
6375
6376 #. type: Plain text
6377 #: build/C/man2/getpriority.2:48
6378 msgid "getpriority, setpriority - get/set program scheduling priority"
6379 msgstr ""
6380 "getpriority, setpriority - プログラムのスケジューリングの優先度を取得/設定す"
6381 "る"
6382
6383 #. type: Plain text
6384 #: build/C/man2/getpriority.2:50 build/C/man2/getrlimit.2:69
6385 #: build/C/man2/getrusage.2:44
6386 msgid "B<#include E<lt>sys/time.hE<gt>>"
6387 msgstr "B<#include E<lt>sys/time.hE<gt>>"
6388
6389 #. type: Plain text
6390 #: build/C/man2/getpriority.2:52 build/C/man2/getrlimit.2:71
6391 #: build/C/man2/getrusage.2:46
6392 msgid "B<#include E<lt>sys/resource.hE<gt>>"
6393 msgstr "B<#include E<lt>sys/resource.hE<gt>>"
6394
6395 #. type: Plain text
6396 #: build/C/man2/getpriority.2:54
6397 msgid "B<int getpriority(int >I<which>B<, id_t >I<who>B<);>"
6398 msgstr "B<int getpriority(int >I<which>B<, id_t >I<who>B<);>"
6399
6400 #. type: Plain text
6401 #: build/C/man2/getpriority.2:56
6402 msgid "B<int setpriority(int >I<which>B<, id_t >I<who>B<, int >I<prio>B<);>"
6403 msgstr "B<int setpriority(int >I<which>B<, id_t >I<who>B<, int >I<prio>B<);>"
6404
6405 #. type: Plain text
6406 #: build/C/man2/getpriority.2:67
6407 msgid ""
6408 "The scheduling priority of the process, process group, or user, as indicated "
6409 "by I<which> and I<who> is obtained with the B<getpriority>()  call and set "
6410 "with the B<setpriority>()  call."
6411 msgstr ""
6412 "システムコール B<getpriority>()  や B<setpriority>()  は、 I<which> と "
6413 "I<who> で指定されたプロセス、プロセスグループ、ユーザーの スケジューリング優"
6414 "先度 (scheduling priority) の 取得や設定をそれぞれ行う。"
6415
6416 #. type: Plain text
6417 #: build/C/man2/getpriority.2:94
6418 msgid ""
6419 "The value I<which> is one of B<PRIO_PROCESS>, B<PRIO_PGRP>, or B<PRIO_USER>, "
6420 "and I<who> is interpreted relative to I<which> (a process identifier for "
6421 "B<PRIO_PROCESS>, process group identifier for B<PRIO_PGRP>, and a user ID "
6422 "for B<PRIO_USER>).  A zero value for I<who> denotes (respectively) the "
6423 "calling process, the process group of the calling process, or the real user "
6424 "ID of the calling process.  I<Prio> is a value in the range -20 to 19 (but "
6425 "see the Notes below).  The default priority is 0; lower priorities cause "
6426 "more favorable scheduling."
6427 msgstr ""
6428 "I<which> の値は B<PRIO_PROCESS>, B<PRIO_PGRP>, B<PRIO_USER>, のどれか一つ"
6429 "で、 I<who> は I<which> に応じて解釈される (B<PRIO_PROCESS> だとプロセス識別"
6430 "子、 B<PRIO_PGRP> だとプロセスグループ識別子、 B<PRIO_USER> だと UID (ユーザ"
6431 "ID) と解釈される)。 I<who> がゼロならば、(それぞれ)呼び出したプロセス、 呼び"
6432 "出したプロセスのプロセスグループ、 呼び出したプロセスの実UID を意味する。 "
6433 "I<prio> は -20 から 19 の範囲の値で (但し以下の注意の項を参照のこと)、 デフォ"
6434 "ルトの優先度は 0 である; 小さな数字ほど、有利なスケジューリングとなる。"
6435
6436 #. type: Plain text
6437 #: build/C/man2/getpriority.2:104
6438 msgid ""
6439 "The B<getpriority>()  call returns the highest priority (lowest numerical "
6440 "value)  enjoyed by any of the specified processes.  The B<setpriority>()  "
6441 "call sets the priorities of all of the specified processes to the specified "
6442 "value.  Only the superuser may lower priorities."
6443 msgstr ""
6444 "B<getpriority>()  コールは指定したプロセスの中の最も高い優先度 (数値的には最"
6445 "小の値) を返す。 B<setpriority>()  コールは指定したプロセス全ての優先度を指定"
6446 "した値に設定する。 優先度を今より小さい値に設定できるのはスーパーユーザーだけ"
6447 "である。"
6448
6449 #. type: Plain text
6450 #: build/C/man2/getpriority.2:117
6451 msgid ""
6452 "Since B<getpriority>()  can legitimately return the value -1, it is "
6453 "necessary to clear the external variable I<errno> prior to the call, then "
6454 "check it afterward to determine if -1 is an error or a legitimate value.  "
6455 "The B<setpriority>()  call returns 0 if there is no error, or -1 if there is."
6456 msgstr ""
6457 "B<getpriority>()  は成功した場合にも -1 の値を返す可能性があるので、 呼び出し"
6458 "の前に外部変数の I<errno> をクリアし、呼び出しの後に返り値の -1 が正当な値か "
6459 "エラーかを判別する必要がある。 B<setpriority>()  コールはエラーがなければ 0 "
6460 "を返し、エラーがあれば -1 を返す。"
6461
6462 #. type: Plain text
6463 #: build/C/man2/getpriority.2:126
6464 msgid "I<which> was not one of B<PRIO_PROCESS>, B<PRIO_PGRP>, or B<PRIO_USER>."
6465 msgstr ""
6466 "I<which> が B<PRIO_PROCESS>, B<PRIO_PGRP>, B<PRIO_USER> のいずれでもない。"
6467
6468 #. type: Plain text
6469 #: build/C/man2/getpriority.2:133
6470 msgid "No process was located using the I<which> and I<who> values specified."
6471 msgstr "I<which> と I<who> で指定されたプロセスが存在しない。"
6472
6473 #. type: Plain text
6474 #: build/C/man2/getpriority.2:137
6475 msgid ""
6476 "In addition to the errors indicated above, B<setpriority>()  may fail if:"
6477 msgstr "上記のものに加えて B<setpriority>()  では以下のエラーがある:"
6478
6479 #. type: Plain text
6480 #: build/C/man2/getpriority.2:149
6481 msgid ""
6482 "The caller attempted to lower a process priority, but did not have the "
6483 "required privilege (on Linux: did not have the B<CAP_SYS_NICE> capability).  "
6484 "Since Linux 2.6.12, this error occurs only if the caller attempts to set a "
6485 "process priority outside the range of the B<RLIMIT_NICE> soft resource limit "
6486 "of the target process; see B<getrlimit>(2)  for details."
6487 msgstr ""
6488 "呼び出し元がプロセスの優先度を下げようとしたが、必要な特権を 持っていなかっ"
6489 "た (Linux の場合、 B<CAP_SYS_NICE> ケーパビリティがなかった)。 Linux 2.6.12 "
6490 "以降では、呼び出し元が、あるプロセスの優先度を、 変更対象のプロセスのリソー"
6491 "ス B<RLIMIT_NICE> のソフトリミットの範囲外に設定しようとした場合にのみ、 この"
6492 "エラーが発生する。詳細は B<getrlimit>(2)  を参照。"
6493
6494 #. type: Plain text
6495 #: build/C/man2/getpriority.2:157
6496 msgid ""
6497 "A process was located, but its effective user ID did not match either the "
6498 "effective or the real user ID of the caller, and was not privileged (on "
6499 "Linux: did not have the B<CAP_SYS_NICE> capability).  But see NOTES below."
6500 msgstr ""
6501 "プロセスは見つかったが、そのプロセスの実効 (effective) UID が 呼び出し元の実"
6502 "効UID にも実 (real) UID にも一致せず、 呼び出し元が特権も持っていなかった "
6503 "(Linux の場合、 B<CAP_SYS_NICE> ケーパビリティがなかった)。 以下の「注意」も"
6504 "参照のこと。"
6505
6506 #. type: Plain text
6507 #: build/C/man2/getpriority.2:160
6508 msgid ""
6509 "SVr4, 4.4BSD (these function calls first appeared in 4.2BSD), POSIX.1-2001."
6510 msgstr "SVr4, 4.4BSD (これらの関数は 4.2BSD で最初に登場した), POSIX.1-2001."
6511
6512 #. type: Plain text
6513 #: build/C/man2/getpriority.2:166
6514 msgid ""
6515 "A child created by B<fork>(2)  inherits its parent's nice value.  The nice "
6516 "value is preserved across B<execve>(2)."
6517 msgstr ""
6518 "B<fork>(2)  で作成された子プロセスは、 親プロセスの nice 値を継承する。 "
6519 "B<execve>(2)  の前後で nice 値は保存される。"
6520
6521 #. type: Plain text
6522 #: build/C/man2/getpriority.2:177
6523 msgid ""
6524 "The degree to which their relative nice value affects the scheduling of "
6525 "processes varies across UNIX systems, and, on Linux, across kernel "
6526 "versions.  Starting with kernel 2.6.23, Linux adopted an algorithm that "
6527 "causes relative differences in nice values to have a much stronger effect.  "
6528 "This causes very low nice values (+19) to truly provide little CPU to a "
6529 "process whenever there is any other higher priority load on the system, and "
6530 "makes high nice values (-20) deliver most of the CPU to applications that "
6531 "require it (e.g., some audio applications)."
6532 msgstr ""
6533 "相対的な nice 値の違いがプロセス間のスケジューリングにどの程度影響を与えるか "
6534 "は、UNIX システム間で異なり、Linux ではカーネルバージョンにより異なる。 "
6535 "Linux は、カーネル 2.6.23 以降で、nice 値の相対的な違いが、非常に強い影響を "
6536 "与えるアルゴリズムを採用した。このアルゴリズムでは、 他に優先度の高いものがシ"
6537 "ステムに存在する時には、 非常に低い nice 値 (+19) ではプロセスに本当にほとん"
6538 "ど CPU が割り当てられない。 また、高い nice 値 (-20) では CPU を必要とするア"
6539 "プリケーション (例えば オーディオアプリケーション) に CPU のほとんどが割り当"
6540 "てられる。"
6541
6542 #. type: Plain text
6543 #: build/C/man2/getpriority.2:192
6544 msgid ""
6545 "The details on the condition for B<EPERM> depend on the system.  The above "
6546 "description is what POSIX.1-2001 says, and seems to be followed on all System"
6547 "\\ V-like systems.  Linux kernels before 2.6.12 required the real or "
6548 "effective user ID of the caller to match the real user of the process I<who> "
6549 "(instead of its effective user ID).  Linux 2.6.12 and later require the "
6550 "effective user ID of the caller to match the real or effective user ID of "
6551 "the process I<who>.  All BSD-like systems (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, "
6552 "FreeBSD 4.3, OpenBSD-2.5, ...) behave in the same manner as Linux 2.6.12 and "
6553 "later."
6554 msgstr ""
6555 "B<EPERM> が発生する条件の詳細はシステムに依存する。 上記の説明は "
6556 "POSIX.1-2001 のものであり、全ての System\\ V 風システムは これに従っているよ"
6557 "うである。 2.6.12 より前の Linux カーネルでは、呼び出し元の実 UID または 実"
6558 "効 UID がプロセス I<who> の (実効 UID でなく)  実 UID に一致する必要がある。 "
6559 "Linux 2.6.12 以降では、呼び出し元の実行 UID がプロセス I<who> の実 UID か実"
6560 "効 UID のいずれかと一致する必要がある。 全ての BSD 風システム (SunOS 4.1.3, "
6561 "Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5等) は、 Linux 2.6.12 以降と同じ"
6562 "動作をする。"
6563
6564 #. type: Plain text
6565 #: build/C/man2/getpriority.2:197
6566 msgid ""
6567 "The actual priority range varies between kernel versions.  Linux before "
6568 "1.3.36 had -infinity..15.  Since kernel 1.3.43, Linux has the range "
6569 "-20..19.  On some other systems, the range of nice values is -20..20."
6570 msgstr ""
6571 "実際の優先度の範囲はカーネルのバージョンにより異なる。 バージョン 1.3.36 より"
6572 "前の Linux では -infinity(マイナス無限大)..15 である。 カーネル 1.3.43 以降"
6573 "の Linux では、 -20..19 である。 他のいくつかのシステムでは、この範囲が "
6574 "-20..20 である。"
6575
6576 #. type: Plain text
6577 #: build/C/man2/getpriority.2:210
6578 msgid ""
6579 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
6580 "portability.  (Indeed, I<E<lt>sys/resource.hE<gt>> defines the I<rusage> "
6581 "structure with fields of type I<struct timeval> defined in I<E<lt>sys/time."
6582 "hE<gt>>.)"
6583 msgstr ""
6584 "現在では I<E<lt>sys/time.hE<gt>> をインクルードする必要はないが、インクルード"
6585 "すれば移植性を高めることができる (実際には I<E<lt>sys/resource.hE<gt>> で "
6586 "I<rusage> 構造体が定義されているが、そのフィールドで使用されている I<struct "
6587 "timeval> 型は I<E<lt>sys/time.hE<gt>> で定義されている)。"
6588
6589 #. type: SS
6590 #: build/C/man2/getpriority.2:210 build/C/man2/seteuid.2:132
6591 #, no-wrap
6592 msgid "C library/kernel ABI differences"
6593 msgstr "C ライブラリとカーネル ABI の違い"
6594
6595 #. type: Plain text
6596 #: build/C/man2/getpriority.2:225
6597 msgid ""
6598 "Within the kernel, nice values are actually represented using the range "
6599 "40..1 (since negative numbers are error codes) and these are the values "
6600 "employed by the B<setpriority>()  and B<getpriority>()  system calls.  The "
6601 "glibc wrapper functions for these system calls handle the translations "
6602 "between the user-land and kernel representations of the nice value according "
6603 "to the formula I<unice\\ =\\ 20\\ -\\ knice>.  (Thus, the kernels 40..1 "
6604 "range corresponds to the range -20..19 as seen by user space.)"
6605 msgstr ""
6606 "カーネル内部では、nice 値は実際には 40 〜 1 の範囲を使って 表現されており (負"
6607 "の値はエラーコードとなるため)、こちらの値が システムコール B<setpriority>()  "
6608 "と B<getpriority>()  で使用されている。 glibc のこれらのシステムコールのラッ"
6609 "パー関数において、nice 値の ユーザ領域 (user-land) とカーネル表現の間の変換が"
6610 "行われる。 変換式は I<unice\\ =\\ 20\\ -\\ knice> となる。 (したがって、カー"
6611 "ネルの 40..1 の範囲はユーザー空間で見える -20..19 の範囲に対応する。)"
6612
6613 #. type: Plain text
6614 #: build/C/man2/getpriority.2:232
6615 msgid ""
6616 "According to POSIX, the nice value is a per-process setting.  However, under "
6617 "the current Linux/NPTL implementation of POSIX threads, the nice value is a "
6618 "per-thread attribute: different threads in the same process can have "
6619 "different nice values.  Portable applications should avoid relying on the "
6620 "Linux behavior, which may be made standards conformant in the future."
6621 msgstr ""
6622 "POSIX では nice 値はプロセス単位の設定となっている。 一方、 現在の POSIX ス"
6623 "レッドの Linux/NPTL 実装では、 nice 値はスレッド単位の属性である。 同じプロセ"
6624 "スの別々のスレッドが異なる nice 値を持つ場合がある。 移植性が必要なアプリケー"
6625 "ションではこの Linux の動作を前提するのは避けるべきである。 Linux の動作は将"
6626 "来標準に準拠した動作になるかもしれない。"
6627
6628 #. type: Plain text
6629 #: build/C/man2/getpriority.2:238
6630 msgid "B<nice>(1), B<renice>(1), B<fork>(2), B<capabilities>(7), B<sched>(7)"
6631 msgstr "B<nice>(1), B<renice>(1), B<fork>(2), B<capabilities>(7), B<sched>(7)"
6632
6633 #. type: Plain text
6634 #: build/C/man2/getpriority.2:241
6635 msgid ""
6636 "I<Documentation/scheduler/sched-nice-design.txt> in the Linux kernel source "
6637 "tree (since Linux 2.6.23)"
6638 msgstr ""
6639 "Linux カーネルのソースツリー内の I<Documentation/scheduler/sched-nice-design."
6640 "txt> (Linux 2.6.23 以降)"
6641
6642 #. type: TH
6643 #: build/C/man2/getresuid.2:28
6644 #, no-wrap
6645 msgid "GETRESUID"
6646 msgstr "GETRESUID"
6647
6648 #. type: Plain text
6649 #: build/C/man2/getresuid.2:31
6650 msgid "getresuid, getresgid - get real, effective and saved user/group IDs"
6651 msgstr ""
6652 "getresuid, getresgid - 実、実効、保存、ユーザー ID / グループ ID を取得する"
6653
6654 #. type: Plain text
6655 #: build/C/man2/getresuid.2:33 build/C/man2/setresuid.2:31
6656 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
6657 msgstr "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */"
6658
6659 #. type: Plain text
6660 #: build/C/man2/getresuid.2:37
6661 msgid ""
6662 "B<int getresuid(uid_t *>I<ruid>B<, uid_t *>I<euid>B<, uid_t *>I<suid>B<);>"
6663 msgstr ""
6664 "B<int getresuid(uid_t *>I<ruid>B<, uid_t *>I<euid>B<, uid_t *>I<suid>B<);>"
6665
6666 #. type: Plain text
6667 #: build/C/man2/getresuid.2:39
6668 msgid ""
6669 "B<int getresgid(gid_t *>I<rgid>B<, gid_t *>I<egid>B<, gid_t *>I<sgid>B<);>"
6670 msgstr ""
6671 "B<int getresgid(gid_t *>I<rgid>B<, gid_t *>I<egid>B<, gid_t *>I<sgid>B<);>"
6672
6673 #. type: Plain text
6674 #: build/C/man2/getresuid.2:50
6675 msgid ""
6676 "B<getresuid>()  returns the real UID, the effective UID, and the saved set-"
6677 "user-ID of the calling process, in the arguments I<ruid>, I<euid>, and "
6678 "I<suid>, respectively.  B<getresgid>()  performs the analogous task for the "
6679 "process's group IDs."
6680 msgstr ""
6681 "B<getresuid>()  は、呼び出したプロセスの実 (real) UID、実効 (effective) "
6682 "UID、 保存 (saved) set-user-ID (B<getresgid> の場合はグループ ID) を、 それぞ"
6683 "れ引き数 I<ruid>, I<euid>, I<suid> に格納して返す。 B<getresgid>()  は、呼び"
6684 "出したプロセスのグループ ID について同様の処理を行う。"
6685
6686 #. type: Plain text
6687 #: build/C/man2/getresuid.2:60
6688 msgid ""
6689 "One of the arguments specified an address outside the calling program's "
6690 "address space."
6691 msgstr ""
6692 "指定した引き数のどれかが、呼び出したプログラムのアドレス空間の外の アドレスで"
6693 "ある。"
6694
6695 #. type: Plain text
6696 #: build/C/man2/getresuid.2:62
6697 msgid "These system calls appeared on Linux starting with kernel 2.1.44."
6698 msgstr "これらのシステムコールはカーネル 2.1.44 から Linux に登場した。"
6699
6700 #. type: Plain text
6701 #: build/C/man2/getresuid.2:67
6702 msgid ""
6703 "The prototypes are given by glibc since version 2.3.2, provided "
6704 "B<_GNU_SOURCE> is defined."
6705 msgstr ""
6706 "プロトタイプ宣言は 2.3.2 以降の glibc では B<_GNU_SOURCE> を定義していると得"
6707 "られる。"
6708
6709 #. type: Plain text
6710 #: build/C/man2/getresuid.2:70 build/C/man2/setresuid.2:112
6711 msgid ""
6712 "These calls are nonstandard; they also appear on HP-UX and some of the BSDs."
6713 msgstr "これらのコールは非標準である。 HP-UX や BSD 系のいくつかにも存在する。"
6714
6715 #. type: Plain text
6716 #: build/C/man2/getresuid.2:86
6717 msgid ""
6718 "The original Linux B<getresuid>()  and B<getresgid>()  system calls "
6719 "supported only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
6720 "B<getresuid32>()  and B<getresgid32>(), supporting 32-bit IDs.  The glibc "
6721 "B<getresuid>()  and B<getresgid>()  wrapper functions transparently deal "
6722 "with the variations across kernel versions."
6723 msgstr ""
6724 "元々の Linux の B<getresuid>() と B<getresgid>() システムコールは\n"
6725 "16 ビットのグループ ID だけに対応していた。\n"
6726 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6727 "B<getresuid32>() と B<getresgid32>() が追加された。\n"
6728 "glibc の B<getresuid>() と B<getresgid>() のラッパー関数は\n"
6729 "カーネルバージョンによるこの違いを吸収している。"
6730
6731 #. type: Plain text
6732 #: build/C/man2/getresuid.2:92
6733 msgid ""
6734 "B<getuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
6735 "B<credentials>(7)"
6736 msgstr ""
6737 "B<getuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
6738 "B<credentials>(7)"
6739
6740 #. type: TH
6741 #: build/C/man2/getrlimit.2:64
6742 #, no-wrap
6743 msgid "GETRLIMIT"
6744 msgstr "GETRLIMIT"
6745
6746 #. type: TH
6747 #: build/C/man2/getrlimit.2:64
6748 #, no-wrap
6749 msgid "2015-01-22"
6750 msgstr "2015-01-22"
6751
6752 #. type: Plain text
6753 #: build/C/man2/getrlimit.2:67
6754 msgid "getrlimit, setrlimit, prlimit - get/set resource limits"
6755 msgstr "getrlimit, setrlimit, prlimit - 資源の制限を取得/設定する"
6756
6757 #. type: Plain text
6758 #: build/C/man2/getrlimit.2:73
6759 msgid "B<int getrlimit(int >I<resource>B<, struct rlimit *>I<rlim>B<);>"
6760 msgstr "B<int getrlimit(int >I<resource>B<, struct rlimit *>I<rlim>B<);>"
6761
6762 #. type: Plain text
6763 #: build/C/man2/getrlimit.2:75
6764 msgid "B<int setrlimit(int >I<resource>B<, const struct rlimit *>I<rlim>B<);>"
6765 msgstr "B<int setrlimit(int >I<resource>B<, const struct rlimit *>I<rlim>B<);>"
6766
6767 #. type: Plain text
6768 #: build/C/man2/getrlimit.2:78
6769 msgid ""
6770 "B<int prlimit(pid_t >I<pid>B<, int >I<resource>B<, const struct rlimit "
6771 "*>I<new_limit>B<,>"
6772 msgstr ""
6773 "B<int prlimit(pid_t >I<pid>B<, int >I<resource>B<, const struct rlimit "
6774 "*>I<new_limit>B<,>"
6775
6776 #. type: Plain text
6777 #: build/C/man2/getrlimit.2:80
6778 msgid "B< struct rlimit *>I<old_limit>B<);>"
6779 msgstr "B< struct rlimit *>I<old_limit>B<);>"
6780
6781 #. type: Plain text
6782 #: build/C/man2/getrlimit.2:88
6783 msgid "B<prlimit>(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64"
6784 msgstr "B<prlimit>(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64"
6785
6786 #. type: Plain text
6787 #: build/C/man2/getrlimit.2:97
6788 msgid ""
6789 "The B<getrlimit>()  and B<setrlimit>()  system calls get and set resource "
6790 "limits respectively.  Each resource has an associated soft and hard limit, "
6791 "as defined by the I<rlimit> structure:"
6792 msgstr ""
6793 "B<getrlimit>() と B<setrlimit>() はそれぞれ資源 (resource) の制限\n"
6794 "(limit) の設定と取得を行う。 各リソースには、それに対応するソフトリミッ\n"
6795 "トとハードリミットがあり、 I<rlimit> 構造体で定義される:"
6796
6797 #. type: Plain text
6798 #: build/C/man2/getrlimit.2:104
6799 #, no-wrap
6800 msgid ""
6801 "struct rlimit {\n"
6802 "    rlim_t rlim_cur;  /* Soft limit */\n"
6803 "    rlim_t rlim_max;  /* Hard limit (ceiling for rlim_cur) */\n"
6804 "};\n"
6805 msgstr ""
6806 "struct rlimit {\n"
6807 "    rlim_t rlim_cur;  /* ソフトリミット */\n"
6808 "    rlim_t rlim_max;  /* ハードリミット\n"
6809 "                         (rlim_cur より小さくない) */\n"
6810 "};\n"
6811
6812 #. type: Plain text
6813 #: build/C/man2/getrlimit.2:115
6814 msgid ""
6815 "The soft limit is the value that the kernel enforces for the corresponding "
6816 "resource.  The hard limit acts as a ceiling for the soft limit: an "
6817 "unprivileged process may set only its soft limit to a value in the range "
6818 "from 0 up to the hard limit, and (irreversibly) lower its hard limit.  A "
6819 "privileged process (under Linux: one with the B<CAP_SYS_RESOURCE> "
6820 "capability) may make arbitrary changes to either limit value."
6821 msgstr ""
6822 "ソフトリミットは、カーネルが対応するリソースに対して課す制限値である。 ハード"
6823 "リミットはソフトリミットの上限として働く。 特権を持たないプロセスは、ソフトリ"
6824 "ミットの値を 0 からハードリミットの範囲に設定することと、 ハードリミットを下"
6825 "げることのみができる (一度下げたハードリミットは上げられない)。 特権プロセス "
6826 "(Linux では B<CAP_SYS_RESOURCE> ケーパビリティ (capability) を持つプロセス) "
6827 "は ソフトリミットとハードリミットを自由に変更できる。"
6828
6829 #. type: Plain text
6830 #: build/C/man2/getrlimit.2:122
6831 msgid ""
6832 "The value B<RLIM_INFINITY> denotes no limit on a resource (both in the "
6833 "structure returned by B<getrlimit>()  and in the structure passed to "
6834 "B<setrlimit>())."
6835 msgstr ""
6836 "値 B<RLIM_INFINITY> はリソースに制限がないことを表す (この値は "
6837 "B<getrlimit>()  が返す構造体と B<setrlimit>()  に渡す構造体の両方で使用され"
6838 "る)。"
6839
6840 #. type: Plain text
6841 #: build/C/man2/getrlimit.2:126
6842 msgid "The I<resource> argument must be one of:"
6843 msgstr "I<resource> 引き数は次のいずれか 1 つである。"
6844
6845 #. type: TP
6846 #: build/C/man2/getrlimit.2:126
6847 #, no-wrap
6848 msgid "B<RLIMIT_AS>"
6849 msgstr "B<RLIMIT_AS>"
6850
6851 #.  since 2.0.27 / 2.1.12
6852 #. type: Plain text
6853 #: build/C/man2/getrlimit.2:146
6854 msgid ""
6855 "The maximum size of the process's virtual memory (address space) in bytes.  "
6856 "This limit affects calls to B<brk>(2), B<mmap>(2), and B<mremap>(2), which "
6857 "fail with the error B<ENOMEM> upon exceeding this limit.  Also automatic "
6858 "stack expansion will fail (and generate a B<SIGSEGV> that kills the process "
6859 "if no alternate stack has been made available via B<sigaltstack>(2)).  Since "
6860 "the value is a I<long>, on machines with a 32-bit I<long> either this limit "
6861 "is at most 2 GiB, or this resource is unlimited."
6862 msgstr ""
6863 "プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。 この制限は "
6864 "B<brk>(2), B<mmap>(2), B<mremap>(2)  の呼び出しに影響し、この制限を超えた場合"
6865 "は エラー B<ENOMEM> で失敗する。 また自動的なスタック拡張にも失敗する (さら"
6866 "に B<sigaltstack>(2)  を使った代替スタックを利用可能にしていなかった場合に"
6867 "は、 B<SIGSEGV> を生成してそのプロセスを kill する)。 この値は I<long> 型なの"
6868 "で、32 ビットの I<long> 型を持つマシンでは、 この制限は最大で 2 GiB になる"
6869 "か、この資源が無制限になる。"
6870
6871 #. type: TP
6872 #: build/C/man2/getrlimit.2:146
6873 #, no-wrap
6874 msgid "B<RLIMIT_CORE>"
6875 msgstr "B<RLIMIT_CORE>"
6876
6877 #. type: Plain text
6878 #: build/C/man2/getrlimit.2:154
6879 msgid ""
6880 "Maximum size of a I<core> file (see B<core>(5)).  When 0 no core dump files "
6881 "are created.  When nonzero, larger dumps are truncated to this size."
6882 msgstr ""
6883 "I<core> ファイルの最大サイズ (B<core>(5) 参照)。 0 の場合、core ファイルは生"
6884 "成されない。 0 以外の場合、このサイズより大きいダンプは切り詰められる。"
6885
6886 #. type: TP
6887 #: build/C/man2/getrlimit.2:154
6888 #, no-wrap
6889 msgid "B<RLIMIT_CPU>"
6890 msgstr "B<RLIMIT_CPU>"
6891
6892 #. type: Plain text
6893 #: build/C/man2/getrlimit.2:174
6894 msgid ""
6895 "CPU time limit in seconds.  When the process reaches the soft limit, it is "
6896 "sent a B<SIGXCPU> signal.  The default action for this signal is to "
6897 "terminate the process.  However, the signal can be caught, and the handler "
6898 "can return control to the main program.  If the process continues to consume "
6899 "CPU time, it will be sent B<SIGXCPU> once per second until the hard limit is "
6900 "reached, at which time it is sent B<SIGKILL>.  (This latter point describes "
6901 "Linux behavior.  Implementations vary in how they treat processes which "
6902 "continue to consume CPU time after reaching the soft limit.  Portable "
6903 "applications that need to catch this signal should perform an orderly "
6904 "termination upon first receipt of B<SIGXCPU>.)"
6905 msgstr ""
6906 "CPU 時間の上限 (秒数)。プロセスがソフトリミットに達した場合に、\n"
6907 "B<SIGXCPU> シグナルを送る。このシグナルに対するデフォルトの動作は、\n"
6908 "プロセスの終了である。ただし、シグナルをキャッチして、ハンドラがメイン\n"
6909 "プログラムに制御を返すこともできる。プロセスが CPU 時間を使い続けた\n"
6910 "場合は、ハードリミットに達するまで 1 秒毎にプロセスに B<SIGXCPU> を送り、\n"
6911 "ハードリミットに達すると B<SIGKILL> を送る。\n"
6912 "(ソフトリミットを超過したときの動作は、 Linux における動作である。ソフ\n"
6913 "トリミットを超えて CPU 時間を使い続けるプロセスの扱い方についての実装は\n"
6914 "変化してきている。 このシグナルをキャッチする必要のある 移植性を考えた\n"
6915 "アプリケーションでは、 最初に B<SIGXCPU> を受け取った時点で正しく終了\n"
6916 "すべきである。)"
6917
6918 #. type: TP
6919 #: build/C/man2/getrlimit.2:174
6920 #, no-wrap
6921 msgid "B<RLIMIT_DATA>"
6922 msgstr "B<RLIMIT_DATA>"
6923
6924 #. type: Plain text
6925 #: build/C/man2/getrlimit.2:185
6926 msgid ""
6927 "The maximum size of the process's data segment (initialized data, "
6928 "uninitialized data, and heap).  This limit affects calls to B<brk>(2)  and "
6929 "B<sbrk>(2), which fail with the error B<ENOMEM> upon encountering the soft "
6930 "limit of this resource."
6931 msgstr ""
6932 "プロセスのデータセグメント (初期化されたデータ・初期化されていないデータ・"
6933 "ヒープ) の最大値。 このリミットは B<brk>(2)  と B<sbrk>(2)  の呼び出しに影響"
6934 "する。 これらの関数は、このリソースのソフトリミットに達すると、 エラー "
6935 "B<ENOMEM> で失敗する。"
6936
6937 #. type: TP
6938 #: build/C/man2/getrlimit.2:185
6939 #, no-wrap
6940 msgid "B<RLIMIT_FSIZE>"
6941 msgstr "B<RLIMIT_FSIZE>"
6942
6943 #. type: Plain text
6944 #: build/C/man2/getrlimit.2:197
6945 msgid ""
6946 "The maximum size of files that the process may create.  Attempts to extend a "
6947 "file beyond this limit result in delivery of a B<SIGXFSZ> signal.  By "
6948 "default, this signal terminates a process, but a process can catch this "
6949 "signal instead, in which case the relevant system call (e.g., B<write>(2), "
6950 "B<truncate>(2))  fails with the error B<EFBIG>."
6951 msgstr ""
6952 "プロセスが作成できるファイルサイズの最大値。 このサイズを超えてファイルを拡張"
6953 "すると、 B<SIGXFSZ> シグナルを送る。 デフォルトでは、このシグナルはプロセスを"
6954 "終了する。 プロセスをキャッチすることもできるが、 関連するシステムコール "
6955 "(B<write>(2), B<truncate>(2)  など) はエラー B<EFBIG> で失敗する。"
6956
6957 #. type: TP
6958 #: build/C/man2/getrlimit.2:197
6959 #, no-wrap
6960 msgid "B<RLIMIT_LOCKS> (Early Linux 2.4 only)"
6961 msgstr "B<RLIMIT_LOCKS> (初期の Linux 2.4 のみ)"
6962
6963 #.  to be precise: Linux 2.4.0-test9; no longer in 2.4.25 / 2.5.65
6964 #. type: Plain text
6965 #: build/C/man2/getrlimit.2:205
6966 msgid ""
6967 "A limit on the combined number of B<flock>(2)  locks and B<fcntl>(2)  leases "
6968 "that this process may establish."
6969 msgstr ""
6970 "このプロセスが実行できる B<flock>(2)  ロック数と B<fcntl>(2)  リース数の合計"
6971 "値を制限する。"
6972
6973 #. type: TP
6974 #: build/C/man2/getrlimit.2:205
6975 #, no-wrap
6976 msgid "B<RLIMIT_MEMLOCK>"
6977 msgstr "B<RLIMIT_MEMLOCK>"
6978
6979 #. type: Plain text
6980 #: build/C/man2/getrlimit.2:243
6981 msgid ""
6982 "The maximum number of bytes of memory that may be locked into RAM.  In "
6983 "effect this limit is rounded down to the nearest multiple of the system page "
6984 "size.  This limit affects B<mlock>(2)  and B<mlockall>(2)  and the "
6985 "B<mmap>(2)  B<MAP_LOCKED> operation.  Since Linux 2.6.9 it also affects the "
6986 "B<shmctl>(2)  B<SHM_LOCK> operation, where it sets a maximum on the total "
6987 "bytes in shared memory segments (see B<shmget>(2))  that may be locked by "
6988 "the real user ID of the calling process.  The B<shmctl>(2)  B<SHM_LOCK> "
6989 "locks are accounted for separately from the per-process memory locks "
6990 "established by B<mlock>(2), B<mlockall>(2), and B<mmap>(2)  B<MAP_LOCKED>; a "
6991 "process can lock bytes up to this limit in each of these two categories.  In "
6992 "Linux kernels before 2.6.9, this limit controlled the amount of memory that "
6993 "could be locked by a privileged process.  Since Linux 2.6.9, no limits are "
6994 "placed on the amount of memory that a privileged process may lock, and this "
6995 "limit instead governs the amount of memory that an unprivileged process may "
6996 "lock."
6997 msgstr ""
6998 "RAM 内にロックできるメモリの最大バイト数。 実際には、この制限はシステムページ"
6999 "サイズの最も近い倍数に 切り捨てて丸められる。 この制限は B<mlock>(2), "
7000 "B<mlockall>(2), B<mmap>(2)  の B<MAP_LOCKED> 操作に影響する。 Linux 2.6.9 以"
7001 "降では B<shmctl>(2)  B<SHM_LOCK> 操作にも影響する。 この操作は呼び出し元プロ"
7002 "セスの実 (real) ユーザー ID にロックされる 共有メモリセグメント "
7003 "(B<shmget>(2)  を参照) の合計バイト数の最大値を設定する。 B<shmctl>(2)  "
7004 "B<SHM_LOCK> によるロックは、 B<mlock>(2), B<mlockall>(2), B<mmap>(2)  の "
7005 "B<MAP_LOCKED> によって確立されるプロセス毎のメモリロックとは分けて数える。 1 "
7006 "つのプロセスはこの制限までのバイトをロックできる。 この制限には 2 つの種類が"
7007 "ある。 2.6.9 より前の Linux カーネル では、 この制限は特権プロセスによって"
7008 "ロックされるメモリの合計を制御していた。 Linux 2.6.9 以降では、特権プロセスが"
7009 "ロックするメモリの合計に制限はなく、 代わりにこの制限は非特権プロセスがロック"
7010 "するメモリの合計に 適用されるようになった。"
7011
7012 #. type: TP
7013 #: build/C/man2/getrlimit.2:243
7014 #, no-wrap
7015 msgid "B<RLIMIT_MSGQUEUE> (since Linux 2.6.8)"
7016 msgstr "B<RLIMIT_MSGQUEUE> (Linux 2.6.8 以降)"
7017
7018 #. type: Plain text
7019 #: build/C/man2/getrlimit.2:251
7020 msgid ""
7021 "Specifies the limit on the number of bytes that can be allocated for POSIX "
7022 "message queues for the real user ID of the calling process.  This limit is "
7023 "enforced for B<mq_open>(3).  Each message queue that the user creates counts "
7024 "(until it is removed)  against this limit according to the formula:"
7025 msgstr ""
7026 "呼び出し元プロセスの実ユーザー ID に対して、 POSIX メッセージキューのために確"
7027 "保できるバイト数の制限を指定する。 この制限は B<mq_open>(3)  に対して適用され"
7028 "る。 ユーザが作成した各々のメッセージキューのバイト数は 以下の式により計算さ"
7029 "れ、(そのキューが削除されるまでの間)  この制限の計算対象に含められる。"
7030
7031 #. type: Plain text
7032 #: build/C/man2/getrlimit.2:260
7033 #, no-wrap
7034 msgid ""
7035 "    Since Linux 3.5:\n"
7036 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg) +\n"
7037 "                min(attr.mq_maxmsg, MQ_PRIO_MAX) *\n"
7038 "                      sizeof(struct posix_msg_tree_node)+\n"
7039 "                                /* For overhead */\n"
7040 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7041 "                                /* For message data */\n"
7042 msgstr ""
7043 "    Linux 3.5 以降:\n"
7044 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg) +\n"
7045 "                min(attr.mq_maxmsg, MQ_PRIO_MAX) *\n"
7046 "                      sizeof(struct posix_msg_tree_node)+\n"
7047 "                                /* オーバーヘッド分 */\n"
7048 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7049 "                                /* メッセージデータ分 */\n"
7050
7051 #. type: Plain text
7052 #: build/C/man2/getrlimit.2:266
7053 #, no-wrap
7054 msgid ""
7055 "    Linux 3.4 and earlier:\n"
7056 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +\n"
7057 "                                /* For overhead */\n"
7058 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7059 "                                /* For message data */\n"
7060 msgstr ""
7061 "    Linux 3.4 以前:\n"
7062 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +\n"
7063 "                                /* オーバーヘッド分 */\n"
7064 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7065 "                                /* メッセージデータ分 */\n"
7066
7067 #. type: Plain text
7068 #: build/C/man2/getrlimit.2:279
7069 msgid ""
7070 "where I<attr> is the I<mq_attr> structure specified as the fourth argument "
7071 "to B<mq_open>(3), and the I<msg_msg> and I<posix_msg_tree_node> structures "
7072 "are kernel-internal structures."
7073 msgstr ""
7074 "ここで I<attr> は I<mq_attr> 構造体であり、 B<mq_open>(3)  の第 4 引き数とし"
7075 "て指定される。 また、構造体 I<msg_msg> と I<posix_msg_tree_node> はカーネル内"
7076 "部の構造体である。"
7077
7078 #. type: Plain text
7079 #: build/C/man2/getrlimit.2:285
7080 msgid ""
7081 "The \"overhead\" addend in the formula accounts for overhead bytes required "
7082 "by the implementation and ensures that the user cannot create an unlimited "
7083 "number of zero-length messages (such messages nevertheless each consume some "
7084 "system memory for bookkeeping overhead)."
7085 msgstr ""
7086 "上記の式での「オーバーヘッド」加算分は、実装において必要となるオーバーヘッド"
7087 "を考慮したものである。 また、これにより、ユーザーが長さ 0 のメッセージを無制"
7088 "限に作れないことが保証される (このようなメッセージであっても、 記録のための"
7089 "オーバーヘッドでシステムメモリを消費する)。"
7090
7091 #. type: TP
7092 #: build/C/man2/getrlimit.2:285
7093 #, no-wrap
7094 msgid "B<RLIMIT_NICE> (since Linux 2.6.12, but see BUGS below)"
7095 msgstr "B<RLIMIT_NICE> (Linux 2.6.12 以降, 下記の「バグ」の節も参照)"
7096
7097 #. type: Plain text
7098 #: build/C/man2/getrlimit.2:298
7099 msgid ""
7100 "Specifies a ceiling to which the process's nice value can be raised using "
7101 "B<setpriority>(2)  or B<nice>(2).  The actual ceiling for the nice value is "
7102 "calculated as I<20\\ -\\ rlim_cur>.  (This strangeness occurs because "
7103 "negative numbers cannot be specified as resource limit values, since they "
7104 "typically have special meanings.  For example, B<RLIM_INFINITY> typically is "
7105 "the same as -1.)"
7106 msgstr ""
7107 "B<setpriority>(2)  や B<nice>(2)  を使って引き上げられるプロセスの nice 値の"
7108 "上限を指定する。 nice 値の実際の上限は I<20\\ -\\ rlim_cur> で計算される (こ"
7109 "のような変な状況は、リソース制限値として負の数を指定できないため 発生する。通"
7110 "常、負の値は特別な意味を持っているからである。 例えば、通常は "
7111 "B<RLIM_INFINITY> の値は -1 である)。"
7112
7113 #. type: TP
7114 #: build/C/man2/getrlimit.2:298
7115 #, no-wrap
7116 msgid "B<RLIMIT_NOFILE>"
7117 msgstr "B<RLIMIT_NOFILE>"
7118
7119 #. type: Plain text
7120 #: build/C/man2/getrlimit.2:312
7121 msgid ""
7122 "Specifies a value one greater than the maximum file descriptor number that "
7123 "can be opened by this process.  Attempts (B<open>(2), B<pipe>(2), B<dup>(2), "
7124 "etc.)  to exceed this limit yield the error B<EMFILE>.  (Historically, this "
7125 "limit was named B<RLIMIT_OFILE> on BSD.)"
7126 msgstr ""
7127 "このプロセスがオープンできるファイルディスクリプタ数の最大値より 1 大きい値を"
7128 "指定する。 (B<open>(2), B<pipe>(2), B<dup>(2)  などにより) この上限を超えよう"
7129 "とした場合、エラー B<EMFILE> が発生する (歴史的に、BSD ではこの上限は "
7130 "B<RLIMIT_OFILE> という名前となっている)。"
7131
7132 #. type: TP
7133 #: build/C/man2/getrlimit.2:312
7134 #, no-wrap
7135 msgid "B<RLIMIT_NPROC>"
7136 msgstr "B<RLIMIT_NPROC>"
7137
7138 #. type: Plain text
7139 #: build/C/man2/getrlimit.2:325
7140 msgid ""
7141 "The maximum number of processes (or, more precisely on Linux, threads)  that "
7142 "can be created for the real user ID of the calling process.  Upon "
7143 "encountering this limit, B<fork>(2)  fails with the error B<EAGAIN>.  This "
7144 "limit is not enforced for processes that have either the B<CAP_SYS_ADMIN> or "
7145 "the B<CAP_SYS_RESOURCE> capability."
7146 msgstr ""
7147 "呼び出したプロセスの実ユーザー ID で作成できる最大プロセス数 (より正確には "
7148 "Linux ではスレッド数)。 この上限に達すると、 B<fork>(2)  はエラー B<EAGAIN> "
7149 "で失敗する。 この上限値は、ケーパビリティ B<CAP_SYS_ADMIN> か "
7150 "B<CAP_SYS_RESOURCE> のどちらかを持つプロセスには適用されない。"
7151
7152 #. type: TP
7153 #: build/C/man2/getrlimit.2:325
7154 #, no-wrap
7155 msgid "B<RLIMIT_RSS>"
7156 msgstr "B<RLIMIT_RSS>"
7157
7158 #.  As at kernel 2.6.12, this limit still does nothing in 2.6 though
7159 #.  talk of making it do something has surfaced from time to time in LKML
7160 #.        -- MTK, Jul 05
7161 #. type: Plain text
7162 #: build/C/man2/getrlimit.2:337
7163 msgid ""
7164 "Specifies the limit (in pages) of the process's resident set (the number of "
7165 "virtual pages resident in RAM).  This limit has effect only in Linux 2.4.x, "
7166 "x E<lt> 30, and there affects only calls to B<madvise>(2)  specifying "
7167 "B<MADV_WILLNEED>."
7168 msgstr ""
7169 "プロセスの resident set (RAM 上に存在する仮想ページの数) の 上限を (ページ数"
7170 "で) 指定する。 この制限は 2.4.30 より前でしか影響がなく、 B<madvise>(2)  に "
7171 "B<MADV_WILLNEED> を指定した関数コールにしか影響しない。"
7172
7173 #. type: TP
7174 #: build/C/man2/getrlimit.2:337
7175 #, no-wrap
7176 msgid "B<RLIMIT_RTPRIO> (since Linux 2.6.12, but see BUGS)"
7177 msgstr "B<RLIMIT_RTPRIO> (Linux 2.6.12 以降, バグの節も参照)"
7178
7179 #. type: Plain text
7180 #: build/C/man2/getrlimit.2:344
7181 msgid ""
7182 "Specifies a ceiling on the real-time priority that may be set for this "
7183 "process using B<sched_setscheduler>(2)  and B<sched_setparam>(2)."
7184 msgstr ""
7185 "B<sched_setscheduler>(2)  や B<sched_setparam>(2)  を使って設定できる、そのプ"
7186 "ロセスのリアルタイム優先度の上限を指定する。"
7187
7188 #. type: TP
7189 #: build/C/man2/getrlimit.2:344
7190 #, no-wrap
7191 msgid "B<RLIMIT_RTTIME> (since Linux 2.6.25)"
7192 msgstr "B<RLIMIT_RTTIME> (Linux 2.6.25 以降)"
7193
7194 #. type: Plain text
7195 #: build/C/man2/getrlimit.2:356
7196 msgid ""
7197 "Specifies a limit (in microseconds)  on the amount of CPU time that a "
7198 "process scheduled under a real-time scheduling policy may consume without "
7199 "making a blocking system call.  For the purpose of this limit, each time a "
7200 "process makes a blocking system call, the count of its consumed CPU time is "
7201 "reset to zero.  The CPU time count is not reset if the process continues "
7202 "trying to use the CPU but is preempted, its time slice expires, or it calls "
7203 "B<sched_yield>(2)."
7204 msgstr ""
7205 "リアルタイムスケジューリング方針でスケジューリングされるプロセスが ブロッキン"
7206 "グ型のシステムコールを呼び出さずに消費することのできる CPU 時間の合計について"
7207 "の上限を (マイクロ秒単位で) 指定する。 この上限の目的のため、プロセスがブロッ"
7208 "キング型のシステムコールを 呼び出す度に、消費された CPU 時間のカウントは 0 に"
7209 "リセットされる。 プロセスが CPU を使い続けようとしたが他のプロセスに置き換え"
7210 "られた (preempted) 場合や、そのプロセスのタイムスライスが満了した場合、 その"
7211 "プロセスが B<sched_yield>(2)  を呼び出した場合は、CPU 時間のカウントはリセッ"
7212 "トされない。"
7213
7214 #. type: Plain text
7215 #: build/C/man2/getrlimit.2:367
7216 msgid ""
7217 "Upon reaching the soft limit, the process is sent a B<SIGXCPU> signal.  If "
7218 "the process catches or ignores this signal and continues consuming CPU time, "
7219 "then B<SIGXCPU> will be generated once each second until the hard limit is "
7220 "reached, at which point the process is sent a B<SIGKILL> signal."
7221 msgstr ""
7222 "ソフトリミットに達すると、そのプロセスに B<SIGXCPU> シグナルが送られる。その"
7223 "プロセスがこのシグナルを捕捉するか 無視して、CPU 時間を消費し続けた場合に"
7224 "は、 ハードリミットに達するまで 1 秒に 1 回 B<SIGXCPU> が生成され続けることに"
7225 "なる。 ハードリミットに達した時点で、そのプロセスには B<SIGKILL> シグナルが送"
7226 "られる。"
7227
7228 #. type: Plain text
7229 #: build/C/man2/getrlimit.2:370
7230 msgid ""
7231 "The intended use of this limit is to stop a runaway real-time process from "
7232 "locking up the system."
7233 msgstr ""
7234 "この上限を意図的に使用するのは、暴走したリアルタイムプロセスを 停止して、シス"
7235 "テムが動かなくなるのを避ける場合である。"
7236
7237 #. type: TP
7238 #: build/C/man2/getrlimit.2:370
7239 #, no-wrap
7240 msgid "B<RLIMIT_SIGPENDING> (since Linux 2.6.8)"
7241 msgstr "B<RLIMIT_SIGPENDING> (Linux 2.6.8 以降)"
7242
7243 #.  This replaces the /proc/sys/kernel/rtsig-max system-wide limit
7244 #.  that was present in kernels <= 2.6.7.  MTK Dec 04
7245 #. type: Plain text
7246 #: build/C/man2/getrlimit.2:384
7247 msgid ""
7248 "Specifies the limit on the number of signals that may be queued for the real "
7249 "user ID of the calling process.  Both standard and real-time signals are "
7250 "counted for the purpose of checking this limit.  However, the limit is "
7251 "enforced only for B<sigqueue>(3); it is always possible to use B<kill>(2)  "
7252 "to queue one instance of any of the signals that are not already queued to "
7253 "the process."
7254 msgstr ""
7255 "呼び出し元プロセスの実ユーザー ID に対して キューに入れられるシグナルの\n"
7256 "数の制限を指定する。この制限をチェックするため、標準シグナルとリアルタ\n"
7257 "イムシグナルの両方がカウントされる。しかし、この制限は B<sigqueue>(3)\n"
7258 "に対してのみ適用され、 B<kill>(2) 使うことで、そのプロセスに対してま\n"
7259 "だキューに入れられていない シグナルのインスタンスをキューに入れることが\n"
7260 "できる。"
7261
7262 #. type: TP
7263 #: build/C/man2/getrlimit.2:384
7264 #, no-wrap
7265 msgid "B<RLIMIT_STACK>"
7266 msgstr "B<RLIMIT_STACK>"
7267
7268 #. type: Plain text
7269 #: build/C/man2/getrlimit.2:392
7270 msgid ""
7271 "The maximum size of the process stack, in bytes.  Upon reaching this limit, "
7272 "a B<SIGSEGV> signal is generated.  To handle this signal, a process must "
7273 "employ an alternate signal stack (B<sigaltstack>(2))."
7274 msgstr ""
7275 "プロセススタックの最大サイズをバイト単位で指定する。 この上限に達すると、 "
7276 "B<SIGSEGV> シグナルが生成される。 このシグナルを扱うためには、 プロセスは代り"
7277 "のシグナルスタック (B<sigaltstack>(2))  を使用しなければならない。"
7278
7279 #. type: Plain text
7280 #: build/C/man2/getrlimit.2:397
7281 msgid ""
7282 "Since Linux 2.6.23, this limit also determines the amount of space used for "
7283 "the process's command-line arguments and environment variables; for details, "
7284 "see B<execve>(2)."
7285 msgstr ""
7286 "Linux 2.6.23 以降では、この制限はプロセスのコマンドライン引き数と環境変数 に"
7287 "使用される空間の合計サイズの上限の決定にも使用される。詳細については "
7288 "B<execve>(2)  を参照。"
7289
7290 #. type: SS
7291 #: build/C/man2/getrlimit.2:397
7292 #, no-wrap
7293 msgid "prlimit()"
7294 msgstr "prlimit()"
7295
7296 #.  commit c022a0acad534fd5f5d5f17280f6d4d135e74e81
7297 #.  Author: Jiri Slaby <jslaby@suse.cz>
7298 #.  Date:   Tue May 4 18:03:50 2010 +0200
7299 #.      rlimits: implement prlimit64 syscall
7300 #.  commit 6a1d5e2c85d06da35cdfd93f1a27675bfdc3ad8c
7301 #.  Author: Jiri Slaby <jslaby@suse.cz>
7302 #.  Date:   Wed Mar 24 17:06:58 2010 +0100
7303 #.      rlimits: add rlimit64 structure
7304 #. type: Plain text
7305 #: build/C/man2/getrlimit.2:417
7306 msgid ""
7307 "The Linux-specific B<prlimit>()  system call combines and extends the "
7308 "functionality of B<setrlimit>()  and B<getrlimit>().  It can be used to both "
7309 "set and get the resource limits of an arbitrary process."
7310 msgstr ""
7311 "Linux 固有の B<prlimit>() システムコールは、 B<setrlimit>() と B<getrlimit> "
7312 "の機能を合わせて拡張したものである。 このシステムコールを使って、任意のプロセ"
7313 "スのリソース上限の設定と取得を行うことができる。"
7314
7315 #. type: Plain text
7316 #: build/C/man2/getrlimit.2:424
7317 msgid ""
7318 "The I<resource> argument has the same meaning as for B<setrlimit>()  and "
7319 "B<getrlimit>()."
7320 msgstr ""
7321 "I<resource> 引き数は B<setrlimit>() や B<getrlimit>() と同じ意味である。"
7322
7323 #. type: Plain text
7324 #: build/C/man2/getrlimit.2:442
7325 msgid ""
7326 "If the I<new_limit> argument is a not NULL, then the I<rlimit> structure to "
7327 "which it points is used to set new values for the soft and hard limits for "
7328 "I<resource>.  If the I<old_limit> argument is a not NULL, then a successful "
7329 "call to B<prlimit>()  places the previous soft and hard limits for "
7330 "I<resource> in the I<rlimit> structure pointed to by I<old_limit>."
7331 msgstr ""
7332 "I<new_limit> 引き数が NULL 以外の場合、 I<new_limit> が指す I<rlimit> 構造体"
7333 "を使って I<resource> のソフトリミットとハードリミットの新しい値が設定され"
7334 "る。 I<old_limit> 引き数が NULL 以外の場合、 B<prlimit>() の呼び出しが成功す"
7335 "ると、 I<resource> の直前のソフトリミットとハードリミットが I<old_limit> が指"
7336 "す I<rlimit> 構造体に格納される。"
7337
7338 #.  FIXME . this permission check is strange
7339 #.  Asked about this on LKML, 7 Nov 2010
7340 #.      "Inconsistent credential checking in prlimit() syscall"
7341 #. type: Plain text
7342 #: build/C/man2/getrlimit.2:461
7343 msgid ""
7344 "The I<pid> argument specifies the ID of the process on which the call is to "
7345 "operate.  If I<pid> is 0, then the call applies to the calling process.  To "
7346 "set or get the resources of a process other than itself, the caller must "
7347 "have the B<CAP_SYS_RESOURCE> capability, or the real, effective, and saved "
7348 "set user IDs of the target process must match the real user ID of the caller "
7349 "I<and> the real, effective, and saved set group IDs of the target process "
7350 "must match the real group ID of the caller."
7351 msgstr ""
7352 "I<pid> 引き数は呼び出しの操作対象となるプロセス ID を指定する。 I<pid> が 0 "
7353 "の場合、呼び出しは呼び出し元プロセスに対して適用される。 自分以外のプロセスの"
7354 "リソースの設定と取得を行うためには、 呼び出し元プロセスが "
7355 "B<CAP_SYS_RESOURCE> ケーパビリティを持っているか、 対象となるプロセスの実ユー"
7356 "ザ ID、 実効ユーザ ID、 保存 set-user-ID が呼び出し元プロセスの実ユーザ ID と"
7357 "一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存 "
7358 "set-group-ID が呼び出し元プロセスの実グループ ID と一致していなければならな"
7359 "い。"
7360
7361 #. type: Plain text
7362 #: build/C/man2/getrlimit.2:466
7363 msgid ""
7364 "On success, these system calls return 0.  On error, -1 is returned, and "
7365 "I<errno> is set appropriately."
7366 msgstr ""
7367 "成功した場合、これらのシステムコールは 0 を返す。\n"
7368 "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
7369
7370 #. type: Plain text
7371 #: build/C/man2/getrlimit.2:471
7372 msgid ""
7373 "A pointer argument points to a location outside the accessible address space."
7374 msgstr "場所を指すポインタ引き数がアクセス可能なアドレス空間外を指している。"
7375
7376 #. type: Plain text
7377 #: build/C/man2/getrlimit.2:483
7378 msgid ""
7379 "The value specified in I<resource> is not valid; or, for B<setrlimit>()  or "
7380 "B<prlimit>(): I<rlim-E<gt>rlim_cur> was greater than I<rlim-E<gt>rlim_max>."
7381 msgstr ""
7382 "I<resource> で指定された値が有効でない。\n"
7383 "または、 B<setrlimit>() や B<prlimit>() で、\n"
7384 "I<rlim-E<gt>rlim_cur> が I<rlim-E<gt>rlim_max> よりも大きかった。"
7385
7386 #. type: Plain text
7387 #: build/C/man2/getrlimit.2:488
7388 msgid ""
7389 "An unprivileged process tried to raise the hard limit; the "
7390 "B<CAP_SYS_RESOURCE> capability is required to do this."
7391 msgstr ""
7392 "非特権プロセスがハードリミットを増やそうとした。 この操作には "
7393 "B<CAP_SYS_RESOURCE> ケーパビリティが必要である。"
7394
7395 #. type: Plain text
7396 #: build/C/man2/getrlimit.2:496
7397 msgid ""
7398 "The caller tried to increase the hard B<RLIMIT_NOFILE> limit above the "
7399 "maximum defined by I</proc/sys/fs/nr_open> (see B<proc>(5))"
7400 msgstr ""
7401 "呼び出し元がハードリミット B<RLIMIT_NOFILE> を I</proc/sys/fs/nr_open> "
7402 "(B<proc>(5) 参照) で定義される最大値より大きな値に増やそうとした。"
7403
7404 #. type: Plain text
7405 #: build/C/man2/getrlimit.2:502
7406 msgid ""
7407 "(B<prlimit>())  The calling process did not have permission to set limits "
7408 "for the process specified by I<pid>."
7409 msgstr ""
7410 "(B<prlimit>()) 呼び出し元のプロセスが I<pid> で指定されたプロセスの上限を設定"
7411 "する許可を持っていなかった。"
7412
7413 #. type: Plain text
7414 #: build/C/man2/getrlimit.2:506
7415 msgid "Could not find a process with the ID specified in I<pid>."
7416 msgstr "I<pid> で指定された ID のプロセスが見つからなかった。"
7417
7418 #. type: Plain text
7419 #: build/C/man2/getrlimit.2:511
7420 msgid ""
7421 "The B<prlimit>()  system call is available since Linux 2.6.36.  Library "
7422 "support is available since glibc 2.13."
7423 msgstr ""
7424 "B<prlimit>() システムコールは Linux 2.6.36 以降で利用できる。 ライブラリのサ"
7425 "ポートは glibc 2.13 以降で利用できる。"
7426
7427 #. type: Plain text
7428 #: build/C/man2/getrlimit.2:515
7429 msgid "B<getrlimit>(), B<setrlimit>(): SVr4, 4.3BSD, POSIX.1-2001."
7430 msgstr "B<getrlimit>(), B<setrlimit>(): SVr4, 4.3BSD, POSIX.1-2001."
7431
7432 #. type: Plain text
7433 #: build/C/man2/getrlimit.2:518
7434 msgid "B<prlimit>(): Linux-specific."
7435 msgstr "B<prlimit>(): Linux 固有。"
7436
7437 #. type: Plain text
7438 #: build/C/man2/getrlimit.2:534
7439 msgid ""
7440 "B<RLIMIT_MEMLOCK> and B<RLIMIT_NPROC> derive from BSD and are not specified "
7441 "in POSIX.1-2001; they are present on the BSDs and Linux, but on few other "
7442 "implementations.  B<RLIMIT_RSS> derives from BSD and is not specified in "
7443 "POSIX.1-2001; it is nevertheless present on most implementations.  "
7444 "B<RLIMIT_MSGQUEUE>, B<RLIMIT_NICE>, B<RLIMIT_RTPRIO>, B<RLIMIT_RTTIME>, and "
7445 "B<RLIMIT_SIGPENDING> are Linux-specific."
7446 msgstr ""
7447 "B<RLIMIT_MEMLOCK> と B<RLIMIT_NPROC> は BSD から派生し、\n"
7448 "POSIX.1-2001 には指定されていない。\n"
7449 "これらは BSD 系と Linux に存在するが、他の実装は少ない。\n"
7450 "B<RLIMIT_RSS> は BSD から派生し、POSIX.1-2001 には指定されていない。\n"
7451 "それにも関わらず多くの実装で存在する。\n"
7452 "B<RLIMIT_MSGQUEUE>, B<RLIMIT_NICE>, B<RLIMIT_RTPRIO>, B<RLIMIT_RTTIME>,\n"
7453 "B<RLIMIT_SIGPENDING> は Linux 固有のものである。"
7454
7455 #. type: Plain text
7456 #: build/C/man2/getrlimit.2:540
7457 msgid ""
7458 "A child process created via B<fork>(2)  inherits its parent's resource "
7459 "limits.  Resource limits are preserved across B<execve>(2)."
7460 msgstr ""
7461 "B<fork>(2)  で作成された作成された子プロセスは、 親プロセスのリソース制限を継"
7462 "承する。 B<execve>(2)  の前後でリソース制限は保存される。"
7463
7464 #. type: Plain text
7465 #: build/C/man2/getrlimit.2:545
7466 msgid ""
7467 "Lowering the soft limit for a resource below the process's current "
7468 "consumption of that resource will succeed (but will prevent the process from "
7469 "further increasing its consumption of the resource)."
7470 msgstr ""
7471 "リソースのソフトリミットをそのプロセスが現在のリソース使用量より小さい値に設"
7472 "定することはできる (但し、そのプロセスはそれ以降そのリソースの使用量を増やす"
7473 "ことができなくなる)。"
7474
7475 #. type: Plain text
7476 #: build/C/man2/getrlimit.2:554
7477 msgid ""
7478 "One can set the resource limits of the shell using the built-in I<ulimit> "
7479 "command (I<limit> in B<csh>(1)).  The shell's resource limits are inherited "
7480 "by the processes that it creates to execute commands."
7481 msgstr ""
7482 "シェルのリソース制限は、シェルの組み込みコマンドである I<ulimit> (B<csh>(1)  "
7483 "では I<limit )> を使って設定することができる。 このシェルのリソース制限は、コ"
7484 "マンドを実行してシェルが生成するプロセス に引き継がれる。"
7485
7486 #. type: Plain text
7487 #: build/C/man2/getrlimit.2:559
7488 msgid ""
7489 "Since Linux 2.6.24, the resource limits of any process can be inspected via "
7490 "I</proc/[pid]/limits>; see B<proc>(5)."
7491 msgstr ""
7492 "Linux 2.6.24 以降では、 プロセスのリソース上限は I</proc/[pid]/limits> で知る"
7493 "ことができる。 B<proc>(5) 参照。"
7494
7495 #. type: Plain text
7496 #: build/C/man2/getrlimit.2:568
7497 msgid ""
7498 "Ancient systems provided a B<vlimit>()  function with a similar purpose to "
7499 "B<setrlimit>().  For backward compatibility, glibc also provides "
7500 "B<vlimit>().  All new applications should be written using B<setrlimit>()."
7501 msgstr ""
7502 "古いシステムでは、 B<setrlimit>()  と同様の目的を持つ関数 B<vlimit>()  が提供"
7503 "されていた。 後方互換性のため、glibc でも B<vlimit>()  を提供している。 全て"
7504 "の新しいアプリケーションでは、 B<setrlimit>()  を使用すべきである。"
7505
7506 #. type: SS
7507 #: build/C/man2/getrlimit.2:568
7508 #, no-wrap
7509 msgid "C library/ kernel ABI differences"
7510 msgstr "C ライブラリとカーネル ABI の違い"
7511
7512 #. type: Plain text
7513 #: build/C/man2/getrlimit.2:577
7514 msgid ""
7515 "Since version 2.13, the glibc B<getrlimit>()  and B<setrlimit>()  wrapper "
7516 "functions no longer invoke the corresponding system calls, but instead "
7517 "employ B<prlimit>(), for the reasons described in BUGS."
7518 msgstr ""
7519 "バージョン 2.13 以降では、 glibc の B<getrlimit>() と B<setrlimit>() のラッ"
7520 "パー関数はもはや対応するシステムコールを呼び出さず、 代わりに「バグ」の節で説"
7521 "明されている理由から B<prlimit>() を利用している。"
7522
7523 #. type: Plain text
7524 #: build/C/man2/getrlimit.2:586
7525 msgid ""
7526 "In older Linux kernels, the B<SIGXCPU> and B<SIGKILL> signals delivered when "
7527 "a process encountered the soft and hard B<RLIMIT_CPU> limits were delivered "
7528 "one (CPU) second later than they should have been.  This was fixed in kernel "
7529 "2.6.8."
7530 msgstr ""
7531 "以前の Linux カーネルでは、プロセスがソフトまたはハード B<RLIMIT_CPU> リミッ"
7532 "トに達した場合に送られる B<SIGXCPU> と B<SIGKILL> シグナルが、本来送られるべ"
7533 "き時点の 1 (CPU) 秒後に送られてしまう。 これはカーネル 2.6.8 で修正された。"
7534
7535 #.  see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
7536 #. type: Plain text
7537 #: build/C/man2/getrlimit.2:594
7538 msgid ""
7539 "In 2.6.x kernels before 2.6.17, a B<RLIMIT_CPU> limit of 0 is wrongly "
7540 "treated as \"no limit\" (like B<RLIM_INFINITY>).  Since Linux 2.6.17, "
7541 "setting a limit of 0 does have an effect, but is actually treated as a limit "
7542 "of 1 second."
7543 msgstr ""
7544 "2.6.17 より前の 2.6.x カーネルでは、 B<RLIMIT_CPU> リミットが 0 の場合、 "
7545 "(B<RLIM_INFINITY> と同じように) 「制限なし」と間違って解釈されていた。 Linux "
7546 "2.6.17 以降では、リミットを 0 に設定した場合にも 効果を持つようになっている"
7547 "が、実際にはリミットの値は 1 秒となる。"
7548
7549 #.  See https://lwn.net/Articles/145008/
7550 #. type: Plain text
7551 #: build/C/man2/getrlimit.2:599
7552 msgid ""
7553 "A kernel bug means that B<RLIMIT_RTPRIO> does not work in kernel 2.6.12; the "
7554 "problem is fixed in kernel 2.6.13."
7555 msgstr ""
7556 "カーネル 2.6.12 には、 B<RLIMIT_RTPRIO> が動作しないというバグがある。この問"
7557 "題はカーネル 2.6.13 で修正されている。"
7558
7559 #.  see http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
7560 #. type: Plain text
7561 #: build/C/man2/getrlimit.2:610
7562 msgid ""
7563 "In kernel 2.6.12, there was an off-by-one mismatch between the priority "
7564 "ranges returned by B<getpriority>(2)  and B<RLIMIT_NICE>.  This had the "
7565 "effect that the actual ceiling for the nice value was calculated as I<19\\ -"
7566 "\\ rlim_cur>.  This was fixed in kernel 2.6.13."
7567 msgstr ""
7568 "カーネル 2.6.12 では、 B<getpriority>(2)  と B<RLIMIT_NICE> が返す優先度の範"
7569 "囲が一つずれていた。このため、nice 値の実際の上限が I<19\\ -\\ rlim_cur> に"
7570 "なってしまうという影響があった。これはカーネル 2.6.13 で修正された。"
7571
7572 #.  The relevant patch, sent to LKML, seems to be
7573 #.  http://thread.gmane.org/gmane.linux.kernel/273462
7574 #.  From: Roland McGrath <roland <at> redhat.com>
7575 #.  Subject: [PATCH 7/7] make RLIMIT_CPU/SIGXCPU per-process
7576 #.  Date: 2005-01-23 23:27:46 GMT
7577 #.  Tested Solaris 10, FreeBSD 9, OpenBSD 5.0
7578 #.  FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=50951
7579 #. type: Plain text
7580 #: build/C/man2/getrlimit.2:637
7581 msgid ""
7582 "Since Linux 2.6.12, if a process reaches its soft B<RLIMIT_CPU> limit and "
7583 "has a handler installed for B<SIGXCPU>, then, in addition to invoking the "
7584 "signal handler, the kernel increases the soft limit by one second.  This "
7585 "behavior repeats if the process continues to consume CPU time, until the "
7586 "hard limit is reached, at which point the process is killed.  Other "
7587 "implementations do not change the B<RLIMIT_CPU> soft limit in this manner, "
7588 "and the Linux behavior is probably not standards conformant; portable "
7589 "applications should avoid relying on this Linux-specific behavior.  The "
7590 "Linux-specific B<RLIMIT_RTTIME> limit exhibits the same behavior when the "
7591 "soft limit is encountered."
7592 msgstr ""
7593 "Linux 2.6.12 以降では、 プロセスがその B<RLIMIT_CPU> ソフトリミットに達し、 "
7594 "B<SIGXCPU> に対してシグナルハンドラが設定されている場合、 シグナルハンドラを"
7595 "起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセス"
7596 "が CPU 時間を消費し続けている限り、 ハードリミットに達するまで、この動作が繰"
7597 "り返される。 ハードリミットに達すると、その時点でプロセスは kill される。 他"
7598 "の実装では、上記のような B<RLIMIT_CPU> ソフトリミットの変更は行われず、 おそ"
7599 "らく Linux の動作は標準に準拠していない。 移植性が必要なアプリケーションでは"
7600 "この Linux 固有の動作を前提にするのは避けるべきである。 Linux 固有の上限 "
7601 "B<RLIMIT_RTTIME> でも、 ソフトリミットに達した場合に同じ動作となる。"
7602
7603 #. type: Plain text
7604 #: build/C/man2/getrlimit.2:647
7605 msgid ""
7606 "Kernels before 2.4.22 did not diagnose the error B<EINVAL> for "
7607 "B<setrlimit>()  when I<rlim-E<gt>rlim_cur> was greater than I<rlim-"
7608 "E<gt>rlim_max>."
7609 msgstr ""
7610 "2.4.22 より前のカーネルでは、 I<rlim-E<gt>rlim_cur> が I<rlim-E<gt>rlim_max> "
7611 "より大きかった場合、 B<setrlimit>()  での B<EINVAL> エラーを検出できない。"
7612
7613 #. type: SS
7614 #: build/C/man2/getrlimit.2:647
7615 #, no-wrap
7616 msgid "Representation of \"large\" resource limit values on 32-bit platforms"
7617 msgstr "32 ビットプラットフォームにおける「大きな」リソース上限値の表現"
7618
7619 #.  https://bugzilla.kernel.org/show_bug.cgi?id=5042
7620 #.  http://sources.redhat.com/bugzilla/show_bug.cgi?id=12201
7621 #. type: Plain text
7622 #: build/C/man2/getrlimit.2:678
7623 msgid ""
7624 "The glibc B<getrlimit>()  and B<setrlimit>()  wrapper functions use a 64-bit "
7625 "I<rlim_t> data type, even on 32-bit platforms.  However, the I<rlim_t> data "
7626 "type used in the B<getrlimit>()  and B<setrlimit>()  system calls is a (32-"
7627 "bit)  I<unsigned long>.  Furthermore, in Linux versions before 2.6.36, the "
7628 "kernel represents resource limits on 32-bit platforms as I<unsigned long>.  "
7629 "However, a 32-bit data type is not wide enough.  The most pertinent limit "
7630 "here is B<RLIMIT_FSIZE>, which specifies the maximum size to which a file "
7631 "can grow: to be useful, this limit must be represented using a type that is "
7632 "as wide as the type used to represent file offsets\\(emthat is, as wide as a "
7633 "64-bit B<off_t> (assuming a program compiled with I<_FILE_OFFSET_BITS=64>)."
7634 msgstr ""
7635 "glibc の B<getrlimit>() と B<setrlimit>() ラッパー関数は、32 ビットプラット"
7636 "フォームであっても 64 ビットの I<rlim_t> データ型を使用する。 しかし、 "
7637 "B<getrlimit>() と B<setrlimit>() システムコールで使用される I<rlim_t> データ"
7638 "型は (32 ビットの) I<unsigned long> である。 さらに、 2.6.36 より前の Linux "
7639 "では、 カーネルは 32 ビットプラットフォームではリソース上限を I<unsigned "
7640 "long> として表現している。 しかしながら、 32 ビットデータ型は十分な大きさでは"
7641 "ない。 ここで最も関係がある上限値は B<RLIMIT_FSIZE> である。 この上限はファイ"
7642 "ルサイズの最大値であり、実用性の面からは、 この上限をファイルオフセットを表現"
7643 "するのに使用されている型、 つまり 64 ビットの B<off_t> "
7644 "(I<_FILE_OFFSET_BITS=64> でコンパイルしたプログラムの場合)、 と同じ幅を持つ"
7645 "型、を使って表現すべきである。"
7646
7647 #. type: Plain text
7648 #: build/C/man2/getrlimit.2:688
7649 msgid ""
7650 "To work around this kernel limitation, if a program tried to set a resource "
7651 "limit to a value larger than can be represented in a 32-bit I<unsigned "
7652 "long>, then the glibc B<setrlimit>()  wrapper function silently converted "
7653 "the limit value to B<RLIM_INFINITY>.  In other words, the requested resource "
7654 "limit setting was silently ignored."
7655 msgstr ""
7656 "カーネルのこの制限に対する対策として、 プログラムがリソース上限を 32 ビット"
7657 "の I<unsigned long> で表現できる値よりも大きな値に設定しようとした際には、 "
7658 "glibc の B<setrlimit>() ラッパー関数はこの上限値を黙って B<RLIM_INFINITY> に"
7659 "変換していた。 言い換えると、指定されたリソース上限値は黙って無視されていた。"
7660
7661 #. type: Plain text
7662 #: build/C/man2/getrlimit.2:690
7663 msgid "This problem was addressed in Linux 2.6.36 with two principal changes:"
7664 msgstr "この問題は Linux 2.6.36 での以下の主な変更により解決された。"
7665
7666 #. type: Plain text
7667 #: build/C/man2/getrlimit.2:693
7668 msgid ""
7669 "the addition of a new kernel representation of resource limits that uses 64 "
7670 "bits, even on 32-bit platforms;"
7671 msgstr ""
7672 "32 ビットプラットフォームであっても 64 ビットを使用するリソース上限の新しい"
7673 "カーネルでの表現方法の追加。"
7674
7675 #. type: Plain text
7676 #: build/C/man2/getrlimit.2:697
7677 msgid ""
7678 "the addition of the B<prlimit>()  system call, which employs 64-bit values "
7679 "for its resource limit arguments."
7680 msgstr ""
7681 "リソース上限の引き数として 64 ビット値を取る B<prlimit>() システムコールの追"
7682 "加。"
7683
7684 #.  https://www.sourceware.org/bugzilla/show_bug.cgi?id=12201
7685 #. type: Plain text
7686 #: build/C/man2/getrlimit.2:710
7687 msgid ""
7688 "Since version 2.13, glibc works around the limitations of the "
7689 "B<getrlimit>()  and B<setrlimit>()  system calls by implementing "
7690 "B<setrlimit>()  and B<getrlimit>()  as wrapper functions that call "
7691 "B<prlimit>()."
7692 msgstr ""
7693 "バージョン 2.13 以降の glibc では、 B<getrlimit>() と B<setrlimit>() システム"
7694 "コールの制限に対する回避手段として、\n"
7695 "B<setrlimit>() と B<getrlimit>() を B<prlimit>() を呼び出すラッパー関数として"
7696 "実装している。"
7697
7698 #. type: Plain text
7699 #: build/C/man2/getrlimit.2:713
7700 msgid "The program below demonstrates the use of B<prlimit>()."
7701 msgstr "以下のプログラムに B<prlimit>() の使用例を示す。"
7702
7703 #. type: Plain text
7704 #: build/C/man2/getrlimit.2:722
7705 #, no-wrap
7706 msgid ""
7707 "#define _GNU_SOURCE\n"
7708 "#define _FILE_OFFSET_BITS 64\n"
7709 "#include E<lt>stdio.hE<gt>\n"
7710 "#include E<lt>time.hE<gt>\n"
7711 "#include E<lt>stdlib.hE<gt>\n"
7712 "#include E<lt>unistd.hE<gt>\n"
7713 "#include E<lt>sys/resource.hE<gt>\n"
7714 msgstr ""
7715 "#define _GNU_SOURCE\n"
7716 "#define _FILE_OFFSET_BITS 64\n"
7717 "#include E<lt>stdio.hE<gt>\n"
7718 "#include E<lt>time.hE<gt>\n"
7719 "#include E<lt>stdlib.hE<gt>\n"
7720 "#include E<lt>unistd.hE<gt>\n"
7721 "#include E<lt>sys/resource.hE<gt>\n"
7722
7723 #. type: Plain text
7724 #: build/C/man2/getrlimit.2:725
7725 #, no-wrap
7726 msgid ""
7727 "#define errExit(msg) \tdo { perror(msg); exit(EXIT_FAILURE); \\e\n"
7728 "                        } while (0)\n"
7729 msgstr ""
7730 "#define errExit(msg) \tdo { perror(msg); exit(EXIT_FAILURE); \\e\n"
7731 "                        } while (0)\n"
7732
7733 #. type: Plain text
7734 #: build/C/man2/getrlimit.2:732
7735 #, no-wrap
7736 msgid ""
7737 "int\n"
7738 "main(int argc, char *argv[])\n"
7739 "{\n"
7740 "    struct rlimit old, new;\n"
7741 "    struct rlimit *newp;\n"
7742 "    pid_t pid;\n"
7743 msgstr ""
7744 "int\n"
7745 "main(int argc, char *argv[])\n"
7746 "{\n"
7747 "    struct rlimit old, new;\n"
7748 "    struct rlimit *newp;\n"
7749 "    pid_t pid;\n"
7750
7751 #. type: Plain text
7752 #: build/C/man2/getrlimit.2:738
7753 #, no-wrap
7754 msgid ""
7755 "    if (!(argc == 2 || argc == 4)) {\n"
7756 "        fprintf(stderr, \"Usage: %s E<lt>pidE<gt> [E<lt>new-soft-limitE<gt> \"\n"
7757 "                \"E<lt>new-hard-limitE<gt>]\\en\", argv[0]);\n"
7758 "        exit(EXIT_FAILURE);\n"
7759 "    }\n"
7760 msgstr ""
7761 "    if (!(argc == 2 || argc == 4)) {\n"
7762 "        fprintf(stderr, \"Usage: %s E<lt>pidE<gt> [E<lt>new-soft-limitE<gt> \"\n"
7763 "                \"E<lt>new-hard-limitE<gt>]\\en\", argv[0]);\n"
7764 "        exit(EXIT_FAILURE);\n"
7765 "    }\n"
7766
7767 #. type: Plain text
7768 #: build/C/man2/getrlimit.2:740
7769 #, no-wrap
7770 msgid "    pid = atoi(argv[1]);        /* PID of target process */\n"
7771 msgstr "    pid = atoi(argv[1]);        /* PID of target process */\n"
7772
7773 #. type: Plain text
7774 #: build/C/man2/getrlimit.2:747
7775 #, no-wrap
7776 msgid ""
7777 "    newp = NULL;\n"
7778 "    if (argc == 4) {\n"
7779 "        new.rlim_cur = atoi(argv[2]);\n"
7780 "        new.rlim_max = atoi(argv[3]);\n"
7781 "        newp = &new;\n"
7782 "    }\n"
7783 msgstr ""
7784 "    newp = NULL;\n"
7785 "    if (argc == 4) {\n"
7786 "        new.rlim_cur = atoi(argv[2]);\n"
7787 "        new.rlim_max = atoi(argv[3]);\n"
7788 "        newp = &new;\n"
7789 "    }\n"
7790
7791 #. type: Plain text
7792 #: build/C/man2/getrlimit.2:750
7793 #, no-wrap
7794 msgid ""
7795 "    /* Set CPU time limit of target process; retrieve and display\n"
7796 "       previous limit */\n"
7797 msgstr ""
7798 "    /* Set CPU time limit of target process; retrieve and display\n"
7799 "       previous limit */\n"
7800
7801 #. type: Plain text
7802 #: build/C/man2/getrlimit.2:755
7803 #, no-wrap
7804 msgid ""
7805 "    if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)\n"
7806 "        errExit(\"prlimit-1\");\n"
7807 "    printf(\"Previous limits: soft=%lld; hard=%lld\\en\",\n"
7808 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7809 msgstr ""
7810 "    if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)\n"
7811 "        errExit(\"prlimit-1\");\n"
7812 "    printf(\"Previous limits: soft=%lld; hard=%lld\\en\",\n"
7813 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7814
7815 #. type: Plain text
7816 #: build/C/man2/getrlimit.2:757
7817 #, no-wrap
7818 msgid "    /* Retrieve and display new CPU time limit */\n"
7819 msgstr "    /* Retrieve and display new CPU time limit */\n"
7820
7821 #. type: Plain text
7822 #: build/C/man2/getrlimit.2:762
7823 #, no-wrap
7824 msgid ""
7825 "    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)\n"
7826 "        errExit(\"prlimit-2\");\n"
7827 "    printf(\"New limits: soft=%lld; hard=%lld\\en\",\n"
7828 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7829 msgstr ""
7830 "    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)\n"
7831 "        errExit(\"prlimit-2\");\n"
7832 "    printf(\"New limits: soft=%lld; hard=%lld\\en\",\n"
7833 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7834
7835 #. type: Plain text
7836 #: build/C/man2/getrlimit.2:765 build/C/man7/user_namespaces.7:829
7837 #, no-wrap
7838 msgid ""
7839 "    exit(EXIT_FAILURE);\n"
7840 "}\n"
7841 msgstr ""
7842 "    exit(EXIT_FAILURE);\n"
7843 "}\n"
7844
7845 #. type: Plain text
7846 #: build/C/man2/getrlimit.2:784
7847 msgid ""
7848 "B<prlimit>(1), B<dup>(2), B<fcntl>(2), B<fork>(2), B<getrusage>(2), "
7849 "B<mlock>(2), B<mmap>(2), B<open>(2), B<quotactl>(2), B<sbrk>(2), "
7850 "B<shmctl>(2), B<malloc>(3), B<sigqueue>(3), B<ulimit>(3), B<core>(5), "
7851 "B<capabilities>(7), B<signal>(7)"
7852 msgstr ""
7853 "B<prlimit>(1), B<dup>(2), B<fcntl>(2), B<fork>(2), B<getrusage>(2), "
7854 "B<mlock>(2), B<mmap>(2), B<open>(2), B<quotactl>(2), B<sbrk>(2), "
7855 "B<shmctl>(2), B<malloc>(3), B<sigqueue>(3), B<ulimit>(3), B<core>(5), "
7856 "B<capabilities>(7), B<signal>(7)"
7857
7858 #. type: TH
7859 #: build/C/man2/getrusage.2:39
7860 #, no-wrap
7861 msgid "GETRUSAGE"
7862 msgstr "GETRUSAGE"
7863
7864 #. type: TH
7865 #: build/C/man2/getrusage.2:39
7866 #, no-wrap
7867 msgid "2014-05-10"
7868 msgstr "2014-05-10"
7869
7870 #. type: Plain text
7871 #: build/C/man2/getrusage.2:42
7872 msgid "getrusage - get resource usage"
7873 msgstr "getrusage - 資源の使用量を取得する"
7874
7875 #. type: Plain text
7876 #: build/C/man2/getrusage.2:48
7877 msgid "B<int getrusage(int >I<who>B<, struct rusage *>I<usage>B<);>"
7878 msgstr "B<int getrusage(int >I<who>B<, struct rusage *>I<usage>B<);>"
7879
7880 #. type: Plain text
7881 #: build/C/man2/getrusage.2:54
7882 msgid ""
7883 "B<getrusage>()  returns resource usage measures for I<who>, which can be one "
7884 "of the following:"
7885 msgstr ""
7886 "B<getrusage>()  は I<who> の資源 (resource) の使用量を返す。 I<who> には以下"
7887 "のいずれか一つを指定できる。"
7888
7889 #. type: TP
7890 #: build/C/man2/getrusage.2:54
7891 #, no-wrap
7892 msgid "B<RUSAGE_SELF>"
7893 msgstr "B<RUSAGE_SELF>"
7894
7895 #. type: Plain text
7896 #: build/C/man2/getrusage.2:58
7897 msgid ""
7898 "Return resource usage statistics for the calling process, which is the sum "
7899 "of resources used by all threads in the process."
7900 msgstr ""
7901 "呼び出したプロセスの資源使用量、 そのプロセス内の全スレッドが使用している資源"
7902 "の合計を返す。"
7903
7904 #. type: TP
7905 #: build/C/man2/getrusage.2:58
7906 #, no-wrap
7907 msgid "B<RUSAGE_CHILDREN>"
7908 msgstr "B<RUSAGE_CHILDREN>"
7909
7910 #. type: Plain text
7911 #: build/C/man2/getrusage.2:65
7912 msgid ""
7913 "Return resource usage statistics for all children of the calling process "
7914 "that have terminated and been waited for.  These statistics will include the "
7915 "resources used by grandchildren, and further removed descendants, if all of "
7916 "the intervening descendants waited on their terminated children."
7917 msgstr ""
7918 "呼び出したプロセスの子プロセスのうち、 終了して待ち状態にある全プロセスが使用"
7919 "している資源使用量の統計を返す。 これらの統計情報には、孫プロセスやその子孫の"
7920 "プロセスのうち、 削除待ちのものが使用している資源も含まれる。"
7921
7922 #. type: TP
7923 #: build/C/man2/getrusage.2:65
7924 #, no-wrap
7925 msgid "B<RUSAGE_THREAD> (since Linux 2.6.26)"
7926 msgstr "B<RUSAGE_THREAD> (Linux 2.6.26 以降)"
7927
7928 #. type: Plain text
7929 #: build/C/man2/getrusage.2:75
7930 msgid ""
7931 "Return resource usage statistics for the calling thread.  The B<_GNU_SOURCE> "
7932 "feature test macro must be defined (before including I<any> header file)  in "
7933 "order to obtain the definition of this constant from I<E<lt>sys/resource."
7934 "hE<gt>>."
7935 msgstr ""
7936 "呼び出したスレッドに関する資源使用量の統計を返す。 I<E<lt>sys/resource."
7937 "hE<gt>> からこの定数の定義を得るためには、 ((I<どの>ヘッダファイルをインク"
7938 "ルードするよりも前に) 機能検査マクロ B<_GNU_SOURCE> を定義しなければならな"
7939 "い。"
7940
7941 #. type: Plain text
7942 #: build/C/man2/getrusage.2:79
7943 msgid ""
7944 "The resource usages are returned in the structure pointed to by I<usage>, "
7945 "which has the following form:"
7946 msgstr ""
7947 "資源使用量は I<usage> が指す構造体に格納されて返される。 構造体は以下の形式で"
7948 "ある。"
7949
7950 #. type: Plain text
7951 #: build/C/man2/getrusage.2:100
7952 #, no-wrap
7953 msgid ""
7954 "struct rusage {\n"
7955 "    struct timeval ru_utime; /* user CPU time used */\n"
7956 "    struct timeval ru_stime; /* system CPU time used */\n"
7957 "    long   ru_maxrss;        /* maximum resident set size */\n"
7958 "    long   ru_ixrss;         /* integral shared memory size */\n"
7959 "    long   ru_idrss;         /* integral unshared data size */\n"
7960 "    long   ru_isrss;         /* integral unshared stack size */\n"
7961 "    long   ru_minflt;        /* page reclaims (soft page faults) */\n"
7962 "    long   ru_majflt;        /* page faults (hard page faults) */\n"
7963 "    long   ru_nswap;         /* swaps */\n"
7964 "    long   ru_inblock;       /* block input operations */\n"
7965 "    long   ru_oublock;       /* block output operations */\n"
7966 "    long   ru_msgsnd;        /* IPC messages sent */\n"
7967 "    long   ru_msgrcv;        /* IPC messages received */\n"
7968 "    long   ru_nsignals;      /* signals received */\n"
7969 "    long   ru_nvcsw;         /* voluntary context switches */\n"
7970 "    long   ru_nivcsw;        /* involuntary context switches */\n"
7971 "};\n"
7972 msgstr ""
7973 "struct rusage {\n"
7974 "    struct timeval ru_utime; /* 使用されたユーザー CPU 時間 */\n"
7975 "    struct timeval ru_stime; /* 使用されたシステム CPU 時間 */\n"
7976 "    long   ru_maxrss;        /* RAM 上に存在する仮想ページのサイズ\n"
7977 "                               (resident set size) の最大値 */\n"
7978 "    long   ru_ixrss;         /* 共有メモリの合計サイズ */\n"
7979 "    long   ru_idrss;         /* 非共有データの合計サイズ */\n"
7980 "    long   ru_isrss;         /* 非共有スタックの合計サイズ */\n"
7981 "    long   ru_minflt;        /* ページの再利用 (ソフトページフォルト) */\n"
7982 "    long   ru_majflt;        /* ページフォールト (ハードページフォルト) */\n"
7983 "    long   ru_nswap;         /* スワップ */\n"
7984 "    long   ru_inblock;       /* ブロック入力操作 */\n"
7985 "    long   ru_oublock;       /* ブロック出力操作 */\n"
7986 "    long   ru_msgsnd;        /* 送信された IPC メッセージ */\n"
7987 "    long   ru_msgrcv;        /* 受信された IPC メッセージ */\n"
7988 "    long   ru_nsignals;      /* 受信されたシグナル */\n"
7989 "    long   ru_nvcsw;         /* 意図したコンテキスト切り替え */\n"
7990 "    long   ru_nivcsw;        /* 意図しないコンテキスト切り替え */\n"
7991 "};\n"
7992
7993 #. type: Plain text
7994 #: build/C/man2/getrusage.2:108
7995 msgid ""
7996 "Not all fields are completed; unmaintained fields are set to zero by the "
7997 "kernel.  (The unmaintained fields are provided for compatibility with other "
7998 "systems, and because they may one day be supported on Linux.)  The fields "
7999 "are interpreted as follows:"
8000 msgstr ""
8001 "すべてのフィールドがサポートされているわけではない。 メンテナンスされていない"
8002 "フィールドには、 カーネルが 0 を設定する (メンテナンスされていないフィールド"
8003 "は、 他のシステムとの互換性のために提供されており、 いつか Linux でもサポート"
8004 "されるかもしれない)。 各フィールドの詳細は以下の通りである。"
8005
8006 #. type: TP
8007 #: build/C/man2/getrusage.2:108
8008 #, no-wrap
8009 msgid "I<ru_utime>"
8010 msgstr "I<ru_utime>"
8011
8012 #. type: Plain text
8013 #: build/C/man2/getrusage.2:114
8014 msgid ""
8015 "This is the total amount of time spent executing in user mode, expressed in "
8016 "a I<timeval> structure (seconds plus microseconds)."
8017 msgstr ""
8018 "ユーザモードでの実行で消費された合計時間。 I<timeval> 構造体 (秒とミリ秒) で"
8019 "表現される。"
8020
8021 #. type: TP
8022 #: build/C/man2/getrusage.2:114
8023 #, no-wrap
8024 msgid "I<ru_stime>"
8025 msgstr "I<ru_stime>"
8026
8027 #. type: Plain text
8028 #: build/C/man2/getrusage.2:120
8029 msgid ""
8030 "This is the total amount of time spent executing in kernel mode, expressed "
8031 "in a I<timeval> structure (seconds plus microseconds)."
8032 msgstr ""
8033 "カーネルモードでの実行で消費された合計時間。 I<timeval> 構造体 (秒とミリ秒) "
8034 "で表現される。"
8035
8036 #. type: TP
8037 #: build/C/man2/getrusage.2:120
8038 #, no-wrap
8039 msgid "I<ru_maxrss> (since Linux 2.6.32)"
8040 msgstr "I<ru_maxrss> (Linux 2.6.32 以降)"
8041
8042 #. type: Plain text
8043 #: build/C/man2/getrusage.2:127
8044 msgid ""
8045 "This is the maximum resident set size used (in kilobytes).  For "
8046 "B<RUSAGE_CHILDREN>, this is the resident set size of the largest child, not "
8047 "the maximum resident set size of the process tree."
8048 msgstr ""
8049 "使用された resident set size の最大値 (キロバイト単位)。 B<RUSAGE_CHILDREN> "
8050 "の場合には、プロセスツリーの resident set size の最大値ではなく、 最も大きい"
8051 "子プロセスの resident set size となる。"
8052
8053 #. type: TP
8054 #: build/C/man2/getrusage.2:127
8055 #, no-wrap
8056 msgid "I<ru_ixrss> (unmaintained)"
8057 msgstr "I<ru_ixrss> (メンテナンスされていない)"
8058
8059 #.  On some systems, this field records the number of signals received.
8060 #. type: Plain text
8061 #: build/C/man2/getrusage.2:133 build/C/man2/getrusage.2:138
8062 #: build/C/man2/getrusage.2:143 build/C/man2/getrusage.2:155
8063 #: build/C/man2/getrusage.2:167 build/C/man2/getrusage.2:173
8064 #: build/C/man2/getrusage.2:177
8065 msgid "This field is currently unused on Linux."
8066 msgstr "このフィールドは現在のところ Linux では未使用である。"
8067
8068 #. type: TP
8069 #: build/C/man2/getrusage.2:133
8070 #, no-wrap
8071 msgid "I<ru_idrss> (unmaintained)"
8072 msgstr "I<ru_idrss> (メンテナンスされていない)"
8073
8074 #. type: TP
8075 #: build/C/man2/getrusage.2:138
8076 #, no-wrap
8077 msgid "I<ru_isrss> (unmaintained)"
8078 msgstr "I<ru_isrss> (メンテナンスされていない)"
8079
8080 #. type: TP
8081 #: build/C/man2/getrusage.2:143
8082 #, no-wrap
8083 msgid "I<ru_minflt>"
8084 msgstr "I<ru_minflt>"
8085
8086 #. type: Plain text
8087 #: build/C/man2/getrusage.2:148
8088 msgid ""
8089 "The number of page faults serviced without any I/O activity; here I/O "
8090 "activity is avoided by ``reclaiming'' a page frame from the list of pages "
8091 "awaiting reallocation."
8092 msgstr ""
8093 "I/O 動作なしで発生したページフォルトの回数。 再割り当てを待っているページリス"
8094 "トからページフレームを「回収」 (reclaim) することで、 I/O 動作を避けることが"
8095 "できる。"
8096
8097 #. type: TP
8098 #: build/C/man2/getrusage.2:148
8099 #, no-wrap
8100 msgid "I<ru_majflt>"
8101 msgstr "I<ru_majflt>"
8102
8103 #. type: Plain text
8104 #: build/C/man2/getrusage.2:151
8105 msgid "The number of page faults serviced that required I/O activity."
8106 msgstr "I/O 動作を必要とするページフォルトの回数。"
8107
8108 #. type: TP
8109 #: build/C/man2/getrusage.2:151
8110 #, no-wrap
8111 msgid "I<ru_nswap> (unmaintained)"
8112 msgstr "I<ru_nswap> (メンテナンスされていない)"
8113
8114 #. type: TP
8115 #: build/C/man2/getrusage.2:155
8116 #, no-wrap
8117 msgid "I<ru_inblock> (since Linux 2.6.22)"
8118 msgstr "I<ru_inblock> (Linux 2.6.22 以降)"
8119
8120 #. type: Plain text
8121 #: build/C/man2/getrusage.2:158
8122 msgid "The number of times the filesystem had to perform input."
8123 msgstr "ファイルシステムが入力を実行する必要があった回数。"
8124
8125 #. type: TP
8126 #: build/C/man2/getrusage.2:158
8127 #, no-wrap
8128 msgid "I<ru_oublock> (since Linux 2.6.22)"
8129 msgstr "I<ru_oublock> (Linux 2.6.22 以降)"
8130
8131 #. type: Plain text
8132 #: build/C/man2/getrusage.2:161
8133 msgid "The number of times the filesystem had to perform output."
8134 msgstr "ファイルシステムが出力を実行する必要があった回数。"
8135
8136 #. type: TP
8137 #: build/C/man2/getrusage.2:161
8138 #, no-wrap
8139 msgid "I<ru_msgsnd> (unmaintained)"
8140 msgstr "I<ru_msgsnd> (メンテナンスされていない)"
8141
8142 #. type: TP
8143 #: build/C/man2/getrusage.2:167
8144 #, no-wrap
8145 msgid "I<ru_msgrcv> (unmaintained)"
8146 msgstr "I<ru_msgrcv> (メンテナンスされていない)"
8147
8148 #. type: TP
8149 #: build/C/man2/getrusage.2:173
8150 #, no-wrap
8151 msgid "I<ru_nsignals> (unmaintained)"
8152 msgstr "I<ru_nsignals> (メンテナンスされていない)"
8153
8154 #. type: TP
8155 #: build/C/man2/getrusage.2:177
8156 #, no-wrap
8157 msgid "I<ru_nvcsw> (since Linux 2.6)"
8158 msgstr "I<ru_nvcsw> (Linux 2.6 以降)"
8159
8160 #. type: Plain text
8161 #: build/C/man2/getrusage.2:182
8162 msgid ""
8163 "The number of times a context switch resulted due to a process voluntarily "
8164 "giving up the processor before its time slice was completed (usually to "
8165 "await availability of a resource)."
8166 msgstr ""
8167 "自分のタイムスライスが完了する前にプロセスが自発的にプロセッサを解放して行わ"
8168 "れたコンテキストスイッチの回数 (通常はリソースが利用可能になるのを待つために"
8169 "行われる)。"
8170
8171 #. type: TP
8172 #: build/C/man2/getrusage.2:182
8173 #, no-wrap
8174 msgid "I<ru_nivcsw> (since Linux 2.6)"
8175 msgstr "I<memory_migrate> (Linux 2.6.16 以降)"
8176
8177 #. type: Plain text
8178 #: build/C/man2/getrusage.2:187
8179 msgid ""
8180 "The number of times a context switch resulted due to a higher priority "
8181 "process becoming runnable or because the current process exceeded its time "
8182 "slice."
8183 msgstr ""
8184 "優先度が自分より高いプロセッサが実行可能になったか、現在のプロセスが自分のタ"
8185 "イムスライスを超過したことにより行われたコンテキストスイッチの回数。"
8186
8187 #. type: Plain text
8188 #: build/C/man2/getrusage.2:198
8189 msgid "I<usage> points outside the accessible address space."
8190 msgstr "I<usage> がアクセス可能なアドレス空間の外を指している。"
8191
8192 #. type: Plain text
8193 #: build/C/man2/getrusage.2:202
8194 msgid "I<who> is invalid."
8195 msgstr "I<who> が無効である。"
8196
8197 #. type: Plain text
8198 #: build/C/man2/getrusage.2:210
8199 msgid ""
8200 "SVr4, 4.3BSD.  POSIX.1-2001 specifies B<getrusage>(), but specifies only the "
8201 "fields I<ru_utime> and I<ru_stime>."
8202 msgstr ""
8203 "SVr4, 4.3BSD.  POSIX.1-2001 は B<getrusage>()  を規定しているが、規定している"
8204 "フィールドは I<ru_utime> と I<ru_stime> だけである。"
8205
8206 #. type: Plain text
8207 #: build/C/man2/getrusage.2:213
8208 msgid "B<RUSAGE_THREAD> is Linux-specific."
8209 msgstr "B<RUSAGE_THREAD> は Linux 固有である。"
8210
8211 #. type: Plain text
8212 #: build/C/man2/getrusage.2:216
8213 msgid "Resource usage metrics are preserved across an B<execve>(2)."
8214 msgstr "B<execve>(2)  の前後でリソース使用量の指標は保持される。"
8215
8216 #. type: Plain text
8217 #: build/C/man2/getrusage.2:224
8218 msgid ""
8219 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
8220 "portability.  (Indeed, I<struct timeval> is defined in I<E<lt>sys/time."
8221 "hE<gt>>.)"
8222 msgstr ""
8223 "今日では I<E<lt>sys/time.hE<gt>> をインクルードする必要はないが、 インクルー"
8224 "ドしておけば移植性が増す。 (実際 I<struct timeval> は I<E<lt>sys/time."
8225 "hE<gt>> で定義されている。)"
8226
8227 #.  See the description of getrusage() in XSH.
8228 #.  A similar statement was also in SUSv2.
8229 #. type: Plain text
8230 #: build/C/man2/getrusage.2:236
8231 msgid ""
8232 "In Linux kernel versions before 2.6.9, if the disposition of B<SIGCHLD> is "
8233 "set to B<SIG_IGN> then the resource usages of child processes are "
8234 "automatically included in the value returned by B<RUSAGE_CHILDREN>, although "
8235 "POSIX.1-2001 explicitly prohibits this.  This nonconformance is rectified in "
8236 "Linux 2.6.9 and later."
8237 msgstr ""
8238 "2.6.9 より前のバージョンの Linux カーネルでは、 B<SIGCHLD> の処理が "
8239 "B<SIG_IGN> に設定されていると、 子プロセスのリソース使用量が "
8240 "B<RUSAGE_CHILDREN> で返される値に自動的に含められる。 しかし POSIX.1-2001 で"
8241 "は、これを明確に禁止している。 この準拠していなかった点は、Linux 2.6.9 以降で"
8242 "改正された。"
8243
8244 #. type: Plain text
8245 #: build/C/man2/getrusage.2:239
8246 msgid ""
8247 "The structure definition shown at the start of this page was taken from "
8248 "4.3BSD Reno."
8249 msgstr "このページの最初で示した構造体の定義は 4.3BSD Reno のものである。"
8250
8251 #. type: Plain text
8252 #: build/C/man2/getrusage.2:248
8253 msgid ""
8254 "Ancient systems provided a B<vtimes>()  function with a similar purpose to "
8255 "B<getrusage>().  For backward compatibility, glibc also provides "
8256 "B<vtimes>().  All new applications should be written using B<getrusage>()."
8257 msgstr ""
8258 "古いシステムでは、 B<getrusage>() と同様の目的を持つ関数 B<vtimes>() が提供\n"
8259 "されていた。後方互換性のため、glibc でも B<vtimes>() を提供している。\n"
8260 "全ての新しいアプリケーションでは B<getrusage>() を使用すべきである。"
8261
8262 #. type: Plain text
8263 #: build/C/man2/getrusage.2:253
8264 msgid "See also the description of I</proc/PID/stat> in B<proc>(5)."
8265 msgstr "B<proc>(5)  にある I</proc/PID/stat> の説明も参照のこと。"
8266
8267 #. type: Plain text
8268 #: build/C/man2/getrusage.2:260
8269 msgid ""
8270 "B<clock_gettime>(2), B<getrlimit>(2), B<times>(2), B<wait>(2), B<wait4>(2), "
8271 "B<clock>(3)"
8272 msgstr ""
8273 "B<clock_gettime>(2), B<getrlimit>(2), B<times>(2), B<wait>(2), B<wait4>(2), "
8274 "B<clock>(3)"
8275
8276 #. type: TH
8277 #: build/C/man2/getsid.2:26
8278 #, no-wrap
8279 msgid "GETSID"
8280 msgstr "GETSID"
8281
8282 #. type: TH
8283 #: build/C/man2/getsid.2:26
8284 #, no-wrap
8285 msgid "2010-09-26"
8286 msgstr "2010-09-26"
8287
8288 #. type: Plain text
8289 #: build/C/man2/getsid.2:29
8290 msgid "getsid - get session ID"
8291 msgstr "getsid - セッション ID を取得する。"
8292
8293 #. type: Plain text
8294 #: build/C/man2/getsid.2:33
8295 msgid "B<pid_t getsid(pid_t>I< pid>B<);>"
8296 msgstr "B<pid_t getsid(pid_t>I< pid>B<);>"
8297
8298 #. type: Plain text
8299 #: build/C/man2/getsid.2:42
8300 msgid "B<getsid>():"
8301 msgstr "B<getsid>():"
8302
8303 #. type: Plain text
8304 #: build/C/man2/getsid.2:45 build/C/man2/setpgid.2:79
8305 msgid ""
8306 "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
8307 msgstr ""
8308 "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
8309
8310 #. type: Plain text
8311 #: build/C/man2/getsid.2:47 build/C/man2/setpgid.2:81
8312 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
8313 msgstr "|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
8314
8315 #. type: Plain text
8316 #: build/C/man2/getsid.2:58
8317 msgid ""
8318 "I<getsid(0)> returns the session ID of the calling process.  I<getsid(p)> "
8319 "returns the session ID of the process with process ID I<p>.  (The session ID "
8320 "of a process is the process group ID of the session leader.)"
8321 msgstr ""
8322 "I<getsid(0)> は呼び出し元のプロセスのセッション ID を返す。 I<getsid(p)> はプ"
8323 "ロセス ID I<p> を持つプロセスのセッション ID を返す (プロセスのセッション ID "
8324 "は セッションリーダーのプロセスグループ ID である)。"
8325
8326 #. type: Plain text
8327 #: build/C/man2/getsid.2:63
8328 msgid ""
8329 "On success, a session ID is returned.  On error, I<(pid_t)\\ -1> will be "
8330 "returned, and I<errno> is set appropriately."
8331 msgstr ""
8332 "成功すると、セッション ID が返される。 エラーの場合、I<(pid_t) -1> が返さ"
8333 "れ、 I<errno> が適切に設定される。"
8334
8335 #. type: Plain text
8336 #: build/C/man2/getsid.2:70
8337 msgid ""
8338 "A process with process ID I<p> exists, but it is not in the same session as "
8339 "the calling process, and the implementation considers this an error."
8340 msgstr ""
8341 "プロセス ID I<p> のプロセスは存在するが、呼び出し元のプロセスと同じセッション"
8342 "ではなく、 さらに実装がこの状態をエラーと判断した場合。"
8343
8344 #. type: Plain text
8345 #: build/C/man2/getsid.2:75
8346 msgid "No process with process ID I<p> was found."
8347 msgstr "プロセス ID が I<p> のプロセスがない。"
8348
8349 #.  Linux has this system call since Linux 1.3.44.
8350 #.  There is libc support since libc 5.2.19.
8351 #. type: Plain text
8352 #: build/C/man2/getsid.2:79
8353 msgid "This system call is available on Linux since version 2.0."
8354 msgstr "このシステムコールは Linux バージョン 2.0 以降で利用可能である。"
8355
8356 #. type: Plain text
8357 #: build/C/man2/getsid.2:81 build/C/man2/setgid.2:73 build/C/man2/setsid.2:70
8358 msgid "SVr4, POSIX.1-2001."
8359 msgstr "SVr4, POSIX.1-2001."
8360
8361 #. type: Plain text
8362 #: build/C/man2/getsid.2:84
8363 msgid "Linux does not return B<EPERM>."
8364 msgstr "Linux は B<EPERM> を返さない。"
8365
8366 #. type: Plain text
8367 #: build/C/man2/getsid.2:88
8368 msgid "B<getpgid>(2), B<setsid>(2), B<credentials>(7)"
8369 msgstr "B<getpgid>(2), B<setsid>(2), B<credentials>(7)"
8370
8371 #. type: TH
8372 #: build/C/man2/getuid.2:26
8373 #, no-wrap
8374 msgid "GETUID"
8375 msgstr "GETUID"
8376
8377 #. type: Plain text
8378 #: build/C/man2/getuid.2:29
8379 msgid "getuid, geteuid - get user identity"
8380 msgstr "getuid, geteuid - ユーザー ID を得る"
8381
8382 #. type: Plain text
8383 #: build/C/man2/getuid.2:35
8384 msgid "B<uid_t getuid(void);>"
8385 msgstr "B<uid_t getuid(void);>"
8386
8387 #. type: Plain text
8388 #: build/C/man2/getuid.2:37
8389 msgid "B<uid_t geteuid(void);>"
8390 msgstr "B<uid_t geteuid(void);>"
8391
8392 #. type: Plain text
8393 #: build/C/man2/getuid.2:40
8394 msgid "B<getuid>()  returns the real user ID of the calling process."
8395 msgstr "B<getuid>()  は呼び出し元のプロセスの実ユーザー ID を返す。"
8396
8397 #. type: Plain text
8398 #: build/C/man2/getuid.2:43
8399 msgid "B<geteuid>()  returns the effective user ID of the calling process."
8400 msgstr "B<geteuid>()  は呼び出し元のプロセスの実効ユーザー ID を返す。"
8401
8402 #. type: SS
8403 #: build/C/man2/getuid.2:48
8404 #, no-wrap
8405 msgid "History"
8406 msgstr "歴史"
8407
8408 #. type: Plain text
8409 #: build/C/man2/getuid.2:57
8410 msgid ""
8411 "In UNIX\\ V6 the B<getuid>()  call returned I<(euid E<lt>E<lt> 8) + uid>.  "
8412 "UNIX\\ V7 introduced separate calls B<getuid>()  and B<geteuid>()."
8413 msgstr ""
8414 "UNIX\\ V6 では B<getuid>()  コールは I<(euid E<lt>E<lt> 8) + uid> を返してい"
8415 "た。 UNIX\\ V7 では B<getuid>()  と B<geteuid>()  という別々のコールが導入さ"
8416 "れた。"
8417
8418 #. type: Plain text
8419 #: build/C/man2/getuid.2:73
8420 msgid ""
8421 "The original Linux B<getuid>()  and B<geteuid>()  system calls supported "
8422 "only 16-bit user IDs.  Subsequently, Linux 2.4 added B<getuid32>()  and "
8423 "B<geteuid32>(), supporting 32-bit IDs.  The glibc B<getuid>()  and "
8424 "B<geteuid>()  wrapper functions transparently deal with the variations "
8425 "across kernel versions."
8426 msgstr ""
8427 "元々の Linux の B<getuid>() と B<geteuid>() システムコールは\n"
8428 "16 ビットのグループ ID だけに対応していた。\n"
8429 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
8430 "B<getuid32>() と B<geteuid32>() が追加された。\n"
8431 "glibc の B<getuid>() と B<geteuid>() のラッパー関数は\n"
8432 "カーネルバージョンによるこの違いを吸収している。"
8433
8434 #. type: Plain text
8435 #: build/C/man2/getuid.2:78
8436 msgid "B<getresuid>(2), B<setreuid>(2), B<setuid>(2), B<credentials>(7)"
8437 msgstr "B<getresuid>(2), B<setreuid>(2), B<setuid>(2), B<credentials>(7)"
8438
8439 #. type: TH
8440 #: build/C/man3/group_member.3:25
8441 #, no-wrap
8442 msgid "GROUP_MEMBER"
8443 msgstr "GROUP_MEMBER"
8444
8445 #. type: TH
8446 #: build/C/man3/group_member.3:25
8447 #, no-wrap
8448 msgid "2014-03-30"
8449 msgstr "2014-03-30"
8450
8451 #. type: TH
8452 #: build/C/man3/group_member.3:25
8453 #, no-wrap
8454 msgid "GNU"
8455 msgstr "GNU"
8456
8457 #. type: Plain text
8458 #: build/C/man3/group_member.3:28
8459 msgid "group_member - test whether a process is in a group"
8460 msgstr "group_member - プロセスがグループに属しているかを検査する"
8461
8462 #. type: Plain text
8463 #: build/C/man3/group_member.3:32
8464 msgid "B<int group_member(gid_t >I<gid>B<);>"
8465 msgstr "B<int group_member(gid_t >I<gid>B<);>"
8466
8467 #. type: Plain text
8468 #: build/C/man3/group_member.3:40
8469 msgid "B<group_member>(): _GNU_SOURCE"
8470 msgstr "B<group_member>(): _GNU_SOURCE"
8471
8472 #. type: Plain text
8473 #: build/C/man3/group_member.3:48
8474 msgid ""
8475 "The B<group_member>()  function tests whether any of the caller's "
8476 "supplementary group IDs (as returned by B<getgroups>(2))  matches I<gid>."
8477 msgstr ""
8478 "B<group_member>() 関数は、 呼び出し元の補助グループ ID (B<getgroups>(2) が返"
8479 "す値) のいずれかが I<gid> に一致するかを検索する。"
8480
8481 #. type: Plain text
8482 #: build/C/man3/group_member.3:55
8483 msgid ""
8484 "The B<group_member>()  function returns nonzero if any of the caller's "
8485 "supplementary group IDs matches I<gid>, and zero otherwise."
8486 msgstr ""
8487 "B<group_member>() 関数は、 呼び出し元の補助グループ ID のいずれかが I<gid> に"
8488 "一致すれば 0 以外の値を、そうでなければ 0 を返す。"
8489
8490 #. type: Plain text
8491 #: build/C/man3/group_member.3:57
8492 msgid "This function is a nonstandard GNU extension."
8493 msgstr "この関数は非標準の GNU 拡張である。"
8494
8495 #. type: Plain text
8496 #: build/C/man3/group_member.3:62
8497 msgid "B<getgid>(2), B<getgroups>(2), B<getgrouplist>(3), B<group>(5)"
8498 msgstr "B<getgid>(2), B<getgroups>(2), B<getgrouplist>(3), B<group>(5)"
8499
8500 #. type: TH
8501 #: build/C/man2/iopl.2:33
8502 #, no-wrap
8503 msgid "IOPL"
8504 msgstr "IOPL"
8505
8506 #. type: TH
8507 #: build/C/man2/iopl.2:33
8508 #, no-wrap
8509 msgid "2013-03-15"
8510 msgstr "2013-03-15"
8511
8512 #. type: Plain text
8513 #: build/C/man2/iopl.2:36
8514 msgid "iopl - change I/O privilege level"
8515 msgstr "iopl - I/O 特権レベルを変更する"
8516
8517 #. type: Plain text
8518 #: build/C/man2/iopl.2:38
8519 msgid "B<#include E<lt>sys/io.hE<gt>>"
8520 msgstr "B<#include E<lt>sys/io.hE<gt>>"
8521
8522 #. type: Plain text
8523 #: build/C/man2/iopl.2:40
8524 msgid "B<int iopl(int >I<level>B<);>"
8525 msgstr "B<int iopl(int >I<level>B<);>"
8526
8527 #. type: Plain text
8528 #: build/C/man2/iopl.2:45
8529 msgid ""
8530 "B<iopl>()  changes the I/O privilege level of the calling process, as "
8531 "specified by the two least significant bits in I<level>."
8532 msgstr ""
8533 "B<iopl>()  は呼び出し元のプロセスの I/O 特権レベルを I<level> の下位 2 ビット"
8534 "で指定した値に変更する。"
8535
8536 #. type: Plain text
8537 #: build/C/man2/iopl.2:51
8538 msgid ""
8539 "This call is necessary to allow 8514-compatible X servers to run under "
8540 "Linux.  Since these X servers require access to all 65536 I/O ports, the "
8541 "B<ioperm>(2)  call is not sufficient."
8542 msgstr ""
8543 "この関数は 8514 互換の X サーバを Linux で動作させるために必要である。 なぜな"
8544 "らこの X サーバは 65536 個の I/O ポート全てへのアクセスを要求するので "
8545 "B<ioperm>(2)  関数では不十分だからである。"
8546
8547 #. type: Plain text
8548 #: build/C/man2/iopl.2:55
8549 msgid ""
8550 "In addition to granting unrestricted I/O port access, running at a higher I/"
8551 "O privilege level also allows the process to disable interrupts.  This will "
8552 "probably crash the system, and is not recommended."
8553 msgstr ""
8554 "より高い I/O 特権レベルでの動作をさせることによって I/O ポートアクセスの制限"
8555 "を解除することに加えて、プロセスが割り込みを 無効にすることもできるようにな"
8556 "る。この機能は時としてシステムの破壊を もたらすので勧められない。"
8557
8558 #. type: Plain text
8559 #: build/C/man2/iopl.2:60
8560 msgid "Permissions are inherited by B<fork>(2)  and B<execve>(2)."
8561 msgstr "B<fork>(2)  や B<exec>(2)  を行った場合、特権は継承される。"
8562
8563 #. type: Plain text
8564 #: build/C/man2/iopl.2:62
8565 msgid "The I/O privilege level for a normal process is 0."
8566 msgstr "通常のプロセスの I/O 特権レベルは 0 である。"
8567
8568 #. type: Plain text
8569 #: build/C/man2/iopl.2:66
8570 msgid ""
8571 "This call is mostly for the i386 architecture.  On many other architectures "
8572 "it does not exist or will always return an error."
8573 msgstr ""
8574 "このシステムコールはほとんど i386 アーキテクチャのためだけのものである。 その"
8575 "他の多くのアーキテクチャでは存在しないか、常にエラーを返す。"
8576
8577 #. type: Plain text
8578 #: build/C/man2/iopl.2:76
8579 msgid "I<level> is greater than 3."
8580 msgstr "引き数 I<level> が 3 より大きい。"
8581
8582 #. type: Plain text
8583 #: build/C/man2/iopl.2:79
8584 msgid "This call is unimplemented."
8585 msgstr "このシステムコールは実装されていない。"
8586
8587 #. type: Plain text
8588 #: build/C/man2/iopl.2:87
8589 msgid ""
8590 "The calling process has insufficient privilege to call B<iopl>(); the "
8591 "B<CAP_SYS_RAWIO> capability is required to raise the I/O privilege level "
8592 "above its current value."
8593 msgstr ""
8594 "呼び出し元プロセスに B<iopl>()  を呼び出すのに十分な権限がなかった。 I/O 特権"
8595 "レベルを現在の値より上げるには B<CAP_SYS_RAWIO> ケーパビリティが必要である。"
8596
8597 #. type: Plain text
8598 #: build/C/man2/iopl.2:91
8599 msgid ""
8600 "B<iopl>()  is Linux-specific and should not be used in programs that are "
8601 "intended to be portable."
8602 msgstr ""
8603 "B<ipc>()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけな"
8604 "い。"
8605
8606 #. type: Plain text
8607 #: build/C/man2/iopl.2:100
8608 msgid ""
8609 "Libc5 treats it as a system call and has a prototype in I<E<lt>unistd."
8610 "hE<gt>>.  Glibc1 does not have a prototype.  Glibc2 has a prototype both in "
8611 "I<E<lt>sys/io.hE<gt>> and in I<E<lt>sys/perm.hE<gt>>.  Avoid the latter, it "
8612 "is available on i386 only."
8613 msgstr ""
8614 "libc5 ではシステムコールとして扱い I<E<lt>unistd.hE<gt>> にプロトタイプが存在"
8615 "している。 glibc1 にはプロトタイプは存在していない。 glibc2 は I<E<lt>sys/io."
8616 "hE<gt>> と I<E<lt>sys/perm.hE<gt>> の両方にプロトタイプを持っている。 後者は "
8617 "i386 のみで利用可能なので、使用すべきではない。"
8618
8619 #. type: Plain text
8620 #: build/C/man2/iopl.2:104
8621 msgid "B<ioperm>(2), B<outb>(2), B<capabilities>(7)"
8622 msgstr "B<ioperm>(2), B<outb>(2), B<capabilities>(7)"
8623
8624 #. type: TH
8625 #: build/C/man2/ioprio_set.2:24
8626 #, no-wrap
8627 msgid "IOPRIO_SET"
8628 msgstr "IOPRIO_SET"
8629
8630 #. type: TH
8631 #: build/C/man2/ioprio_set.2:24
8632 #, no-wrap
8633 msgid "2013-02-12"
8634 msgstr "2013-02-12"
8635
8636 #. type: Plain text
8637 #: build/C/man2/ioprio_set.2:27
8638 msgid "ioprio_get, ioprio_set - get/set I/O scheduling class and priority"
8639 msgstr "ioprio_get, ioprio_set - I/O スケジューリングクラスと優先度の設定/取得"
8640
8641 #. type: Plain text
8642 #: build/C/man2/ioprio_set.2:31
8643 #, no-wrap
8644 msgid ""
8645 "B<int ioprio_get(int >I<which>B<, int >I<who>B<);>\n"
8646 "B<int ioprio_set(int >I<which>B<, int >I<who>B<, int >I<ioprio>B<);>\n"
8647 msgstr ""
8648 "B<int ioprio_get(int >I<which>B<, int >I<who>B<);>\n"
8649 "B<int ioprio_set(int >I<which>B<, int >I<who>B<, int >I<ioprio>B<);>\n"
8650
8651 #. type: Plain text
8652 #: build/C/man2/ioprio_set.2:35
8653 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
8654 msgstr ""
8655 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
8656 "の節を参照。"
8657
8658 #. type: Plain text
8659 #: build/C/man2/ioprio_set.2:42
8660 msgid ""
8661 "The B<ioprio_get>()  and B<ioprio_set>()  system calls respectively get and "
8662 "set the I/O scheduling class and priority of one or more threads."
8663 msgstr ""
8664 "システムコール B<ioprio_get>()  / B<ioprio_set>()  は、(1つ以上の) スレッド"
8665 "の I/O スケジューリングクラスと 優先度の取得/設定を行う。"
8666
8667 #. type: Plain text
8668 #: build/C/man2/ioprio_set.2:54
8669 msgid ""
8670 "The I<which> and I<who> arguments identify the thread(s) on which the system "
8671 "calls operate.  The I<which> argument determines how I<who> is interpreted, "
8672 "and has one of the following values:"
8673 msgstr ""
8674 "I<which> と I<who> 引き数でシステムコールの操作対象となるスレッドを指示す"
8675 "る。 I<which> 引き数は、 I<who> をどのように解釈するかを決めるもので、以下の"
8676 "いずれか一つを指定する。"
8677
8678 #. type: TP
8679 #: build/C/man2/ioprio_set.2:54
8680 #, no-wrap
8681 msgid "B<IOPRIO_WHO_PROCESS>"
8682 msgstr "B<IOPRIO_WHO_PROCESS>"
8683
8684 #. type: Plain text
8685 #: build/C/man2/ioprio_set.2:61
8686 msgid ""
8687 "I<who> is a process ID or thread ID identifying a single process or thread.  "
8688 "If I<who> is 0, then operate on the calling thread."
8689 msgstr ""
8690 "I<who> は特定のプロセスやスレッドを特定するためのプロセス ID かスレッド ID で"
8691 "ある。 I<who> が 0 の場合、呼び出し元のスレッドに対して操作が行われる。"
8692
8693 #. type: TP
8694 #: build/C/man2/ioprio_set.2:61
8695 #, no-wrap
8696 msgid "B<IOPRIO_WHO_PGRP>"
8697 msgstr "B<IOPRIO_WHO_PGRP>"
8698
8699 #. type: Plain text
8700 #: build/C/man2/ioprio_set.2:68
8701 msgid ""
8702 "I<who> is a process group ID identifying all the members of a process "
8703 "group.  If I<who> is 0, then operate on the process group of which the "
8704 "caller is a member."
8705 msgstr ""
8706 "I<who> はプロセスグループ ID であり、プロセスグループの全メンバが対象とな"
8707 "る。 I<who> が 0 の場合、 呼び出し元がメンバーとなっているプロセスグループに"
8708 "対して操作が行われる。"
8709
8710 #. type: TP
8711 #: build/C/man2/ioprio_set.2:68
8712 #, no-wrap
8713 msgid "B<IOPRIO_WHO_USER>"
8714 msgstr "B<IOPRIO_WHO_USER>"
8715
8716 #.  FIXME . Need to document the behavior when 'who" is specified as 0
8717 #.  See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652443
8718 #. type: Plain text
8719 #: build/C/man2/ioprio_set.2:75
8720 msgid ""
8721 "I<who> is a user ID identifying all of the processes that have a matching "
8722 "real UID."
8723 msgstr "I<who> はユーザID であり、実 UID に一致する全プロセスが対象となる。"
8724
8725 #. type: Plain text
8726 #: build/C/man2/ioprio_set.2:98
8727 msgid ""
8728 "If I<which> is specified as B<IOPRIO_WHO_PGRP> or B<IOPRIO_WHO_USER> when "
8729 "calling B<ioprio_get>(), and more than one process matches I<who>, then the "
8730 "returned priority will be the highest one found among all of the matching "
8731 "processes.  One priority is said to be higher than another one if it belongs "
8732 "to a higher priority class (B<IOPRIO_CLASS_RT> is the highest priority "
8733 "class; B<IOPRIO_CLASS_IDLE> is the lowest)  or if it belongs to the same "
8734 "priority class as the other process but has a higher priority level (a lower "
8735 "priority number means a higher priority level)."
8736 msgstr ""
8737 "B<ioprio_get>()  の呼び出し時に I<which> に B<IOPRIO_WHO_PGRP> か "
8738 "B<IOPRIO_WHO_USER> が指定され、 I<who> に一致するプロセスが複数あった場合、 "
8739 "一致するプロセス全体の中で最も高い優先度が返される。 優先度が高いとは、より高"
8740 "い優先度クラスに属している (B<IOPRIO_CLASS_RT> が最も高い優先度クラスで、 "
8741 "B<IOPRIO_CLASS_IDLE> が最も低い)、もしくは 同じ優先度クラスに属しているが優先"
8742 "度レベルが高い (優先度番号が小さい方が優先度レベルが高いことを意味する)、 と"
8743 "いうことである。"
8744
8745 #. type: Plain text
8746 #: build/C/man2/ioprio_set.2:108
8747 msgid ""
8748 "The I<ioprio> argument given to B<ioprio_set>()  is a bit mask that "
8749 "specifies both the scheduling class and the priority to be assigned to the "
8750 "target process(es).  The following macros are used for assembling and "
8751 "dissecting I<ioprio> values:"
8752 msgstr ""
8753 "B<ioprio_set>()  に渡す I<ioprio> 引き数は、対象となるプロセスに割り当てるス"
8754 "ケジューリングクラスと 優先度の両方を指定するビットマスクである。 I<ioprio> "
8755 "の値を組み立てたり解釈するのに、以下のマクロが利用できる。"
8756
8757 #. type: TP
8758 #: build/C/man2/ioprio_set.2:108
8759 #, no-wrap
8760 msgid "B<IOPRIO_PRIO_VALUE(>I<class>B<, >I<data>B<)>"
8761 msgstr "B<IOPRIO_PRIO_VALUE(>I<class>B<, >I<data>B<)>"
8762
8763 #. type: Plain text
8764 #: build/C/man2/ioprio_set.2:117
8765 msgid ""
8766 "Given a scheduling I<class> and priority (I<data>), this macro combines the "
8767 "two values to produce an I<ioprio> value, which is returned as the result of "
8768 "the macro."
8769 msgstr ""
8770 "スケジューリングクラス I<class> と優先度 (I<data>)  を与えると、このマクロは "
8771 "2つの値を組み合わせて、 I<ioprio> 値を生成し、マクロの結果として返す。"
8772
8773 #. type: TP
8774 #: build/C/man2/ioprio_set.2:117
8775 #, no-wrap
8776 msgid "B<IOPRIO_PRIO_CLASS(>I<mask>B<)>"
8777 msgstr "B<IOPRIO_PRIO_CLASS(>I<mask>B<)>"
8778
8779 #. type: Plain text
8780 #: build/C/man2/ioprio_set.2:129
8781 msgid ""
8782 "Given I<mask> (an I<ioprio> value), this macro returns its I/O class "
8783 "component, that is, one of the values B<IOPRIO_CLASS_RT>, "
8784 "B<IOPRIO_CLASS_BE>, or B<IOPRIO_CLASS_IDLE>."
8785 msgstr ""
8786 "I<mask> (I<ioprio> 値) を与えると、このマクロは I/O クラス要素、つまり "
8787 "B<IOPRIO_CLASS_RT>, B<IOPRIO_CLASS_BE>, B<IOPRIO_CLASS_IDLE> のいずれか一つの"
8788 "値を返す。"
8789
8790 #. type: TP
8791 #: build/C/man2/ioprio_set.2:129
8792 #, no-wrap
8793 msgid "B<IOPRIO_PRIO_DATA(>I<mask>B<)>"
8794 msgstr "B<IOPRIO_PRIO_DATA(>I<mask>B<)>"
8795
8796 #. type: Plain text
8797 #: build/C/man2/ioprio_set.2:138
8798 msgid ""
8799 "Given I<mask> (an I<ioprio> value), this macro returns its priority "
8800 "(I<data>)  component."
8801 msgstr ""
8802 "I<mask> (I<ioprio> 値) を与えると、このマクロは優先度 (I<data>)  要素を返す。"
8803
8804 #. type: Plain text
8805 #: build/C/man2/ioprio_set.2:141
8806 msgid ""
8807 "See the NOTES section for more information on scheduling classes and "
8808 "priorities."
8809 msgstr ""
8810 "スケジューリングクラスと優先度に関する詳しい情報は、 「備考」の節を参照のこ"
8811 "と。"
8812
8813 #. type: Plain text
8814 #: build/C/man2/ioprio_set.2:149
8815 msgid ""
8816 "I/O priorities are supported for reads and for synchronous (B<O_DIRECT>, "
8817 "B<O_SYNC>)  writes.  I/O priorities are not supported for asynchronous "
8818 "writes because they are issued outside the context of the program dirtying "
8819 "the memory, and thus program-specific priorities do not apply."
8820 msgstr ""
8821 "I/O 優先度は読み出しと同期書き込み (B<O_DIRECT>, B<O_SYNC>)  に対応してい"
8822 "る。 I/O 優先度は非同期書き込みには対応していない。なぜなら、 非同期書き込み"
8823 "はメモリ書き換えを行うプログラムの動作 (context) とは 関係なく発行され、その"
8824 "ためプログラム単位の優先度は適用されないから である。"
8825
8826 #. type: Plain text
8827 #: build/C/man2/ioprio_set.2:162
8828 msgid ""
8829 "On success, B<ioprio_get>()  returns the I<ioprio> value of the process with "
8830 "highest I/O priority of any of the processes that match the criteria "
8831 "specified in I<which> and I<who>.  On error, -1 is returned, and I<errno> is "
8832 "set to indicate the error."
8833 msgstr ""
8834 "成功すると、 B<ioprio_get>()  は、 I<which> と I<who> で指定された基準に合致"
8835 "した全プロセスで最も高い I/O 優先度を持つプロセスの I<ioprio> 値を返す。 エ"
8836 "ラーの場合、-1 を返し、 I<errno> にエラーを示す値を設定する。"
8837
8838 #. type: Plain text
8839 #: build/C/man2/ioprio_set.2:169
8840 msgid ""
8841 "On success, B<ioprio_set>()  returns 0.  On error, -1 is returned, and "
8842 "I<errno> is set to indicate the error."
8843 msgstr ""
8844 "成功すると、 B<ioprio_set>()  は 0 を返す。 エラーの場合、-1 を返し、 "
8845 "I<errno> にエラーを示す値を設定する。"
8846
8847 #. type: Plain text
8848 #: build/C/man2/ioprio_set.2:179
8849 msgid ""
8850 "Invalid value for I<which> or I<ioprio>.  Refer to the NOTES section for "
8851 "available scheduler classes and priority levels for I<ioprio>."
8852 msgstr ""
8853 "I<which> か I<ioprio> の値が不正である。 I<ioprio> 用に指定可能なスケジューラ"
8854 "クラスと優先度レベルについては 「備考」を参照のこと。"
8855
8856 #. type: Plain text
8857 #: build/C/man2/ioprio_set.2:187
8858 msgid ""
8859 "The calling process does not have the privilege needed to assign this "
8860 "I<ioprio> to the specified process(es).  See the NOTES section for more "
8861 "information on required privileges for B<ioprio_set>()."
8862 msgstr ""
8863 "呼び出し元プロセスが、指定されたプロセスに I<ioprio> を割り当てるのに必要な権"
8864 "限を持っていない。 B<ioprio_set>()  に必要な権限についての詳しい情報は「備"
8865 "考」の節を参照のこと。"
8866
8867 #. type: Plain text
8868 #: build/C/man2/ioprio_set.2:193
8869 msgid ""
8870 "No process(es) could be found that matched the specification in I<which> and "
8871 "I<who>."
8872 msgstr ""
8873 "I<which> と I<who> で指定された基準に合致するプロセスが見つからなかった。"
8874
8875 #. type: Plain text
8876 #: build/C/man2/ioprio_set.2:196
8877 msgid "These system calls have been available on Linux since kernel 2.6.13."
8878 msgstr ""
8879 "これらのシステムコールはカーネル 2.6.13 以降の Linux で利用可能である。"
8880
8881 #. type: Plain text
8882 #: build/C/man2/ioprio_set.2:201
8883 msgid ""
8884 "Glibc does not provide a wrapper for these system calls; call them using "
8885 "B<syscall>(2)."
8886 msgstr ""
8887 "glibc はこれらのシステムコールに対するラッパー関数を提供していない。 "
8888 "B<syscall>(2)  を使って呼び出すこと。"
8889
8890 #. type: Plain text
8891 #: build/C/man2/ioprio_set.2:220
8892 msgid ""
8893 "Two or more processes or threads can share an I/O context.  This will be the "
8894 "case when B<clone>(2)  was called with the B<CLONE_IO> flag.  However, by "
8895 "default, the distinct threads of a process will B<not> share the same I/O "
8896 "context.  This means that if you want to change the I/O priority of all "
8897 "threads in a process, you may need to call B<ioprio_set>()  on each of the "
8898 "threads.  The thread ID that you would need for this operation is the one "
8899 "that is returned by B<gettid>(2)  or B<clone>(2)."
8900 msgstr ""
8901 "複数のプロセスやスレッドが一つの I/O コンテキストを共有する場合がある。 "
8902 "B<clone>(2) を B<CLONE_IO> フラグ付きで呼び出した場合にはこの状況となる。 し"
8903 "かしながら、デフォルトでは、一つのプロセスの個々のスレッドは I/O コンテキスト"
8904 "を共有「しない」。 したがって、 プロセス内のすべてのスレッドの I/O 優先度を変"
8905 "更したい場合には、 それぞれのスレッドに対して B<ioprio_set>() を呼び出す必要"
8906 "がある。 この操作を行うのに必要となるスレッド ID には B<gettid>(2) か "
8907 "B<clone>(2) が返す値を指定する。"
8908
8909 #. type: Plain text
8910 #: build/C/man2/ioprio_set.2:225
8911 msgid ""
8912 "These system calls have an effect only when used in conjunction with an I/O "
8913 "scheduler that supports I/O priorities.  As at kernel 2.6.17 the only such "
8914 "scheduler is the Completely Fair Queuing (CFQ) I/O scheduler."
8915 msgstr ""
8916 "これらのシステムコールは、I/O 優先度に対応した I/O スケジューラと 組み合わせ"
8917 "て使用された場合にのみ効果を持つ。 カーネル 2.6.17 では、この条件を満たすスケ"
8918 "ジューラは Completely Fair Queuing (CFQ) I/O スケジューラだけである。"
8919
8920 #. type: SS
8921 #: build/C/man2/ioprio_set.2:225
8922 #, no-wrap
8923 msgid "Selecting an I/O scheduler"
8924 msgstr "I/O スケジューラの選択"
8925
8926 #. type: Plain text
8927 #: build/C/man2/ioprio_set.2:229
8928 msgid ""
8929 "I/O Schedulers are selected on a per-device basis via the special file I</"
8930 "sys/block/E<lt>deviceE<gt>/queue/scheduler>."
8931 msgstr ""
8932 "I/O スケジューラの選択はデバイス単位に行われ、その選択は スペシャルファイル "
8933 "I</sys/block/E<lt>deviceE<gt>/queue/scheduler> 経由で行われる。"
8934
8935 #. type: Plain text
8936 #: build/C/man2/ioprio_set.2:235
8937 msgid ""
8938 "One can view the current I/O scheduler via the I</sys> filesystem.  For "
8939 "example, the following command displays a list of all schedulers currently "
8940 "loaded in the kernel:"
8941 msgstr ""
8942 "現在の I/O スケジューラは I</sys> ファイルシステム経由で参照できる。例えば、"
8943 "以下のコマンドを実行すると、 現在カーネルでロードされているスケジューラの全リ"
8944 "ストが表示される。"
8945
8946 #. type: Plain text
8947 #: build/C/man2/ioprio_set.2:240
8948 #, no-wrap
8949 msgid ""
8950 "$B< cat /sys/block/hda/queue/scheduler>\n"
8951 "noop anticipatory deadline [cfq]\n"
8952 msgstr ""
8953 "$B< cat /sys/block/hda/queue/scheduler>\n"
8954 "noop anticipatory deadline [cfq]\n"
8955
8956 #. type: Plain text
8957 #: build/C/man2/ioprio_set.2:254
8958 msgid ""
8959 "The scheduler surrounded by brackets is the one actually in use for the "
8960 "device (I<hda> in the example).  Setting another scheduler is done by "
8961 "writing the name of the new scheduler to this file.  For example, the "
8962 "following command will set the scheduler for the I<hda> device to I<cfq>:"
8963 msgstr ""
8964 "括弧で囲まれたスケジューラがそのデバイス (上の例では I<hda>)  について実際に"
8965 "使用されているスケジューラである。 別のスケジューラを設定するには、このファイ"
8966 "ルに新しいスケジューラ名を 書き込めばよい。例えば、以下のコマンドを実行する"
8967 "と、デバイス I<hda> のスケジューラとして I<cfq> が設定される。"
8968
8969 #. type: Plain text
8970 #: build/C/man2/ioprio_set.2:260
8971 #, no-wrap
8972 msgid ""
8973 "$B< su>\n"
8974 "Password:\n"
8975 "#B< echo cfq E<gt> /sys/block/hda/queue/scheduler>\n"
8976 msgstr ""
8977 "$B< su>\n"
8978 "Password:\n"
8979 "#B< echo cfq E<gt> /sys/block/hda/queue/scheduler>\n"
8980
8981 #. type: SS
8982 #: build/C/man2/ioprio_set.2:262
8983 #, no-wrap
8984 msgid "The Completely Fair Queuing (CFQ) I/O scheduler"
8985 msgstr "Completely Fair Queuing (CFQ) I/O スケジューラ"
8986
8987 #. type: Plain text
8988 #: build/C/man2/ioprio_set.2:268
8989 msgid ""
8990 "Since v3 (aka CFQ Time Sliced) CFQ implements I/O nice levels similar to "
8991 "those of CPU scheduling.  These nice levels are grouped in three scheduling "
8992 "classes each one containing one or more priority levels:"
8993 msgstr ""
8994 "バージョン 3 (別名 CFQ Time Sliced) 以降、 CPU スケジューリングと同様の I/O "
8995 "nice レベルが CFQ に実装されている。 これらの nice レベルは 3つのスケジューリ"
8996 "ングクラスに分類でき、 各スケジューリングクラスにつき 1つ以上の優先度レベルが"
8997 "定義されている。"
8998
8999 #. type: TP
9000 #: build/C/man2/ioprio_set.2:268
9001 #, no-wrap
9002 msgid "B<IOPRIO_CLASS_RT> (1)"
9003 msgstr "B<IOPRIO_CLASS_RT> (1)"
9004
9005 #. type: Plain text
9006 #: build/C/man2/ioprio_set.2:283
9007 msgid ""
9008 "This is the real-time I/O class.  This scheduling class is given higher "
9009 "priority than any other class: processes from this class are given first "
9010 "access to the disk every time.  Thus this I/O class needs to be used with "
9011 "some care: one I/O real-time process can starve the entire system.  Within "
9012 "the real-time class, there are 8 levels of class data (priority) that "
9013 "determine exactly how much time this process needs the disk for on each "
9014 "service.  The highest real-time priority level is 0; the lowest is 7.  In "
9015 "the future this might change to be more directly mappable to performance, by "
9016 "passing in a desired data rate instead."
9017 msgstr ""
9018 "これはリアルタイム I/O クラスである。 このスケジューリングクラスには他のクラ"
9019 "スよりも高い優先度が与えられる。 このクラスのプロセスには、常にディスクへのア"
9020 "クセスが優先して 割り当てられる。そのため、この I/O クラスを使う際には、 たっ"
9021 "た一つの リアルタイム I/O クラスのプロセスにより システム全体のディスクアクセ"
9022 "スができなくなってしまうことがある という点に、注意を払う必要がある。 このク"
9023 "ラスには、8 段階の class data (優先度レベル) がある。 この値は、そのプロセス"
9024 "が 1回のディスクアクセスにどれだけの 時間が必要かを正確に決めるためのものであ"
9025 "る。 最高のリアルタイム優先度レベルは 0 で、最低は 7 である。 将来的には、優"
9026 "先度レベルは、希望するデータレートを渡すなど、 より直接的に性能条件を反映でき"
9027 "るように変更されるかもしれない。"
9028
9029 #. type: TP
9030 #: build/C/man2/ioprio_set.2:283
9031 #, no-wrap
9032 msgid "B<IOPRIO_CLASS_BE> (2)"
9033 msgstr "B<IOPRIO_CLASS_BE> (2)"
9034
9035 #. type: Plain text
9036 #: build/C/man2/ioprio_set.2:296
9037 msgid ""
9038 "This is the best-effort scheduling class, which is the default for any "
9039 "process that hasn't set a specific I/O priority.  The class data (priority) "
9040 "determines how much I/O bandwidth the process will get.  Best-effort "
9041 "priority levels are analogous to CPU nice values (see B<getpriority>(2)).  "
9042 "The priority level determines a priority relative to other processes in the "
9043 "best-effort scheduling class.  Priority levels range from 0 (highest) to 7 "
9044 "(lowest)."
9045 msgstr ""
9046 "これは ベストエフォート・スケジューリングクラスである。 このクラスは、特定の "
9047 "I/O 優先度を設定していないプロセスの デフォルト値である。 class data (優先度"
9048 "レベル) により、そのプロセスがどの程度の I/O 帯域を得られるかが決定される。 "
9049 "ベストエフォート・優先度レベルは、CPU の nice 値 (B<getpriority>(2)  参照) と"
9050 "同様のものである。 優先度レベルは、ベストエフォート・スケジューリングクラスの"
9051 "中で 他のプロセスとの相対的な優先度を決定する。 優先度レベルの値の範囲は 0 "
9052 "(最高) から 7 (最低) である。"
9053
9054 #. type: TP
9055 #: build/C/man2/ioprio_set.2:296
9056 #, no-wrap
9057 msgid "B<IOPRIO_CLASS_IDLE> (3)"
9058 msgstr "B<IOPRIO_CLASS_IDLE> (3)"
9059
9060 #. type: Plain text
9061 #: build/C/man2/ioprio_set.2:305
9062 msgid ""
9063 "This is the idle scheduling class.  Processes running at this level only get "
9064 "I/O time when no-one else needs the disk.  The idle class has no class "
9065 "data.  Attention is required when assigning this priority class to a "
9066 "process, since it may become starved if higher priority processes are "
9067 "constantly accessing the disk."
9068 msgstr ""
9069 "これは idle スケジューリングクラスである。 このレベルで動作するプロセスは他に"
9070 "ディスクアクセスをしようとする プロセスがない場合にのみ I/O 時間を取得する。 "
9071 "idle クラスには class data (優先度) は用意されていない。 プロセスにこの優先度"
9072 "を割り当てる際には注意が必要である。 なぜなら、優先度の高いプロセスが常にディ"
9073 "スクにアクセスしている場合には ディスクにアクセスできなくなる可能性があるから"
9074 "だ。"
9075
9076 #. type: Plain text
9077 #: build/C/man2/ioprio_set.2:309
9078 msgid ""
9079 "Refer to I<Documentation/block/ioprio.txt> for more information on the CFQ I/"
9080 "O Scheduler and an example program."
9081 msgstr ""
9082 "CFQ I/O スケジューラの更なる情報とサンプルプログラムについては "
9083 "I<Documentation/block/ioprio.txt> を参照のこと。"
9084
9085 #. type: SS
9086 #: build/C/man2/ioprio_set.2:309
9087 #, no-wrap
9088 msgid "Required permissions to set I/O priorities"
9089 msgstr "I/O 優先度の設定に必要な許可"
9090
9091 #. type: Plain text
9092 #: build/C/man2/ioprio_set.2:312
9093 msgid ""
9094 "Permission to change a process's priority is granted or denied based on two "
9095 "assertions:"
9096 msgstr ""
9097 "プロセスの優先度を変更する許可が得られるかどうかは 以下の 2つの条件に基いて決"
9098 "定される。"
9099
9100 #. type: TP
9101 #: build/C/man2/ioprio_set.2:312
9102 #, no-wrap
9103 msgid "B<Process ownership>"
9104 msgstr "B<プロセスの所有権>"
9105
9106 #. type: Plain text
9107 #: build/C/man2/ioprio_set.2:320
9108 msgid ""
9109 "An unprivileged process may set only the I/O priority of a process whose "
9110 "real UID matches the real or effective UID of the calling process.  A "
9111 "process which has the B<CAP_SYS_NICE> capability can change the priority of "
9112 "any process."
9113 msgstr ""
9114 "非特権プロセスは、プロセスの実 UID が呼び出し元プロセスの実 UID もしくは 実"
9115 "効 UID と一致するプロセスの I/O 優先度のみを設定できる。 B<CAP_SYS_NICE> ケー"
9116 "パビリティを持つプロセスは、どのプロセスの優先度でも変更できる。"
9117
9118 #. type: TP
9119 #: build/C/man2/ioprio_set.2:320
9120 #, no-wrap
9121 msgid "B<What is the desired priority>"
9122 msgstr "B<どの優先度に設定しようとしているか>"
9123
9124 #. type: Plain text
9125 #: build/C/man2/ioprio_set.2:332
9126 msgid ""
9127 "Attempts to set very high priorities (B<IOPRIO_CLASS_RT>)  require the "
9128 "B<CAP_SYS_ADMIN> capability.  Kernel versions up to 2.6.24 also required "
9129 "B<CAP_SYS_ADMIN> to set a very low priority (B<IOPRIO_CLASS_IDLE>), but "
9130 "since Linux 2.6.25, this is no longer required."
9131 msgstr ""
9132 "非常に高い優先度 (B<IOPRIO_CLASS_RT>)  を設定しようとする場合、 "
9133 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。 カーネル 2.6.24 以前では、非常"
9134 "に低い優先度 (B<IOPRIO_CLASS_IDLE>)  を設定するためにも B<CAP_SYS_ADMIN> ケー"
9135 "パビリティが必要であったが、 Linux 2.6.25 以降ではもはや必要なくなった。"
9136
9137 #. type: Plain text
9138 #: build/C/man2/ioprio_set.2:337
9139 msgid ""
9140 "A call to B<ioprio_set>()  must follow both rules, or the call will fail "
9141 "with the error B<EPERM>."
9142 msgstr ""
9143 "B<ioprio_set>()  はこの両方のルールに従い、条件を満たさない場合、エラー "
9144 "B<EPERM> で失敗する。"
9145
9146 #.  6 May 07: Bug report raised:
9147 #.  http://sources.redhat.com/bugzilla/show_bug.cgi?id=4464
9148 #.  Ulrich Drepper replied that he wasn't going to add these
9149 #.  to glibc.
9150 #. type: Plain text
9151 #: build/C/man2/ioprio_set.2:346
9152 msgid ""
9153 "Glibc does not yet provide a suitable header file defining the function "
9154 "prototypes and macros described on this page.  Suitable definitions can be "
9155 "found in I<linux/ioprio.h>."
9156 msgstr ""
9157 "glibc は、このページに記載された関数プロトタイプやマクロを定義する 適切なヘッ"
9158 "ダファイルをまだ提供していない。 必要な定義については I<linux/ioprio.h> を見"
9159 "ればよい。"
9160
9161 #. type: Plain text
9162 #: build/C/man2/ioprio_set.2:351
9163 msgid "B<ionice>(1), B<getpriority>(2), B<open>(2), B<capabilities>(7)"
9164 msgstr "B<ionice>(1), B<getpriority>(2), B<open>(2), B<capabilities>(7)"
9165
9166 #. type: Plain text
9167 #: build/C/man2/ioprio_set.2:354
9168 msgid "I<Documentation/block/ioprio.txt> in the Linux kernel source tree"
9169 msgstr "Linux カーネルソース内の I<Documentation/block/ioprio.txt>"
9170
9171 #. type: TH
9172 #: build/C/man2/ipc.2:25
9173 #, no-wrap
9174 msgid "IPC"
9175 msgstr "IPC"
9176
9177 #. type: TH
9178 #: build/C/man2/ipc.2:25
9179 #, no-wrap
9180 msgid "2012-10-16"
9181 msgstr "2012-10-16"
9182
9183 #. type: Plain text
9184 #: build/C/man2/ipc.2:28
9185 msgid "ipc - System V IPC system calls"
9186 msgstr "ipc - System V IPC システムコール"
9187
9188 #. type: Plain text
9189 #: build/C/man2/ipc.2:33
9190 #, no-wrap
9191 msgid ""
9192 "B<int ipc(unsigned int >I<call>B<, int >I<first>B<, int >I<second>B<, int >I<third>B<,>\n"
9193 "B<        void *>I<ptr>B<, long >I<fifth>B<);>\n"
9194 msgstr ""
9195 "B<int ipc(unsigned int >I<call>B<, int >I<first>B<, int >I<second>B<, int >I<third>B<,>\n"
9196 "B<        void *>I<ptr>B<, long >I<fifth>B<);>\n"
9197
9198 #. type: Plain text
9199 #: build/C/man2/ipc.2:41
9200 msgid ""
9201 "B<ipc>()  is a common kernel entry point for the System\\ V IPC calls for "
9202 "messages, semaphores, and shared memory.  I<call> determines which IPC "
9203 "function to invoke; the other arguments are passed through to the "
9204 "appropriate call."
9205 msgstr ""
9206 "B<ipc>()  は メッセージ、セマフォー、共有メモリに関する System\\ V IPC コール"
9207 "の 共通のカーネルへのエントリポイントである。 I<call> はどの IPC 関数を呼び出"
9208 "すかを決め; 他の引き数は適切なコールへと渡される。"
9209
9210 #. type: Plain text
9211 #: build/C/man2/ipc.2:45
9212 msgid ""
9213 "User programs should call the appropriate functions by their usual names.  "
9214 "Only standard library implementors and kernel hackers need to know about "
9215 "B<ipc>()."
9216 msgstr ""
9217 "ユーザープログラムは通常の名前で適切な関数を呼び出すべきである。 標準ライブラ"
9218 "リの実装者やカーネルハッカーのみが B<ipc>()  について知る必要がある。"
9219
9220 #. type: Plain text
9221 #: build/C/man2/ipc.2:49
9222 msgid ""
9223 "B<ipc>()  is Linux-specific, and should not be used in programs intended to "
9224 "be portable."
9225 msgstr ""
9226 "B<ipc>()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけな"
9227 "い。"
9228
9229 #. type: Plain text
9230 #: build/C/man2/ipc.2:57
9231 msgid ""
9232 "On some architectures\\(emfor example x86-64 and ARM\\(emthere is no "
9233 "B<ipc>()  system call; instead B<msgctl>(2), B<semctl>(2), B<shmctl>(2), and "
9234 "so on really are implemented as separate system calls."
9235 msgstr ""
9236 "いくつかのアーキテクチャ\\(emfor 例えば x86-64 や ARM\\(emでは、システムコー"
9237 "ル B<ipc>()  が存在しない。実際には、その代わりに B<msgctl>(2), "
9238 "B<semctl>(2), B<shmctl>(2)  などが独立したシステムコールとして実装されてい"
9239 "る。"
9240
9241 #. type: Plain text
9242 #: build/C/man2/ipc.2:70
9243 msgid ""
9244 "B<msgctl>(2), B<msgget>(2), B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), "
9245 "B<semget>(2), B<semop>(2), B<semtimedop>(2), B<shmat>(2), B<shmctl>(2), "
9246 "B<shmdt>(2), B<shmget>(2)"
9247 msgstr ""
9248 "B<msgctl>(2), B<msgget>(2), B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), "
9249 "B<semget>(2), B<semop>(2), B<shmat>(2), B<shmctl>(2), B<shmdt>(2), "
9250 "B<shmget>(2)"
9251
9252 #. type: TH
9253 #: build/C/man7/namespaces.7:27
9254 #, no-wrap
9255 msgid "NAMESPACES"
9256 msgstr "NAMESPACES"
9257
9258 #. type: Plain text
9259 #: build/C/man7/namespaces.7:30
9260 msgid "namespaces - overview of Linux namespaces"
9261 msgstr "namespaces - Linux 名前空間の概要"
9262
9263 #. type: Plain text
9264 #: build/C/man7/namespaces.7:37
9265 msgid ""
9266 "A namespace wraps a global system resource in an abstraction that makes it "
9267 "appear to the processes within the namespace that they have their own "
9268 "isolated instance of the global resource.  Changes to the global resource "
9269 "are visible to other processes that are members of the namespace, but are "
9270 "invisible to other processes.  One use of namespaces is to implement "
9271 "containers."
9272 msgstr ""
9273 "名前空間は、 グローバルシステムリソースを抽象化層で覆うことで、 名前空間内の"
9274 "プロセスに対して、 自分たちが専用の分離されたグローバルリソースを持っているか"
9275 "のように見せる仕組みである。 グローバルリソースへの変更は、 名前空間のメン"
9276 "バーである他のプロセスには見えるが、 それ以外のプロセスには見えない。 名前空"
9277 "間の一つの利用方法はコンテナーの実装である。"
9278
9279 #. type: Plain text
9280 #: build/C/man7/namespaces.7:39
9281 msgid "Linux provides the following namespaces:"
9282 msgstr "Linux では以下の名前空間が提供される。"
9283
9284 #. type: tbl table
9285 #: build/C/man7/namespaces.7:42
9286 #, no-wrap
9287 msgid "Namespace\tConstant\tIsolates\n"
9288 msgstr "名前空間\t定数\t分離対象\n"
9289
9290 #. type: tbl table
9291 #: build/C/man7/namespaces.7:43
9292 #, no-wrap
9293 msgid "IPC\tCLONE_NEWIPC\tSystem V IPC, POSIX message queues\n"
9294 msgstr "IPC\tCLONE_NEWIPC\tSystem V IPC, POSIX メッセージキュー\n"
9295
9296 #. type: tbl table
9297 #: build/C/man7/namespaces.7:44
9298 #, no-wrap
9299 msgid "Network\tCLONE_NEWNET\tNetwork devices, stacks, ports, etc.\n"
9300 msgstr "Network\tCLONE_NEWNET\tネットワークデバイス、スタック、ポートなど\n"
9301
9302 #. type: tbl table
9303 #: build/C/man7/namespaces.7:45
9304 #, no-wrap
9305 msgid "Mount\tCLONE_NEWNS\tMount points\n"
9306 msgstr "Mount\tCLONE_NEWNS\tマウントポイント\n"
9307
9308 #. type: tbl table
9309 #: build/C/man7/namespaces.7:46
9310 #, no-wrap
9311 msgid "PID\tCLONE_NEWPID\tProcess IDs\n"
9312 msgstr "PID\tCLONE_NEWPID\tプロセス ID\n"
9313
9314 #. type: tbl table
9315 #: build/C/man7/namespaces.7:47
9316 #, no-wrap
9317 msgid "User\tCLONE_NEWUSER\tUser and group IDs\n"
9318 msgstr "User\tCLONE_NEWUSER\tユーザー ID とグループ ID\n"
9319
9320 #. type: tbl table
9321 #: build/C/man7/namespaces.7:48
9322 #, no-wrap
9323 msgid "UTS\tCLONE_NEWUTS\tHostname and NIS domain name\n"
9324 msgstr "UTS\tCLONE_NEWUTS\tホスト名と NIS ドメイン名\n"
9325
9326 #
9327 #.  ==================== The namespaces API ====================
9328 #. type: Plain text
9329 #: build/C/man7/namespaces.7:57
9330 msgid ""
9331 "This page describes the various namespaces and the associated I</proc> "
9332 "files, and summarizes the APIs for working with namespaces."
9333 msgstr ""
9334 "このページでは、各種の名前空間と関連する I</proc> ファイルの説明と、名前空間"
9335 "とともに動作する API の概要を紹介する。"
9336
9337 #. type: SS
9338 #: build/C/man7/namespaces.7:57
9339 #, no-wrap
9340 msgid "The namespaces API"
9341 msgstr "名前空間 API"
9342
9343 #. type: Plain text
9344 #: build/C/man7/namespaces.7:62
9345 msgid ""
9346 "As well as various I</proc> files described below, the namespaces API "
9347 "includes the following system calls:"
9348 msgstr ""
9349 "後で説明する種々の I</proc> ファイル以外に、名前空間 API として以下のシステム"
9350 "コールがある。"
9351
9352 #. type: TP
9353 #: build/C/man7/namespaces.7:62
9354 #, no-wrap
9355 msgid "B<clone>(2)"
9356 msgstr "B<clone>(2)"
9357
9358 #. type: Plain text
9359 #: build/C/man7/namespaces.7:75
9360 msgid ""
9361 "The B<clone>(2)  system call creates a new process.  If the I<flags> "
9362 "argument of the call specifies one or more of the B<CLONE_NEW*> flags listed "
9363 "below, then new namespaces are created for each flag, and the child process "
9364 "is made a member of those namespaces.  (This system call also implements a "
9365 "number of features unrelated to namespaces.)"
9366 msgstr ""
9367 "B<clone>(2) システムコールは新しいプロセスを作成する。 呼び出し時に I<flags> "
9368 "引き数で以下のリストにある B<CLONE_NEW*> のフラグを一つ以上指定すると、 各フ"
9369 "ラグに対応する新しい名前空間が作成され、 子プロセスはこれらの名前空間のメン"
9370 "バーになる。 (このシステムコールは名前空間とは関係のない機能も多数実装してい"
9371 "る。)"
9372
9373 #. type: TP
9374 #: build/C/man7/namespaces.7:75
9375 #, no-wrap
9376 msgid "B<setns>(2)"
9377 msgstr "B<setns>(2)"
9378
9379 #. type: Plain text
9380 #: build/C/man7/namespaces.7:84
9381 msgid ""
9382 "The B<setns>(2)  system call allows the calling process to join an existing "
9383 "namespace.  The namespace to join is specified via a file descriptor that "
9384 "refers to one of the I</proc/[pid]/ns> files described below."
9385 msgstr ""
9386 "B<setns>(2) システムコールを使うと、呼び出したプロセスを既存の名前空間に参加"
9387 "させることができる。 参加する名前空間は、 以下で説明する I</proc/[pid]/ns> "
9388 "ファイルのいずれか一つを参照するファイルディスクリプタを使って指定する。"
9389
9390 #. type: TP
9391 #: build/C/man7/namespaces.7:84
9392 #, no-wrap
9393 msgid "B<unshare>(2)"
9394 msgstr "B<unshare>(2)"
9395
9396 #. type: Plain text
9397 #: build/C/man7/namespaces.7:97
9398 msgid ""
9399 "The B<unshare>(2)  system call moves the calling process to a new "
9400 "namespace.  If the I<flags> argument of the call specifies one or more of "
9401 "the B<CLONE_NEW*> flags listed below, then new namespaces are created for "
9402 "each flag, and the calling process is made a member of those namespaces.  "
9403 "(This system call also implements a number of features unrelated to "
9404 "namespaces.)"
9405 msgstr ""
9406 "B<unshare>(2) システムコールは、 呼び出したプロセスを新しい名前空間に移動す"
9407 "る。 呼び出し時の I<flags> 引き数に以下のリストにある B<CLONE_NEW*> フラグを"
9408 "一つ以上指定すると、 各フラグに対応する新しい名前空間が作成され、 呼び出した"
9409 "プロセスがこれらの名前空間のメンバーになる。 (このシステムコールは名前空間と"
9410 "は関係のない機能も多数実装している。)"
9411
9412 #
9413 #.  ==================== The /proc/[pid]/ns/ directory ====================
9414 #. type: Plain text
9415 #: build/C/man7/namespaces.7:110
9416 msgid ""
9417 "Creation of new namespaces using B<clone>(2)  and B<unshare>(2)  in most "
9418 "cases requires the B<CAP_SYS_ADMIN> capability.  User namespaces are the "
9419 "exception: since Linux 3.8, no privilege is required to create a user "
9420 "namespace."
9421 msgstr ""
9422 "B<clone>(2) と B<unshare>(2) を使った新しい名前空間の作成のほとんどの場合で "
9423 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。 ユーザー名前空間は例外で、 "
9424 "Linux 3.8 以降ではユーザー名前空間を作成するのに特権が不要である。"
9425
9426 #. type: SS
9427 #: build/C/man7/namespaces.7:110
9428 #, no-wrap
9429 msgid "The /proc/[pid]/ns/ directory"
9430 msgstr "/proc/[pid]/ns/ ディレクトリ"
9431
9432 #.  See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
9433 #. type: Plain text
9434 #: build/C/man7/namespaces.7:117
9435 msgid ""
9436 "Each process has a I</proc/[pid]/ns/> subdirectory containing one entry for "
9437 "each namespace that supports being manipulated by B<setns>(2):"
9438 msgstr ""
9439 "各プロセスには I</proc/[pid]/ns/> サブディレクトリがあり、 このサブディレクト"
9440 "リには B<setns>(2) での操作がサポートされている名前空間単位にエントリが存在す"
9441 "る。"
9442
9443 #. type: Plain text
9444 #: build/C/man7/namespaces.7:128
9445 #, no-wrap
9446 msgid ""
9447 "$ B<ls -l /proc/$$/ns>\n"
9448 "total 0\n"
9449 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -E<gt> ipc:[4026531839]\n"
9450 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -E<gt> mnt:[4026531840]\n"
9451 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -E<gt> net:[4026531956]\n"
9452 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -E<gt> pid:[4026531836]\n"
9453 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -E<gt> user:[4026531837]\n"
9454 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -E<gt> uts:[4026531838]\n"
9455 msgstr ""
9456 "$ B<ls -l /proc/$$/ns>\n"
9457 "total 0\n"
9458 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -E<gt> ipc:[4026531839]\n"
9459 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -E<gt> mnt:[4026531840]\n"
9460 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -E<gt> net:[4026531956]\n"
9461 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -E<gt> pid:[4026531836]\n"
9462 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -E<gt> user:[4026531837]\n"
9463 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -E<gt> uts:[4026531838]\n"
9464
9465 #. type: Plain text
9466 #: build/C/man7/namespaces.7:138
9467 msgid ""
9468 "Bind mounting (see B<mount>(2))  one of the files in this directory to "
9469 "somewhere else in the filesystem keeps the corresponding namespace of the "
9470 "process specified by I<pid> alive even if all processes currently in the "
9471 "namespace terminate."
9472 msgstr ""
9473 "このディレクトリ内のファイルのいずれかをファイルシステムの他のどこかにバイン"
9474 "ドマウント (B<mount>(2) 参照) することで、 その名前空間のすべてのプロセスが終"
9475 "了した場合でも、 I<pid> で指定したプロセスの対応する名前空間を保持することが"
9476 "できる。"
9477
9478 #. type: Plain text
9479 #: build/C/man7/namespaces.7:149
9480 msgid ""
9481 "Opening one of the files in this directory (or a file that is bind mounted "
9482 "to one of these files)  returns a file handle for the corresponding "
9483 "namespace of the process specified by I<pid>.  As long as this file "
9484 "descriptor remains open, the namespace will remain alive, even if all "
9485 "processes in the namespace terminate.  The file descriptor can be passed to "
9486 "B<setns>(2)."
9487 msgstr ""
9488 "このディレクトリ内のファイルのいずれか (またはこれらのファイルのいずれかにバ"
9489 "インドマウントされたファイル) をオープンすると、 I<pid> で指定されたプロセス"
9490 "の対応する名前空間に対するファイルハンドルが返される。 このファイルディスクリ"
9491 "プタがオープンされている限り、 その名前空間のすべてのプロセスが終了した場合で"
9492 "あっても、 その名前空間は存在し続ける。 このファイルディスクリプタは "
9493 "B<setns>(2) に渡すことができる。"
9494
9495 #. type: Plain text
9496 #: build/C/man7/namespaces.7:160
9497 msgid ""
9498 "In Linux 3.7 and earlier, these files were visible as hard links.  Since "
9499 "Linux 3.8, they appear as symbolic links.  If two processes are in the same "
9500 "namespace, then the inode numbers of their I</proc/[pid]/ns/xxx> symbolic "
9501 "links will be the same; an application can check this using the I<stat."
9502 "st_ino> field returned by B<stat>(2).  The content of this symbolic link is "
9503 "a string containing the namespace type and inode number as in the following "
9504 "example:"
9505 msgstr ""
9506 "Linux 3.7 以前では、これらのファイルはハードリンクとして見えていた。 Linux "
9507 "3.8 以降では、これらはシンボリックリンクとして見える。 2 つのプロセスが同じ名"
9508 "前空間に所属している場合、 これらのプロセスの I</proc/[pid]/ns/xxx> シンボ"
9509 "リックリンクの inode 番号は同じになる。 アプリケーションは、 B<stat>(2) が返"
9510 "す I<stat.st_ino> フィールドを使ってこれを確認することができる。 シンボリック"
9511 "リンクの内容は、 以下の例にあるように、名前空間種別と inode 番号を含む文字列"
9512 "である。"
9513
9514 #. type: Plain text
9515 #: build/C/man7/namespaces.7:165
9516 #, no-wrap
9517 msgid ""
9518 "$ B<readlink /proc/$$/ns/uts>\n"
9519 "uts:[4026531838]\n"
9520 msgstr ""
9521 "$ B<readlink /proc/$$/ns/uts>\n"
9522 "uts:[4026531838]\n"
9523
9524 #. type: Plain text
9525 #: build/C/man7/namespaces.7:169
9526 msgid "The files in this subdirectory are as follows:"
9527 msgstr "このサブディレクトリのファイルは以下のとおりである。"
9528
9529 #. type: TP
9530 #: build/C/man7/namespaces.7:169
9531 #, no-wrap
9532 msgid "I</proc/[pid]/ns/ipc> (since Linux 3.0)"
9533 msgstr "I</proc/[pid]/ns/ipc> (Linux 3.0 以降)"
9534
9535 #. type: Plain text
9536 #: build/C/man7/namespaces.7:172
9537 msgid "This file is a handle for the IPC namespace of the process."
9538 msgstr "このファイルはそのプロセスの IPC 名前空間の操作用である。"
9539
9540 #. type: TP
9541 #: build/C/man7/namespaces.7:172
9542 #, no-wrap
9543 msgid "I</proc/[pid]/ns/mnt> (since Linux 3.8)"
9544 msgstr "I</proc/[pid]/ns/mnt> (Linux 3.8 以降)"
9545
9546 #. type: Plain text
9547 #: build/C/man7/namespaces.7:175
9548 msgid "This file is a handle for the mount namespace of the process."
9549 msgstr "このファイルはそのプロセスのマウント名前空間の操作用である。"
9550
9551 #. type: TP
9552 #: build/C/man7/namespaces.7:175
9553 #, no-wrap
9554 msgid "I</proc/[pid]/ns/net> (since Linux 3.0)"
9555 msgstr "I</proc/[pid]/ns/net> (Linux 3.0 以降)"
9556
9557 #. type: Plain text
9558 #: build/C/man7/namespaces.7:178
9559 msgid "This file is a handle for the network namespace of the process."
9560 msgstr "このファイルはそのプロセスのネットワーク名前空間の操作用である。"
9561
9562 #. type: TP
9563 #: build/C/man7/namespaces.7:178
9564 #, no-wrap
9565 msgid "I</proc/[pid]/ns/pid> (since Linux 3.8)"
9566 msgstr "I</proc/[pid]/ns/pid> (Linux 3.8 以降)"
9567
9568 #. type: Plain text
9569 #: build/C/man7/namespaces.7:181
9570 msgid "This file is a handle for the PID namespace of the process."
9571 msgstr "このファイルはそのプロセスの PID 名前空間の操作用である。"
9572
9573 #. type: TP
9574 #: build/C/man7/namespaces.7:181
9575 #, no-wrap
9576 msgid "I</proc/[pid]/ns/user> (since Linux 3.8)"
9577 msgstr "I</proc/[pid]/ns/user> (Linux 3.8 以降)"
9578
9579 #. type: Plain text
9580 #: build/C/man7/namespaces.7:184
9581 msgid "This file is a handle for the user namespace of the process."
9582 msgstr "このファイルはそのプロセスのユーザー名前空間の操作用である。"
9583
9584 #. type: TP
9585 #: build/C/man7/namespaces.7:184
9586 #, no-wrap
9587 msgid "I</proc/[pid]/ns/uts> (since Linux 3.0)"
9588 msgstr "I</proc/[pid]/ns/uts> (Linux 3.0 以降)"
9589
9590 #
9591 #.  ==================== IPC namespaces ====================
9592 #. type: Plain text
9593 #: build/C/man7/namespaces.7:190
9594 msgid "This file is a handle for the UTS namespace of the process."
9595 msgstr "このファイルはそのプロセスの UTS 名前空間の操作用である。"
9596
9597 #. type: SS
9598 #: build/C/man7/namespaces.7:190
9599 #, no-wrap
9600 msgid "IPC namespaces (CLONE_NEWIPC)"
9601 msgstr "IPC 名前空間 (CLONE_NEWIPC)"
9602
9603 #.  commit 7eafd7c74c3f2e67c27621b987b28397110d643f
9604 #.  https://lwn.net/Articles/312232/
9605 #. type: Plain text
9606 #: build/C/man7/namespaces.7:202
9607 msgid ""
9608 "IPC namespaces isolate certain IPC resources, namely, System V IPC objects "
9609 "(see B<svipc>(7))  and (since Linux 2.6.30)  POSIX message queues (see "
9610 "B<mq_overview>(7)).  The common characteristic of these IPC mechanisms is "
9611 "that IPC objects are identified by mechanisms other than filesystem "
9612 "pathnames."
9613 msgstr ""
9614 "IPC 名前空間は、 特定の IPC リソース、すなわち、System V IPC オブジェクト "
9615 "(B<svipc>(7) 参照)、(Linux 2.6.30 以降では) POSIX メッセージキュー "
9616 "(B<mq_overview>(7) 参照) を分離する。 これらの IPC 機構に共通の特徴は、 IPC "
9617 "オブジェクトがファイルシステムのパス名以外の方法で識別されるという点である。"
9618
9619 #. type: Plain text
9620 #: build/C/man7/namespaces.7:208
9621 msgid ""
9622 "Each IPC namespace has its own set of System V IPC identifiers and its own "
9623 "POSIX message queue filesystem.  Objects created in an IPC namespace are "
9624 "visible to all other processes that are members of that namespace, but are "
9625 "not visible to processes in other IPC namespaces."
9626 msgstr ""
9627 "各 IPC 名前空間はそれぞれ、 独自の System V IPC 識別子の集合と独自の POSIX "
9628 "メッセージキューファイルシステムを持つ。 IPC 名前空間に作成されたオブジェクト"
9629 "は、 その名前空間のメンバーの他のすべてのプロセスにも見えるが、 他の IPC 名前"
9630 "空間のプロセスには見えない。"
9631
9632 #. type: Plain text
9633 #: build/C/man7/namespaces.7:212
9634 msgid "The following I</proc> interfaces are distinct in each IPC namespace:"
9635 msgstr "以下の I</proc> インタフェースは各 IPC 名前空間で別のものとなる。"
9636
9637 #. type: Plain text
9638 #: build/C/man7/namespaces.7:215
9639 msgid "The POSIX message queue interfaces in I</proc/sys/fs/mqueue>."
9640 msgstr "I</proc/sys/fs/mqueue> の POSIX メッセージキューインタフェース。"
9641
9642 #. type: Plain text
9643 #: build/C/man7/namespaces.7:228
9644 msgid ""
9645 "The System V IPC interfaces in I</proc/sys/kernel>, namely: I<msgmax>, "
9646 "I<msgmnb>, I<msgmni>, I<sem>, I<shmall>, I<shmmax>, I<shmmni>, and "
9647 "I<shm_rmid_forced>."
9648 msgstr ""
9649 "I</proc/sys/kernel> の System V IPC インタフェース。 すなわち、 I<msgmax>, "
9650 "I<msgmnb>, I<msgmni>, I<sem>, I<shmall>, I<shmmax>, I<shmmni>, "
9651 "I<shm_rmid_forced>。"
9652
9653 #. type: Plain text
9654 #: build/C/man7/namespaces.7:231
9655 msgid "The System V IPC interfaces in I</proc/sysvipc>."
9656 msgstr "I</proc/sysvipc> の System V IPC インタフェース。"
9657
9658 #. type: Plain text
9659 #: build/C/man7/namespaces.7:235
9660 msgid ""
9661 "When an IPC namespace is destroyed (i.e., when the last process that is a "
9662 "member of the namespace terminates), all IPC objects in the namespace are "
9663 "automatically destroyed."
9664 msgstr ""
9665 "IPC 名前空間が破棄されたときに (すなわち、その名前空間のメンバーの最後のプロ"
9666 "セスが終了したときに)、 その名前空間内のすべての IPC オブジェクトが自動的に破"
9667 "棄される。"
9668
9669 #
9670 #.  ==================== Network namespaces ====================
9671 #. type: Plain text
9672 #: build/C/man7/namespaces.7:242
9673 msgid ""
9674 "Use of IPC namespaces requires a kernel that is configured with the "
9675 "B<CONFIG_IPC_NS> option."
9676 msgstr ""
9677 "IPC 名前空間を使用するには、設定 B<CONFIG_IPC_NS> が有効になったカーネルが必"
9678 "要である。"
9679
9680 #. type: SS
9681 #: build/C/man7/namespaces.7:242
9682 #, no-wrap
9683 msgid "Network namespaces (CLONE_NEWNET)"
9684 msgstr "ネットワーク名前空間 (CLONE_NEWNET)"
9685
9686 #.  FIXME Add pointer to veth(4) page when it is eventually completed
9687 #. type: Plain text
9688 #: build/C/man7/namespaces.7:257
9689 msgid ""
9690 "Network namespaces provide isolation of the system resources associated with "
9691 "networking: network devices, IPv4 and IPv6 protocol stacks, IP routing "
9692 "tables, firewalls, the I</proc/net> directory, the I</sys/class/net> "
9693 "directory, port numbers (sockets), and so on.  A physical network device can "
9694 "live in exactly one network namespace.  A virtual network device (\"veth\") "
9695 "pair provides a pipe-like abstraction that can be used to create tunnels "
9696 "between network namespaces, and can be used to create a bridge to a physical "
9697 "network device in another namespace."
9698 msgstr ""
9699 "ネットワーク名前空間は、 ネットワークに関連するシステムリソースの分離を提供す"
9700 "る。 分離されるリソースは、 ネットワークデバイス、 IPv4 と IPv6 のプロトコル"
9701 "スタック、 IP ルーティングテーブル、 ファイアウォール、 I</proc/net> ディレク"
9702 "トリ、 I</sys/class/net> ディレクトリ、 (ソケットの) ポート番号などである。 "
9703 "物理ネットワークデバイスは 1 つのネットワーク名前空間にのみ属すことができ"
9704 "る。 仮想ネットワークデバイス (\"veth\") ペアは、 ネットワーク名前空間間のト"
9705 "ンネルを作成するのに使うことができるパイプ風の抽象概念で、 別の名前空間に属す"
9706 "物理ネットワークデバイスへのブリッジを作成するのに使用できる。"
9707
9708 #. type: Plain text
9709 #: build/C/man7/namespaces.7:262
9710 msgid ""
9711 "When a network namespace is freed (i.e., when the last process in the "
9712 "namespace terminates), its physical network devices are moved back to the "
9713 "initial network namespace (not to the parent of the process)."
9714 msgstr ""
9715 "ネットワーク名前空間が解放されたときに (すなわち、その名前空間の最後のプロセ"
9716 "スがしゅうりょうしたときに)、 その名前空間に属していた物理ネットワークデバイ"
9717 "スは初期ネットワーク名前空間に戻される (プロセスの親プロセスに戻されるわけで"
9718 "はない)。"
9719
9720 #
9721 #.  ==================== Mount namespaces ====================
9722 #. type: Plain text
9723 #: build/C/man7/namespaces.7:269
9724 msgid ""
9725 "Use of network namespaces requires a kernel that is configured with the "
9726 "B<CONFIG_NET_NS> option."
9727 msgstr ""
9728 "ネットワーク名前空間を使用するには、設定 B<CONFIG_NET_NS> が有効になったカー"
9729 "ネルが必要である。"
9730
9731 #. type: SS
9732 #: build/C/man7/namespaces.7:269
9733 #, no-wrap
9734 msgid "Mount namespaces (CLONE_NEWNS)"
9735 msgstr "マウント名前空間 (CLONE_NEWNS)"
9736
9737 #. type: Plain text
9738 #: build/C/man7/namespaces.7:277
9739 msgid ""
9740 "Mount namespaces isolate the set of filesystem mount points, meaning that "
9741 "processes in different mount namespaces can have different views of the "
9742 "filesystem hierarchy.  The set of mounts in a mount namespace is modified "
9743 "using B<mount>(2)  and B<umount>(2)."
9744 msgstr ""
9745 "マウント名前空間はファイルシステムのマウントポイントの集合を分離する。 つま"
9746 "り、別のマウント名前空間のプロセスには別のファイルシステム階層が見えるという"
9747 "ことである。 マウント名前空間内のマウントの集合は B<mount>(2) と "
9748 "B<umount>(2) で変更される。"
9749
9750 #. type: Plain text
9751 #: build/C/man7/namespaces.7:294
9752 msgid ""
9753 "The I</proc/[pid]/mounts> file (present since Linux 2.4.19)  lists all the "
9754 "filesystems currently mounted in the process's mount namespace.  The format "
9755 "of this file is documented in B<fstab>(5).  Since kernel version 2.6.15, "
9756 "this file is pollable: after opening the file for reading, a change in this "
9757 "file (i.e., a filesystem mount or unmount) causes B<select>(2)  to mark the "
9758 "file descriptor as readable, and B<poll>(2)  and B<epoll_wait>(2)  mark the "
9759 "file as having an error condition."
9760 msgstr ""
9761 "I</proc/[pid]/mounts> ファイル (Linux 2.4.19 以降に存在) は、 そのプロセスの"
9762 "マウント名前空間で現在マウントされている全ファイルシステムの一覧を表示する。 "
9763 "このファイルのフォーマットは B<fstab>(5) に記載されている。 カーネルバージョ"
9764 "ン 2.6.15 以降では、このファイルをポーリングすることができる。 すなわち、この"
9765 "ファイルを読み出し用にオープンした後、 このファイルの変化 (ファイルシステムの"
9766 "マウントやアンマウント) が発生すると、 B<select>(2) はファイルディスクリプタ"
9767 "が読み出し可能になったと印を付け、 B<poll>(2) や B<epoll_wait>(2) はファイル"
9768 "がエラー状態になったかのように印を付ける。"
9769
9770 #. type: Plain text
9771 #: build/C/man7/namespaces.7:302
9772 msgid ""
9773 "The I</proc/[pid]/mountstats> file (present since Linux 2.6.17)  exports "
9774 "information (statistics, configuration information)  about the mount points "
9775 "in the process's mount namespace.  This file is only readable by the owner "
9776 "of the process.  Lines in this file have the form:"
9777 msgstr ""
9778 "I</proc/[pid]/mountstats> ファイル (Linux 2.6.17 以降に存在) は、 そのプロセ"
9779 "スのマウントポイントに関する情報 (統計情報、設定情報) を公開する。 このファイ"
9780 "ルはプロセスの所有者だけが読み出し可能である。 このファイルの各行は以下の形式"
9781 "である。"
9782
9783 #. type: Plain text
9784 #: build/C/man7/namespaces.7:308
9785 #, no-wrap
9786 msgid ""
9787 "device /dev/sda7 mounted on /home with fstype ext3 [statistics]\n"
9788 "(       1      )            ( 2 )             (3 ) (4)\n"
9789 msgstr ""
9790 "device /dev/sda7 mounted on /home with fstype ext3 [statistics]\n"
9791 "(       1      )            ( 2 )             (3 ) (4)\n"
9792
9793 #. type: Plain text
9794 #: build/C/man7/namespaces.7:312
9795 msgid "The fields in each line are:"
9796 msgstr "各行のフィールドは以下のとおりである。"
9797
9798 #. type: IP
9799 #: build/C/man7/namespaces.7:312 build/C/man7/user_namespaces.7:371
9800 #, no-wrap
9801 msgid "(1)"
9802 msgstr "(1)"
9803
9804 #. type: Plain text
9805 #: build/C/man7/namespaces.7:316
9806 msgid ""
9807 "The name of the mounted device (or \"nodevice\" if there is no corresponding "
9808 "device)."
9809 msgstr ""
9810 "マウントされているデバイス名 (もしくは、対応するデバイスがない場合は "
9811 "\"nodevice\")。"
9812
9813 #. type: IP
9814 #: build/C/man7/namespaces.7:316 build/C/man7/user_namespaces.7:375
9815 #, no-wrap
9816 msgid "(2)"
9817 msgstr "(2)"
9818
9819 #. type: Plain text
9820 #: build/C/man7/namespaces.7:319
9821 msgid "The mount point within the filesystem tree."
9822 msgstr "ファイルシステムツリー内のマウントポイント。"
9823
9824 #. type: IP
9825 #: build/C/man7/namespaces.7:319 build/C/man7/user_namespaces.7:401
9826 #, no-wrap
9827 msgid "(3)"
9828 msgstr "(3)"
9829
9830 #. type: Plain text
9831 #: build/C/man7/namespaces.7:322
9832 msgid "The filesystem type."
9833 msgstr "ファイルシステム種別"
9834
9835 #. type: TP
9836 #: build/C/man7/namespaces.7:322
9837 #, no-wrap
9838 msgid "(4)"
9839 msgstr "(4)"
9840
9841 #. type: Plain text
9842 #: build/C/man7/namespaces.7:327
9843 msgid ""
9844 "Optional statistics and configuration information.  Currently (as at Linux "
9845 "2.6.26), only NFS filesystems export information via this field."
9846 msgstr ""
9847 "統計情報と設定情報。 オプションフィールドである。 現在のところ (Linux 2.6.26 "
9848 "時点)、NFS ファイルシステムだけがこのフィールドで情報を公開している。"
9849
9850 #
9851 #.  ==================== PID namespaces ====================
9852 #. type: SS
9853 #: build/C/man7/namespaces.7:331
9854 #, no-wrap
9855 msgid "PID namespaces (CLONE_NEWPID)"
9856 msgstr "PID 名前空間 (CLONE_NEWPID)"
9857
9858 #
9859 #.  ==================== User namespaces ====================
9860 #. type: Plain text
9861 #: build/C/man7/namespaces.7:337
9862 msgid "See B<pid_namespaces>(7)."
9863 msgstr "B<pid_namespaces>(7) 参照。"
9864
9865 #. type: SS
9866 #: build/C/man7/namespaces.7:337
9867 #, no-wrap
9868 msgid "User namespaces (CLONE_NEWUSER)"
9869 msgstr "ユーザー名前空間 (CLONE_NEWUSER)"
9870
9871 #. type: Plain text
9872 #: build/C/man7/namespaces.7:343 build/C/man7/namespaces.7:364
9873 #: build/C/man7/pid_namespaces.7:356
9874 msgid "See B<user_namespaces>(7)."
9875 msgstr "B<user_namespaces>(7) 参照。"
9876
9877 #. type: SS
9878 #: build/C/man7/namespaces.7:343
9879 #, no-wrap
9880 msgid "UTS namespaces (CLONE_NEWUTS)"
9881 msgstr "UTS 名前空間 (CLONE_NEWUTS)"
9882
9883 #. type: Plain text
9884 #: build/C/man7/namespaces.7:355
9885 msgid ""
9886 "UTS namespaces provide isolation of two system identifiers: the hostname and "
9887 "the NIS domain name.  These identifiers are set using B<sethostname>(2)  and "
9888 "B<setdomainname>(2), and can be retrieved using B<uname>(2), "
9889 "B<gethostname>(2), and B<getdomainname>(2)."
9890 msgstr ""
9891 "UTS 名前空間は、 ホスト名と NIS ドメイン名の 2 つのシステム識別子を分離す"
9892 "る。 これらの識別子は B<sethostname>(2) と B<setdomainname>(2) を使って設定で"
9893 "き、 B<uname>(2), B<gethostname>(2), B<getdomainname>(2) を使って取得できる。"
9894
9895 #. type: Plain text
9896 #: build/C/man7/namespaces.7:359
9897 msgid ""
9898 "Use of UTS namespaces requires a kernel that is configured with the "
9899 "B<CONFIG_UTS_NS> option."
9900 msgstr ""
9901 "UTS 名前空間を使用するには、設定 B<CONFIG_UTS_NS> が有効になったカーネルが必"
9902 "要である。"
9903
9904 #. type: Plain text
9905 #: build/C/man7/namespaces.7:361 build/C/man7/pid_namespaces.7:353
9906 #: build/C/man7/user_namespaces.7:648
9907 msgid "Namespaces are a Linux-specific feature."
9908 msgstr "名前空間は Linux 独自の機能である。"
9909
9910 #. type: Plain text
9911 #: build/C/man7/namespaces.7:377
9912 msgid ""
9913 "B<nsenter>(1), B<readlink>(1), B<unshare>(1), B<clone>(2), B<setns>(2), "
9914 "B<unshare>(2), B<proc>(5), B<credentials>(7), B<capabilities>(7), "
9915 "B<pid_namespaces>(7), B<user_namespaces>(7), B<switch_root>(8)"
9916 msgstr ""
9917 "B<nsenter>(1), B<readlink>(1), B<unshare>(1), B<clone>(2), B<setns>(2), "
9918 "B<unshare>(2), B<proc>(5), B<credentials>(7), B<capabilities>(7), "
9919 "B<pid_namespaces>(7), B<user_namespaces>(7), B<switch_root>(8)"
9920
9921 #. type: TH
9922 #: build/C/man7/pid_namespaces.7:27
9923 #, no-wrap
9924 msgid "PID_NAMESPACES"
9925 msgstr "PID_NAMESPACES"
9926
9927 #. type: TH
9928 #: build/C/man7/pid_namespaces.7:27 build/C/man2/seccomp.2:27
9929 #, no-wrap
9930 msgid "2015-01-10"
9931 msgstr "2015-01-10"
9932
9933 #. type: Plain text
9934 #: build/C/man7/pid_namespaces.7:30
9935 msgid "pid_namespaces - overview of Linux PID namespaces"
9936 msgstr "pid_namespaces - Linux PID 名前空間の概要"
9937
9938 #. type: Plain text
9939 #: build/C/man7/pid_namespaces.7:33 build/C/man7/user_namespaces.7:33
9940 msgid "For an overview of namespaces, see B<namespaces>(7)."
9941 msgstr "名前空間の概要については B<namespaces>(7) を参照。"
9942
9943 #. type: Plain text
9944 #: build/C/man7/pid_namespaces.7:40
9945 msgid ""
9946 "PID namespaces isolate the process ID number space, meaning that processes "
9947 "in different PID namespaces can have the same PID.  PID namespaces allow "
9948 "containers to provide functionality such as suspending/resuming the set of "
9949 "processes in the container and migrating the container to a new host while "
9950 "the processes inside the container maintain the same PIDs."
9951 msgstr ""
9952 "PID 名前空間はプロセス ID 番号空間を分離する。 これは、異なる PID 名前空間の"
9953 "プロセスは同じ PID を持つことができることを意味する。 PID 名前空間を使うこと"
9954 "で、コンテナー内のプロセス群を中断、再開したり、 コンテナー内のプロセスの "
9955 "PID を保持したままコンテナーを新しいホストに移行したりするといった機能をコン"
9956 "テナーが提供することが可能になる。"
9957
9958 #. type: Plain text
9959 #: build/C/man7/pid_namespaces.7:48
9960 msgid ""
9961 "PIDs in a new PID namespace start at 1, somewhat like a standalone system, "
9962 "and calls to B<fork>(2), B<vfork>(2), or B<clone>(2)  will produce processes "
9963 "with PIDs that are unique within the namespace."
9964 msgstr ""
9965 "新しい PID 名前空間の PID は、 独立したシステムであるかのように、 1 から始ま"
9966 "る。 B<fork>(2), B<vfork>(2), B<clone>(2) を呼び出すと、 その名前空間内で一意"
9967 "な PID でプロセスが生成される。"
9968
9969 #
9970 #.  ============================================================
9971 #. type: Plain text
9972 #: build/C/man7/pid_namespaces.7:55
9973 msgid ""
9974 "Use of PID namespaces requires a kernel that is configured with the "
9975 "B<CONFIG_PID_NS> option."
9976 msgstr ""
9977 "PID 名前空間を使用するには、設定 B<CONFIG_PID_NS> が有効になったカーネルが必"
9978 "要である。"
9979
9980 #. type: SS
9981 #: build/C/man7/pid_namespaces.7:55
9982 #, no-wrap
9983 msgid "The namespace init process"
9984 msgstr "名前空間の init プロセス"
9985
9986 #. type: Plain text
9987 #: build/C/man7/pid_namespaces.7:75
9988 msgid ""
9989 "The first process created in a new namespace (i.e., the process created "
9990 "using B<clone>(2)  with the B<CLONE_NEWPID> flag, or the first child created "
9991 "by a process after a call to B<unshare>(2)  using the B<CLONE_NEWPID> flag) "
9992 "has the PID 1, and is the \"init\" process for the namespace (see "
9993 "B<init>(1)).  A child process that is orphaned within the namespace will be "
9994 "reparented to this process rather than B<init>(1)  (unless one of the "
9995 "ancestors of the child in the same PID namespace employed the B<prctl>(2)  "
9996 "B<PR_SET_CHILD_SUBREAPER> command to mark itself as the reaper of orphaned "
9997 "descendant processes)."
9998 msgstr ""
9999 "新しい名前空間で作成される最初のプロセス (すなわち、B<CLONE_NEWPID> フラグで "
10000 "B<clone>(2) を使って作成されたプロセスや、 B<CLONE_NEWPID> フラグで "
10001 "B<unshare>(2) を呼び出した後のプロセスによって作成された最初のプロセス) は "
10002 "PID 1 を持ち、 そのプロセスはその名前空間の \"init\" プロセスとなる "
10003 "(B<init>(1) 参照)。 名前空間内でみなしごになった (親プロセスがいなくなった) "
10004 "子プロセスは、 B<init>(1) ではなくこのプロセスが親プロセスになる (ただし、 同"
10005 "じ PID 名前空間内のその子プロセスの先祖が、 B<prctl>(2) の "
10006 "B<PR_SET_CHILD_SUBREAPER> コマンドを使って、 自分自身をみなしごとなった子孫の"
10007 "プロセスの引き取り手になっている場合はこの限りではなく)。"
10008
10009 #. type: Plain text
10010 #: build/C/man7/pid_namespaces.7:102
10011 msgid ""
10012 "If the \"init\" process of a PID namespace terminates, the kernel terminates "
10013 "all of the processes in the namespace via a B<SIGKILL> signal.  This "
10014 "behavior reflects the fact that the \"init\" process is essential for the "
10015 "correct operation of a PID namespace.  In this case, a subsequent "
10016 "B<fork>(2)  into this PID namespace will fail with the error B<ENOMEM>; it "
10017 "is not possible to create a new processes in a PID namespace whose \"init\" "
10018 "process has terminated.  Such scenarios can occur when, for example, a "
10019 "process uses an open file descriptor for a I</proc/[pid]/ns/pid> file "
10020 "corresponding to a process that was in a namespace to B<setns>(2)  into that "
10021 "namespace after the \"init\" process has terminated.  Another possible "
10022 "scenario can occur after a call to B<unshare>(2): if the first child "
10023 "subsequently created by a B<fork>(2)  terminates, then subsequent calls to "
10024 "B<fork>(2)  will fail with B<ENOMEM>."
10025 msgstr ""
10026 "PID 名前空間の \"init\" プロセスが終了すると、 カーネルはその名前空間の全プロ"
10027 "セスを B<SIGKILL> シグナルで終了する。 この動作は、 PID 名前空間の正しい操作"
10028 "のためには \"init\" プロセスは不可欠であるという事実を反映したものである。 こ"
10029 "の場合、 その PID 名前空間へのそれ以降の B<fork>(2) はエラー B<ENOMEM> で失敗"
10030 "する。 \"init\" プロセスが終了している PID 名前空間に新しいプロセスを作成する"
10031 "ことはできない。 このような状況は、 例えば、 名前空間にいたプロセスに対応す"
10032 "る I</proc/[pid]/ns/pid> ファイルに対してオープンしたファイルディスクリプタを"
10033 "使って、 \"init\" プロセスが終了した後にその名前空間に B<setns>(2) を行った場"
10034 "合に起こり得る。 B<unshare>(2) を呼び出した後にも、この状況は起こり得る。 そ"
10035 "れ以降に B<fork>(2) で作成された最初の子プロセスが終了すると、 それ以降の "
10036 "B<fork>(2) の呼び出しは B<NOMEM> で失敗する。"
10037
10038 #. type: Plain text
10039 #: build/C/man7/pid_namespaces.7:108
10040 msgid ""
10041 "Only signals for which the \"init\" process has established a signal handler "
10042 "can be sent to the \"init\" process by other members of the PID namespace.  "
10043 "This restriction applies even to privileged processes, and prevents other "
10044 "members of the PID namespace from accidentally killing the \"init\" process."
10045 msgstr ""
10046 "PID 名前空間の他のメンバーは、 \"init\" プロセスがシグナルハンドラーを設定し"
10047 "たシグナルだけを、 \"init\" プロセスに送信することができる。 この制限は特権プ"
10048 "ロセスに対しても適用される。 この制限により、 PID 名前空間の他のメンバーが"
10049 "うっかり \"init\" プロセスを殺してしまうのを防ぐことができる。"
10050
10051 #. type: Plain text
10052 #: build/C/man7/pid_namespaces.7:128
10053 msgid ""
10054 "Likewise, a process in an ancestor namespace can\\(emsubject to the usual "
10055 "permission checks described in B<kill>(2)\\(emsend signals to the \"init\" "
10056 "process of a child PID namespace only if the \"init\" process has "
10057 "established a handler for that signal.  (Within the handler, the "
10058 "I<siginfo_t> I<si_pid> field described in B<sigaction>(2)  will be zero.)  "
10059 "B<SIGKILL> or B<SIGSTOP> are treated exceptionally: these signals are "
10060 "forcibly delivered when sent from an ancestor PID namespace.  Neither of "
10061 "these signals can be caught by the \"init\" process, and so will result in "
10062 "the usual actions associated with those signals (respectively, terminating "
10063 "and stopping the process)."
10064 msgstr ""
10065 "同様に、 先祖の名前空間のプロセスは、 \"init\" プロセスがそのシグナルに対する"
10066 "ハンドラーを設定している場合にのみ、 B<kill>(2) で説明されている通常のアクセ"
10067 "ス許可のチェックを経た上で、 子供の PID 名前空間の \"init\" プロセスにシグナ"
10068 "ルを送信できる。 (ハンドラー内では、 I<sigaction>(2) に説明がある "
10069 "I<siginfo_t> の I<si_pid> フィールドは 0 になる。) B<SIGKILL> と B<SIGSTOP> "
10070 "は例外として扱われ、 これらのシグナルが先祖の PID 名前空間から送信された場合"
10071 "には強制的に配送される。 これらのシグナルはどちらも \"init\" プロセルが捕捉す"
10072 "ることはできない。 そのため、これらのシグナルに関連付けられた通常のアクショ"
10073 "ン (それぞれ、プロセスの終了とプロセスの強制停止) が実行される。"
10074
10075 #
10076 #.  ============================================================
10077 #. type: Plain text
10078 #: build/C/man7/pid_namespaces.7:138
10079 msgid ""
10080 "Starting with Linux 3.4, the B<reboot>(2)  system call causes a signal to be "
10081 "sent to the namespace \"init\" process.  See B<reboot>(2)  for more details."
10082 msgstr ""
10083 "Linux 3.4 以降では、 B<reboot>(2) システムコールを呼び出すと、 シグナルがその"
10084 "名前空間の \"init\" プロセスに送信される。 詳細は B<reboot>(2) を参照。"
10085
10086 #. type: SS
10087 #: build/C/man7/pid_namespaces.7:138
10088 #, no-wrap
10089 msgid "Nesting PID namespaces"
10090 msgstr "ネストされた PID 名前空間"
10091
10092 #. type: Plain text
10093 #: build/C/man7/pid_namespaces.7:149
10094 msgid ""
10095 "PID namespaces can be nested: each PID namespace has a parent, except for "
10096 "the initial (\"root\") PID namespace.  The parent of a PID namespace is the "
10097 "PID namespace of the process that created the namespace using B<clone>(2)  "
10098 "or B<unshare>(2).  PID namespaces thus form a tree, with all namespaces "
10099 "ultimately tracing their ancestry to the root namespace."
10100 msgstr ""
10101 "PID 名前空間は入れ子にすることができる。 最初の (\"root\") PID 名前空間以外の"
10102 "各 PID 名前空間は親を持つ。 PID 名前空間の親は B<clone>(2) や B<unshare>(2) "
10103 "を使ってその名前空間を作成したプロセスの PID 名前空間である。 したがって、 "
10104 "PID 名前空間は木構造を構成し、 すべての名前空間は親を辿って行くと、最終的に"
10105 "は root 名前空間に辿り着く。"
10106
10107 #. type: Plain text
10108 #: build/C/man7/pid_namespaces.7:164
10109 msgid ""
10110 "A process is visible to other processes in its PID namespace, and to the "
10111 "processes in each direct ancestor PID namespace going back to the root PID "
10112 "namespace.  In this context, \"visible\" means that one process can be the "
10113 "target of operations by another process using system calls that specify a "
10114 "process ID.  Conversely, the processes in a child PID namespace can't see "
10115 "processes in the parent and further removed ancestor namespaces.  More "
10116 "succinctly: a process can see (e.g., send signals with B<kill>(2), set nice "
10117 "values with B<setpriority>(2), etc.) only processes contained in its own PID "
10118 "namespace and in descendants of that namespace."
10119 msgstr ""
10120 "プロセスは、所属する PID 名前空間の他のプロセスから見える。また、 root PID 名"
10121 "前空間に向かう直径の先祖の各 PID 名前空間のプロセスからも見える。 この場合、"
10122 "「見える」とは、 あるプロセスが、 他のプロセスがプロセス ID を指定するシステ"
10123 "ムコールを使う際に操作の対象にできることを意味する。 逆に、子供 PID 名前空間"
10124 "のプロセスから親や先祖の名前空間のプロセスは見えない。 あるプロセスは自分自身"
10125 "の PID 名前空間とその子孫の名前空間のプロセスだけが見える (例えば、"
10126 "B<kill>(2) でシグナルを送信したり、 B<setpriority>(2) で nice 値を設定した"
10127 "り、など)。"
10128
10129 #. type: Plain text
10130 #: build/C/man7/pid_namespaces.7:176
10131 msgid ""
10132 "A process has one process ID in each of the layers of the PID namespace "
10133 "hierarchy in which is visible, and walking back though each direct ancestor "
10134 "namespace through to the root PID namespace.  System calls that operate on "
10135 "process IDs always operate using the process ID that is visible in the PID "
10136 "namespace of the caller.  A call to B<getpid>(2)  always returns the PID "
10137 "associated with the namespace in which the process was created."
10138 msgstr ""
10139 "プロセスは、そのプロセスが見える PID 名前空間の階層の各層においてプロセス ID "
10140 "を一つ持ち、 直接の先祖の名前空間を辿ることで通って root PID 名前空間に至るこ"
10141 "とができる。 プロセス ID に対して操作を行うシステムコールは、常に、呼び出し元"
10142 "プロセスの PID 名前空間で見えるプロセス ID を使って操作を行う。 B<getpid>(2) "
10143 "の呼び出しでは、 常に、 プロセスが作成された名前空間に関連付けられた PID を返"
10144 "す。"
10145
10146 #
10147 #. type: Plain text
10148 #: build/C/man7/pid_namespaces.7:191
10149 msgid ""
10150 "Some processes in a PID namespace may have parents that are outside of the "
10151 "namespace.  For example, the parent of the initial process in the namespace "
10152 "(i.e., the B<init>(1)  process with PID 1) is necessarily in another "
10153 "namespace.  Likewise, the direct children of a process that uses "
10154 "B<setns>(2)  to cause its children to join a PID namespace are in a "
10155 "different PID namespace from the caller of B<setns>(2).  Calls to "
10156 "B<getppid>(2)  for such processes return 0."
10157 msgstr ""
10158 "PID 名前空間内のプロセスは名前空間の外部に親プロセスを持つことができる。 例え"
10159 "ば、その名前空間の初期プロセス (すなわち PID 1 を持つ B<init>(1) プロセス) の"
10160 "親プロセスは必然的に別の名前空間に属すことになる。 同様に、 あるプロセスが "
10161 "B<setns>(2) を使って子プロセスを PID 名前空間に参加させた場合、 子プロセスは "
10162 "B<setns>(2) の呼び出し元とは異なる PID 名前空間に属す。 子プロセスで "
10163 "B<getppid>(2) を呼び出すと 0 が返される。"
10164
10165 #
10166 #.  ============================================================
10167 #. type: Plain text
10168 #: build/C/man7/pid_namespaces.7:204
10169 msgid ""
10170 "While processes may freely descend into child PID namespaces (e.g., using "
10171 "B<setns>(2)  with B<CLONE_NEWPID>), they may not move in the other "
10172 "direction.  That is to say, processes may not enter any ancestor namespaces "
10173 "(parent, grandparent, etc.).  Changing PID namespaces is a one way operation."
10174 msgstr ""
10175 "プロセスは (B<setns>(2) を B<CLONE_NEWPID> で使うなどで) 子供の PID 名前空間"
10176 "に自由に入ることができるが、 逆の方向には移動できない。 つまり、 プロセスは先"
10177 "祖の名前空間 (親、親の親など) に入ることはできない。 PID 名前空間の変更は一方"
10178 "向の操作である。"
10179
10180 #. type: SS
10181 #: build/C/man7/pid_namespaces.7:204
10182 #, no-wrap
10183 msgid "setns(2) and unshare(2) semantics"
10184 msgstr "setns(2) と unshare(2) の動作"
10185
10186 #. type: Plain text
10187 #: build/C/man7/pid_namespaces.7:220
10188 msgid ""
10189 "Calls to B<setns>(2)  that specify a PID namespace file descriptor and calls "
10190 "to B<unshare>(2)  with the B<CLONE_NEWPID> flag cause children subsequently "
10191 "created by the caller to be placed in a different PID namespace from the "
10192 "caller.  These calls do not, however, change the PID namespace of the "
10193 "calling process, because doing so would change the caller's idea of its own "
10194 "PID (as reported by B<getpid>()), which would break many applications and "
10195 "libraries."
10196 msgstr ""
10197 "PID 名前空間のファイルディスクリプタを指定して B<setns>(2) を呼び出したり、 "
10198 "B<CLONE_NEWPID> フラグ付きで B<unshare>(2) を呼び出したりすると、 その結果作"
10199 "成された子プロセスは呼び出し元とは異なる PID 名前空間に置かれる。 しかし、こ"
10200 "れらの呼び出しでは呼び出し元プロセスの PID 名前空間は変更されない。 なぜな"
10201 "ら、PID 名前空間を変更してしまうと、 呼び出し元が認識する (B<getpid>() が返"
10202 "す) 自分の PID が変わってしまい、 多くのアプリケーションやライブラリが正しく"
10203 "動作しなくなるからである。"
10204
10205 #. type: Plain text
10206 #: build/C/man7/pid_namespaces.7:228
10207 msgid ""
10208 "To put things another way: a process's PID namespace membership is "
10209 "determined when the process is created and cannot be changed thereafter.  "
10210 "Among other things, this means that the parental relationship between "
10211 "processes mirrors the parental relationship between PID namespaces: the "
10212 "parent of a process is either in the same namespace or resides in the "
10213 "immediate parent PID namespace."
10214 msgstr ""
10215 "別の言い方をすると、 あるプロセスがどの PID 名前空間に所属するかは、 そのプロ"
10216 "セスが作成されたときに決定され、 それ以降は変更されることはない。 いろいろあ"
10217 "るが、プロセス間の親子関係には、PID 名前空間の親子関係がそのまま反映されると"
10218 "いうことだ。 プロセスの親プロセスは、同じ名前空間にいるか、もしくは直接の親 "
10219 "PID 名前空間にいるかのいずれかである。"
10220
10221 #. type: SS
10222 #: build/C/man7/pid_namespaces.7:228
10223 #, no-wrap
10224 msgid "Compatibility of CLONE_NEWPID with other CLONE_* flags"
10225 msgstr "CLONE_NEWPID の他の CLONE_* フラグとの互換性"
10226
10227 #. type: Plain text
10228 #: build/C/man7/pid_namespaces.7:233
10229 msgid "B<CLONE_NEWPID> can't be combined with some other B<CLONE_*> flags:"
10230 msgstr ""
10231 "B<CLONE_NEWPID> はいくつかの他の B<CLONE_*> フラグと組み合わせることができな"
10232 "い。"
10233
10234 #. type: Plain text
10235 #: build/C/man7/pid_namespaces.7:241
10236 msgid ""
10237 "B<CLONE_THREAD> requires being in the same PID namespace in order that the "
10238 "threads in a process can send signals to each other.  Similarly, it must be "
10239 "possible to see all of the threads of a processes in the B<proc>(5)  "
10240 "filesystem."
10241 msgstr ""
10242 "B<CLONE_THREAD> は、 プロセス内のスレッド間で互いにシグナルを送信できるように"
10243 "するため、 同じ PID 名前空間に属している必要がある。 同様に、 プロセス内の全"
10244 "スレッドが B<proc>(5) ファイルシステムで見える必要がある。"
10245
10246 #. type: Plain text
10247 #: build/C/man7/pid_namespaces.7:252
10248 msgid ""
10249 "B<CLONE_SIGHAND> requires being in the same PID namespace; otherwise the "
10250 "process ID of the process sending a signal could not be meaningfully encoded "
10251 "when a signal is sent (see the description of the I<siginfo_t> type in "
10252 "B<sigaction>(2)).  A signal queue shared by processes in multiple PID "
10253 "namespaces will defeat that."
10254 msgstr ""
10255 "B<CLONE_SIGHAND> は、同じ PID 名前空間である必要がある。 さもなければ、 シグ"
10256 "ナルが送信された際に、シグナルを送信したプロセスのプロセス ID を意味のある形"
10257 "でエンコードすることができない (B<sigaction>(2) の I<siginfo_t> 型の説明を参"
10258 "照)。 複数の PID 名前空間に属するプロセス間で一つのシグナルキューを共有する"
10259 "と、うまく動かなくなる。"
10260
10261 #. type: Plain text
10262 #: build/C/man7/pid_namespaces.7:262
10263 msgid ""
10264 "B<CLONE_VM> requires all of the threads to be in the same PID namespace, "
10265 "because, from the point of view of a core dump, if two processes share the "
10266 "same address space then they are threads and will be core dumped together.  "
10267 "When a core dump is written, the PID of each thread is written into the core "
10268 "dump.  Writing the process IDs could not meaningfully succeed if some of the "
10269 "process IDs were in a parent PID namespace."
10270 msgstr ""
10271 "B<CLONE_VM> は、全スレッドが同じ PID 名前空間に属している必要がある。 なぜな"
10272 "ら、 コアダンプの観点から見ると、 2 つのプロセスが同じアドレス空間を共有して"
10273 "いれば、 これらはスレッドであり、コアダンプが一緒に行われるからである。 コア"
10274 "ダンプが書き込まれる際に、 各スレッドの PID がコアダンプに書き込まれる。 もし"
10275 "プロセス ID のいくつかが親 PID 名前空間に属していたとすると、 プロセス ID の"
10276 "書き込みは意味を持たなくなってしまう。"
10277
10278 #. type: Plain text
10279 #: build/C/man7/pid_namespaces.7:280
10280 msgid ""
10281 "To summarize: there is a technical requirement for each of B<CLONE_THREAD>, "
10282 "B<CLONE_SIGHAND>, and B<CLONE_VM> to share a PID namespace.  (Note "
10283 "furthermore that in B<clone>(2)  requires B<CLONE_VM> to be specified if "
10284 "B<CLONE_THREAD> or B<CLONE_SIGHAND> is specified.)  Thus, call sequences "
10285 "such as the following will fail (with the error B<EINVAL>):"
10286 msgstr ""
10287 "まとめると、 B<CLONE_THREAD>, B<CLONE_SIGHAND>, B<CLONE_VM> では技術的な要件"
10288 "として PID 名前空間が共有されている点がある。 (さらに B<clone>(2) では "
10289 "B<CLONE_THREAD> か B<CLONE_SIGHAND> が指定された際には B<CLONE_VM> が指定され"
10290 "ている必要がある点にも注意。) したがって、以下のような順序で呼び出しを行うと "
10291 "(エラー B<EINVAL> で) 失敗する。"
10292
10293 #. type: Plain text
10294 #: build/C/man7/pid_namespaces.7:284
10295 #, no-wrap
10296 msgid ""
10297 "    unshare(CLONE_NEWPID);\n"
10298 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10299 msgstr ""
10300 "    unshare(CLONE_NEWPID);\n"
10301 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10302
10303 #. type: Plain text
10304 #: build/C/man7/pid_namespaces.7:287
10305 #, no-wrap
10306 msgid ""
10307 "    setns(fd, CLONE_NEWPID);\n"
10308 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10309 msgstr ""
10310 "    setns(fd, CLONE_NEWPID);\n"
10311 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10312
10313 #. type: Plain text
10314 #: build/C/man7/pid_namespaces.7:290
10315 #, no-wrap
10316 msgid ""
10317 "    clone(..., CLONE_VM, ...);\n"
10318 "    setns(fd, CLONE_NEWPID);      /* Fails */\n"
10319 msgstr ""
10320 "    clone(..., CLONE_VM, ...);\n"
10321 "    setns(fd, CLONE_NEWPID);      /* Fails */\n"
10322
10323 #. type: Plain text
10324 #: build/C/man7/pid_namespaces.7:293
10325 #, no-wrap
10326 msgid ""
10327 "    clone(..., CLONE_VM, ...);\n"
10328 "    unshare(CLONE_NEWPID);        /* Fails */\n"
10329 msgstr ""
10330 "    clone(..., CLONE_VM, ...);\n"
10331 "    unshare(CLONE_NEWPID);        /* Fails */\n"
10332
10333 #
10334 #.  ============================================================
10335 #. type: SS
10336 #: build/C/man7/pid_namespaces.7:297
10337 #, no-wrap
10338 msgid "/proc and PID namespaces"
10339 msgstr "/proc と PID 名前空間"
10340
10341 #. type: Plain text
10342 #: build/C/man7/pid_namespaces.7:306
10343 msgid ""
10344 "A I</proc> filesystem shows (in the I</proc/PID> directories) only processes "
10345 "visible in the PID namespace of the process that performed the mount, even "
10346 "if the I</proc> filesystem is viewed from processes in other namespaces."
10347 msgstr ""
10348 "I</proc> ファイルシステムは、I</proc> のマウントを行ったプロセスの PID 名前空"
10349 "間で見えるプロセスだけを表示する。 たとえ、 その I</proc> ファイルシステムが"
10350 "他の名前空間のプロセスから参照されたとしても、そうである。"
10351
10352 #. type: Plain text
10353 #: build/C/man7/pid_namespaces.7:325
10354 msgid ""
10355 "After creating a new PID namespace, it is useful for the child to change its "
10356 "root directory and mount a new procfs instance at I</proc> so that tools "
10357 "such as B<ps>(1)  work correctly.  If a new mount namespace is "
10358 "simultaneously created by including B<CLONE_NEWNS> in the I<flags> argument "
10359 "of B<clone>(2)  or B<unshare>(2), then it isn't necessary to change the root "
10360 "directory: a new procfs instance can be mounted directly over I</proc>."
10361 msgstr ""
10362 "新しい PID 名前空間を作成した後、 子プロセスが、自身の root ディレクトリを変"
10363 "更し、新しい procfs インスタンスを I</proc> にマウントするのは B<ps>(1) など"
10364 "のツールが正しく動作するためにも有用である。 B<clone>(2) の I<flags> 引き数"
10365 "に B<CLONE_NEWNS> も指定されて新しいマウント名前空間が同時に作成された場合"
10366 "は、 root ディレクトリを変更する必要はない。 新しい procfs インスタンスを I</"
10367 "proc> にそのままマウントすることができる。"
10368
10369 #. type: Plain text
10370 #: build/C/man7/pid_namespaces.7:329
10371 msgid "From a shell, the command to mount I</proc> is:"
10372 msgstr "シェルから、コマンドで I</proc> のマウントを行うには次のようにする。"
10373
10374 #. type: Plain text
10375 #: build/C/man7/pid_namespaces.7:331
10376 #, no-wrap
10377 msgid "    $ mount -t proc proc /proc\n"
10378 msgstr "    $ mount -t proc proc /proc\n"
10379
10380 #
10381 #.  ============================================================
10382 #. type: Plain text
10383 #: build/C/man7/pid_namespaces.7:343
10384 msgid ""
10385 "Calling B<readlink>(2)  on the path I</proc/self> yields the process ID of "
10386 "the caller in the PID namespace of the procfs mount (i.e., the PID namespace "
10387 "of the process that mounted the procfs).  This can be useful for "
10388 "introspection purposes, when a process wants to discover its PID in other "
10389 "namespaces."
10390 msgstr ""
10391 "パス I</proc/self> に対して B<readlink>(2) を呼び出すと、 procfs のマウントを"
10392 "行ったプロセスの PID 名前空間におけるプロセス ID が得られる。 これは調査目的"
10393 "でプロセスが他の名前空間で自身の PID を知りたい場合などに役立つ。"
10394
10395 #. type: SS
10396 #: build/C/man7/pid_namespaces.7:343 build/C/man7/user_namespaces.7:635
10397 #, no-wrap
10398 msgid "Miscellaneous"
10399 msgstr "その他"
10400
10401 #. type: Plain text
10402 #: build/C/man7/pid_namespaces.7:351
10403 msgid ""
10404 "When a process ID is passed over a UNIX domain socket to a process in a "
10405 "different PID namespace (see the description of B<SCM_CREDENTIALS> in "
10406 "B<unix>(7)), it is translated into the corresponding PID value in the "
10407 "receiving process's PID namespace."
10408 msgstr ""
10409 "プロセス ID が UNIX ドメインソケット経由で別の PID 名前空間のプロセスに渡され"
10410 "る場合 (B<unix>(7) の B<SCM_CREDENTIALS> の説明を参照)、 プロセス ID は受信プ"
10411 "ロセスの PID 名前空間での対応する PID 値に翻訳される。"
10412
10413 #. type: Plain text
10414 #: build/C/man7/pid_namespaces.7:365
10415 msgid ""
10416 "B<clone>(2), B<setns>(2), B<unshare>(2), B<proc>(5), B<credentials>(7), "
10417 "B<capabilities>(7), B<user_namespaces>(7), B<switch_root>(8)"
10418 msgstr ""
10419 "B<clone>(2), B<setns>(2), B<unshare>(2), B<proc>(5), B<credentials>(7), "
10420 "B<capabilities>(7), B<user_namespaces>(7), B<switch_root>(8)"
10421
10422 #. type: TH
10423 #: build/C/man2/seteuid.2:29
10424 #, no-wrap
10425 msgid "SETEUID"
10426 msgstr "SETEUID"
10427
10428 #. type: Plain text
10429 #: build/C/man2/seteuid.2:32
10430 msgid "seteuid, setegid - set effective user or group ID"
10431 msgstr "seteuid, setegid - 実効ユーザー ID や 実効グループ ID を設定する"
10432
10433 #. type: Plain text
10434 #: build/C/man2/seteuid.2:38
10435 msgid "B<int seteuid(uid_t >I<euid>B<);>"
10436 msgstr "B<int seteuid(uid_t >I<euid>B<);>"
10437
10438 #. type: Plain text
10439 #: build/C/man2/seteuid.2:40
10440 msgid "B<int setegid(gid_t >I<egid>B<);>"
10441 msgstr "B<int setegid(gid_t >I<egid>B<);>"
10442
10443 #. type: Plain text
10444 #: build/C/man2/seteuid.2:49
10445 msgid "B<seteuid>(), B<setegid>():"
10446 msgstr "B<seteuid>(), B<setegid>():"
10447
10448 #. type: Plain text
10449 #: build/C/man2/seteuid.2:51
10450 msgid ""
10451 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>="
10452 "\\ 600"
10453 msgstr ""
10454 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>="
10455 "\\ 600"
10456
10457 #. type: Plain text
10458 #: build/C/man2/seteuid.2:58
10459 msgid ""
10460 "B<seteuid>()  sets the effective user ID of the calling process.  "
10461 "Unprivileged user processes may only set the effective user ID to the real "
10462 "user ID, the effective user ID or the saved set-user-ID."
10463 msgstr ""
10464 "B<seteuid>()  は呼び出し元のプロセスの実効ユーザー ID を設定する。 非特権ユー"
10465 "ザーのプロセスの場合、実効ユーザー ID に設定できるのは、 実ユーザー ID・実効"
10466 "ユーザー ID・保存 set-user-ID のいずれかだけである。"
10467
10468 #.  When
10469 #.  .I euid
10470 #.  equals \-1, nothing is changed.
10471 #.  (This is an artifact of the implementation in glibc of seteuid()
10472 #.  using setresuid(2).)
10473 #. type: Plain text
10474 #: build/C/man2/seteuid.2:67
10475 msgid ""
10476 "Precisely the same holds for B<setegid>()  with \"group\" instead of \"user"
10477 "\"."
10478 msgstr ""
10479 "B<setegid>()  は「ユーザー」ではなく「グループ」に対して全く同じことを行う。"
10480
10481 #. type: Plain text
10482 #: build/C/man2/seteuid.2:79
10483 msgid ""
10484 "I<Note>: there are cases where B<seteuid>()  can fail even when the caller "
10485 "is UID 0; it is a grave security error to omit checking for a failure return "
10486 "from B<seteuid>()."
10487 msgstr ""
10488 "I<注意>: 呼び出し元が UID 0 であっても B<seteuid>() が失敗する場合がある。 "
10489 "B<seteuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュリ"
10490 "ティ上のエラーとなる。"
10491
10492 #. type: Plain text
10493 #: build/C/man2/seteuid.2:83
10494 msgid "The target user or group ID is not valid in this user namespace."
10495 msgstr ""
10496 "対象のユーザー ID かグループ ID がこのユーザー名前空間では有効ではない。"
10497
10498 #. type: Plain text
10499 #: build/C/man2/seteuid.2:99
10500 msgid ""
10501 "The calling process is not privileged (Linux: does not have the "
10502 "B<CAP_SETUID> capability in the case of B<seteuid>(), or the B<CAP_SETGID> "
10503 "capability in the case of B<setegid>())  and I<euid> (respectively, "
10504 "I<egid>)  is not the real user (group) ID, the effective user (group) ID, or "
10505 "the saved set-user-ID (saved set-group-ID)."
10506 msgstr ""
10507 "呼び出し元のプロセスに特権がなく、 I<euid> (I<egid>)  が実ユーザー (グルー"
10508 "プ) ID、または実効ユーザー (グループ) ID、 保存 set-user-ID (保存 set-group-"
10509 "ID) のいずれでもではない (Linux においては、 B<seteuid>()  では "
10510 "B<CAP_SETUID> ケーパビリティ (capability) が、 B<setegid>()  では "
10511 "B<CAP_SETGID> ケーパビリティがない場合に、特権がないと判断される)。"
10512
10513 #. type: Plain text
10514 #: build/C/man2/seteuid.2:101
10515 msgid "4.3BSD, POSIX.1-2001."
10516 msgstr "4.3BSD, POSIX.1-2001."
10517
10518 #. type: Plain text
10519 #: build/C/man2/seteuid.2:107
10520 msgid ""
10521 "Setting the effective user (group) ID to the saved set-user-ID (saved set-"
10522 "group-ID) is possible since Linux 1.1.37 (1.1.38).  On an arbitrary system "
10523 "one should check B<_POSIX_SAVED_IDS>."
10524 msgstr ""
10525 "実効ユーザー (グループ) ID を保存 set-user-ID (保存 set-group-ID) に 設定でき"
10526 "るのは、Linux 1.1.37 (1.1.38) 以降である。 全てのシステムにおいて "
10527 "B<_POSIX_SAVED_IDS> をチェックすべきである。"
10528
10529 #. type: Plain text
10530 #: build/C/man2/seteuid.2:123
10531 msgid ""
10532 "Under glibc 2.0 B<seteuid(>I<euid>B<)> is equivalent to B<setreuid(-1,>I< "
10533 "euid>B<)> and hence may change the saved set-user-ID.  Under glibc 2.1 and "
10534 "later it is equivalent to B<setresuid(-1,>I< euid>B<, -1)> and hence does "
10535 "not change the saved set-user-ID.  Analogous remarks hold for B<setegid>(), "
10536 "with the difference that the change in implementation from B<setregid(-1,>I< "
10537 "egid>B<)> to B<setresgid(-1,>I< egid>B<, -1)> occurred in glibc 2.2 or 2.3 "
10538 "(depending on the hardware architecture)."
10539 msgstr ""
10540 "glibc 2.0 では、 B<seteuid(>I<euid>B<)> は B<setreuid(-1,>I< euid>B<)> と等価"
10541 "であり、保存 set-user-ID を変更するかもしれない。 glibc 2.1 では、 "
10542 "B<setresuid(-1,>I< euid>B<, -1)> と等価であり、保存 set-user-ID 変更しない。 "
10543 "同様のことが B<setegid>() にも言えるが、 glibc 2.2 か 2.3 で、 実装が "
10544 "B<setregid(-1,>I< egid>B<)> から B<setresgid(-1,>I< egid>B<, -1)> へ変更され"
10545 "た点だけが違う (どの glibc バージョンで変更が行われたかは、ハードウェアアーキ"
10546 "テクチャによって異なる)。"
10547
10548 #. type: Plain text
10549 #: build/C/man2/seteuid.2:132
10550 msgid ""
10551 "According to POSIX.1, B<seteuid>()  (B<setegid>())  need not permit I<euid> "
10552 "(I<egid>)  to be the same value as the current effective user (group) ID, "
10553 "and some implementations do not permit this."
10554 msgstr ""
10555 "POSIX.1 では、 B<seteuid>()  (B<setegid>())  で、 I<euid> (I<egid>)  として現"
10556 "在の実効ユーザ (グループ) ID と同じ値を指定可能である 必要はないとされてお"
10557 "り、いくつかの実装では I<euid> (I<egid>)  として現在の実効ユーザ (グループ) "
10558 "ID と同じ値を 指定することができない。"
10559
10560 #. type: Plain text
10561 #: build/C/man2/seteuid.2:141
10562 msgid ""
10563 "On Linux, B<seteuid>()  and B<setegid>()  are implemented as library "
10564 "functions that call, respectively, B<setreuid>(2)  and B<setresgid>(2)."
10565 msgstr ""
10566 "Linux では、 B<seteuid>() と B<setegid>() は、それぞれ B<setreuid>(2) と "
10567 "B<setresgid>(2) を呼び出すライブラリ関数として実装されている。"
10568
10569 #. type: Plain text
10570 #: build/C/man2/seteuid.2:149
10571 msgid ""
10572 "B<geteuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
10573 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
10574 msgstr ""
10575 "B<geteuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
10576 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
10577
10578 #. type: TH
10579 #: build/C/man2/setfsgid.2:31
10580 #, no-wrap
10581 msgid "SETFSGID"
10582 msgstr "SETFSGID"
10583
10584 #. type: TH
10585 #: build/C/man2/setfsgid.2:31 build/C/man2/setfsuid.2:31
10586 #, no-wrap
10587 msgid "2013-08-08"
10588 msgstr "2013-08-08"
10589
10590 #. type: Plain text
10591 #: build/C/man2/setfsgid.2:34
10592 msgid "setfsgid - set group identity used for filesystem checks"
10593 msgstr ""
10594 "setfsgid - ファイルシステムのチェックに用いられるグループ ID を設定する"
10595
10596 #. type: Plain text
10597 #: build/C/man2/setfsgid.2:36 build/C/man2/setfsuid.2:36
10598 msgid "B<#include E<lt>sys/fsuid.hE<gt>>"
10599 msgstr "B<#include E<lt>sys/fsuid.hE<gt>>"
10600
10601 #. type: Plain text
10602 #: build/C/man2/setfsgid.2:38
10603 msgid "B<int setfsgid(uid_t >I<fsgid>B<);>"
10604 msgstr "B<int setfsgid(uid_t >I<fsgid>B<);>"
10605
10606 #. type: Plain text
10607 #: build/C/man2/setfsgid.2:51
10608 msgid ""
10609 "The system call B<setfsgid>()  changes the value of the caller's filesystem "
10610 "group ID\\(emthe group ID that the Linux kernel uses to check for all "
10611 "accesses to the filesystem.  Normally, the value of the filesystem group ID "
10612 "will shadow the value of the effective group ID.  In fact, whenever the "
10613 "effective group ID is changed, the filesystem group ID will also be changed "
10614 "to the new value of the effective group ID."
10615 msgstr ""
10616 "システムコール B<setfsgid>() は、 呼び出し元のファイルシステムグループ ID "
10617 "\\(em ファイルシステムへの全てのアクセスのチェックにおいて Linux カーネルが使"
10618 "用するグループ ID \\(em の値を変更する。通常はファイルシステムグループ ID の"
10619 "値は実効 (effective) グループ ID と同じになる。実際、 実効グループ ID が変更"
10620 "される度にファイルシステムグループ ID もまた新しい実効グループ ID の値に変更"
10621 "される。"
10622
10623 #. type: Plain text
10624 #: build/C/man2/setfsgid.2:62
10625 msgid ""
10626 "Explicit calls to B<setfsuid>(2)  and B<setfsgid>()  are usually used only "
10627 "by programs such as the Linux NFS server that need to change what user and "
10628 "group ID is used for file access without a corresponding change in the real "
10629 "and effective user and group IDs.  A change in the normal user IDs for a "
10630 "program such as the NFS server is a security hole that can expose it to "
10631 "unwanted signals.  (But see below.)"
10632 msgstr ""
10633 "通常、 B<setfsuid>()  や B<setfsgid>() を明示的に呼び出すのは、Linux NFS サー"
10634 "バー のように、 ファイルアクセスに用いるユーザID / グループID を変更しなけれ"
10635 "ばならないが、 対応する実(real)/実効(effective) ユーザID / グループID は変更"
10636 "したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通"
10637 "常のユーザID を変更すると、 プロセスを望まないシグナルにさらす可能性があり、 "
10638 "セキュリティホールになる。(下記参照)"
10639
10640 #. type: Plain text
10641 #: build/C/man2/setfsgid.2:68
10642 msgid ""
10643 "B<setfsgid>()  will succeed only if the caller is the superuser or if "
10644 "I<fsgid> matches either the caller's real group ID, effective group ID, "
10645 "saved set-group-ID, or current the filesystem user ID."
10646 msgstr ""
10647 "B<setfsgid>()  は、スーパーユーザによって呼び出された場合か、 I<fsgid> が呼び"
10648 "出し元の実グループID、実効グループID、 保存セットグループID (saved set-group-"
10649 "ID)、現在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功"
10650 "する。"
10651
10652 #. type: Plain text
10653 #: build/C/man2/setfsgid.2:71
10654 msgid ""
10655 "On both success and failure, this call returns the previous filesystem group "
10656 "ID of the caller."
10657 msgstr ""
10658 "成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムグループ "
10659 "ID の値を返す。"
10660
10661 #.  This system call is present since Linux 1.1.44
10662 #.  and in libc since libc 4.7.6.
10663 #. type: Plain text
10664 #: build/C/man2/setfsgid.2:75 build/C/man2/setfsuid.2:75
10665 msgid "This system call is present in Linux since version 1.2."
10666 msgstr "このシステムコールはバージョン 1.2 以降の Linux に存在する。"
10667
10668 #. type: Plain text
10669 #: build/C/man2/setfsgid.2:79
10670 msgid ""
10671 "B<setfsgid>()  is Linux-specific and should not be used in programs intended "
10672 "to be portable."
10673 msgstr ""
10674 "B<setfsgid>()  は Linux 特有であり、移植を想定したプログラムで使用してはいけ"
10675 "ない。"
10676
10677 #. type: Plain text
10678 #: build/C/man2/setfsgid.2:85
10679 msgid ""
10680 "When glibc determines that the argument is not a valid group ID, it will "
10681 "return -1 and set I<errno> to B<EINVAL> without attempting the system call."
10682 msgstr ""
10683 "glibc が引き数がグループID として不正だと判断した場合は、 システムコールを行"
10684 "わず I<errno> に B<EINVAL> を設定して -1 が返される。"
10685
10686 #. type: Plain text
10687 #: build/C/man2/setfsgid.2:96
10688 msgid ""
10689 "Note that at the time this system call was introduced, a process could send "
10690 "a signal to a process with the same effective user ID.  Today signal "
10691 "permission handling is slightly different.  See B<setfsuid>(2)  for a "
10692 "discussion of why the use of both B<setfsuid>(2)  and B<setfsgid>()  is "
10693 "nowadays unneeded."
10694 msgstr ""
10695 "このシステムコールが導入された当時、プロセスは 同じ実効ユーザIDのプロセスへシ"
10696 "グナルを送ることができた。 今日では、シグナル送信権限の扱いはかなり違うものに"
10697 "なっている。 なぜ今日では B<setfsuid>(2) と B<setfsgid>() の両者が不要なのか"
10698 "の議論については B<setfsuid>(2) を参照のこと。"
10699
10700 #. type: Plain text
10701 #: build/C/man2/setfsgid.2:106
10702 msgid ""
10703 "The original Linux B<setfsgid>()  system call supported only 16-bit group "
10704 "IDs.  Subsequently, Linux 2.4 added B<setfsgid32>()  supporting 32-bit IDs.  "
10705 "The glibc B<setfsgid>()  wrapper function transparently deals with the "
10706 "variation across kernel versions."
10707 msgstr ""
10708 "元々の Linux の B<setfsgid>() システムコールは\n"
10709 "16 ビットのグループ ID だけに対応していた。\n"
10710 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10711 "B<setfsgid32>() が追加された。\n"
10712 "glibc の B<setfsgid>() のラッパー関数は\n"
10713 "カーネルバージョンによるこの違いを吸収している。"
10714
10715 #. type: Plain text
10716 #: build/C/man2/setfsgid.2:123
10717 msgid ""
10718 "No error indications of any kind are returned to the caller, and the fact "
10719 "that both successful and unsuccessful calls return the same value makes it "
10720 "impossible to directly determine whether the call succeeded or failed.  "
10721 "Instead, the caller must resort to looking at the return value from a "
10722 "further call such as I<setfsgid(-1)> (which will always fail), in order to "
10723 "determine if a preceding call to B<setfsgid>()  changed the filesystem group "
10724 "ID.  At the very least, B<EPERM> should be returned when the call fails "
10725 "(because the caller lacks the B<CAP_SETGID> capability)."
10726 msgstr ""
10727 "いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出し"
10728 "は同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできな"
10729 "い。 その代わり、 直前の B<setfsgid>() の呼び出しがファイルシステムグループ "
10730 "ID を変更したかどうかを判定するために、 呼び出し元はこの後に I<setfsgid(-1)> "
10731 "などを呼び出して返り値を見なければならない (I<setfsgid(-1)> は常に失敗す"
10732 "る)。 最低でも、失敗した場合は B<EPERM> くらいは返すべきである (呼び出し元に"
10733 "は B<CAP_SETGID> ケーパビリティがなかったのだから)。"
10734
10735 #. type: Plain text
10736 #: build/C/man2/setfsgid.2:128
10737 msgid "B<kill>(2), B<setfsuid>(2), B<capabilities>(7), B<credentials>(7)"
10738 msgstr "B<kill>(2), B<setfsuid>(2), B<capabilities>(7), B<credentials>(7)"
10739
10740 #. type: TH
10741 #: build/C/man2/setfsuid.2:31
10742 #, no-wrap
10743 msgid "SETFSUID"
10744 msgstr "SETFSUID"
10745
10746 #. type: Plain text
10747 #: build/C/man2/setfsuid.2:34
10748 msgid "setfsuid - set user identity used for filesystem checks"
10749 msgstr "setfsuid - ファイルシステムのチェックに用いられるユーザ ID を設定する"
10750
10751 #. type: Plain text
10752 #: build/C/man2/setfsuid.2:38
10753 msgid "B<int setfsuid(uid_t >I<fsuid>B<);>"
10754 msgstr "B<int setfsuid(uid_t >I<fsuid>B<);>"
10755
10756 #. type: Plain text
10757 #: build/C/man2/setfsuid.2:51
10758 msgid ""
10759 "The system call B<setfsuid>()  changes the value of the caller's filesystem "
10760 "user ID\\(emthe user ID that the Linux kernel uses to check for all accesses "
10761 "to the filesystem.  Normally, the value of the filesystem user ID will "
10762 "shadow the value of the effective user ID.  In fact, whenever the effective "
10763 "user ID is changed, the filesystem user ID will also be changed to the new "
10764 "value of the effective user ID."
10765 msgstr ""
10766 "B<setfsuid>()  は、 呼び出し元のファイルシステムユーザー ID \\(em ファイルシ"
10767 "ステムへの全てのアクセスのチェックにおいて Linux カーネルが使用するユーザ ID "
10768 "\\(em の値を変更する。通常はファイルシステムユーザー ID の値は実効 "
10769 "(effective) ユーザID と同じになる。実際、 実効ユーザID が変更される度にファイ"
10770 "ルシステムユーザー ID もまた新しい実効ユーザ ID の値に変更される。"
10771
10772 #. type: Plain text
10773 #: build/C/man2/setfsuid.2:62
10774 msgid ""
10775 "Explicit calls to B<setfsuid>()  and B<setfsgid>(2)  are usually used only "
10776 "by programs such as the Linux NFS server that need to change what user and "
10777 "group ID is used for file access without a corresponding change in the real "
10778 "and effective user and group IDs.  A change in the normal user IDs for a "
10779 "program such as the NFS server is a security hole that can expose it to "
10780 "unwanted signals.  (But see below.)"
10781 msgstr ""
10782 "通常、 B<setfsuid>()  や B<setfsgid>() を明示的に呼び出すのは、Linux NFS サー"
10783 "バー のように、 ファイルアクセスに用いるユーザID / グループID を変更しなけれ"
10784 "ばならないが、 対応する実(real)/実効(effective) ユーザID / グループID は変更"
10785 "したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通"
10786 "常のユーザID を変更すると、 プロセスを望まないシグナルにさらす可能性があり、 "
10787 "セキュリティホールになる。(下記参照)"
10788
10789 #. type: Plain text
10790 #: build/C/man2/setfsuid.2:68
10791 msgid ""
10792 "B<setfsuid>()  will succeed only if the caller is the superuser or if "
10793 "I<fsuid> matches either the caller's real user ID, effective user ID, saved "
10794 "set-user-ID, or current filesystem user ID."
10795 msgstr ""
10796 "B<setfsuid>()  は、スーパーユーザによって呼び出された場合か、 I<fsuid> が呼び"
10797 "出し元の実ユーザID、実効ユーザID、 保存セットユーザID (saved set-user-ID)、現"
10798 "在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功する。"
10799
10800 #. type: Plain text
10801 #: build/C/man2/setfsuid.2:71
10802 msgid ""
10803 "On both success and failure, this call returns the previous filesystem user "
10804 "ID of the caller."
10805 msgstr ""
10806 "成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムユーザー "
10807 "ID の値を返す。"
10808
10809 #. type: Plain text
10810 #: build/C/man2/setfsuid.2:79
10811 msgid ""
10812 "B<setfsuid>()  is Linux-specific and should not be used in programs intended "
10813 "to be portable."
10814 msgstr ""
10815 "B<setfsuid>()  は Linux 特有であり、移植を想定したプログラムで使用してはいけ"
10816 "ない。"
10817
10818 #. type: Plain text
10819 #: build/C/man2/setfsuid.2:85
10820 msgid ""
10821 "When glibc determines that the argument is not a valid user ID, it will "
10822 "return -1 and set I<errno> to B<EINVAL> without attempting the system call."
10823 msgstr ""
10824 "glibc が引き数がユーザID として不正だと判断した場合は、 システムコールを行わ"
10825 "ず I<errno> に B<EINVAL> を設定して -1 が返される。"
10826
10827 #. type: Plain text
10828 #: build/C/man2/setfsuid.2:104
10829 msgid ""
10830 "At the time when this system call was introduced, one process could send a "
10831 "signal to another process with the same effective user ID.  This meant that "
10832 "if a privileged process changed its effective user ID for the purpose of "
10833 "file permission checking, then it could become vulnerable to receiving "
10834 "signals sent by another (unprivileged) process with the same user ID.  The "
10835 "filesystem user ID attribute was thus added to allow a process to change its "
10836 "user ID for the purposes of file permission checking without at the same "
10837 "time becoming vulnerable to receiving unwanted signals.  Since Linux 2.0, "
10838 "signal permission handling is different (see B<kill>(2)), with the result "
10839 "that a process change can change its effective user ID without being "
10840 "vulnerable to receiving signals from unwanted processes.  Thus, "
10841 "B<setfsuid>()  is nowadays unneeded and should be avoided in new "
10842 "applications (likewise for B<setfsgid>(2))."
10843 msgstr ""
10844 "このシステムコールが導入された当時、 あるプロセスは同じ実効ユーザー ID を持つ"
10845 "別のプロセスにシグナルを送信できた。 これは、 特権プロセスがファイルのアクセ"
10846 "ス許可をチェックするために自身の実効ユーザー ID を変更すると、 同じユーザー "
10847 "ID を持つ別の (非特権) プロセスが送信したシグナルを受け取るようになってしまう"
10848 "ことを意味する。そのため、 プロセスが、 受け取りたくないシグナルを受信する状"
10849 "態にならずに、 ファイルのアクセス許可をチェックするために自身のユーザー ID を"
10850 "変更できるように、 ファイルシステムユーザー ID 属性が追加された。 Linux 2.0 "
10851 "以降では、 シグナルの送信許可の扱いは異なり (B<kill>(2) 参照)、 プロセスは、 "
10852 "望まないプロセスからシグナルを受信してしまう状態にならずに、 自身の実効ユー"
10853 "ザー ID を変更することができる。 したがって、 B<setfsuid>() は今日では不要で"
10854 "あり、 新規のアプリケーションでは使用すべきではない (B<setfsgid>(2) も同様)。"
10855
10856 #. type: Plain text
10857 #: build/C/man2/setfsuid.2:114
10858 msgid ""
10859 "The original Linux B<setfsuid>()  system call supported only 16-bit user "
10860 "IDs.  Subsequently, Linux 2.4 added B<setfsuid32>()  supporting 32-bit IDs.  "
10861 "The glibc B<setfsuid>()  wrapper function transparently deals with the "
10862 "variation across kernel versions."
10863 msgstr ""
10864 "元々の Linux の B<setfsuid>() システムコールは\n"
10865 "16 ビットのグループ ID だけに対応していた。\n"
10866 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10867 "B<setfsuid32>() が追加された。\n"
10868 "glibc の B<setfsuid>() のラッパー関数は\n"
10869 "カーネルバージョンによるこの違いを吸収している。"
10870
10871 #. type: Plain text
10872 #: build/C/man2/setfsuid.2:131
10873 msgid ""
10874 "No error indications of any kind are returned to the caller, and the fact "
10875 "that both successful and unsuccessful calls return the same value makes it "
10876 "impossible to directly determine whether the call succeeded or failed.  "
10877 "Instead, the caller must resort to looking at the return value from a "
10878 "further call such as I<setfsuid(-1)> (which will always fail), in order to "
10879 "determine if a preceding call to B<setfsuid>()  changed the filesystem user "
10880 "ID.  At the very least, B<EPERM> should be returned when the call fails "
10881 "(because the caller lacks the B<CAP_SETUID> capability)."
10882 msgstr ""
10883 "いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出し"
10884 "は同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできな"
10885 "い。 その代わり、 直前の B<setfsuid>() の呼び出しがファイルシステムグループ "
10886 "ID を変更したかどうかを判定するために、 呼び出し元はこの後に I<setfsuid(-1)> "
10887 "などを呼び出して返り値を見なければならない (I<setfsuid(-1)> は常に失敗す"
10888 "る)。 最低でも、失敗した場合は B<EPERM> くらいは返すべきである (呼び出し元に"
10889 "は B<CAP_SETUID> ケーパビリティがなかったのだから)。"
10890
10891 #. type: Plain text
10892 #: build/C/man2/setfsuid.2:136
10893 msgid "B<kill>(2), B<setfsgid>(2), B<capabilities>(7), B<credentials>(7)"
10894 msgstr "B<kill>(2), B<setfsgid>(2), B<capabilities>(7), B<credentials>(7)"
10895
10896 #. type: TH
10897 #: build/C/man2/setgid.2:29
10898 #, no-wrap
10899 msgid "SETGID"
10900 msgstr "SETGID"
10901
10902 #. type: Plain text
10903 #: build/C/man2/setgid.2:32
10904 msgid "setgid - set group identity"
10905 msgstr "setgid - グループ識別(identity)を設定する"
10906
10907 #. type: Plain text
10908 #: build/C/man2/setgid.2:38
10909 msgid "B<int setgid(gid_t >I<gid>B<);>"
10910 msgstr "B<int setgid(gid_t >I<gid>B<);>"
10911
10912 #. type: Plain text
10913 #: build/C/man2/setgid.2:43
10914 msgid ""
10915 "B<setgid>()  sets the effective group ID of the calling process.  If the "
10916 "caller is the superuser, the real GID and saved set-group-ID are also set."
10917 msgstr ""
10918 "B<setgid>()  は呼び出し元のプロセスの実効 (effective) グループID を設定す"
10919 "る。 もしスーパーユーザーによって呼び出された場合は、 実 (real) グループID と"
10920 "保存 (saved) set-group-ID も設定される。"
10921
10922 #. type: Plain text
10923 #: build/C/man2/setgid.2:53
10924 msgid ""
10925 "Under Linux, B<setgid>()  is implemented like the POSIX version with the "
10926 "B<_POSIX_SAVED_IDS> feature.  This allows a set-group-ID program that is not "
10927 "set-user-ID-root to drop all of its group privileges, do some un-privileged "
10928 "work, and then reengage the original effective group ID in a secure manner."
10929 msgstr ""
10930 "Linux において、 B<setgid>()  は B<_POSIX_SAVED_IDS> をもった POSIX 版のよう"
10931 "に実装されている。 これは set-user-ID-root でない set-group-ID プログラムにそ"
10932 "のグループの 特権の全て落とし、特権の必要ない仕事をし、本来の実効グループID "
10933 "に 安全な方法で再び戻すことを許す。"
10934
10935 #. type: Plain text
10936 #: build/C/man2/setgid.2:64
10937 msgid "The group ID specified in I<gid> is not valid in this user namespace."
10938 msgstr ""
10939 "I<gid> で指定されたグループ ID がこのユーザー名前空間では有効ではない。"
10940
10941 #. type: Plain text
10942 #: build/C/man2/setgid.2:71
10943 msgid ""
10944 "The calling process is not privileged (does not have the B<CAP_SETGID> "
10945 "capability), and I<gid> does not match the real group ID or saved set-group-"
10946 "ID of the calling process."
10947 msgstr ""
10948 "呼び出し元のプロセスに権限がなく (B<CAP_SETGID> ケーパビリティがなく)、かつ "
10949 "I<gid> が呼び出し元のプロセスの実グループID と保存セットグループID のどちらと"
10950 "も一致しない。"
10951
10952 #. type: Plain text
10953 #: build/C/man2/setgid.2:83
10954 msgid ""
10955 "The original Linux B<setgid>()  system call supported only 16-bit group "
10956 "IDs.  Subsequently, Linux 2.4 added B<setgid32>()  supporting 32-bit IDs.  "
10957 "The glibc B<setgid>()  wrapper function transparently deals with the "
10958 "variation across kernel versions."
10959 msgstr ""
10960 "元々の Linux の B<setgid>() システムコールは\n"
10961 "16 ビットのグループ ID だけに対応していた。\n"
10962 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10963 "B<setgid32>() が追加された。\n"
10964 "glibc の B<setgid>() のラッパー関数は\n"
10965 "カーネルバージョンによるこの違いを吸収している。"
10966
10967 #. type: Plain text
10968 #: build/C/man2/setgid.2:90
10969 msgid ""
10970 "B<getgid>(2), B<setegid>(2), B<setregid>(2), B<capabilities>(7), "
10971 "B<credentials>(7), B<user_namespaces>(7)"
10972 msgstr ""
10973 "B<getgid>(2), B<setegid>(2), B<setregid>(2), B<capabilities>(7), "
10974 "B<credentials>(7), B<user_namespaces>(7)"
10975
10976 #. type: TH
10977 #: build/C/man2/setpgid.2:48
10978 #, no-wrap
10979 msgid "SETPGID"
10980 msgstr "SETPGID"
10981
10982 #. type: TH
10983 #: build/C/man2/setpgid.2:48
10984 #, no-wrap
10985 msgid "2014-01-07"
10986 msgstr "2014-01-07"
10987
10988 #. type: Plain text
10989 #: build/C/man2/setpgid.2:51
10990 msgid "setpgid, getpgid, setpgrp, getpgrp - set/get process group"
10991 msgstr "setpgid, getpgid, setpgrp, getpgrp - プロセスグループの設定/取得を行う"
10992
10993 #. type: Plain text
10994 #: build/C/man2/setpgid.2:55
10995 msgid "B<int setpgid(pid_t >I<pid>B<, pid_t >I<pgid>B<);>"
10996 msgstr "B<int setpgid(pid_t >I<pid>B<, pid_t >I<pgid>B<);>"
10997
10998 #. type: Plain text
10999 #: build/C/man2/setpgid.2:57
11000 msgid "B<pid_t getpgid(pid_t >I<pid>B<);>"
11001 msgstr "B<pid_t getpgid(pid_t >I<pid>B<);>"
11002
11003 #. type: Plain text
11004 #: build/C/man2/setpgid.2:59
11005 msgid "B<pid_t getpgrp(void);> /* POSIX.1 version */"
11006 msgstr "B<pid_t getpgrp(void);> /* POSIX.1 version */"
11007
11008 #. type: Plain text
11009 #: build/C/man2/setpgid.2:62
11010 msgid ""
11011 "B<pid_t getpgrp(pid_t >I<pid>B<);\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ > /* BSD "
11012 "version */"
11013 msgstr ""
11014 "B<pid_t getpgrp(pid_t >I<pid>B<);\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ > /* BSD "
11015 "version */"
11016
11017 #. type: Plain text
11018 #: build/C/man2/setpgid.2:64
11019 msgid "B<int setpgrp(void);> /* System V version */"
11020 msgstr "B<int setpgrp(void);> /* System V version */"
11021
11022 #. type: Plain text
11023 #: build/C/man2/setpgid.2:67
11024 msgid "B<int setpgrp(pid_t >I<pid>B<, pid_t >I<pgid>B<);\\ > /* BSD version */"
11025 msgstr ""
11026 "B<int setpgrp(pid_t >I<pid>B<, pid_t >I<pgid>B<);\\ > /* BSD version */"
11027
11028 #. type: Plain text
11029 #: build/C/man2/setpgid.2:76
11030 msgid "B<getpgid>():"
11031 msgstr "B<getpgid>():"
11032
11033 #. type: Plain text
11034 #: build/C/man2/setpgid.2:84
11035 msgid "B<setpgrp>() (POSIX.1):"
11036 msgstr "B<setpgrp>() (POSIX.1):"
11037
11038 #. type: Plain text
11039 #: build/C/man2/setpgid.2:87
11040 #, no-wrap
11041 msgid ""
11042 "    _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
11043 "    _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED\n"
11044 msgstr ""
11045 "    _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
11046 "    _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED\n"
11047
11048 #. type: Plain text
11049 #: build/C/man2/setpgid.2:89
11050 #, no-wrap
11051 msgid "    || /* Since glibc 2.19: */ _BSD_SOURCE\n"
11052 msgstr "    || /* glibc 2.19 以降: */ _BSD_SOURCE\n"
11053
11054 #. type: Plain text
11055 #: build/C/man2/setpgid.2:93
11056 msgid "B<setpgrp>()\\ (BSD), B<getpgrp>()\\ (BSD) [before glibc 2.19]:"
11057 msgstr "B<setpgrp>()\\ (BSD), B<getpgrp>()\\ (BSD) [glibc 2.19 より前]:"
11058
11059 #. type: Plain text
11060 #: build/C/man2/setpgid.2:97
11061 #, no-wrap
11062 msgid ""
11063 "    _BSD_SOURCE &&\n"
11064 "        !\\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||\n"
11065 "           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)\n"
11066 msgstr ""
11067 "    _BSD_SOURCE &&\n"
11068 "        !\\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||\n"
11069 "           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)\n"
11070
11071 #. type: Plain text
11072 #: build/C/man2/setpgid.2:109
11073 msgid ""
11074 "All of these interfaces are available on Linux, and are used for getting and "
11075 "setting the process group ID (PGID) of a process.  The preferred, POSIX.1-"
11076 "specified ways of doing this are: B<getpgrp>(void), for retrieving the "
11077 "calling process's PGID; and B<setpgid>(), for setting a process's PGID."
11078 msgstr ""
11079 "これらのインタフェースすべてが Linux で利用可能で、 これらを使ってプロセスの"
11080 "プロセスグループ ID (PGID) の 取得や設定ができる。 推奨の、POSIX.1 で規定され"
11081 "た方法では、 B<getpgrp>(void)  で呼び出し元プロセスの PGID を取得し、 "
11082 "B<setpgid>()  で設定する。"
11083
11084 #. type: Plain text
11085 #: build/C/man2/setpgid.2:134
11086 msgid ""
11087 "B<setpgid>()  sets the PGID of the process specified by I<pid> to I<pgid>.  "
11088 "If I<pid> is zero, then the process ID of the calling process is used.  If "
11089 "I<pgid> is zero, then the PGID of the process specified by I<pid> is made "
11090 "the same as its process ID.  If B<setpgid>()  is used to move a process from "
11091 "one process group to another (as is done by some shells when creating "
11092 "pipelines), both process groups must be part of the same session (see "
11093 "B<setsid>(2)  and B<credentials>(7)).  In this case, the I<pgid> specifies "
11094 "an existing process group to be joined and the session ID of that group must "
11095 "match the session ID of the joining process."
11096 msgstr ""
11097 "B<setpgid>()  は I<pid> で指定したプロセスの PGID に I<pgid> を設定する。 "
11098 "I<pid> がゼロならば、呼び出し元プロセスのプロセス ID が pid として使用され"
11099 "る。 I<pgid> がゼロならば、 I<pid> で指定されたプロセスの PGID がそのプロセス"
11100 "のプロセス ID と 同じに設定される。 B<setpgid>()  をプロセスをあるプロセスグ"
11101 "ループから別のグループへ 移動するために使用する場合は (一部のシェルはパイプラ"
11102 "インを生成 する時にこれを行う)、両方のプロセスグループは同じセッションの 一部"
11103 "でなければならない (B<setsid>(2)  と B<credentials>(7)  参照)。この場合は "
11104 "I<pgid> は参加すべき既存の プロセスグループを指定し、そのセッション ID は参加"
11105 "するプロセスの セッション ID に一致しなければならない。"
11106
11107 #. type: Plain text
11108 #: build/C/man2/setpgid.2:139
11109 msgid ""
11110 "The POSIX.1 version of B<getpgrp>(), which takes no arguments, returns the "
11111 "PGID of the calling process."
11112 msgstr ""
11113 "POSIX.1 バージョンの B<getpgrp>()  は引き数を一つもとらず、 呼び出し元プロセ"
11114 "スの PGID を返す。"
11115
11116 #. type: Plain text
11117 #: build/C/man2/setpgid.2:150
11118 msgid ""
11119 "B<getpgid>()  returns the PGID of the process specified by I<pid>.  If "
11120 "I<pid> is zero, the process ID of the calling process is used.  (Retrieving "
11121 "the PGID of a process other than the caller is rarely necessary, and the "
11122 "POSIX.1 B<getpgrp>()  is preferred for that task.)"
11123 msgstr ""
11124 "B<getpgid>()  は I<pid> で指定されたプロセスの PGID を返す。 I<pid> がゼロな"
11125 "らば、呼び出し元プロセスのプロセス ID が pid として使用される。 (呼び出し元プ"
11126 "ロセス以外のプロセスの PGID の取得が必要になることは めったになく、呼び出し元"
11127 "プロセスの PGID を取得するには POSIX.1 バージョンの B<getpgrp>()  を使うのが"
11128 "望ましい。)"
11129
11130 #. type: Plain text
11131 #: build/C/man2/setpgid.2:155
11132 msgid ""
11133 "The System\\ V-style B<setpgrp>(), which takes no arguments, is equivalent "
11134 "to I<setpgid(0,\\ 0)>."
11135 msgstr ""
11136 "System\\ V バージョンの B<setpgrp>()  は引き数を一つもとらず、 I<setpgid(0,"
11137 "\\ 0)> と等価である。"
11138
11139 #. type: Plain text
11140 #: build/C/man2/setpgid.2:163
11141 msgid ""
11142 "The BSD-specific B<setpgrp>()  call, which takes arguments I<pid> and "
11143 "I<pgid>, is is a wrapper function that calls"
11144 msgstr ""
11145 "BSD 仕様の B<setpgrp>()  は I<pid> と I<pgid> を引き数にとり、 以下を呼び出す"
11146 "ラッパー関数である。"
11147
11148 #. type: Plain text
11149 #: build/C/man2/setpgid.2:165
11150 #, no-wrap
11151 msgid "    setpgid(pid, pgid)\n"
11152 msgstr "    setpgid(pid, pgid)\n"
11153
11154 #.  The true BSD setpgrp() system call differs in allowing the PGID
11155 #.  to be set to arbitrary values, rather than being restricted to
11156 #.  PGIDs in the same session.
11157 #. type: Plain text
11158 #: build/C/man2/setpgid.2:176
11159 msgid ""
11160 "Since glibc 2.19, the BSD-specific B<setpgrp>()  function is no longer "
11161 "exposed by I<E<lt>unistd.hE<gt>>; calls should be replaced with the "
11162 "B<setpgid>()  call shown above."
11163 msgstr ""
11164 "glibc 2.19 以降、 BSD 固有の B<setpgrp>() 関数はもはや I<E<lt>unistd.hE<gt>> "
11165 "では公開されない。 この関数の呼び出しは上記の B<setpgid>() の呼び出しで置き換"
11166 "えるべきである。"
11167
11168 #. type: Plain text
11169 #: build/C/man2/setpgid.2:182
11170 msgid ""
11171 "The BSD-specific B<getpgrp>()  call, which takes a single I<pid> argument, "
11172 "is a wrapper function that calls"
11173 msgstr ""
11174 "BSD 仕様の B<getpgrp>()  は I<pid> だけを引き数にとり、 以下を呼び出すラッ"
11175 "パー関数である。"
11176
11177 #. type: Plain text
11178 #: build/C/man2/setpgid.2:184
11179 #, no-wrap
11180 msgid "    getpgid(pid)\n"
11181 msgstr "    getpgid(pid)\n"
11182
11183 #. type: Plain text
11184 #: build/C/man2/setpgid.2:195
11185 msgid ""
11186 "Since glibc 2.19, the BSD-specific B<getpgrp>()  function is no longer "
11187 "exposed by I<E<lt>unistd.hE<gt>>; calls should be replaced with calls to the "
11188 "POSIX.1 B<getpgrp>()  which takes no arguments (if the intent is to obtain "
11189 "the caller's PGID), or with the B<getpgid>()  call shown above."
11190 msgstr ""
11191 "glibc 2.19 以降、 BSD 固有の B<getpgrp>() 関数はもはや I<E<lt>unistd.hE<gt>> "
11192 "では公開されない。 この関数の呼び出しは、引き数を取らない POSIX.1 の "
11193 "B<getpgrp>() の呼び出し (呼び出し元の PGID を取得する目的の場合)、もしくは上"
11194 "記の B<getpgid>() の呼び出しで置き換えるべきである。"
11195
11196 #. type: Plain text
11197 #: build/C/man2/setpgid.2:204
11198 msgid ""
11199 "On success, B<setpgid>()  and B<setpgrp>()  return zero.  On error, -1 is "
11200 "returned, and I<errno> is set appropriately."
11201 msgstr ""
11202 "B<setpgid>()  と B<setpgrp>()  は成功した場合、ゼロを返す。エラーの場合は -1 "
11203 "を返し、 I<errno> が適切に設定される。"
11204
11205 #. type: Plain text
11206 #: build/C/man2/setpgid.2:208
11207 msgid "The POSIX.1 B<getpgrp>()  always returns the PGID of the caller."
11208 msgstr ""
11209 "POSIX.1 バージョンの B<getpgrp>()  は常に呼び出しプロセスの PGID を返す。"
11210
11211 #. type: Plain text
11212 #: build/C/man2/setpgid.2:216
11213 msgid ""
11214 "B<getpgid>(), and the BSD-specific B<getpgrp>()  return a process group on "
11215 "success.  On error, -1 is returned, and I<errno> is set appropriately."
11216 msgstr ""
11217 "B<getpgid>()  と BSD 仕様の B<getpgrp>()  は成功した場合プロセスグループを返"
11218 "す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。"
11219
11220 #. type: Plain text
11221 #: build/C/man2/setpgid.2:225
11222 msgid ""
11223 "An attempt was made to change the process group ID of one of the children of "
11224 "the calling process and the child had already performed an B<execve>(2)  "
11225 "(B<setpgid>(), B<setpgrp>())."
11226 msgstr ""
11227 "呼び出し元プロセスの子プロセスのプロセスグループ ID を変更しようとしたが、 す"
11228 "でにその子プロセスは B<execve>(2)  を実行していた。 (B<setpgid>(), "
11229 "B<setpgrp>())"
11230
11231 #. type: Plain text
11232 #: build/C/man2/setpgid.2:231
11233 msgid "I<pgid> is less than 0 (B<setpgid>(), B<setpgrp>())."
11234 msgstr "I<pgid> が 0 より小さい。 (B<setpgid>(), B<setpgrp>())"
11235
11236 #. type: Plain text
11237 #: build/C/man2/setpgid.2:240
11238 msgid ""
11239 "An attempt was made to move a process into a process group in a different "
11240 "session, or to change the process group ID of one of the children of the "
11241 "calling process and the child was in a different session, or to change the "
11242 "process group ID of a session leader (B<setpgid>(), B<setpgrp>())."
11243 msgstr ""
11244 "プロセスを異なるセッションのプロセスグループに移動させようとした。 または呼び"
11245 "出し元プロセスの子プロセスのプロセスグループ ID を変更しようと したが、その子"
11246 "プロセスは別のセッションだった。 またはセッションリーダーのプロセスグループ "
11247 "ID を変更しようとした。 (B<setpgid>(), B<setpgrp>())"
11248
11249 #. type: Plain text
11250 #: build/C/man2/setpgid.2:250
11251 msgid ""
11252 "For B<getpgid>(): I<pid> does not match any process.  For B<setpgid>(): "
11253 "I<pid> is not the calling process and not a child of the calling process."
11254 msgstr ""
11255 "B<getpgid>()  の場合: I<pid> がどのプロセスにも一致しない。 B<setpgid>()  の"
11256 "場合: I<pid> が呼び出し元のプロセスではなく、呼び出し元のプロセスの子プロセス"
11257 "でもない。"
11258
11259 #. type: Plain text
11260 #: build/C/man2/setpgid.2:256
11261 msgid ""
11262 "B<setpgid>()  and the version of B<getpgrp>()  with no arguments conform to "
11263 "POSIX.1-2001."
11264 msgstr ""
11265 "B<setpgid>()  と、引き数なしバージョンの B<getpgrp>()  は POSIX.1-2001 に準拠"
11266 "している。"
11267
11268 #. type: Plain text
11269 #: build/C/man2/setpgid.2:265
11270 msgid ""
11271 "POSIX.1-2001 also specifies B<getpgid>()  and the version of B<setpgrp>()  "
11272 "that takes no arguments.  (POSIX.1-2008 marks this B<setpgrp>()  "
11273 "specification as obsolete.)"
11274 msgstr ""
11275 "POSIX.1-2001 は、 B<getpgid>()  と、引き数なしバージョンの B<setpgrp>()  も規"
11276 "定している。 POSIX.1-2008 は、この B<setpgrp>()  の仕様を廃止予定としている。"
11277
11278 #. type: Plain text
11279 #: build/C/man2/setpgid.2:272
11280 msgid ""
11281 "The version of B<getpgrp>()  with one argument and the version of "
11282 "B<setpgrp>()  that takes two arguments derive from 4.2BSD, and are not "
11283 "specified by POSIX.1."
11284 msgstr ""
11285 "引き数 1 個バージョンの B<getpgrp>()  と引き数 2 個バージョンの "
11286 "B<setpgrp>()  は 4.2BSD に由来し、 POSIX.1 では規定されていない。"
11287
11288 #. type: Plain text
11289 #: build/C/man2/setpgid.2:278
11290 msgid ""
11291 "A child created via B<fork>(2)  inherits its parent's process group ID.  The "
11292 "PGID is preserved across an B<execve>(2)."
11293 msgstr ""
11294 "B<fork>(2)  で作成された子プロセスは、親プロセスの PGID を継承する。 "
11295 "B<execve>(2)  の前後で PGID は保存される。"
11296
11297 #. type: Plain text
11298 #: build/C/man2/setpgid.2:281
11299 msgid ""
11300 "Each process group is a member of a session and each process is a member of "
11301 "the session of which its process group is a member."
11302 msgstr ""
11303 "各プロセスグループはセッションのメンバーであり、各プロセスは そのプロセスグ"
11304 "ループが所属しているセッションのメンバーである。"
11305
11306 #. type: Plain text
11307 #: build/C/man2/setpgid.2:308
11308 msgid ""
11309 "A session can have a controlling terminal.  At any time, one (and only one) "
11310 "of the process groups in the session can be the foreground process group for "
11311 "the terminal; the remaining process groups are in the background.  If a "
11312 "signal is generated from the terminal (e.g., typing the interrupt key to "
11313 "generate B<SIGINT>), that signal is sent to the foreground process group.  "
11314 "(See B<termios>(3)  for a description of the characters that generate "
11315 "signals.)  Only the foreground process group may B<read>(2)  from the "
11316 "terminal; if a background process group tries to B<read>(2)  from the "
11317 "terminal, then the group is sent a B<SIGTTIN> signal, which suspends it.  "
11318 "The B<tcgetpgrp>(3)  and B<tcsetpgrp>(3)  functions are used to get/set the "
11319 "foreground process group of the controlling terminal."
11320 msgstr ""
11321 "セッションは制御端末 (controlling terminal) を持つことができる。 いつでも、"
11322 "セッションに所属するプロセスグループの一つ (だけ) が 端末のフォアグランドのプ"
11323 "ロセスグループになることができ、 残りのプロセスグループはバックグラウンドにな"
11324 "る。 端末からシグナルが生成された場合 (例えば、中断キーを叩いて B<SIGINT> が"
11325 "生成されるなど)、そのシグナルはフォアグラウンドのプロセスグループ に送られる "
11326 "(シグナルを生成する文字の説明は B<termios>(3)  を参照)。 フォアグラウンドのプ"
11327 "ロセスグループだけが端末からの B<read>(2)  ができる。 バックグラウンドのプロ"
11328 "セスグループが端末からの B<read>(2)  を行おうとした場合、そのプロセスグループ"
11329 "にはシグナル B<SIGTTIN> が送られ、そのプロセスグループは一時停止 (suspend) す"
11330 "る。 関数 B<tcgetpgrp>(3)  と B<tcsetpgrp>(3)  を使うと、制御端末のフォアグラ"
11331 "ウンドのプロセスグループを 取得/設定できる。"
11332
11333 #. type: Plain text
11334 #: build/C/man2/setpgid.2:316
11335 msgid ""
11336 "The B<setpgid>()  and B<getpgrp>()  calls are used by programs such as "
11337 "B<bash>(1)  to create process groups in order to implement shell job control."
11338 msgstr ""
11339 "B<setpgid>()  と B<getpgrp>()  は、 B<bash>(1)  のようなプログラムで、シェル"
11340 "のジョブ制御 (job control) の実装のための プロセスグループを作成するのに使わ"
11341 "れる。"
11342
11343 #. type: Plain text
11344 #: build/C/man2/setpgid.2:326
11345 msgid ""
11346 "If a session has a controlling terminal, and the B<CLOCAL> flag for that "
11347 "terminal is not set, and a terminal hangup occurs, then the session leader "
11348 "is sent a B<SIGHUP>.  If the session leader exits, then a B<SIGHUP> signal "
11349 "will also be sent to each process in the foreground process group of the "
11350 "controlling terminal."
11351 msgstr ""
11352 "セッションが制御端末を持っていて、その端末に対して B<CLOCAL> フラグが設定され"
11353 "ておらず、端末のハングアップが起きた場合、 セッション・リーダーに B<SIGHUP> "
11354 "が送られる。 セッション・リーダーが終了した場合には、その制御端末の フォアグ"
11355 "ランドのプロセスグループに所属する各プロセスにも B<SIGHUP> シグナルが送られ"
11356 "る。"
11357
11358 #.  exit.3 refers to the following text:
11359 #. type: Plain text
11360 #: build/C/man2/setpgid.2:340
11361 msgid ""
11362 "If the exit of the process causes a process group to become orphaned, and if "
11363 "any member of the newly orphaned process group is stopped, then a B<SIGHUP> "
11364 "signal followed by a B<SIGCONT> signal will be sent to each process in the "
11365 "newly orphaned process group.  An orphaned process group is one in which the "
11366 "parent of every member of process group is either itself also a member of "
11367 "the process group or is a member of a process group in a different session "
11368 "(see also B<credentials>(7))."
11369 msgstr ""
11370 "プロセスの終了によってプロセスグループが孤児 (orphaned) になった際に、 その新"
11371 "たに孤児になったプロセスグループに停止しているメンバーがいれば、 その孤児に"
11372 "なったプロセスグループに属す全てのプロセスに B<SIGHUP> シグナルに続けて "
11373 "B<SIGCONT> シグナルが送られる。 孤児になった (orphaned) プロセスグループと"
11374 "は、 そのプロセスグループの全てのメンバーについて、メンバーの親プロセスが、 "
11375 "親プロセス自身もそのプロセスグループのメンバーか、 別のセッションに属すプロセ"
11376 "スグループのメンバーのいずれかであるような、 プロセスグループのことである。"
11377
11378 #. type: Plain text
11379 #: build/C/man2/setpgid.2:347
11380 msgid ""
11381 "B<getuid>(2), B<setsid>(2), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<termios>(3), "
11382 "B<credentials>(7)"
11383 msgstr ""
11384 "B<getuid>(2), B<setsid>(2), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<termios>(3), "
11385 "B<credentials>(7)"
11386
11387 #. type: TH
11388 #: build/C/man2/setresuid.2:26
11389 #, no-wrap
11390 msgid "SETRESUID"
11391 msgstr "SETRESUID"
11392
11393 #. type: Plain text
11394 #: build/C/man2/setresuid.2:29
11395 msgid "setresuid, setresgid - set real, effective and saved user or group ID"
11396 msgstr "setresuid, setresgid - ユーザやグループの 実、実効、保存 ID を設定する"
11397
11398 #. type: Plain text
11399 #: build/C/man2/setresuid.2:35
11400 msgid "B<int setresuid(uid_t >I<ruid>B<, uid_t >I<euid>B<, uid_t >I<suid>B<);>"
11401 msgstr ""
11402 "B<int setresuid(uid_t >I<ruid>B<, uid_t >I<euid>B<, uid_t >I<suid>B<);>"
11403
11404 #. type: Plain text
11405 #: build/C/man2/setresuid.2:37
11406 msgid "B<int setresgid(gid_t >I<rgid>B<, gid_t >I<egid>B<, gid_t >I<sgid>B<);>"
11407 msgstr ""
11408 "B<int setresgid(gid_t >I<rgid>B<, gid_t >I<egid>B<, gid_t >I<sgid>B<);>"
11409
11410 #. type: Plain text
11411 #: build/C/man2/setresuid.2:41
11412 msgid ""
11413 "B<setresuid>()  sets the real user ID, the effective user ID, and the saved "
11414 "set-user-ID of the calling process."
11415 msgstr ""
11416 "B<setresuid>()  は呼び出し元のプロセスの実 (real) ユーザーID、実効 "
11417 "(effective) ユーザーID、 保存 set-user-ID を設定する。"
11418
11419 #. type: Plain text
11420 #: build/C/man2/setresuid.2:47
11421 msgid ""
11422 "Unprivileged user processes may change the real UID, effective UID, and "
11423 "saved set-user-ID, each to one of: the current real UID, the current "
11424 "effective UID or the current saved set-user-ID."
11425 msgstr ""
11426 "非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set-user-ID を、 現在"
11427 "の実 UID、現在の実効 UID、現在の保存 set-user-ID のどれかに変更することができ"
11428 "る:"
11429
11430 #. type: Plain text
11431 #: build/C/man2/setresuid.2:51
11432 msgid ""
11433 "Privileged processes (on Linux, those having the B<CAP_SETUID> capability)  "
11434 "may set the real UID, effective UID, and saved set-user-ID to arbitrary "
11435 "values."
11436 msgstr ""
11437 "特権プロセス (Linux では B<CAP_SETUID> ケーパビリティ (capability) を持つ プ"
11438 "ロセス) は、実 UID、実効 UID、保存 set-user-ID を任意の値に設定できる。"
11439
11440 #. type: Plain text
11441 #: build/C/man2/setresuid.2:53
11442 msgid ""
11443 "If one of the arguments equals -1, the corresponding value is not changed."
11444 msgstr "引き数のどれかが -1 の場合はその値は変更されずに残される。"
11445
11446 #. type: Plain text
11447 #: build/C/man2/setresuid.2:57
11448 msgid ""
11449 "Regardless of what changes are made to the real UID, effective UID, and "
11450 "saved set-user-ID, the filesystem UID is always set to the same value as the "
11451 "(possibly new) effective UID."
11452 msgstr ""
11453 "実 UID、実効 UID、保存 set-user-ID にどんな変更が行われたかに関わらず、 ファ"
11454 "イルシステム UID は常に実効 UID (可能であれば変更後の新しい実効 UID)  と同じ"
11455 "値に設定される。"
11456
11457 #. type: Plain text
11458 #: build/C/man2/setresuid.2:64
11459 msgid ""
11460 "Completely analogously, B<setresgid>()  sets the real GID, effective GID, "
11461 "and saved set-group-ID of the calling process (and always modifies the "
11462 "filesystem GID to be the same as the effective GID), with the same "
11463 "restrictions for unprivileged processes."
11464 msgstr ""
11465 "全く同じように、 B<setresgid>()  は呼び出し元のプロセスの実 GID、実効 GID、保"
11466 "存 set-group-ID を設定する (さらにファイルシステム GID を実効 GID と同じ値に"
11467 "修正する)。 非特権プロセスは同様の制限を受ける。"
11468
11469 #. type: Plain text
11470 #: build/C/man2/setresuid.2:76
11471 msgid ""
11472 "I<Note>: there are cases where B<setresuid>()  can fail even when the caller "
11473 "is UID 0; it is a grave security error to omit checking for a failure return "
11474 "from B<setresuid>()."
11475 msgstr ""
11476 "I<注意>: 呼び出し元が UID 0 であっても B<setresuid>() が失敗する場合がある。 "
11477 "B<setresuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュ"
11478 "リティ上のエラーとなる。"
11479
11480 #. type: TP
11481 #: build/C/man2/setresuid.2:77 build/C/man2/setresuid.2:84
11482 #: build/C/man2/setreuid.2:106 build/C/man2/setreuid.2:113
11483 #: build/C/man2/setuid.2:83 build/C/man2/setuid.2:90
11484 #, no-wrap
11485 msgid "B<EAGAIN>"
11486 msgstr "B<EAGAIN>"
11487
11488 #. type: Plain text
11489 #: build/C/man2/setresuid.2:84 build/C/man2/setreuid.2:113
11490 msgid ""
11491 "The call would change the caller's real UID (i.e., I<ruid> does not match "
11492 "the caller's real UID), but there was a temporary failure allocating the "
11493 "necessary kernel data structures."
11494 msgstr ""
11495 "この呼び出しで呼び出し元の実 UID が変更されるはずだったが (つまり、 I<ruid> "
11496 "が呼び出し元の実 UID と一致していない)、 必要なカーネルのデータ構造体の割り当"
11497 "てで一時的な失敗があった。"
11498
11499 #. type: Plain text
11500 #: build/C/man2/setresuid.2:99 build/C/man2/setreuid.2:128
11501 msgid ""
11502 "I<ruid> does not match the caller's real UID and this call would bring the "
11503 "number of processes belonging to the real user ID I<ruid> over the caller's "
11504 "B<RLIMIT_NPROC> resource limit.  Since Linux 3.1, this error case no longer "
11505 "occurs (but robust applications should check for this error); see the "
11506 "description of B<EAGAIN> in B<execve>(2)."
11507 msgstr ""
11508 "I<ruid> は呼び出し元の実 UID と一致しておらず、 この呼び出しで実ユーザー ID "
11509 "I<ruid> に属するプロセス数が呼び出し元の B<RLIMIT_NPROC> リソース上限を超過す"
11510 "るところであった。 Linux 3.1 以降では、このエラーはもはや発生することはない "
11511 "(しかし、堅牢性が求められるアプリケーションではこのエラーを確認すべきであ"
11512 "る)。 B<execve>(2) の B<EAGAIN> の説明を参照。"
11513
11514 #. type: Plain text
11515 #: build/C/man2/setresuid.2:103 build/C/man2/setreuid.2:132
11516 msgid ""
11517 "One or more of the target user or group IDs is not valid in this user "
11518 "namespace."
11519 msgstr ""
11520 "対象のユーザー ID やグループ ID のうち 1 つ以上がこのユーザー名前空間で有効で"
11521 "はない。"
11522
11523 #. type: Plain text
11524 #: build/C/man2/setresuid.2:107
11525 msgid ""
11526 "The calling process is not privileged (did not have the B<CAP_SETUID> "
11527 "capability) and tried to change the IDs to values that are not permitted."
11528 msgstr ""
11529 "呼び出したプロセスが特権を持たないのに (B<CAP_SETUID> ケーパビリティを持たな"
11530 "いのに)、 ID を許されていない値に変更しようとした。"
11531
11532 #. type: Plain text
11533 #: build/C/man2/setresuid.2:109
11534 msgid "These calls are available under Linux since Linux 2.1.44."
11535 msgstr "Linux ではバージョン 2.1.44 より利用可能になった。"
11536
11537 #. type: Plain text
11538 #: build/C/man2/setresuid.2:116
11539 msgid ""
11540 "Under HP-UX and FreeBSD, the prototype is found in I<E<lt>unistd.hE<gt>>.  "
11541 "Under Linux, the prototype is provided by glibc since version 2.3.2."
11542 msgstr ""
11543 "HP-UX や FreeBSD では I<E<lt>unistd.hE<gt>> にプロトタイプが存在する。 \n"
11544 "Linux では、glibc 2.3.2 以降で プロトタイプが提供されている。"
11545
11546 #. type: Plain text
11547 #: build/C/man2/setresuid.2:132
11548 msgid ""
11549 "The original Linux B<setresuid>()  and B<setresgid>()  system calls "
11550 "supported only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
11551 "B<setresuid32>()  and B<setresgid32>(), supporting 32-bit IDs.  The glibc "
11552 "B<setresuid>()  and B<setresgid>()  wrapper functions transparently deal "
11553 "with the variations across kernel versions."
11554 msgstr ""
11555 "元々の Linux の B<setresuid>() と B<setresgid>() システムコールは\n"
11556 "16 ビットのグループ ID だけに対応していた。\n"
11557 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11558 "B<setresuid32>() と B<setresgid32>() が追加された。\n"
11559 "glibc の B<setresuid>() と B<setresgid>() のラッパー関数は\n"
11560 "カーネルバージョンによるこの違いを吸収している。"
11561
11562 #. type: Plain text
11563 #: build/C/man2/setresuid.2:142
11564 msgid ""
11565 "B<getresuid>(2), B<getuid>(2), B<setfsgid>(2), B<setfsuid>(2), "
11566 "B<setreuid>(2), B<setuid>(2), B<capabilities>(7), B<credentials>(7), "
11567 "B<user_namespaces>(7)"
11568 msgstr ""
11569 "B<getresuid>(2), B<getuid>(2), B<setfsgid>(2), B<setfsuid>(2), "
11570 "B<setreuid>(2), B<setuid>(2), B<capabilities>(7), B<credentials>(7), "
11571 "B<user_namespaces>(7)"
11572
11573 #. type: TH
11574 #: build/C/man2/setreuid.2:45
11575 #, no-wrap
11576 msgid "SETREUID"
11577 msgstr "SETREUID"
11578
11579 #. type: Plain text
11580 #: build/C/man2/setreuid.2:48
11581 msgid "setreuid, setregid - set real and/or effective user or group ID"
11582 msgstr ""
11583 "setreuid, setregid - 実 (real) と実効 (effective) ユーザー (グループ) ID を設"
11584 "定する"
11585
11586 #. type: Plain text
11587 #: build/C/man2/setreuid.2:54
11588 msgid "B<int setreuid(uid_t >I<ruid>B<, uid_t >I<euid>B<);>"
11589 msgstr "B<int setreuid(uid_t >I<ruid>B<, uid_t >I<euid>B<);>"
11590
11591 #. type: Plain text
11592 #: build/C/man2/setreuid.2:56
11593 msgid "B<int setregid(gid_t >I<rgid>B<, gid_t >I<egid>B<);>"
11594 msgstr "B<int setregid(gid_t >I<rgid>B<, gid_t >I<egid>B<);>"
11595
11596 #. type: Plain text
11597 #: build/C/man2/setreuid.2:64
11598 msgid "B<setreuid>(), B<setregid>():"
11599 msgstr "B<setreuid>(), B<setregid>():"
11600
11601 #. type: Plain text
11602 #: build/C/man2/setreuid.2:68
11603 msgid ""
11604 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
11605 "_XOPEN_SOURCE_EXTENDED"
11606 msgstr ""
11607 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
11608 "_XOPEN_SOURCE_EXTENDED"
11609
11610 #. type: Plain text
11611 #: build/C/man2/setreuid.2:73
11612 msgid "B<setreuid>()  sets real and effective user IDs of the calling process."
11613 msgstr ""
11614 "B<setreuid>()  は呼び出し元のプロセスの実 (real) ユーザー ID と 実効 "
11615 "(effective) ユーザー ID を設定する。"
11616
11617 #. type: Plain text
11618 #: build/C/man2/setreuid.2:76
11619 msgid ""
11620 "Supplying a value of -1 for either the real or effective user ID forces the "
11621 "system to leave that ID unchanged."
11622 msgstr ""
11623 "実ユーザー ID や実効ユーザー ID に -1 を与えた場合、 システムはその ID を変更"
11624 "しない。"
11625
11626 #. type: Plain text
11627 #: build/C/man2/setreuid.2:79
11628 msgid ""
11629 "Unprivileged processes may only set the effective user ID to the real user "
11630 "ID, the effective user ID, or the saved set-user-ID."
11631 msgstr ""
11632 "非特権プロセスは実効ユーザー ID を実ユーザー ID または実効ユーザー ID または "
11633 "保存 set-user-ID にしか設定できない。"
11634
11635 #. type: Plain text
11636 #: build/C/man2/setreuid.2:82
11637 msgid ""
11638 "Unprivileged users may only set the real user ID to the real user ID or the "
11639 "effective user ID."
11640 msgstr ""
11641 "非特権ユーザーは、実ユーザー ID を実ユーザー ID または 実効ユーザー ID にしか"
11642 "設定できない。"
11643
11644 #. type: Plain text
11645 #: build/C/man2/setreuid.2:88
11646 msgid ""
11647 "If the real user ID is set (i.e., I<ruid> is not -1) or the effective user "
11648 "ID is set to a value not equal to the previous real user ID, the saved set-"
11649 "user-ID will be set to the new effective user ID."
11650 msgstr ""
11651 "実ユーザーID が設定されたり (I<ruid> が -1 ではない)、実効ユーザーID が前の実"
11652 "ユーザーID と 異った値に設定された場合、保存 set-user-ID には新しい実効ユー"
11653 "ザーID の値が設定される。"
11654
11655 #. type: Plain text
11656 #: build/C/man2/setreuid.2:93
11657 msgid ""
11658 "Completely analogously, B<setregid>()  sets real and effective group ID's of "
11659 "the calling process, and all of the above holds with \"group\" instead of "
11660 "\"user\"."
11661 msgstr ""
11662 "これと全く同様に、 B<setregid>()  は呼び出し元のプロセスの実グループ ID と実"
11663 "効グループ ID を設定し、 上記の説明で「ユーザー」を「グループ」に読み替えたこ"
11664 "とが成り立つ。"
11665
11666 #. type: Plain text
11667 #: build/C/man2/setreuid.2:105
11668 msgid ""
11669 "I<Note>: there are cases where B<setreuid>()  can fail even when the caller "
11670 "is UID 0; it is a grave security error to omit checking for a failure return "
11671 "from B<setreuid>()."
11672 msgstr ""
11673 "I<注意>: 呼び出し元が UID 0 であっても B<setreuid>() が失敗する場合がある。 "
11674 "B<setreuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュ"
11675 "リティ上のエラーとなる。"
11676
11677 #. type: Plain text
11678 #: build/C/man2/setreuid.2:148
11679 msgid ""
11680 "The calling process is not privileged (Linux: does not have the "
11681 "B<CAP_SETUID> capability in the case of B<setreuid>(), or the B<CAP_SETGID> "
11682 "capability in the case of B<setregid>())  and a change other than (i)  "
11683 "swapping the effective user (group) ID with the real user (group) ID, or "
11684 "(ii) setting one to the value of the other or (iii) setting the effective "
11685 "user (group) ID to the value of the saved set-user-ID (saved set-group-ID) "
11686 "was specified."
11687 msgstr ""
11688 "呼び出し元のプロセスに特権がなく (Linux では B<setreuid>()  の場合に "
11689 "B<CAP_SETUID> ケーパビリティ (capability) がなく、 B<setregid>()  の場合に "
11690 "B<CAP_SETGID> ケーパビリティがない)、 以下のいずれでもない変更が指定された: "
11691 "(i) 実効ユーザー (グループ) ID と実ユーザー (グループ) ID を入れ換える。 "
11692 "(ii) 片方の値を他方に設定する。 (iii) 実効ユーザー (グループ) ID に保存 set-"
11693 "user-ID (保存 set-group-ID)  の値を設定する。"
11694
11695 #. type: Plain text
11696 #: build/C/man2/setreuid.2:154
11697 msgid ""
11698 "POSIX.1-2001, 4.3BSD (the B<setreuid>()  and B<setregid>()  function calls "
11699 "first appeared in 4.2BSD)."
11700 msgstr ""
11701 "POSIX.1-2001, 4.3BSD (B<setreuid>()  と B<setregid>()  関数コールは 4.2BSD で"
11702 "登場した)。"
11703
11704 #. type: Plain text
11705 #: build/C/man2/setreuid.2:158
11706 msgid ""
11707 "Setting the effective user (group) ID to the saved set-user-ID (saved set-"
11708 "group-ID) is possible since Linux 1.1.37 (1.1.38)."
11709 msgstr ""
11710 "実効ユーザー (グループ) ID を保存ユーザー (グループ) ID に 設定することが、"
11711 "Linux 1.1.37 (1.1.38) から可能になった。"
11712
11713 #. type: Plain text
11714 #: build/C/man2/setreuid.2:175
11715 msgid ""
11716 "POSIX.1 does not specify all of possible ID changes that are permitted on "
11717 "Linux for an unprivileged process.  For B<setreuid>(), the effective user ID "
11718 "can be made the same as the real user ID or the save set-user-ID, and it is "
11719 "unspecified whether unprivileged processes may set the real user ID to the "
11720 "real user ID, the effective user ID, or the saved set-user-ID.  For "
11721 "B<setregid>(), the real group ID can be changed to the value of the saved "
11722 "set-group-ID, and the effective group ID can be changed to the value of the "
11723 "real group ID or the saved set-group-ID.  The precise details of what ID "
11724 "changes are permitted vary across implementations."
11725 msgstr ""
11726 "POSIX.1 では、非特権プロセスに対して Linux 上で認められている ID の変更の 全"
11727 "パターンを規定しているわけではない。 B<setreuid>()  では、実効ユーザ ID を実"
11728 "ユーザ ID もしくは保存 set-user-ID と 同じ値にすることができるが、 非特権プロ"
11729 "セスが実ユーザ ID を実ユーザ ID、実効ユーザ ID、 保存 set-user-ID のどの値に"
11730 "も設定できるかは規定されていない。 B<setregid>()  では、実グループ ID を保存 "
11731 "set-group-ID と同じ値に変更でき、 実効グループ ID を実グループ ID や保存 set-"
11732 "group-ID と同じ値に変更できる。 どのような ID の変更が認められているかの正確"
11733 "な詳細は 実装ごとに異なる。"
11734
11735 #. type: Plain text
11736 #: build/C/man2/setreuid.2:178
11737 msgid ""
11738 "POSIX.1 makes no specification about the effect of these calls on the saved "
11739 "set-user-ID and saved set-group-ID."
11740 msgstr ""
11741 "POSIX.1 では、これらのシステムコールが保存 set-user-ID や 保存 set-group-ID "
11742 "に与える影響については規定していない。"
11743
11744 #. type: Plain text
11745 #: build/C/man2/setreuid.2:194
11746 msgid ""
11747 "The original Linux B<setreuid>()  and B<setregid>()  system calls supported "
11748 "only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
11749 "B<setreuid32>()  and B<setregid32>(), supporting 32-bit IDs.  The glibc "
11750 "B<setreuid>()  and B<setregid>()  wrapper functions transparently deal with "
11751 "the variations across kernel versions."
11752 msgstr ""
11753 "元々の Linux の B<setreuid>() と B<setregid>() システムコールは\n"
11754 "16 ビットのグループ ID だけに対応していた。\n"
11755 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11756 "B<setreuid32>() と B<setregid32>() が追加された。\n"
11757 "glibc の B<setreuid>() と B<setregid>() のラッパー関数は\n"
11758 "カーネルバージョンによるこの違いを吸収している。"
11759
11760 #. type: Plain text
11761 #: build/C/man2/setreuid.2:203
11762 msgid ""
11763 "B<getgid>(2), B<getuid>(2), B<seteuid>(2), B<setgid>(2), B<setresuid>(2), "
11764 "B<setuid>(2), B<capabilities>(7), B<user_namespaces>(7)"
11765 msgstr ""
11766 "B<getgid>(2), B<getuid>(2), B<seteuid>(2), B<setgid>(2), B<setresuid>(2), "
11767 "B<setuid>(2), B<capabilities>(7), B<user_namespaces>(7)"
11768
11769 #. type: TH
11770 #: build/C/man2/setsid.2:31
11771 #, no-wrap
11772 msgid "SETSID"
11773 msgstr "SETSID"
11774
11775 #. type: Plain text
11776 #: build/C/man2/setsid.2:34
11777 msgid "setsid - creates a session and sets the process group ID"
11778 msgstr "setsid - セッション (session) を作成し、プロセスグループ ID を設定する"
11779
11780 #. type: Plain text
11781 #: build/C/man2/setsid.2:39
11782 msgid "B<pid_t setsid(void);>"
11783 msgstr "B<pid_t setsid(void);>"
11784
11785 #. type: Plain text
11786 #: build/C/man2/setsid.2:50
11787 msgid ""
11788 "B<setsid>()  creates a new session if the calling process is not a process "
11789 "group leader.  The calling process is the leader of the new session (i.e., "
11790 "its session ID is made the same as it process ID).  The calling process also "
11791 "becomes the process group leader of a new process group in the session (i."
11792 "e., its process group ID is made the same as it process ID)."
11793 msgstr ""
11794 "B<setsid>() は、 呼び出したプロセスがプロセスグループ・リーダー (process "
11795 "group leader) でなければ、 新しいセッションを作成する。 呼び出したプロセス"
11796 "は、 新しいセッションのリーダーとなる (すなわち、そのセッション ID がプロセ"
11797 "ス ID と同じ値になる)。 また、呼び出したプロセスは、 そのセッションの新しいプ"
11798 "ロセスグループのプロセスグループ・リーダーにもなる (すなわち、プロセスグルー"
11799 "プ ID がプロセス ID と同じ値になる)。"
11800
11801 #. type: Plain text
11802 #: build/C/man2/setsid.2:54
11803 msgid ""
11804 "The calling process will be the only process in the new process group and in "
11805 "the new session.  The new session has no controlling terminal."
11806 msgstr ""
11807 "呼び出したプロセスは、 新しいプロセスグループと新しいセッションの唯一のプロセ"
11808 "スとなる。 新しいセッションは制御端末を持たない。"
11809
11810 #. type: Plain text
11811 #: build/C/man2/setsid.2:61
11812 msgid ""
11813 "On success, the (new) session ID of the calling process is returned.  On "
11814 "error, I<(pid_t)\\ -1> is returned, and I<errno> is set to indicate the "
11815 "error."
11816 msgstr ""
11817 "成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの"
11818 "場合は、 I<(pid_t)\\ -1> が返され、 I<errno> にエラーを示す値が設定される。"
11819
11820 #. type: Plain text
11821 #: build/C/man2/setsid.2:68
11822 msgid ""
11823 "The process group ID of any process equals the PID of the calling process.  "
11824 "Thus, in particular, B<setsid>()  fails if the calling process is already a "
11825 "process group leader."
11826 msgstr ""
11827 "いずれかのプロセスのプロセスグループ ID が、 呼び出したプロセスの PID と等し"
11828 "い。 これは、呼び出したプロセスが既にプロセスリーダーの場合には B<setsid>()  "
11829 "は失敗することを意味する。"
11830
11831 #. type: Plain text
11832 #: build/C/man2/setsid.2:76
11833 msgid ""
11834 "A child created via B<fork>(2)  inherits its parent's session ID.  The "
11835 "session ID is preserved across an B<execve>(2)."
11836 msgstr ""
11837 "B<fork>(2)  で作成された子プロセスは、親プロセスのセッション ID を継承する。 "
11838 "B<execve>(2)  の前後でセッション ID は保存される。"
11839
11840 #. type: Plain text
11841 #: build/C/man2/setsid.2:93
11842 msgid ""
11843 "A process group leader is a process whose process group ID equals its PID.  "
11844 "Disallowing a process group leader from calling B<setsid>()  prevents the "
11845 "possibility that a process group leader places itself in a new session while "
11846 "other processes in the process group remain in the original session; such a "
11847 "scenario would break the strict two-level hierarchy of sessions and process "
11848 "groups.  In order to be sure that B<setsid>()  will succeed, B<fork>(2)  and "
11849 "B<_exit>(2), and have the child do B<setsid>()."
11850 msgstr ""
11851 "プロセスグループ・リーダーは、 プロセスグループ ID がその PID と同じ値のプロ"
11852 "セスである。 プロセスグループ・リーダーが B<setsid>() を呼び出すことを許可し"
11853 "ないと、 そのプロセスグループ内の他のプロセスを元のセッションに残したまま、 "
11854 "プロセスグループ・リーダーが自分自身を新しいセッションに入れるということがで"
11855 "きなくなる。 このようなシナリオは、 セッションとプロセスグループという厳密な "
11856 "2 階層モデルを壊すことになる。 B<setsid>() が成功することを保証するには、 "
11857 "B<fork>(2) と B<_exit>(2) を行い、 その子プロセスに B<setsid>() をさせればよ"
11858 "い。"
11859
11860 #. type: Plain text
11861 #: build/C/man2/setsid.2:100
11862 msgid ""
11863 "B<setsid>(1), B<getsid>(2), B<setpgid>(2), B<setpgrp>(2), B<tcgetsid>(3), "
11864 "B<credentials>(7)"
11865 msgstr ""
11866 "B<setsid>(1), B<getsid>(2), B<setpgid>(2), B<setpgrp>(2), B<tcgetsid>(3), "
11867 "B<credentials>(7)"
11868
11869 #. type: TH
11870 #: build/C/man2/setuid.2:30
11871 #, no-wrap
11872 msgid "SETUID"
11873 msgstr "SETUID"
11874
11875 #. type: Plain text
11876 #: build/C/man2/setuid.2:33
11877 msgid "setuid - set user identity"
11878 msgstr "setuid - ユーザー識別 (identity) を設定する"
11879
11880 #. type: Plain text
11881 #: build/C/man2/setuid.2:39
11882 msgid "B<int setuid(uid_t >I<uid>B<);>"
11883 msgstr "B<int setuid(uid_t >I<uid>B<);>"
11884
11885 #. type: Plain text
11886 #: build/C/man2/setuid.2:44
11887 msgid ""
11888 "B<setuid>()  sets the effective user ID of the calling process.  If the "
11889 "effective UID of the caller is root, the real UID and saved set-user-ID are "
11890 "also set."
11891 msgstr ""
11892 "B<setuid>()  は呼び出し元のプロセスの実効 (effective) ユーザー ID を設定す"
11893 "る。 もし呼び出し元プロセスの実効 UID が root ならば、 実 (real) UID と保存 "
11894 "(saved) set-user-ID も設定される。"
11895
11896 #. type: Plain text
11897 #: build/C/man2/setuid.2:53
11898 msgid ""
11899 "Under Linux, B<setuid>()  is implemented like the POSIX version with the "
11900 "B<_POSIX_SAVED_IDS> feature.  This allows a set-user-ID (other than root) "
11901 "program to drop all of its user privileges, do some un-privileged work, and "
11902 "then reengage the original effective user ID in a secure manner."
11903 msgstr ""
11904 "Linux では、 B<setuid>()  は B<_POSIX_SAVED_IDS> をもった POSIX 版のように実"
11905 "装されている。 これは (ルート以外の) set-user-ID プログラムにそのユーザーの特"
11906 "権を 全て与え、特権の必要ない仕事をし、本来の実効ユーザー ID に 安全な方法で"
11907 "再び戻すことを許す。"
11908
11909 #. type: Plain text
11910 #: build/C/man2/setuid.2:63
11911 msgid ""
11912 "If the user is root or the program is set-user-ID-root, special care must be "
11913 "taken.  The B<setuid>()  function checks the effective user ID of the caller "
11914 "and if it is the superuser, all process-related user ID's are set to "
11915 "I<uid>.  After this has occurred, it is impossible for the program to regain "
11916 "root privileges."
11917 msgstr ""
11918 "ユーザーが root またはプログラムが root に set-user-ID されているならば、 特"
11919 "別の注意が払われる。 B<setuid>()  関数は呼び出し者の実効ユーザー ID をチェッ"
11920 "クし、 それがスーパーユーザーならば、 プロセスに関連する全てのユーザー ID に "
11921 "I<uid> を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得る"
11922 "ことはできない。"
11923
11924 #. type: Plain text
11925 #: build/C/man2/setuid.2:70
11926 msgid ""
11927 "Thus, a set-user-ID-root program wishing to temporarily drop root "
11928 "privileges, assume the identity of an unprivileged user, and then regain "
11929 "root privileges afterward cannot use B<setuid>().  You can accomplish this "
11930 "with B<seteuid>(2)."
11931 msgstr ""
11932 "したがって、set-user-ID-root プログラムで、一時的にルート特権を解除し、 非特"
11933 "権ユーザであるかのように振舞い、後でルート権限をもう一度得ようと する場合に"
11934 "は、 B<setuid>()  を使うことができない。その場合には、 B<seteuid>(2)  を使う"
11935 "必要がある。"
11936
11937 #. type: Plain text
11938 #: build/C/man2/setuid.2:82
11939 msgid ""
11940 "I<Note>: there are cases where B<setuid>()  can fail even when the caller is "
11941 "UID 0; it is a grave security error to omit checking for a failure return "
11942 "from B<setuid>()."
11943 msgstr ""
11944 "I<注意>: 呼び出し元が UID 0 であっても B<setuid>() が失敗する場合がある。 "
11945 "B<setuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュリ"
11946 "ティ上のエラーとなる。"
11947
11948 #. type: Plain text
11949 #: build/C/man2/setuid.2:90
11950 msgid ""
11951 "The call would change the caller's real UID (i.e., I<uid> does not match the "
11952 "caller's real UID), but there was a temporary failure allocating the "
11953 "necessary kernel data structures."
11954 msgstr ""
11955 "この呼び出しで呼び出し元の実 UID が変更されるはずだったが (つまり、 I<uid> が"
11956 "呼び出し元の実 UID と一致していない)、 必要なカーネルのデータ構造体の割り当て"
11957 "で一時的な失敗があった。"
11958
11959 #. type: Plain text
11960 #: build/C/man2/setuid.2:105
11961 msgid ""
11962 "I<uid> does not match the real user ID of the caller and this call would "
11963 "bring the number of processes belonging to the real user ID I<uid> over the "
11964 "caller's B<RLIMIT_NPROC> resource limit.  Since Linux 3.1, this error case "
11965 "no longer occurs (but robust applications should check for this error); see "
11966 "the description of B<EAGAIN> in B<execve>(2)."
11967 msgstr ""
11968 "I<uid> は呼び出し元の実 UID と一致しておらず、 この呼び出しで実ユーザー ID "
11969 "I<ruid> に属するプロセス数が呼び出し元の B<RLIMIT_NPROC> リソース上限を超過す"
11970 "るところであった。 Linux 3.1 以降では、このエラーはもはや発生することはない "
11971 "(しかし、堅牢性が求められるアプリケーションではこのエラーを確認すべきであ"
11972 "る)。 B<execve>(2) の B<EAGAIN> の説明を参照。"
11973
11974 #. type: Plain text
11975 #: build/C/man2/setuid.2:110
11976 msgid "The user ID specified in I<uid> is not valid in this user namespace."
11977 msgstr ""
11978 "I<uid> で指定されたユーザー ID がこのユーザー名前空間では有効ではない。"
11979
11980 #. type: Plain text
11981 #: build/C/man2/setuid.2:117
11982 msgid ""
11983 "The user is not privileged (Linux: does not have the B<CAP_SETUID> "
11984 "capability) and I<uid> does not match the real UID or saved set-user-ID of "
11985 "the calling process."
11986 msgstr ""
11987 "ユーザーが特権を持たず (Linux では B<CAP_SETUID> ケーパビリティ (capability) "
11988 "を持たず)、 I<uid> が呼び出し元プロセスの実 UID または保存 set-user-ID と一致"
11989 "しない。"
11990
11991 #.  SVr4 documents an additional EINVAL error condition.
11992 #. type: Plain text
11993 #: build/C/man2/setuid.2:122
11994 msgid ""
11995 "SVr4, POSIX.1-2001.  Not quite compatible with the 4.4BSD call, which sets "
11996 "all of the real, saved, and effective user IDs."
11997 msgstr ""
11998 "SVr4, POSIX.1-2001.  4.4BSD のコールとは完全な互換性はない、 BSD のコールは"
11999 "実 (real)、保存 (saved)、実効 (effective) ID の全てを設定する。"
12000
12001 #. type: Plain text
12002 #: build/C/man2/setuid.2:130
12003 msgid ""
12004 "Linux has the concept of the filesystem user ID, normally equal to the "
12005 "effective user ID.  The B<setuid>()  call also sets the filesystem user ID "
12006 "of the calling process.  See B<setfsuid>(2)."
12007 msgstr ""
12008 "Linux はファイルシステム・ユーザー ID の概念を持つ。\n"
12009 "通常、これは実効ユーザー ID に等しい。 \n"
12010 "B<setuid>()  コールは呼び出し元のプロセスの\n"
12011 "ファイルシステム・ユーザー ID も設定する。 \n"
12012 "B<setfsuid>(2) も参照すること。"
12013
12014 #. type: Plain text
12015 #: build/C/man2/setuid.2:135
12016 msgid ""
12017 "If I<uid> is different from the old effective UID, the process will be "
12018 "forbidden from leaving core dumps."
12019 msgstr ""
12020 "I<uid> が前の実効 UID と異っていた場合、\n"
12021 "プロセスはコアダンプすることを禁止される。"
12022
12023 #. type: Plain text
12024 #: build/C/man2/setuid.2:145
12025 msgid ""
12026 "The original Linux B<setuid>()  system call supported only 16-bit user IDs.  "
12027 "Subsequently, Linux 2.4 added B<setuid32>()  supporting 32-bit IDs.  The "
12028 "glibc B<setuid>()  wrapper function transparently deals with the variation "
12029 "across kernel versions."
12030 msgstr ""
12031 "元々の Linux の B<setuid>() システムコールは\n"
12032 "16 ビットのグループ ID だけに対応していた。\n"
12033 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
12034 "B<setuid32>() が追加された。\n"
12035 "glibc の B<setuid>() のラッパー関数は\n"
12036 "カーネルバージョンによるこの違いを吸収している。"
12037
12038 #. type: Plain text
12039 #: build/C/man2/setuid.2:153
12040 msgid ""
12041 "B<getuid>(2), B<seteuid>(2), B<setfsuid>(2), B<setreuid>(2), "
12042 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
12043 msgstr ""
12044 "B<getuid>(2), B<seteuid>(2), B<setfsuid>(2), B<setreuid>(2), "
12045 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
12046
12047 #. type: TH
12048 #: build/C/man7/svipc.7:40
12049 #, no-wrap
12050 msgid "SVIPC"
12051 msgstr "SVIPC"
12052
12053 #. type: Plain text
12054 #: build/C/man7/svipc.7:43
12055 msgid "svipc - System V interprocess communication mechanisms"
12056 msgstr "svipc - System V プロセス間通信機構"
12057
12058 #. type: Plain text
12059 #: build/C/man7/svipc.7:48
12060 #, no-wrap
12061 msgid ""
12062 "B<#include E<lt>sys/msg.hE<gt>>\n"
12063 "B<#include E<lt>sys/sem.hE<gt>>\n"
12064 "B<#include E<lt>sys/shm.hE<gt>>\n"
12065 msgstr ""
12066 "B<#include E<lt>sys/msg.hE<gt>>\n"
12067 "B<#include E<lt>sys/sem.hE<gt>>\n"
12068 "B<#include E<lt>sys/shm.hE<gt>>\n"
12069
12070 #. type: Plain text
12071 #: build/C/man7/svipc.7:56
12072 msgid ""
12073 "This manual page refers to the Linux implementation of the System V "
12074 "interprocess communication (IPC) mechanisms: message queues, semaphore sets, "
12075 "and shared memory segments.  In the following, the word I<resource> means an "
12076 "instantiation of one among such mechanisms."
12077 msgstr ""
12078 "このマニュアルページは System V プロセス間通信 (interprocess communication; "
12079 "IPC) 機構の Linux に おける実装を説明する。 このプロセス間通信機構には、 メッ"
12080 "セージキュー (message queue)、セマフォー集合 (semaphore set)、 共有メモリセグ"
12081 "メント (shared memory segment) などがある。以下で I<資源 (resource)> という用"
12082 "語を使用した場合にはこれらの機構のどれかを意味する。"
12083
12084 #. type: SS
12085 #: build/C/man7/svipc.7:56
12086 #, no-wrap
12087 msgid "Resource access permissions"
12088 msgstr "資源へのアクセス許可"
12089
12090 #. type: Plain text
12091 #: build/C/man7/svipc.7:64
12092 msgid ""
12093 "For each resource, the system uses a common structure of type I<struct "
12094 "ipc_perm> to store information needed in determining permissions to perform "
12095 "an IPC operation.  The I<ipc_perm> structure includes the following members:"
12096 msgstr ""
12097 "システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する ための情"
12098 "報を共通の構造体 I<struct ipc_perm> に格納して使用する。 I<ipc_perm> 構造体に"
12099 "は以下のメンバーが定義されている:"
12100
12101 #. type: Plain text
12102 #: build/C/man7/svipc.7:74
12103 #, no-wrap
12104 msgid ""
12105 "struct ipc_perm {\n"
12106 "    uid_t          cuid;   /* creator user ID */\n"
12107 "    gid_t          cgid;   /* creator group ID */\n"
12108 "    uid_t          uid;    /* owner user ID */\n"
12109 "    gid_t          gid;    /* owner group ID */\n"
12110 "    unsigned short mode;   /* r/w permissions */\n"
12111 "};\n"
12112 msgstr ""
12113 "struct ipc_perm {\n"
12114 "    uid_t          cuid;   /* 作成者のユーザーID */\n"
12115 "    gid_t          cgid;   /* 作成者のグループID */\n"
12116 "    uid_t          uid;    /* 所有者のユーザーID */\n"
12117 "    gid_t          gid;    /* 所有者のグループID */\n"
12118 "    unsigned short mode;   /* 読み書きの許可 */\n"
12119 "};\n"
12120
12121 #. type: Plain text
12122 #: build/C/man7/svipc.7:84
12123 msgid ""
12124 "The I<mode> member of the I<ipc_perm> structure defines, with its lower 9 "
12125 "bits, the access permissions to the resource for a process executing an IPC "
12126 "system call.  The permissions are interpreted as follows:"
12127 msgstr ""
12128 "I<ipc_perm> 構造体の I<mode> メンバーは以下の 9 ビットで、プロセスの IPC シス"
12129 "テムコール による資源へのアクセス許可を定義する。 許可は以下のように解釈され"
12130 "る:"
12131
12132 #. type: Plain text
12133 #: build/C/man7/svipc.7:88
12134 #, no-wrap
12135 msgid ""
12136 "    0400    Read by user.\n"
12137 "    0200    Write by user.\n"
12138 msgstr ""
12139 "    0400    ユーザーによる読み込み。\n"
12140 "    0200    ユーザーによる書き込み。\n"
12141
12142 #. type: Plain text
12143 #: build/C/man7/svipc.7:91
12144 #, no-wrap
12145 msgid ""
12146 "    0040    Read by group.\n"
12147 "    0020    Write by group.\n"
12148 msgstr ""
12149 "    0040    グループによる読み込み。\n"
12150 "    0020    グループによる書き込み。\n"
12151
12152 #. type: Plain text
12153 #: build/C/man7/svipc.7:94
12154 #, no-wrap
12155 msgid ""
12156 "    0004    Read by others.\n"
12157 "    0002    Write by others.\n"
12158 msgstr ""
12159 "    0004    他人による読み込み。\n"
12160 "    0002    他人による書き込み。\n"
12161
12162 #. type: Plain text
12163 #: build/C/man7/svipc.7:102
12164 msgid ""
12165 "Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.  "
12166 "Furthermore, \"write\" effectively means \"alter\" for a semaphore set."
12167 msgstr ""
12168 "システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマ"
12169 "フォーの場合には \"書き込み(write)\" は実際には \"変更(alter)\" を意味する。"
12170
12171 #. type: Plain text
12172 #: build/C/man7/svipc.7:105
12173 msgid ""
12174 "The same system header file also defines the following symbolic constants:"
12175 msgstr "同じヘッダーファイルには以下のシンボルの定義が含まれている:"
12176
12177 #. type: TP
12178 #: build/C/man7/svipc.7:105
12179 #, no-wrap
12180 msgid "B<IPC_CREAT>"
12181 msgstr "B<IPC_CREAT>"
12182
12183 #. type: Plain text
12184 #: build/C/man7/svipc.7:108
12185 msgid "Create entry if key doesn't exist."
12186 msgstr "キー(key)が存在しない場合には新たなエントリを作成する。"
12187
12188 #. type: TP
12189 #: build/C/man7/svipc.7:108
12190 #, no-wrap
12191 msgid "B<IPC_EXCL>"
12192 msgstr "B<IPC_EXCL>"
12193
12194 #. type: Plain text
12195 #: build/C/man7/svipc.7:111
12196 msgid "Fail if key exists."
12197 msgstr "キー(key)が存在する場合には失敗する。"
12198
12199 #. type: TP
12200 #: build/C/man7/svipc.7:111
12201 #, no-wrap
12202 msgid "B<IPC_NOWAIT>"
12203 msgstr "B<IPC_NOWAIT>"
12204
12205 #. type: Plain text
12206 #: build/C/man7/svipc.7:114
12207 msgid "Error if request must wait."
12208 msgstr "要求が待たされる場合にはエラーになる。"
12209
12210 #. type: TP
12211 #: build/C/man7/svipc.7:114
12212 #, no-wrap
12213 msgid "B<IPC_PRIVATE>"
12214 msgstr "B<IPC_PRIVATE>"
12215
12216 #. type: Plain text
12217 #: build/C/man7/svipc.7:117
12218 msgid "Private key."
12219 msgstr "プライベートキー。"
12220
12221 #. type: TP
12222 #: build/C/man7/svipc.7:117
12223 #, no-wrap
12224 msgid "B<IPC_RMID>"
12225 msgstr "B<IPC_RMID>"
12226
12227 #. type: Plain text
12228 #: build/C/man7/svipc.7:120
12229 msgid "Remove resource."
12230 msgstr "資源を削除する。"
12231
12232 #. type: TP
12233 #: build/C/man7/svipc.7:120
12234 #, no-wrap
12235 msgid "B<IPC_SET>"
12236 msgstr "B<IPC_SET>"
12237
12238 #. type: Plain text
12239 #: build/C/man7/svipc.7:123
12240 msgid "Set resource options."
12241 msgstr "資源にオプションを設定する。"
12242
12243 #. type: TP
12244 #: build/C/man7/svipc.7:123
12245 #, no-wrap
12246 msgid "B<IPC_STAT>"
12247 msgstr "B<IPC_STAT>"
12248
12249 #. type: Plain text
12250 #: build/C/man7/svipc.7:126
12251 msgid "Get resource options."
12252 msgstr "資源のオプションを取得する。"
12253
12254 #. type: Plain text
12255 #: build/C/man7/svipc.7:135
12256 msgid ""
12257 "Note that B<IPC_PRIVATE> is a I<key_t> type, while all the other symbolic "
12258 "constants are flag fields and can be OR'ed into an I<int> type variable."
12259 msgstr ""
12260 "B<IPC_PRIVATE> は I<key_t> 型である。その他の全てのシンボルはフラグフィールド"
12261 "として I<int> 変数に OR 演算で格納することができる。"
12262
12263 #. type: SS
12264 #: build/C/man7/svipc.7:135
12265 #, no-wrap
12266 msgid "Message queues"
12267 msgstr "メッセージキュー"
12268
12269 #. type: Plain text
12270 #: build/C/man7/svipc.7:143
12271 msgid ""
12272 "A message queue is uniquely identified by a positive integer (its I<msqid>)  "
12273 "and has an associated data structure of type I<struct msqid_ds>, defined in "
12274 "I<E<lt>sys/msg.hE<gt>>, containing the following members:"
12275 msgstr ""
12276 "メッセージキューは正の整数 (I<msqid>)  によって識別され、 I<E<lt>sys/msg."
12277 "hE<gt>> に定義されている構造体 I<struct msqid_ds> に結びつけられている。 この"
12278 "構造体は以下のメンバーを含んでいる:"
12279
12280 #. type: Plain text
12281 #: build/C/man7/svipc.7:156
12282 #, no-wrap
12283 msgid ""
12284 "struct msqid_ds {\n"
12285 "    struct ipc_perm msg_perm;\n"
12286 "    msgqnum_t       msg_qnum;    /* no of messages on queue */\n"
12287 "    msglen_t        msg_qbytes;  /* bytes max on a queue */\n"
12288 "    pid_t           msg_lspid;   /* PID of last msgsnd(2) call */\n"
12289 "    pid_t           msg_lrpid;   /* PID of last msgrcv(2) call */\n"
12290 "    time_t          msg_stime;   /* last msgsnd(2) time */\n"
12291 "    time_t          msg_rtime;   /* last msgrcv(2) time */\n"
12292 "    time_t          msg_ctime;   /* last change time */\n"
12293 "};\n"
12294 msgstr ""
12295 "struct msqid_ds {\n"
12296 "    struct ipc_perm msg_perm;\n"
12297 "    msgqnum_t       msg_qnum;    /* キューにあるメッセージの数 */\n"
12298 "    msglen_t        msg_qbytes;  /* キューの最大バイト数 */\n"
12299 "    pid_t           msg_lspid;   /* 最後に msgsnd(2) をした PID */\n"
12300 "    pid_t           msg_lrpid;   /* 最後に msgrcv(2) をした PID */\n"
12301 "    time_t          msg_stime;   /* 最後に msgsnd(2) をした時間 */\n"
12302 "    time_t          msg_rtime;   /* 最後に msgrcv(2) をした時間 */\n"
12303 "    time_t          msg_ctime;   /* 最後に変更された時間 */\n"
12304 "};\n"
12305
12306 #. type: TP
12307 #: build/C/man7/svipc.7:158
12308 #, no-wrap
12309 msgid "I<msg_perm>"
12310 msgstr "I<msg_perm>"
12311
12312 #. type: Plain text
12313 #: build/C/man7/svipc.7:163
12314 msgid ""
12315 "I<ipc_perm> structure that specifies the access permissions on the message "
12316 "queue."
12317 msgstr "メッセージキューへのアクセス許可を指定する I<ipc_perm> 構造体。"
12318
12319 #. type: TP
12320 #: build/C/man7/svipc.7:163
12321 #, no-wrap
12322 msgid "I<msg_qnum>"
12323 msgstr "I<msg_qnum>"
12324
12325 #. type: Plain text
12326 #: build/C/man7/svipc.7:166
12327 msgid "Number of messages currently on the message queue."
12328 msgstr "現在、このメッセージキューにあるメッセージの数。"
12329
12330 #. type: TP
12331 #: build/C/man7/svipc.7:166
12332 #, no-wrap
12333 msgid "I<msg_qbytes>"
12334 msgstr "I<msg_qbytes>"
12335
12336 #. type: Plain text
12337 #: build/C/man7/svipc.7:170
12338 msgid "Maximum number of bytes of message text allowed on the message queue."
12339 msgstr "メッセージキューに入れることができるメッセージの最大バイト数。"
12340
12341 #. type: TP
12342 #: build/C/man7/svipc.7:170
12343 #, no-wrap
12344 msgid "I<msg_lspid>"
12345 msgstr "I<msg_lspid>"
12346
12347 #. type: Plain text
12348 #: build/C/man7/svipc.7:175
12349 msgid "ID of the process that performed the last B<msgsnd>(2)  system call."
12350 msgstr "最後に B<msgsnd>(2)  システムコールを行なったプロセスの ID。"
12351
12352 #. type: TP
12353 #: build/C/man7/svipc.7:175
12354 #, no-wrap
12355 msgid "I<msg_lrpid>"
12356 msgstr "I<msg_lrpid>"
12357
12358 #. type: Plain text
12359 #: build/C/man7/svipc.7:180
12360 msgid "ID of the process that performed the last B<msgrcv>(2)  system call."
12361 msgstr "最後に B<msgrcv>(2)  システムコールを行なったプロセスの ID。"
12362
12363 #. type: TP
12364 #: build/C/man7/svipc.7:180
12365 #, no-wrap
12366 msgid "I<msg_stime>"
12367 msgstr "I<msg_stime>"
12368
12369 #. type: Plain text
12370 #: build/C/man7/svipc.7:185
12371 msgid "Time of the last B<msgsnd>(2)  system call."
12372 msgstr "最後に B<msgsnd>(2)  システムコールを行なった時間。"
12373
12374 #. type: TP
12375 #: build/C/man7/svipc.7:185
12376 #, no-wrap
12377 msgid "I<msg_rtime>"
12378 msgstr "I<msg_rtime>"
12379
12380 #. type: Plain text
12381 #: build/C/man7/svipc.7:190
12382 msgid "Time of the last B<msgrcv>(2)  system call."
12383 msgstr "最後に B<msgrcv>(2)  を行なった時間。"
12384
12385 #. type: TP
12386 #: build/C/man7/svipc.7:190
12387 #, no-wrap
12388 msgid "I<msg_ctime>"
12389 msgstr "I<msg_ctime>"
12390
12391 #. type: Plain text
12392 #: build/C/man7/svipc.7:196
12393 msgid ""
12394 "Time of the last system call that changed a member of the I<msqid_ds> "
12395 "structure."
12396 msgstr "最後に I<msqid_ds> 構造体のメンバーが変更された時間。"
12397
12398 #. type: SS
12399 #: build/C/man7/svipc.7:196
12400 #, no-wrap
12401 msgid "Semaphore sets"
12402 msgstr "セマフォー集合"
12403
12404 #. type: Plain text
12405 #: build/C/man7/svipc.7:204
12406 msgid ""
12407 "A semaphore set is uniquely identified by a positive integer (its I<semid>)  "
12408 "and has an associated data structure of type I<struct semid_ds>, defined in "
12409 "I<E<lt>sys/sem.hE<gt>>, containing the following members:"
12410 msgstr ""
12411 "セマフォー集合は正の整数 (I<semid>)  によって識別され、 I<E<lt>sys/sem."
12412 "hE<gt>> に定義されている構造体 I<struct semid_ds> に結びつけられている。 この"
12413 "構造体は以下のメンバーを含んでいる:"
12414
12415 #. type: Plain text
12416 #: build/C/man7/svipc.7:213
12417 #, no-wrap
12418 msgid ""
12419 "struct semid_ds {\n"
12420 "    struct ipc_perm sem_perm;\n"
12421 "    time_t          sem_otime;   /* last operation time */\n"
12422 "    time_t          sem_ctime;   /* last change time */\n"
12423 "    unsigned long   sem_nsems;   /* count of sems in set */\n"
12424 "};\n"
12425 msgstr ""
12426 "struct semid_ds {\n"
12427 "    struct ipc_perm sem_perm;\n"
12428 "    time_t          sem_otime;   /* 最後に操作した時間 */\n"
12429 "    time_t          sem_ctime;   /* 最後に変更した時間 */\n"
12430 "    unsigned long   sem_nsems;   /* 集合の中にあるセマフォー数 */\n"
12431 "};\n"
12432
12433 #. type: TP
12434 #: build/C/man7/svipc.7:215
12435 #, no-wrap
12436 msgid "I<sem_perm>"
12437 msgstr "I<sem_perm>"
12438
12439 #. type: Plain text
12440 #: build/C/man7/svipc.7:220
12441 msgid ""
12442 "I<ipc_perm> structure that specifies the access permissions on the semaphore "
12443 "set."
12444 msgstr "セマフォー集合へのアクセス許可を指定する I<ipc_perm> 構造体。"
12445
12446 #. type: TP
12447 #: build/C/man7/svipc.7:220
12448 #, no-wrap
12449 msgid "I<sem_otime>"
12450 msgstr "I<sem_otime>"
12451
12452 #. type: Plain text
12453 #: build/C/man7/svipc.7:225
12454 msgid "Time of last B<semop>(2)  system call."
12455 msgstr "最後に B<semop>(2)  システムコールを行なった時間。"
12456
12457 #. type: TP
12458 #: build/C/man7/svipc.7:225
12459 #, no-wrap
12460 msgid "I<sem_ctime>"
12461 msgstr "I<sem_ctime>"
12462
12463 #. type: Plain text
12464 #: build/C/man7/svipc.7:231
12465 msgid ""
12466 "Time of last B<semctl>(2)  system call that changed a member of the above "
12467 "structure or of one semaphore belonging to the set."
12468 msgstr ""
12469 "最後に B<semctl>(2)  を行なって上記の構造体のメンバーを変更するか、セマフォー"
12470 "集合に属する セマフォーを変更した時間。"
12471
12472 #. type: TP
12473 #: build/C/man7/svipc.7:231
12474 #, no-wrap
12475 msgid "I<sem_nsems>"
12476 msgstr "I<sem_nsems>"
12477
12478 #. type: Plain text
12479 #: build/C/man7/svipc.7:239
12480 msgid ""
12481 "Number of semaphores in the set.  Each semaphore of the set is referenced by "
12482 "a nonnegative integer ranging from B<0> to I<sem_nsems-1>."
12483 msgstr ""
12484 "セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは"
12485 "負でない整数によって参照され、 B<0> から I<sem_nsems-1> までの番号を持つ。"
12486
12487 #. type: Plain text
12488 #: build/C/man7/svipc.7:243
12489 msgid ""
12490 "A semaphore is a data structure of type I<struct sem> containing the "
12491 "following members:"
12492 msgstr ""
12493 "セマフォーは I<struct sem> 型のデータ構造体であり、以下のメンバーを含んでい"
12494 "る:"
12495
12496 #.     unsigned short semncnt; /* nr awaiting semval to increase */
12497 #.     unsigned short semzcnt; /* nr awaiting semval = 0 */
12498 #. type: Plain text
12499 #: build/C/man7/svipc.7:252
12500 #, no-wrap
12501 msgid ""
12502 "struct sem {\n"
12503 "    int semval;  /* semaphore value */\n"
12504 "    int sempid;  /* PID for last operation */\n"
12505 "};\n"
12506 msgstr ""
12507 "struct sem {\n"
12508 "    int semval;  /* セマフォーの値 */\n"
12509 "    int sempid;  /* 最後に操作したプロセス ID */\n"
12510 "};\n"
12511
12512 #. type: TP
12513 #: build/C/man7/svipc.7:254
12514 #, no-wrap
12515 msgid "I<semval>"
12516 msgstr "I<semval>"
12517
12518 #. type: Plain text
12519 #: build/C/man7/svipc.7:257
12520 msgid "Semaphore value: a nonnegative integer."
12521 msgstr "セマフォー値: 負でない整数。"
12522
12523 #. type: TP
12524 #: build/C/man7/svipc.7:257
12525 #, no-wrap
12526 msgid "I<sempid>"
12527 msgstr "I<sempid>"
12528
12529 #. .TP
12530 #. .I semncnt
12531 #. Number of processes suspended awaiting for
12532 #. .I semval
12533 #. to increase.
12534 #. .TP
12535 #. .I semznt
12536 #. Number of processes suspended awaiting for
12537 #. .I semval
12538 #. to become zero.
12539 #. type: Plain text
12540 #: build/C/man7/svipc.7:271
12541 msgid ""
12542 "ID of the last process that performed a semaphore operation on this "
12543 "semaphore."
12544 msgstr "このセマフォーを最後に操作したプロセスの ID。"
12545
12546 #. type: SS
12547 #: build/C/man7/svipc.7:271
12548 #, no-wrap
12549 msgid "Shared memory segments"
12550 msgstr "共有メモリセグメント"
12551
12552 #. type: Plain text
12553 #: build/C/man7/svipc.7:279
12554 msgid ""
12555 "A shared memory segment is uniquely identified by a positive integer (its "
12556 "I<shmid>)  and has an associated data structure of type I<struct shmid_ds>, "
12557 "defined in I<E<lt>sys/shm.hE<gt>>, containing the following members:"
12558 msgstr ""
12559 "共有メモリセグメントは正の整数 (I<shmid>)  によって識別され、 I<E<lt>sys/shm."
12560 "hE<gt>> に定義されている I<struct shmid_ds> 構造体に結びつけられている。 この"
12561 "構造体は以下のメンバーを含んでいる:"
12562
12563 #. type: Plain text
12564 #: build/C/man7/svipc.7:292
12565 #, no-wrap
12566 msgid ""
12567 "struct shmid_ds {\n"
12568 "    struct ipc_perm shm_perm;\n"
12569 "    size_t          shm_segsz;   /* size of segment */\n"
12570 "    pid_t           shm_cpid;    /* PID of creator */\n"
12571 "    pid_t           shm_lpid;    /* PID, last operation */\n"
12572 "    shmatt_t        shm_nattch;  /* no. of current attaches */\n"
12573 "    time_t          shm_atime;   /* time of last attach */\n"
12574 "    time_t          shm_dtime;   /* time of last detach */\n"
12575 "    time_t          shm_ctime;   /* time of last change */\n"
12576 "};\n"
12577 msgstr ""
12578 "struct shmid_ds {\n"
12579 "    struct ipc_perm shm_perm;\n"
12580 "    size_t          shm_segsz;   /* セグメントのサイズ */\n"
12581 "    pid_t           shm_cpid;    /* 作成者のプロセス ID */\n"
12582 "    pid_t           shm_lpid;    /* 最後に操作したプロセス ID */\n"
12583 "    shmatt_t        shm_nattch;  /* 現在、付加している数 */\n"
12584 "    time_t          shm_atime;   /* 最後に付加した時間 */\n"
12585 "    time_t          shm_dtime;   /* 最後に分離した時間 */\n"
12586 "    time_t          shm_ctime;   /* 最後に変更した時間 */\n"
12587 "};\n"
12588
12589 #. type: TP
12590 #: build/C/man7/svipc.7:294
12591 #, no-wrap
12592 msgid "I<shm_perm>"
12593 msgstr "I<shm_perm>"
12594
12595 #. type: Plain text
12596 #: build/C/man7/svipc.7:299
12597 msgid ""
12598 "I<ipc_perm> structure that specifies the access permissions on the shared "
12599 "memory segment."
12600 msgstr "共有メモリセグメントへのアクセス許可を指定した I<ipc_perm> 構造体。"
12601
12602 #. type: TP
12603 #: build/C/man7/svipc.7:299
12604 #, no-wrap
12605 msgid "I<shm_segsz>"
12606 msgstr "I<shm_segsz>"
12607
12608 #. type: Plain text
12609 #: build/C/man7/svipc.7:302
12610 msgid "Size in bytes of the shared memory segment."
12611 msgstr "共有メモリセグメントのバイト数。"
12612
12613 #. type: TP
12614 #: build/C/man7/svipc.7:302
12615 #, no-wrap
12616 msgid "I<shm_cpid>"
12617 msgstr "I<shm_cpid>"
12618
12619 #. type: Plain text
12620 #: build/C/man7/svipc.7:305
12621 msgid "ID of the process that created the shared memory segment."
12622 msgstr "共有メモリセグメントを作成したプロセスの ID。"
12623
12624 #. type: TP
12625 #: build/C/man7/svipc.7:305
12626 #, no-wrap
12627 msgid "I<shm_lpid>"
12628 msgstr "I<shm_lpid>"
12629
12630 #. type: Plain text
12631 #: build/C/man7/svipc.7:312
12632 msgid ""
12633 "ID of the last process that executed a B<shmat>(2)  or B<shmdt>(2)  system "
12634 "call."
12635 msgstr ""
12636 "最後に B<shmat>(2)  または B<shmdt>(2)  システムコールを実行したプロセスの "
12637 "ID。"
12638
12639 #. type: TP
12640 #: build/C/man7/svipc.7:312
12641 #, no-wrap
12642 msgid "I<shm_nattch>"
12643 msgstr "I<shm_nattch>"
12644
12645 #. type: Plain text
12646 #: build/C/man7/svipc.7:315
12647 msgid "Number of current alive attaches for this shared memory segment."
12648 msgstr "この共有メモリセグメントをメモリに付加 (attach) しているプロセスの数。"
12649
12650 #. type: TP
12651 #: build/C/man7/svipc.7:315
12652 #, no-wrap
12653 msgid "I<shm_atime>"
12654 msgstr "I<shm_atime>"
12655
12656 #. type: Plain text
12657 #: build/C/man7/svipc.7:320
12658 msgid "Time of the last B<shmat>(2)  system call."
12659 msgstr "最後に B<shmat>(2)  システムコールを行なった時間。"
12660
12661 #. type: TP
12662 #: build/C/man7/svipc.7:320
12663 #, no-wrap
12664 msgid "I<shm_dtime>"
12665 msgstr "I<shm_dtime>"
12666
12667 #. type: Plain text
12668 #: build/C/man7/svipc.7:325
12669 msgid "Time of the last B<shmdt>(2)  system call."
12670 msgstr "最後に B<shmdt>(2)  システムコールを行なった時間。"
12671
12672 #. type: TP
12673 #: build/C/man7/svipc.7:325
12674 #, no-wrap
12675 msgid "I<shm_ctime>"
12676 msgstr "I<shm_ctime>"
12677
12678 #. type: Plain text
12679 #: build/C/man7/svipc.7:331
12680 msgid "Time of the last B<shmctl>(2)  system call that changed I<shmid_ds>."
12681 msgstr ""
12682 "最後に B<shmctl>(2)  システムコールを行なって、 I<shmid_ds> 構造体を変更した"
12683 "時間。"
12684
12685 #. type: SS
12686 #: build/C/man7/svipc.7:331
12687 #, no-wrap
12688 msgid "IPC namespaces"
12689 msgstr "IPC 名前空間"
12690
12691 #. type: Plain text
12692 #: build/C/man7/svipc.7:335
12693 msgid ""
12694 "For a discussion of the interaction of System V IPC objects and IPC "
12695 "namespaces, see B<namespaces>(7)."
12696 msgstr ""
12697 "System V IPC オブジェクトと IPC 名前空間の相互の影響に関する議論は "
12698 "B<namespaces>(7) を参照。"
12699
12700 #. type: Plain text
12701 #: build/C/man7/svipc.7:353
12702 msgid ""
12703 "B<ipcmk>(1), B<ipcrm>(1), B<ipcs>(1), B<ipc>(2), B<msgctl>(2), B<msgget>(2), "
12704 "B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), B<semget>(2), B<semop>(2), "
12705 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<shmget>(2), B<ftok>(3), "
12706 "B<namespaces>(7)"
12707 msgstr ""
12708 "B<ipcmk>(1), B<ipcrm>(1), B<ipcs>(1), B<ipc>(2), B<msgctl>(2), B<msgget>(2), "
12709 "B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), B<semget>(2), B<semop>(2), "
12710 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<shmget>(2), B<ftok>(3), "
12711 "B<namespaces>(7)"
12712
12713 #. type: TH
12714 #: build/C/man3/ulimit.3:27
12715 #, no-wrap
12716 msgid "ULIMIT"
12717 msgstr "ULIMIT"
12718
12719 #. type: TH
12720 #: build/C/man3/ulimit.3:27
12721 #, no-wrap
12722 msgid "2008-08-06"
12723 msgstr "2008-08-06"
12724
12725 #. type: Plain text
12726 #: build/C/man3/ulimit.3:30
12727 msgid "ulimit - get and set user limits"
12728 msgstr "ulimit - ユーザー制限を取得・設定する"
12729
12730 #. type: Plain text
12731 #: build/C/man3/ulimit.3:32
12732 msgid "B<#include E<lt>ulimit.hE<gt>>"
12733 msgstr "B<#include E<lt>ulimit.hE<gt>>"
12734
12735 #. type: Plain text
12736 #: build/C/man3/ulimit.3:34
12737 msgid "B<long ulimit(int >I<cmd>B<, long >I<newlimit>B<);>"
12738 msgstr "B<long ulimit(int >I<cmd>B<, long >I<newlimit>B<);>"
12739
12740 #. type: Plain text
12741 #: build/C/man3/ulimit.3:46
12742 msgid ""
12743 "Warning: This routine is obsolete.  Use B<getrlimit>(2), B<setrlimit>(2), "
12744 "and B<sysconf>(3)  instead.  For the shell command B<ulimit>(), see "
12745 "B<bash>(1)."
12746 msgstr ""
12747 "注意: このルーチンは古い。 代わりに B<getrlimit>(2), B<setrlimit>(2), "
12748 "B<sysconf>(3)  などを用いること。 シェルコマンドとしての B<ulimit>()  につい"
12749 "ては、 B<bash>(1)  を見ること。"
12750
12751 #. type: Plain text
12752 #: build/C/man3/ulimit.3:53
12753 msgid ""
12754 "The B<ulimit>()  call will get or set some limit for the calling process.  "
12755 "The I<cmd> argument can have one of the following values."
12756 msgstr ""
12757 "B<ulimit>()  は呼び出し元のプロセスに関する制限のいくつかを取得・設定する。 "
12758 "I<cmd> 引き数には、以下の値のうちのどれか一つを与えることができる。"
12759
12760 #. type: TP
12761 #: build/C/man3/ulimit.3:53
12762 #, no-wrap
12763 msgid "B<UL_GETFSIZE>"
12764 msgstr "B<UL_GETFSIZE>"
12765
12766 #. type: Plain text
12767 #: build/C/man3/ulimit.3:56
12768 msgid "Return the limit on the size of a file, in units of 512 bytes."
12769 msgstr "ファイルサイズに関する制限を返す。単位は 512 バイト。"
12770
12771 #. type: TP
12772 #: build/C/man3/ulimit.3:56
12773 #, no-wrap
12774 msgid "B<UL_SETFSIZE>"
12775 msgstr "B<UL_SETFSIZE>"
12776
12777 #. type: Plain text
12778 #: build/C/man3/ulimit.3:59
12779 msgid "Set the limit on the size of a file."
12780 msgstr "ファイルサイズに関する制限を設定する。"
12781
12782 #. type: TP
12783 #: build/C/man3/ulimit.3:59
12784 #, no-wrap
12785 msgid "B<3>"
12786 msgstr "B<3>"
12787
12788 #. type: Plain text
12789 #: build/C/man3/ulimit.3:63
12790 msgid ""
12791 "(Not implemented for Linux.)  Return the maximum possible address of the "
12792 "data segment."
12793 msgstr ""
12794 "(Linux では実装されていない)  データセグメントで指定できるアドレスの最大値を"
12795 "返す。"
12796
12797 #. type: TP
12798 #: build/C/man3/ulimit.3:63
12799 #, no-wrap
12800 msgid "B<4>"
12801 msgstr "B<4>"
12802
12803 #. type: Plain text
12804 #: build/C/man3/ulimit.3:67
12805 msgid ""
12806 "(Implemented but no symbolic constant provided.)  Return the maximum number "
12807 "of files that the calling process can open."
12808 msgstr ""
12809 "(実装されているが、対応するシンボリックな定数は存在しない)  プロセスがオープ"
12810 "ンできるファイル数の最大値を返す。"
12811
12812 #. type: Plain text
12813 #: build/C/man3/ulimit.3:74
12814 msgid ""
12815 "On success, B<ulimit>()  returns a nonnegative value.  On error, -1 is "
12816 "returned, and I<errno> is set appropriately."
12817 msgstr ""
12818 "成功すると B<ulimit>()  は 0 または正の値を返す。 エラーが生じると -1 を返"
12819 "し、 I<errno> を適切な値に設定する。"
12820
12821 #. type: Plain text
12822 #: build/C/man3/ulimit.3:78
12823 msgid "A unprivileged process tried to increase a limit."
12824 msgstr "非特権プロセスが制限値を増加させようとした。"
12825
12826 #. type: Plain text
12827 #: build/C/man3/ulimit.3:83
12828 msgid "SVr4, POSIX.1-2001.  POSIX.1-2008 marks B<ulimit>()  as obsolete."
12829 msgstr ""
12830 "SVr4, POSIX.1-2001.  POSIX.1-2008 は B<ulimit>()  を廃止予定としている。"
12831
12832 #. type: Plain text
12833 #: build/C/man3/ulimit.3:88
12834 msgid "B<bash>(1), B<getrlimit>(2), B<setrlimit>(2), B<sysconf>(3)"
12835 msgstr "B<bash>(1), B<getrlimit>(2), B<setrlimit>(2), B<sysconf>(3)"
12836
12837 #. type: TH
12838 #: build/C/man7/user_namespaces.7:27
12839 #, no-wrap
12840 msgid "USER_NAMESPACES"
12841 msgstr "USER_NAMESPACES"
12842
12843 #. type: Plain text
12844 #: build/C/man7/user_namespaces.7:30
12845 msgid "user_namespaces - overview of Linux user namespaces"
12846 msgstr "user_namespaces - Linux ユーザー名前空間の概要"
12847
12848 #
12849 #.  FIXME: This page says very little about the interaction
12850 #.  of user namespaces and keys. Add something on this topic.
12851 #.  ============================================================
12852 #. type: Plain text
12853 #: build/C/man7/user_namespaces.7:56
12854 msgid ""
12855 "User namespaces isolate security-related identifiers and attributes, in "
12856 "particular, user IDs and group IDs (see B<credentials>(7)), the root "
12857 "directory, keys (see B<keyctl>(2)), and capabilities (see "
12858 "B<capabilities>(7)).  A process's user and group IDs can be different inside "
12859 "and outside a user namespace.  In particular, a process can have a normal "
12860 "unprivileged user ID outside a user namespace while at the same time having "
12861 "a user ID of 0 inside the namespace; in other words, the process has full "
12862 "privileges for operations inside the user namespace, but is unprivileged for "
12863 "operations outside the namespace."
12864 msgstr ""
12865 "ユーザー名前空間は、 セキュリティに関連する識別子や属性、 特にユーザー ID や"
12866 "グループ ID (B<credentials>(7) 参照)、 root ディレクトリ、 キー "
12867 "(B<keyctl>(2) 参照)、 ケーパビリティを分離する。 プロセスのユーザー ID とグ"
12868 "ループ ID はユーザー名前空間の内部と外部で異なる場合がある。 特に、 あるプロ"
12869 "セスがユーザー名前空間の外部では通常の非特権ユーザー ID を持つが、 同時にユー"
12870 "ザー名前空間の内部ではユーザー ID 0 を持つという場合がある。 言い換えると、 "
12871 "そのプロセスはそのユーザー名前空間の内部での操作に対してすべての特権を持つ"
12872 "が、 名前空間の外部での操作では特権を持たない。"
12873
12874 #. type: SS
12875 #: build/C/man7/user_namespaces.7:56
12876 #, no-wrap
12877 msgid "Nested namespaces, namespace membership"
12878 msgstr "ネストされた名前空間、名前空間のメンバー"
12879
12880 #. type: Plain text
12881 #: build/C/man7/user_namespaces.7:69
12882 msgid ""
12883 "User namespaces can be nested; that is, each user namespace\\(emexcept the "
12884 "initial (\"root\")  namespace\\(emhas a parent user namespace, and can have "
12885 "zero or more child user namespaces.  The parent user namespace is the user "
12886 "namespace of the process that creates the user namespace via a call to "
12887 "B<unshare>(2)  or B<clone>(2)  with the B<CLONE_NEWUSER> flag."
12888 msgstr ""
12889 "ユーザー名前空間は入れ子にすることができる。 つまり、 最初の (\"root\") 名前"
12890 "空間以外の各名前空間は親のユーザー名前空間を持ち、 0 個以上のユーザー名前空間"
12891 "を持つということである。 親のユーザー名前空間は、 B<CLONE_NEWUSER> フラグを指"
12892 "定して B<unshare>(2) や B<clone>(2) を呼び出してユーザー名前空間を作成したプ"
12893 "ロセスのユーザー名前空間である。"
12894
12895 #.  commit 8742f229b635bf1c1c84a3dfe5e47c814c20b5c8
12896 #.  FIXME Explain the rationale for this limit. (What is the rationale?)
12897 #. type: Plain text
12898 #: build/C/man7/user_namespaces.7:80
12899 msgid ""
12900 "The kernel imposes (since version 3.11) a limit of 32 nested levels of user "
12901 "namespaces.  Calls to B<unshare>(2)  or B<clone>(2)  that would cause this "
12902 "limit to be exceeded fail with the error B<EUSERS>."
12903 msgstr ""
12904 "カーネルにより (バージョン 3.11 以降では) ユーザー名前空間のネスト数に 32 と"
12905 "いう上限が課される。 B<unshare>(2) や B<clone>(2) の呼び出しでこの上限を超え"
12906 "てしまう場合はエラー B<EUSERS> で失敗する。"
12907
12908 #. type: Plain text
12909 #: build/C/man7/user_namespaces.7:95
12910 msgid ""
12911 "Each process is a member of exactly one user namespace.  A process created "
12912 "via B<fork>(2)  or B<clone>(2)  without the B<CLONE_NEWUSER> flag is a "
12913 "member of the same user namespace as its parent.  A single-threaded process "
12914 "can join another user namespace with B<setns>(2)  if it has the "
12915 "B<CAP_SYS_ADMIN> in that namespace; upon doing so, it gains a full set of "
12916 "capabilities in that namespace."
12917 msgstr ""
12918 "各プロセスは必ず 1 個のユーザー名前空間のメンバーとなる。 B<CLONE_NEWUSER> フ"
12919 "ラグを指定せずに B<fork>(2) や B<clone>(2) でプロセスを作成した場合、 そのプ"
12920 "ロセスは親プロセスと同じユーザー名前空間のメンバーとなる。 シングルスレッドの"
12921 "プログラムは、 変更先のユーザー名前空間で B<CAP_SYS_ADMIN> を持っていれば、 "
12922 "B<setns>(2) を使って別のユーザー名前空間に参加することができる。 変更時に、 "
12923 "変更後の名前空間ですべてのケーパビリティを獲得する。"
12924
12925 #
12926 #.  ============================================================
12927 #. type: Plain text
12928 #: build/C/man7/user_namespaces.7:110
12929 msgid ""
12930 "A call to B<clone>(2)  or B<unshare>(2)  with the B<CLONE_NEWUSER> flag "
12931 "makes the new child process (for B<clone>(2))  or the caller (for "
12932 "B<unshare>(2))  a member of the new user namespace created by the call."
12933 msgstr ""
12934 "B<CLONE_NEWUSER> を指定して B<clone>(2) や B<unshare>(2) を呼び出すと、 新し"
12935 "いプロセス (B<clone>(2) の場合) や呼び出したプロセス (B<unshare>(2) の場合) "
12936 "がその呼び出しで作成された新しいユーザー名前空間のメンバーとなる。"
12937
12938 #. type: SS
12939 #: build/C/man7/user_namespaces.7:110
12940 #, no-wrap
12941 msgid "Capabilities"
12942 msgstr "ケーパビリティ"
12943
12944 #. type: Plain text
12945 #: build/C/man7/user_namespaces.7:132
12946 msgid ""
12947 "The child process created by B<clone>(2)  with the B<CLONE_NEWUSER> flag "
12948 "starts out with a complete set of capabilities in the new user namespace.  "
12949 "Likewise, a process that creates a new user namespace using B<unshare>(2)  "
12950 "or joins an existing user namespace using B<setns>(2)  gains a full set of "
12951 "capabilities in that namespace.  On the other hand, that process has no "
12952 "capabilities in the parent (in the case of B<clone>(2))  or previous (in the "
12953 "case of B<unshare>(2)  and B<setns>(2))  user namespace, even if the new "
12954 "namespace is created or joined by the root user (i.e., a process with user "
12955 "ID 0 in the root namespace)."
12956 msgstr ""
12957 "B<CLONE_NEWUSER> フラグが指定された B<clone>(2) で作成された子プロセスは、 新"
12958 "しい名前空間ですべてのケーパビリティを持った状態で開始される。 同様に、 "
12959 "B<unshare>(2) を使って新しいユーザー名前空間を作成したり、 B<setns>(2) を使っ"
12960 "て既存のユーザー名前空間に参加したりしたプロセスは、 その名前空間ですべての"
12961 "ケーパビリティを獲得する。 一方、 そのプロセスは、親のユーザー名前空間 "
12962 "(B<clone>(2) の場合) や直前のユーザー名前空間 (B<unshare>(2) や B<setns>(2) "
12963 "の場合) では、 root ユーザー (root 名前空間のユーザー ID 0 のプロセス) により"
12964 "新しい名前空間の作成や参加が行われた場合であっても、 ケーパビリティを全く持た"
12965 "ない。"
12966
12967 #. type: Plain text
12968 #: build/C/man7/user_namespaces.7:142
12969 msgid ""
12970 "Note that a call to B<execve>(2)  will cause a process's capabilities to be "
12971 "recalculated in the usual way (see B<capabilities>(7)), so that usually, "
12972 "unless it has a user ID of 0 within the namespace or the executable file has "
12973 "a nonempty inheritable capabilities mask, it will lose all capabilities.  "
12974 "See the discussion of user and group ID mappings, below."
12975 msgstr ""
12976 "B<execve>(2) の呼び出しでは、 プロセスのケーパビリティは通常の方法 "
12977 "(B<capabilities>(7) 参照) で再計算され、 通常は、 名前空間内でユーザー ID 0 "
12978 "を持つ場合や実行ファイルが空でない継承可能ケーパビリティマスクを持っている場"
12979 "合を除くと、 すべてのケーパビリティを失うことになる。 下記の、ユーザー ID や"
12980 "グループ ID のマッピングの議論を参照。"
12981
12982 #. type: Plain text
12983 #: build/C/man7/user_namespaces.7:167
12984 msgid ""
12985 "A call to B<clone>(2), B<unshare>(2), or B<setns>(2)  using the "
12986 "B<CLONE_NEWUSER> flag sets the \"securebits\" flags (see "
12987 "B<capabilities>(7))  to their default values (all flags disabled) in the "
12988 "child (for B<clone>(2))  or caller (for B<unshare>(2), or B<setns>(2)).  "
12989 "Note that because the caller no longer has capabilities in its original user "
12990 "namespace after a call to B<setns>(2), it is not possible for a process to "
12991 "reset its \"securebits\" flags while retaining its user namespace membership "
12992 "by using a pair of B<setns>(2)  calls to move to another user namespace and "
12993 "then return to its original user namespace."
12994 msgstr ""
12995 "B<CLONE_NEWUSER> フラグを使って B<clone>(2), B<unshare>(2), B<setns>(2) を呼"
12996 "び出すと、 子プロセス (B<clone>(2) の場合) や呼び出し元 (B<unshare>(2) や "
12997 "B<setns>(2) の場合) では \"securebits\" フラグ (B<capabilities>(7) 参照) がデ"
12998 "フォルト値に設定される。 呼び出し元は B<setns>(2) の呼び出し後は元のユーザー"
12999 "名前空間ではケーパビリティを持たないので、 B<setns>(2) を 2 回呼び出して一度"
13000 "別のユーザー名前空間に移動して元のユーザー名前空間に戻ることで、 プロセスが元"
13001 "のユーザー名前空間にとどまりつつ自身の \"securebits\" フラグを再設定すること"
13002 "はできない。"
13003
13004 #. type: Plain text
13005 #: build/C/man7/user_namespaces.7:173
13006 msgid ""
13007 "Having a capability inside a user namespace permits a process to perform "
13008 "operations (that require privilege)  only on resources governed by that "
13009 "namespace.  The rules for determining whether or not a process has a "
13010 "capability in a particular user namespace are as follows:"
13011 msgstr ""
13012 "ユーザー名前空間内部でケーパビリティを持つというのは、 そのプロセスがその名前"
13013 "空間の支配下にあるリソースに対してのみ (特権を必要とする) 操作を実行できると"
13014 "いうことである。 プロセスが特定のユーザー名前空間でケーパビリティを持つかどう"
13015 "かを判定するルールは以下の通りである。"
13016
13017 #.  In the 3.8 sources, see security/commoncap.c::cap_capable():
13018 #. type: Plain text
13019 #: build/C/man7/user_namespaces.7:189
13020 msgid ""
13021 "A process has a capability inside a user namespace if it is a member of that "
13022 "namespace and it has the capability in its effective capability set.  A "
13023 "process can gain capabilities in its effective capability set in various "
13024 "ways.  For example, it may execute a set-user-ID program or an executable "
13025 "with associated file capabilities.  In addition, a process may gain "
13026 "capabilities via the effect of B<clone>(2), B<unshare>(2), or B<setns>(2), "
13027 "as already described."
13028 msgstr ""
13029 "プロセスがその名前空間のメンバーで、実効ケーパビリティセットにそのケーパビリ"
13030 "ティがあれば、 そのプロセスはユーザー名前空間内でケーパビリティを持つ。 プロ"
13031 "セスが実効ケーパビリティセットでケーパビリティを得るにはいくつかの方法があ"
13032 "る。 例えば、 set-user-ID プログラムや関連するファイルケーパビリティを持った"
13033 "実行ファイルを実行する。 また、 すでに説明したとおり、 プロセスは "
13034 "B<clone>(2), B<unshare>(2), B<setns>(2) の結果としてケーパビリティを獲得する"
13035 "こともできる。"
13036
13037 #. type: Plain text
13038 #: build/C/man7/user_namespaces.7:193
13039 msgid ""
13040 "If a process has a capability in a user namespace, then it has that "
13041 "capability in all child (and further removed descendant)  namespaces as well."
13042 msgstr ""
13043 "プロセスがユーザー名前空間でケーパビリティを持っている場合、 そのプロセスはす"
13044 "べての子供の名前空間 (および削除された子孫の名前空間) でケーパビリティを持"
13045 "つ。"
13046
13047 #
13048 #.  * The owner of the user namespace in the parent of the
13049 #.  * user namespace has all caps.
13050 #.  (and likewise associates the effective group ID of the creating process
13051 #.  with the namespace).
13052 #.  See kernel commit 520d9eabce18edfef76a60b7b839d54facafe1f9 for a fix
13053 #.  on this point
13054 #.      This includes the case where the process executes a set-user-ID
13055 #.      program that confers the effective UID of the creator of the namespace.
13056 #.  ============================================================
13057 #. type: Plain text
13058 #: build/C/man7/user_namespaces.7:214
13059 msgid ""
13060 "When a user namespace is created, the kernel records the effective user ID "
13061 "of the creating process as being the \"owner\" of the namespace.  A process "
13062 "that resides in the parent of the user namespace and whose effective user ID "
13063 "matches the owner of the namespace has all capabilities in the namespace.  "
13064 "By virtue of the previous rule, this means that the process has all "
13065 "capabilities in all further removed descendant user namespaces as well."
13066 msgstr ""
13067 "ユーザー名前空間が作成された際、 カーネルはその名前空間の「所有者」として作成"
13068 "したプロセスの実効ユーザー ID を記録する。 親のユーザー名前空間に属するプロセ"
13069 "スで、 そのプロセスの実効ユーザー ID が名前空間の所有者と一致する場合、 その"
13070 "プロセスはその名前空間ですべてのケーパビリティを持つ。 一つ前のルールも合わせ"
13071 "て考えると、 このプロセスはすべての削除された子孫のユーザー名前空間ですべての"
13072 "ケーパビリティを持つことを意味する。"
13073
13074 #. type: SS
13075 #: build/C/man7/user_namespaces.7:214
13076 #, no-wrap
13077 msgid "Interaction of user namespaces and other types of namespaces"
13078 msgstr "ユーザー名前空間と他の名前空間の関係"
13079
13080 #. type: Plain text
13081 #: build/C/man7/user_namespaces.7:219
13082 msgid ""
13083 "Starting in Linux 3.8, unprivileged processes can create user namespaces, "
13084 "and mount, PID, IPC, network, and UTS namespaces can be created with just "
13085 "the B<CAP_SYS_ADMIN> capability in the caller's user namespace."
13086 msgstr ""
13087 "Linux 3.8 以降では、 非特権プロセスがユーザー名前空間を作成することができ"
13088 "る。 また、 呼び出し元のユーザー名前空間で B<CAP_SYS_ADMIN> ケーパビリティを"
13089 "持っているだけで、 マウント名前空間、 PID 名前空間、 IPC 名前空間、 ネット"
13090 "ワーク名前空間、 UTS 名前空間を作成できる。"
13091
13092 #. type: Plain text
13093 #: build/C/man7/user_namespaces.7:225
13094 msgid ""
13095 "When a non-user-namespace is created, it is owned by the user namespace in "
13096 "which the creating process was a member at the time of the creation of the "
13097 "namespace.  Actions on the non-user-namespace require capabilities in the "
13098 "corresponding user namespace."
13099 msgstr ""
13100 "ユーザー名前空間以外の名前空間が作成された場合、 その名前空間は呼び出したプロ"
13101 "セスが名前空間の作成時にメンバーであったユーザー名前空間により所有される。 "
13102 "ユーザー名前空間以外の名前空間における操作には、 対応するユーザー名前空間での"
13103 "ケーパビリティが必要である。"
13104
13105 #. type: Plain text
13106 #: build/C/man7/user_namespaces.7:242
13107 msgid ""
13108 "If B<CLONE_NEWUSER> is specified along with other B<CLONE_NEW*> flags in a "
13109 "single B<clone>(2)  or B<unshare>(2)  call, the user namespace is guaranteed "
13110 "to be created first, giving the child (B<clone>(2))  or caller "
13111 "(B<unshare>(2))  privileges over the remaining namespaces created by the "
13112 "call.  Thus, it is possible for an unprivileged caller to specify this "
13113 "combination of flags."
13114 msgstr ""
13115 "一つの B<clone>(2) や B<unshare>(2) の呼び出しで B<CLONE_NEWUSER> が他の "
13116 "B<CLONE_NEW*> フラグと一緒に指定された場合、 そのユーザー名前空間が最初に作成"
13117 "されることが保証され、 子プロセス (B<clone>(2) の場合) や呼び出し元 "
13118 "(B<unshare>(2) の場合) はその呼び出しで作成される残りの名前空間で特権を持"
13119 "つ。 したがって、 特権を持たない呼び出し元がフラグを組み合わせて指定すること"
13120 "ができる。"
13121
13122 #
13123 #.  ============================================================
13124 #. type: Plain text
13125 #: build/C/man7/user_namespaces.7:258
13126 msgid ""
13127 "When a new IPC, mount, network, PID, or UTS namespace is created via "
13128 "B<clone>(2)  or B<unshare>(2), the kernel records the user namespace of the "
13129 "creating process against the new namespace.  (This association can't be "
13130 "changed.)  When a process in the new namespace subsequently performs "
13131 "privileged operations that operate on global resources isolated by the "
13132 "namespace, the permission checks are performed according to the process's "
13133 "capabilities in the user namespace that the kernel associated with the new "
13134 "namespace."
13135 msgstr ""
13136 "新しい IPC 名前空間、 マウント名前空間、 ネットワーク名前空間、 PID 名前空"
13137 "間、 UTS 名前空間が B<clone>(2) や B<unshare>(2) で作成される際、 カーネルは"
13138 "新しい名前空間に対して作成したプロセスのユーザー名前空間を記録する (この関連"
13139 "付けは変更できない)。 その新しい名前空間のプロセスがその後名前空間で分離され"
13140 "たグローバルリソースに対して特権操作を行う場合、 カーネルが新しい名前空間に対"
13141 "して関連付けたユーザー名前空間でのプロセスのケーパビリティに基づいてアクセス"
13142 "許可のチェックが行われる。"
13143
13144 #. type: SS
13145 #: build/C/man7/user_namespaces.7:258
13146 #, no-wrap
13147 msgid "Restrictions on mount namespaces"
13148 msgstr "マウント名前空間における制限"
13149
13150 #. type: Plain text
13151 #: build/C/man7/user_namespaces.7:261
13152 msgid "Note the following points with respect to mount namespaces:"
13153 msgstr "マウント名前空間に関しては以下の点に注意すること。"
13154
13155 #. type: Plain text
13156 #: build/C/man7/user_namespaces.7:266
13157 msgid ""
13158 "A mount namespace has an owner user namespace.  A mount namespace whose "
13159 "owner user namespace is different from the owner user namespace of its "
13160 "parent mount namespace is considered a less privileged mount namespace."
13161 msgstr ""
13162 "マウント名前空間は所有者のユーザー名前空間を持つ。 所有者のユーザー名前空間が"
13163 "親のマウント名前空間の所有者のユーザー名前空間と異なるマウント名前空間は、 特"
13164 "権が少ないマウント名前空間 (less privileged mount namespace) である。"
13165
13166 #. type: Plain text
13167 #: build/C/man7/user_namespaces.7:272
13168 msgid ""
13169 "When creating a less privileged mount namespace, shared mounts are reduced "
13170 "to slave mounts.  This ensures that mappings performed in less privileged "
13171 "mount namespaces will not propagate to more privileged mount namespaces."
13172 msgstr ""
13173 "特権が少ないマウント名前空間を作成する場合、 共有マウントは slave マウントに"
13174 "縮小される。 これにより、 特権の少ないマウント名前空間で実行されるマッピング"
13175 "が、 より特権を持つマウント名前空間 (more privileged mount namespace) に伝搬"
13176 "しないことが保証される。"
13177
13178 #.  FIXME .
13179 #.      What does "come as a single unit from more privileged mount" mean?
13180 #. type: Plain text
13181 #: build/C/man7/user_namespaces.7:285
13182 msgid ""
13183 "Mounts that come as a single unit from more privileged mount are locked "
13184 "together and may not be separated in a less privileged mount namespace.  "
13185 "(The B<unshare>(2)  B<CLONE_NEWNS> operation brings across all of the mounts "
13186 "from the original mount namespace as a single unit, and recursive mounts "
13187 "that propagate between mount namespaces propagate as a single unit.)"
13188 msgstr ""
13189 "より特権を持つマウントで一つのまとまりとして行われたマウントは一つにまとまっ"
13190 "たままとなり、 特権が少ないマウント名前空間で分割することはできない。 "
13191 "(B<unshare>(2) の B<CLONE_NEWNS> 操作では、 元のマウント名前空間のすべてのマ"
13192 "ウントは一つのまとまりとして扱われ、 マウント名前空間間で伝わる再帰的なマウン"
13193 "トでは一つのまとまりとして伝わる。)"
13194
13195 #
13196 #.  commit 9566d6742852c527bf5af38af5cbb878dad75705
13197 #.  Author: Eric W. Biederman <ebiederm@xmission.com>
13198 #.  Date:   Mon Jul 28 17:26:07 2014 -0700
13199 #.       mnt: Correct permission checks in do_remount
13200 #. type: Plain text
13201 #: build/C/man7/user_namespaces.7:306
13202 msgid ""
13203 "The B<mount>(2)  flags B<MS_RDONLY>, B<MS_NOSUID>, B<MS_NOEXEC>, and the "
13204 "\"atime\" flags (B<MS_NOATIME>, B<MS_NODIRATIME>, B<MS_RELATIME>)  settings "
13205 "become locked when propagated from a more privileged to a less privileged "
13206 "mount namespace, and may not be changed in the less privileged mount "
13207 "namespace."
13208 msgstr ""
13209 "より特権を持つマウント名前空間から特権の少ないマウント名前空間に伝わる際に、 "
13210 "B<mount>(2) の B<MS_RDONLY>, B<MS_NOSUID>, B<MS_NOEXEC> フラグと \"atime\" フ"
13211 "ラグ (B<MS_NOATIME>, B<MS_NODIRATIME>, B<MS_REALTIME>) 設定はロックされ、 特"
13212 "権の少ないマウント名前空間では変更することはできない。"
13213
13214 #.  (As of 3.18-rc1 (in Al Viro's 2014-08-30 vfs.git#for-next tree))
13215 #. type: Plain text
13216 #: build/C/man7/user_namespaces.7:313
13217 msgid ""
13218 "A file or directory that is a mount point in one namespace that is not a "
13219 "mount point in another namespace, may be renamed, unlinked, or removed "
13220 "(B<rmdir>(2))  in the mount namespace in which it is not a mount point "
13221 "(subject to the usual permission checks)."
13222 msgstr ""
13223 "ある名前空間でマウントポイントとなっているが別の名前空間でのマウントポイント"
13224 "になっていないファイルやディレクトリは、 マウントポイントになっていないマウン"
13225 "ト名前空間では (通常のアクセス許可チェックにもとづいて) rename, unlink, "
13226 "remove (B<rmdir>(2)) を行うことができる。"
13227
13228 #
13229 #.  ============================================================
13230 #. type: Plain text
13231 #: build/C/man7/user_namespaces.7:324
13232 msgid ""
13233 "Previously, attempting to unlink, rename, or remove a file or directory that "
13234 "was a mount point in another mount namespace would result in the error "
13235 "B<EBUSY>.  That behavior had technical problems of enforcement (e.g., for "
13236 "NFS)  and permitted denial-of-service attacks against more privileged "
13237 "users.  (i.e., preventing individual files from being updated by bind "
13238 "mounting on top of them)."
13239 msgstr ""
13240 "以前は、 別のマウント名前空間でマウントポイントとなっていたファイルやディレク"
13241 "トリを rename, unlink, remove しようとすると、 エラー B<EBUSY> が返されてい"
13242 "た。 この動作は、 (NFS などで) 適用にあたっての技術的な問題があるとともに、 "
13243 "より特権を持つユーザーに対してサービス不能攻撃 (denial-of-service attack) を"
13244 "許してしまっていた (ファイルをバインドマウントで更新することができなくなって"
13245 "いた)。"
13246
13247 #. type: SS
13248 #: build/C/man7/user_namespaces.7:324
13249 #, no-wrap
13250 msgid "User and group ID mappings: uid_map and gid_map"
13251 msgstr "ユーザー ID とグループ ID のマッピング: uid_map と gid_map"
13252
13253 #.  commit 22d917d80e842829d0ca0a561967d728eb1d6303
13254 #. type: Plain text
13255 #: build/C/man7/user_namespaces.7:339
13256 msgid ""
13257 "When a user namespace is created, it starts out without a mapping of user "
13258 "IDs (group IDs)  to the parent user namespace.  The I</proc/[pid]/uid_map> "
13259 "and I</proc/[pid]/gid_map> files (available since Linux 3.5)  expose the "
13260 "mappings for user and group IDs inside the user namespace for the process "
13261 "I<pid>.  These files can be read to view the mappings in a user namespace "
13262 "and written to (once) to define the mappings."
13263 msgstr ""
13264 "ユーザー名前空間が作成された際、 その名前空間は親のユーザー名前空間へのユー"
13265 "ザー ID (とグループ ID) のマッピングを行わずに開始される。 ファイル I</proc/"
13266 "[pid]/uid_map> と I</proc/[pid]/gid_map> (Linux 3.5 以降で利用可能) でプロセ"
13267 "ス I<pid> のユーザー名前空間内でのユーザー ID とグループ ID のマッピングにア"
13268 "クセスできる。 これらのファイルを読み出してユーザー名前空間内のマッピングを参"
13269 "照したり、 これらのファイルに書き込んでマッピングを (一度だけ) 定義することが"
13270 "できる。"
13271
13272 #. type: Plain text
13273 #: build/C/man7/user_namespaces.7:345
13274 msgid ""
13275 "The description in the following paragraphs explains the details for "
13276 "I<uid_map>; I<gid_map> is exactly the same, but each instance of \"user ID\" "
13277 "is replaced by \"group ID\"."
13278 msgstr ""
13279 "以下の段落で I<uid_map> の詳細を説明する。 I<gid_map> に関しても全く同じであ"
13280 "る。 \"user ID\" という部分を \"group ID\" に置き換えればよい。"
13281
13282 #. type: Plain text
13283 #: build/C/man7/user_namespaces.7:359
13284 msgid ""
13285 "The I<uid_map> file exposes the mapping of user IDs from the user namespace "
13286 "of the process I<pid> to the user namespace of the process that opened "
13287 "I<uid_map> (but see a qualification to this point below).  In other words, "
13288 "processes that are in different user namespaces will potentially see "
13289 "different values when reading from a particular I<uid_map> file, depending "
13290 "on the user ID mappings for the user namespaces of the reading processes."
13291 msgstr ""
13292 "I<uid_map> ファイルで、 プロセス I<pid> のユーザー名前空間から I<uid_map> を"
13293 "オープンしたプロセスのユーザー名前空間にユーザー ID のマッピングが公開される "
13294 "(公開するポリシーの条件については下記を参照)。 言い換えると、 別のユーザー名"
13295 "前空間のプロセスでは、 特定の I<uid_map> ファイルを読み出した際に潜在的には別"
13296 "の値が見えることがあるということである。 見える値は読み出したプロセスのユー"
13297 "ザー名前空間のユーザー ID マッピングに依存する。"
13298
13299 #. type: Plain text
13300 #: build/C/man7/user_namespaces.7:371
13301 msgid ""
13302 "Each line in the I<uid_map> file specifies a 1-to-1 mapping of a range of "
13303 "contiguous user IDs between two user namespaces.  (When a user namespace is "
13304 "first created, this file is empty.)  The specification in each line takes "
13305 "the form of three numbers delimited by white space.  The first two numbers "
13306 "specify the starting user ID in each of the two user namespaces.  The third "
13307 "number specifies the length of the mapped range.  In detail, the fields are "
13308 "interpreted as follows:"
13309 msgstr ""
13310 "I<uid_map> ファイルの各行は 2 つのユーザー名前空間間の連続するユーザー ID の"
13311 "範囲の 1 対 1 マッピングを指定する (ユーザー名前空間が最初に作成された際には"
13312 "このファイルは空である)。 各行の指定の形式はホワイトスペース区切りの 3 つの数"
13313 "字である。 最初の 2 つの数字は 2 つの ユーザー名前空間それぞれの開始ユーザー "
13314 "ID を指定する。 3 つ目の数字はマッピングされる範囲の長さを指定する。 詳しく"
13315 "は、各フィールドは以下のように解釈される。"
13316
13317 #. type: Plain text
13318 #: build/C/man7/user_namespaces.7:375
13319 msgid ""
13320 "The start of the range of user IDs in the user namespace of the process "
13321 "I<pid>."
13322 msgstr "プロセス I<pid> のユーザー名前空間におけるユーザー ID の範囲の開始値。"
13323
13324 #. type: Plain text
13325 #: build/C/man7/user_namespaces.7:383
13326 msgid ""
13327 "The start of the range of user IDs to which the user IDs specified by field "
13328 "one map.  How field two is interpreted depends on whether the process that "
13329 "opened I<uid_map> and the process I<pid> are in the same user namespace, as "
13330 "follows:"
13331 msgstr ""
13332 "1 番目のフィールドで指定されたユーザー ID がマッピングされる先のユーザー ID "
13333 "の範囲の開始値。 2 番目のフィールドがどのように解釈されるかは、 I<uid_map> を"
13334 "オープンしたプロセスとプロセス I<pid> が同じユーザー名前空間かどうかに依存す"
13335 "る。 以下のとおり。"
13336
13337 #. type: Plain text
13338 #: build/C/man7/user_namespaces.7:389
13339 msgid ""
13340 "If the two processes are in different user namespaces: field two is the "
13341 "start of a range of user IDs in the user namespace of the process that "
13342 "opened I<uid_map>."
13343 msgstr ""
13344 "2 つのプロセスが異なるユーザー名前空間に属す場合、 2 番目のフィールドは "
13345 "I<uid_map> をオープンしたプロセスのユーザー名前空間におけるユーザー ID の範囲"
13346 "の開始値である。"
13347
13348 #. type: Plain text
13349 #: build/C/man7/user_namespaces.7:400
13350 msgid ""
13351 "If the two processes are in the same user namespace: field two is the start "
13352 "of the range of user IDs in the parent user namespace of the process "
13353 "I<pid>.  This case enables the opener of I<uid_map> (the common case here is "
13354 "opening I</proc/self/uid_map>)  to see the mapping of user IDs into the user "
13355 "namespace of the process that created this user namespace."
13356 msgstr ""
13357 "2 つのプロセスが同じユーザー名前空間に属す場合、 2 番目のフィールドはプロセ"
13358 "ス I<pid> の親のユーザー名前空間におけるユーザー ID の範囲の開始値である。 こ"
13359 "の場合、 I<uid_map> をオープンしたプロセス (よくあるのは I</proc/self/"
13360 "uid_map> をオープンした場合である) は、 このユーザー名前空間を作成したプロセ"
13361 "スのユーザー名前空間に対するユーザー ID マッピングを参照することができる。"
13362
13363 #. type: Plain text
13364 #: build/C/man7/user_namespaces.7:404
13365 msgid ""
13366 "The length of the range of user IDs that is mapped between the two user "
13367 "namespaces."
13368 msgstr "2 つのユーザー名前空間間でマッピングされるユーザー ID の範囲の長さ。"
13369
13370 #. type: Plain text
13371 #: build/C/man7/user_namespaces.7:411
13372 msgid ""
13373 "System calls that return user IDs (group IDs)\\(emfor example, B<getuid>(2), "
13374 "B<getgid>(2), and the credential fields in the structure returned by "
13375 "B<stat>(2)\\(emreturn the user ID (group ID) mapped into the caller's user "
13376 "namespace."
13377 msgstr ""
13378 "ユーザー ID (グループ ID) を返すシステムコール、例えば B<getuid>(2), "
13379 "B<getgid>(2) や B<stat>(2) が返す構造体の credential フィールド、は呼び出し元"
13380 "のユーザー名前空間にマッピングされたユーザー ID (グループ ID) を返す。"
13381
13382 #. type: Plain text
13383 #: build/C/man7/user_namespaces.7:419
13384 msgid ""
13385 "When a process accesses a file, its user and group IDs are mapped into the "
13386 "initial user namespace for the purpose of permission checking and assigning "
13387 "IDs when creating a file.  When a process retrieves file user and group IDs "
13388 "via B<stat>(2), the IDs are mapped in the opposite direction, to produce "
13389 "values relative to the process user and group ID mappings."
13390 msgstr ""
13391 "プロセスがファイルにアクセスする場合、 アクセス許可のチェックやファイル作成時"
13392 "の ID 割り当てのために、 そのユーザー ID とグループ ID は初期ユーザー名前空間"
13393 "にマッピングされる。 プロセスが B<stat>(2) を使ってファイルのユーザー ID やグ"
13394 "ループ ID を取得する際には、 上記の反対方向に ID のマッピングが行われ、 プロ"
13395 "セスにおける相対的なユーザー ID とグループ ID の値が生成される。"
13396
13397 #. type: Plain text
13398 #: build/C/man7/user_namespaces.7:428
13399 msgid ""
13400 "The initial user namespace has no parent namespace, but, for consistency, "
13401 "the kernel provides dummy user and group ID mapping files for this "
13402 "namespace.  Looking at the I<uid_map> file (I<gid_map> is the same) from a "
13403 "shell in the initial namespace shows:"
13404 msgstr ""
13405 "初期ユーザー名前空間は親の名前空間を持たないが、 一貫性を持たせるため、 カー"
13406 "ネルは初期の名前空間に対してダミーのユーザー ID とグループ ID のマッピングを"
13407 "提供する。 初期の名前空間のシェルから I<uid_map> ファイル (I<gid_map> も同"
13408 "じ) を参照するには以下のようにする。"
13409
13410 #. type: Plain text
13411 #: build/C/man7/user_namespaces.7:433
13412 #, no-wrap
13413 msgid ""
13414 "$ B<cat /proc/$$/uid_map>\n"
13415 "         0          0 4294967295\n"
13416 msgstr ""
13417 "$ B<cat /proc/$$/uid_map>\n"
13418 "         0          0 4294967295\n"
13419
13420 #
13421 #.  ============================================================
13422 #. type: Plain text
13423 #: build/C/man7/user_namespaces.7:453
13424 msgid ""
13425 "This mapping tells us that the range starting at user ID 0 in this namespace "
13426 "maps to a range starting at 0 in the (nonexistent) parent namespace, and the "
13427 "length of the range is the largest 32-bit unsigned integer.  (This "
13428 "deliberately leaves 4294967295 (the 32-bit signed -1 value) unmapped.  This "
13429 "is deliberate: I<(uid_t)\\ -\\1> is used in several interfaces (e.g., "
13430 "B<setreuid>(2))  as a way to specify \"no user ID\".  Leaving I<(uid_t)\\ -"
13431 "\\1> unmapped and unusable guarantees that there will be no confusion when "
13432 "using these interfaces."
13433 msgstr ""
13434 "このマッピングは、 この名前空間のユーザー ID 0 から始まる範囲が (実際には存在"
13435 "しない) 親の名前空間の 0 から始まる範囲にマッピングされ、 範囲の流さは 32 "
13436 "ビットの unsigned integer の最大値である、 と言っている。 (ここで 4294967295 "
13437 "(32 ビットの符号付き -1 の値) は意図的にマッピングされていない。 I<(uid_t)\\ "
13438 "-\\1> は (B<setreuid>(2) など) いくつかのインターフェースで \"no user ID"
13439 "\" (ユーザー ID なし) を示す手段として使用されているので、 意図的にこのように"
13440 "なっている。 I<(uid_t)\\ -\\1> をマッピングせず、 利用できないようにすること"
13441 "で、 これらのインターフェースを使った際に混乱が起こらないように保証してい"
13442 "る。)"
13443
13444 #. type: SS
13445 #: build/C/man7/user_namespaces.7:453
13446 #, no-wrap
13447 msgid "Defining user and group ID mappings: writing to uid_map and gid_map"
13448 msgstr "ユーザー ID とグループ ID のマッピングの定義: uid_map と gid_map への書き込み"
13449
13450 #. type: Plain text
13451 #: build/C/man7/user_namespaces.7:469
13452 msgid ""
13453 "After the creation of a new user namespace, the I<uid_map> file of I<one> of "
13454 "the processes in the namespace may be written to I<once> to define the "
13455 "mapping of user IDs in the new user namespace.  An attempt to write more "
13456 "than once to a I<uid_map> file in a user namespace fails with the error "
13457 "B<EPERM>.  Similar rules apply for I<gid_map> files."
13458 msgstr ""
13459 "新しいユーザー名前空間を作成した後、 新しいユーザー名前空間におけるユーザー "
13460 "ID のマッピングを定義するため、 その名前空間のプロセスの「一つ」の "
13461 "I<uid_map> ファイルに「一度だけ」書き込みを行うことができる。 ユーザー名前空"
13462 "間の I<uid_map> ファイルに二度目以降の書き込みを行おうとすると、 エラー "
13463 "B<EPERM> で失敗する。 I<gid_map> ファイルについては同じルールが適用される。"
13464
13465 #. type: Plain text
13466 #: build/C/man7/user_namespaces.7:474
13467 msgid ""
13468 "The lines written to I<uid_map> (I<gid_map>)  must conform to the following "
13469 "rules:"
13470 msgstr ""
13471 "I<uid_map> (I<gid_map>) に書き込む行は以下のルールに従っていなければならな"
13472 "い。"
13473
13474 #. type: Plain text
13475 #: build/C/man7/user_namespaces.7:477
13476 msgid ""
13477 "The three fields must be valid numbers, and the last field must be greater "
13478 "than 0."
13479 msgstr ""
13480 "3 のフィールドは有効な数字でなければならず、最後のフィールドは 0 より大きくな"
13481 "ければならない。"
13482
13483 #. type: Plain text
13484 #: build/C/man7/user_namespaces.7:479
13485 msgid "Lines are terminated by newline characters."
13486 msgstr "行は改行文字で終了しなければならない。"
13487
13488 #.  FIXME(Eric): the restriction "less than" rather than "less than or equal"
13489 #.  seems strangely arbitrary. Furthermore, the comment does not agree
13490 #.  with the code in kernel/user_namespace.c. Which is correct?
13491 #. type: Plain text
13492 #: build/C/man7/user_namespaces.7:492
13493 msgid ""
13494 "There is an (arbitrary) limit on the number of lines in the file.  As at "
13495 "Linux 3.8, the limit is five lines.  In addition, the number of bytes "
13496 "written to the file must be less than the system page size, and the write "
13497 "must be performed at the start of the file (i.e., B<lseek>(2)  and "
13498 "B<pwrite>(2)  can't be used to write to nonzero offsets in the file)."
13499 msgstr ""
13500 "ファイルの行数には上限がある。 Linux 3.8 時点では、上限は 5 行である。 さら"
13501 "に、 ファイルに書き込むバイト数はシステムページサイズより小さくなければなら"
13502 "ず、 書き込みはファイルの先頭に対して行わなければならない (つまり、 "
13503 "B<lseek>(2) や B<pwrite>(2) を使って 0 以外のファイルオフセットに書き込むこと"
13504 "はできない)。"
13505
13506 #.  commit 0bd14b4fd72afd5df41e9fd59f356740f22fceba
13507 #. type: Plain text
13508 #: build/C/man7/user_namespaces.7:505
13509 msgid ""
13510 "The range of user IDs (group IDs)  specified in each line cannot overlap "
13511 "with the ranges in any other lines.  In the initial implementation (Linux "
13512 "3.8), this requirement was satisfied by a simplistic implementation that "
13513 "imposed the further requirement that the values in both field 1 and field 2 "
13514 "of successive lines must be in ascending numerical order, which prevented "
13515 "some otherwise valid maps from being created.  Linux 3.9 and later fix this "
13516 "limitation, allowing any valid set of nonoverlapping maps."
13517 msgstr ""
13518 "各行で指定されるユーザー ID (グループ ID) の範囲は他の行が指定する範囲と重"
13519 "なってはならない。 最初の実装 (Linux 3.8) では、 この要件は、 後続行のフィー"
13520 "ルド 1 とフィールド 2 の両方の値が昇順になっていなければならないという追加の"
13521 "要件を設け、 これが満たされなかった場合は有効なマッピングは作成されない、 と"
13522 "いう単純な実装により満たされていた。 Linux 3.9 以降ではこの制限は修正され、 "
13523 "重複がない有効なマッピングであればどんな組み合わせでも指定できるようになっ"
13524 "た。"
13525
13526 #. type: Plain text
13527 #: build/C/man7/user_namespaces.7:507
13528 msgid "At least one line must be written to the file."
13529 msgstr "少なくとも 1 行はファイルに書き込まなければならない。"
13530
13531 #. type: Plain text
13532 #: build/C/man7/user_namespaces.7:510
13533 msgid "Writes that violate the above rules fail with the error B<EINVAL>."
13534 msgstr "上記のルールを満たさない書き込みはエラー B<EINVAL> で失敗する。"
13535
13536 #. type: Plain text
13537 #: build/C/man7/user_namespaces.7:515
13538 msgid ""
13539 "In order for a process to write to the I</proc/[pid]/uid_map> (I</proc/[pid]/"
13540 "gid_map>)  file, all of the following requirements must be met:"
13541 msgstr ""
13542 "プロセスが I</proc/[pid]/uid_map> (I</proc/[pid]/gid_map>) ファイルに書き込む"
13543 "ためには、 以下の要件がすべて満たされる必要がある。"
13544
13545 #. type: Plain text
13546 #: build/C/man7/user_namespaces.7:521
13547 msgid ""
13548 "The writing process must have the B<CAP_SETUID> (B<CAP_SETGID>)  capability "
13549 "in the user namespace of the process I<pid>."
13550 msgstr ""
13551 "書き込みプロセスは、 プロセス I<pid> のユーザー名前空間で B<CAP_SETUID> "
13552 "(B<CAP_SETGID>) ケーパビリティを持っていなければならない。"
13553
13554 #. type: Plain text
13555 #: build/C/man7/user_namespaces.7:526
13556 msgid ""
13557 "The writing process must be in either the user namespace of the process "
13558 "I<pid> or inside the parent user namespace of the process I<pid>."
13559 msgstr ""
13560 "書き込みプロセスは、 プロセス I<pid> のユーザー名前空間もしくはプロセス "
13561 "I<pid> の親のユーザー名前空間に属していなければならない。"
13562
13563 #. type: Plain text
13564 #: build/C/man7/user_namespaces.7:529
13565 msgid ""
13566 "The mapped user IDs (group IDs) must in turn have a mapping in the parent "
13567 "user namespace."
13568 msgstr ""
13569 "マッピングされたユーザー ID (グループ ID) は親のユーザー名前空間にマッピング"
13570 "を持っていなければならない。"
13571
13572 #. type: Plain text
13573 #: build/C/man7/user_namespaces.7:531
13574 msgid "One of the following is true:"
13575 msgstr "以下のいずれか一つが真である。"
13576
13577 #. type: Plain text
13578 #: build/C/man7/user_namespaces.7:541
13579 msgid ""
13580 "The data written to I<uid_map> (I<gid_map>)  consists of a single line that "
13581 "maps the writing process's filesystem user ID (group ID) in the parent user "
13582 "namespace to a user ID (group ID)  in the user namespace.  The usual case "
13583 "here is that this single line provides a mapping for user ID of the process "
13584 "that created the namespace."
13585 msgstr ""
13586 "I<uid_map> (I<gid_map>) に書き込まれるデータは、 書き込みを行うプロセスの親の"
13587 "ユーザー名前空間でのファイルシステムユーザー ID (グループ ID) をそのユーザー"
13588 "名前空間でのユーザー ID (グループ ID) にマッピングする 1 行で構成されている。"
13589
13590 #. type: Plain text
13591 #: build/C/man7/user_namespaces.7:548
13592 msgid ""
13593 "The opening process has the B<CAP_SETUID> (B<CAP_SETGID>)  capability in the "
13594 "parent user namespace.  Thus, a privileged process can make mappings to "
13595 "arbitrary user IDs (group IDs)  in the parent user namespace."
13596 msgstr ""
13597 "オープンしたプロセスが親のユーザー名前空間で B<CAP_SETUID> (B<CAP_SETGID>) "
13598 "ケーパビリティを持っている。 したがって、 特権プロセスは親のユーザー名前空間"
13599 "の任意のユーザー ID (グループ ID) に対するマッピングを作成できる。"
13600
13601 #
13602 #.  ============================================================
13603 #. type: Plain text
13604 #: build/C/man7/user_namespaces.7:555
13605 msgid "Writes that violate the above rules fail with the error B<EPERM>."
13606 msgstr "上記のルールを満たさない書き込みはエラー B<EPERM> で失敗する。"
13607
13608 #. type: SS
13609 #: build/C/man7/user_namespaces.7:555
13610 #, no-wrap
13611 msgid "Unmapped user and group IDs"
13612 msgstr "マッピングされていないユーザー ID とグループ ID"
13613
13614 #.  from_kuid_munged(), from_kgid_munged()
13615 #. type: Plain text
13616 #: build/C/man7/user_namespaces.7:572
13617 msgid ""
13618 "There are various places where an unmapped user ID (group ID)  may be "
13619 "exposed to user space.  For example, the first process in a new user "
13620 "namespace may call B<getuid>()  before a user ID mapping has been defined "
13621 "for the namespace.  In most such cases, an unmapped user ID is converted to "
13622 "the overflow user ID (group ID); the default value for the overflow user ID "
13623 "(group ID) is 65534.  See the descriptions of I</proc/sys/kernel/"
13624 "overflowuid> and I</proc/sys/kernel/overflowgid> in B<proc>(5)."
13625 msgstr ""
13626 "マッピングされていないユーザー ID (グループ ID) がユーザー空間に公開される場"
13627 "合はいろいろある。\n"
13628 "例えば、 新しいユーザー名前空間の最初のプロセスが、 その名前空間に対するユー"
13629 "ザー ID マッピングが定義される前に B<getuid>() を呼び出すなどである。 このよ"
13630 "うなほとんどの場合で、 マッピングされていないユーザー ID はオーバーフローユー"
13631 "ザー ID (グループ ID)に変換される。 デフォルトのオーバーフローユーザー ID (グ"
13632 "ループ ID) は 65534 である。 B<proc>(5) の I</proc/sys/kernel/overflowuid> "
13633 "と I</proc/sys/kernel/overflowgid> の説明を参照。"
13634
13635 #.  also SO_PEERCRED
13636 #. type: Plain text
13637 #: build/C/man7/user_namespaces.7:600
13638 msgid ""
13639 "The cases where unmapped IDs are mapped in this fashion include system calls "
13640 "that return user IDs (B<getuid>(2), B<getgid>(2), and similar), credentials "
13641 "passed over a UNIX domain socket, credentials returned by B<stat>(2), "
13642 "B<waitid>(2), and the System V IPC \"ctl\" B<IPC_STAT> operations, "
13643 "credentials exposed by I</proc/PID/status> and the files in I</proc/sysvipc/"
13644 "*>, credentials returned via the I<si_uid> field in the I<siginfo_t> "
13645 "received with a signal (see B<sigaction>(2)), credentials written to the "
13646 "process accounting file (see B<acct>(5)), and credentials returned with "
13647 "POSIX message queue notifications (see B<mq_notify>(3))."
13648 msgstr ""
13649 "マッピングされていない ID がこのようにマッピングされる場合としては、 ユー"
13650 "ザー ID を返すシステムコール (B<getuid>(2), B<getgid>(2) やその同類)、 UNIX "
13651 "ドメインソケットで渡される ID 情報 (credential)、 B<stat>(2) が返す ID 情"
13652 "報、 B<waitid>(2)、 System V IPC \"ctl\" B<IPC_STAT> 操作、 I</proc/PID/"
13653 "status> や I</proc/sysvipc/*> 内のファイルで公開される ID 情報、 シグナル受信"
13654 "時の I<siginfo_t> の I<si_uid> フィールドで返される ID 情報 (B<sigaction>(2) "
13655 "参照)、 プロセスアカウンティングファイルに書き込まれる ID 情報 (B<acct>(5) 参"
13656 "照)、 POSIX メッセージキュー通知で返される ID 情報 (B<mq_notify>(3) 参照) が"
13657 "ある。"
13658
13659 #
13660 #.  from_kuid(), from_kgid()
13661 #.  Also F_GETOWNER_UIDS is an exception
13662 #.  ============================================================
13663 #. type: Plain text
13664 #: build/C/man7/user_namespaces.7:615
13665 msgid ""
13666 "There is one notable case where unmapped user and group IDs are I<not> "
13667 "converted to the corresponding overflow ID value.  When viewing a I<uid_map> "
13668 "or I<gid_map> file in which there is no mapping for the second field, that "
13669 "field is displayed as 4294967295 (-1 as an unsigned integer);"
13670 msgstr ""
13671 "マッピングされていないユーザー ID やグループ ID が対応するオーバーフロー ID "
13672 "値に変換され「ない」重要な場合が一つある。 2 番目のフィールドにマッピングがな"
13673 "い I<uid_map> や I<gid_map> ファイルを参照した際、 そのフィールドは "
13674 "4294967295 (unsigned integer では -1) が表示される。"
13675
13676 #. type: SS
13677 #: build/C/man7/user_namespaces.7:615
13678 #, no-wrap
13679 msgid "Set-user-ID and set-group-ID programs"
13680 msgstr "set-user-ID や set-group-ID されたプログラム"
13681
13682 #
13683 #.  ============================================================
13684 #. type: Plain text
13685 #: build/C/man7/user_namespaces.7:635
13686 msgid ""
13687 "When a process inside a user namespace executes a set-user-ID (set-group-ID) "
13688 "program, the process's effective user (group) ID inside the namespace is "
13689 "changed to whatever value is mapped for the user (group) ID of the file.  "
13690 "However, if either the user I<or> the group ID of the file has no mapping "
13691 "inside the namespace, the set-user-ID (set-group-ID) bit is silently "
13692 "ignored: the new program is executed, but the process's effective user "
13693 "(group) ID is left unchanged.  (This mirrors the semantics of executing a "
13694 "set-user-ID or set-group-ID program that resides on a filesystem that was "
13695 "mounted with the B<MS_NOSUID> flag, as described in B<mount>(2).)"
13696 msgstr ""
13697 "ユーザー名前空間内のプロセスが set-user-ID (set-group-ID) されたプログラムを"
13698 "実行した場合、 そのプロセスの名前空間内の実効ユーザー ID (実効グループ ID) "
13699 "は、 そのファイルのユーザー ID (グループ ID) にマッピングされる。 しかし、 そ"
13700 "のファイルのユーザー ID 「か」グループ ID が名前空間内のマッピングにない場"
13701 "合、 set-user-ID (set-group-ID) ビットは黙って無視される。 新しいプログラムは"
13702 "実行されるが、 そのプロセスの実効ユーザー ID (実効グループ ID) は変更されない"
13703 "ままとなる。 (これは B<MS_NOSUID> フラグ付きでマウントされたファイルシステム"
13704 "上にある set-user-ID/set-group-ID プログラムを実行した場合の動作を反映したも"
13705 "のである。 B<mount>(2) を参照。)"
13706
13707 #. type: Plain text
13708 #: build/C/man7/user_namespaces.7:645
13709 msgid ""
13710 "When a process's user and group IDs are passed over a UNIX domain socket to "
13711 "a process in a different user namespace (see the description of "
13712 "B<SCM_CREDENTIALS> in B<unix>(7)), they are translated into the "
13713 "corresponding values as per the receiving process's user and group ID "
13714 "mappings."
13715 msgstr ""
13716 "プロセスのユーザー ID とグループ ID が UNIX ドメインソケットを通して別のユー"
13717 "ザー名前空間のプロセスに渡された場合 (B<unix>(7) の B<SCM_CREDENTIALS> の説明"
13718 "を参照)、 ユーザー ID とグループ ID は受信プロセスのユーザー ID とグループ "
13719 "ID のマッピングに基づき対応する値に翻訳される。"
13720
13721 #
13722 #.  ============================================================
13723 #. type: Plain text
13724 #: build/C/man7/user_namespaces.7:658
13725 msgid ""
13726 "Over the years, there have been a lot of features that have been added to "
13727 "the Linux kernel that have been made available only to privileged users "
13728 "because of their potential to confuse set-user-ID-root applications.  In "
13729 "general, it becomes safe to allow the root user in a user namespace to use "
13730 "those features because it is impossible, while in a user namespace, to gain "
13731 "more privilege than the root user of a user namespace has."
13732 msgstr ""
13733 "長年にわたり、Linux カーネルには特権ユーザーに対してだけ利用できる機能が多く"
13734 "追加されて来た。 これは set-user-ID-root アプリケーションを混乱させる潜在的な"
13735 "可能性を考慮してである。 一般的には、 ユーザー名前空間の root ユーザーにだけ"
13736 "これらの機能の使用を許可するのが安全である。 なぜなら、ユーザー名前空間の中に"
13737 "いる間は、 ユーザー名前空間の root ユーザーが持っている以上の特権を得ることは"
13738 "できないからである。"
13739
13740 #. type: SS
13741 #: build/C/man7/user_namespaces.7:658
13742 #, no-wrap
13743 msgid "Availability"
13744 msgstr "可用性"
13745
13746 #. type: Plain text
13747 #: build/C/man7/user_namespaces.7:666
13748 msgid ""
13749 "Use of user namespaces requires a kernel that is configured with the "
13750 "B<CONFIG_USER_NS> option.  User namespaces require support in a range of "
13751 "subsystems across the kernel.  When an unsupported subsystem is configured "
13752 "into the kernel, it is not possible to configure user namespaces support."
13753 msgstr ""
13754 "ユーザー名前空間を使用するには、 B<CONFIG_USER_NS> オプションが有効になった"
13755 "カーネルが必要である。 ユーザー名前空間をカーネルの様々なサブシステムのサポー"
13756 "トを必要とする。 サポートされていないサブシステムがカーネルに組み込まれている"
13757 "場合、 ユーザー名前空間のサポートを有効にすることはできない。"
13758
13759 #.  commit d6970d4b726cea6d7a9bc4120814f95c09571fc3
13760 #. type: Plain text
13761 #: build/C/man7/user_namespaces.7:677
13762 msgid ""
13763 "As at Linux 3.8, most relevant subsystems supported user namespaces, but a "
13764 "number of filesystems did not have the infrastructure needed to map user and "
13765 "group IDs between user namespaces.  Linux 3.9 added the required "
13766 "infrastructure support for many of the remaining unsupported filesystems "
13767 "(Plan 9 (9P), Andrew File System (AFS), Ceph, CIFS, CODA, NFS, and OCFS2).  "
13768 "Linux 3.11 added support the last of the unsupported major filesystems, XFS."
13769 msgstr ""
13770 "Linux 3.8 時点では、 ほとんどの関連するサブシステムはユーザー名前空間に対応し"
13771 "ているが、 多くのファイルシステムにユーザー名前空間間でユーザー ID やグルー"
13772 "プ ID のマッピングを行うのに必要な基盤がなかった。 Linux 3.9 では、 残りの未"
13773 "サポートのファイルシステムの多くで必要な基盤のサポートが追加された (Plan 9 "
13774 "(9P), Andrew File System (AFS), Ceph, CIFS, CODA, NFS, OCFS2)。 Linux 3.11 で"
13775 "は、最後の主要な未サポートのファイルシステムであった XFS のサポートが追加され"
13776 "た。"
13777
13778 #. type: Plain text
13779 #: build/C/man7/user_namespaces.7:686
13780 msgid ""
13781 "The program below is designed to allow experimenting with user namespaces, "
13782 "as well as other types of namespaces.  It creates namespaces as specified by "
13783 "command-line options and then executes a command inside those namespaces.  "
13784 "The comments and I<usage()> function inside the program provide a full "
13785 "explanation of the program.  The following shell session demonstrates its "
13786 "use."
13787 msgstr ""
13788 "以下のプログラムは、ユーザー名前空間で実験を行えるように設計されている。 他の"
13789 "種類の名前空間も扱える。 このプログラムはコマンドライン引き数で指定された名前"
13790 "空間を作成し、作成した名前空間内でコマンドを実行する。 コメントとプログラム内"
13791 "の I<usage()> 関数に、プログラムの詳しい説明が書かれている。 以下のシェルセッ"
13792 "ションに実行例を示す。"
13793
13794 #. type: Plain text
13795 #: build/C/man7/user_namespaces.7:688
13796 msgid "First, we look at the run-time environment:"
13797 msgstr "まず最初に、実行環境を確認しておく。"
13798
13799 #. type: Plain text
13800 #: build/C/man7/user_namespaces.7:697
13801 #, no-wrap
13802 msgid ""
13803 "$ B<uname -rs>     # Need Linux 3.8 or later\n"
13804 "Linux 3.8.0\n"
13805 "$ B<id -u>         # Running as unprivileged user\n"
13806 "1000\n"
13807 "$ B<id -g>\n"
13808 "1000\n"
13809 msgstr ""
13810 "$ B<uname -rs>     # Linux 3.8 以降が必要\n"
13811 "Linux 3.8.0\n"
13812 "$ B<id -u>         # 非特権ユーザーで実行する\n"
13813 "1000\n"
13814 "$ B<id -g>\n"
13815 "1000\n"
13816
13817 #. type: Plain text
13818 #: build/C/man7/user_namespaces.7:711
13819 msgid ""
13820 "Now start a new shell in new user (I<-U>), mount (I<-m>), and PID (I<-p>)  "
13821 "namespaces, with user ID (I<-M>)  and group ID (I<-G>)  1000 mapped to 0 "
13822 "inside the user namespace:"
13823 msgstr ""
13824 "新しいユーザー名前空間 (I<-U>), マウント名前空間 (I<-m>), PID 名前空間 (I<-"
13825 "p>) で新しいシェルを開始する。ユーザー ID (I<-M>) 1000 とグループ ID (I<-G>) "
13826 "1000 をユーザー名前空間内で 0 にマッピングしている。"
13827
13828 #. type: Plain text
13829 #: build/C/man7/user_namespaces.7:715
13830 #, no-wrap
13831 msgid "$ B<./userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash>\n"
13832 msgstr "$ B<./userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash>\n"
13833
13834 #. type: Plain text
13835 #: build/C/man7/user_namespaces.7:720
13836 msgid ""
13837 "The shell has PID 1, because it is the first process in the new PID "
13838 "namespace:"
13839 msgstr ""
13840 "シェルは PID 1 を持つ。このシェルは新しい PID 名前空間の最初のプロセスだから"
13841 "である。"
13842
13843 #. type: Plain text
13844 #: build/C/man7/user_namespaces.7:725
13845 #, no-wrap
13846 msgid ""
13847 "bash$ B<echo $$>\n"
13848 "1\n"
13849 msgstr ""
13850 "bash$ B<echo $$>\n"
13851 "1\n"
13852
13853 #. type: Plain text
13854 #: build/C/man7/user_namespaces.7:730
13855 msgid ""
13856 "Inside the user namespace, the shell has user and group ID 0, and a full set "
13857 "of permitted and effective capabilities:"
13858 msgstr ""
13859 "ユーザー名前空間内では、シェルのユーザー ID とグループ ID ともに 0 で、すべて"
13860 "の許可ケーパビリティと実効ケーパビリティが有効になっている。"
13861
13862 #. type: Plain text
13863 #: build/C/man7/user_namespaces.7:740
13864 #, no-wrap
13865 msgid ""
13866 "bash$ B<cat /proc/$$/status | egrep '^[UG]id'>\n"
13867 "Uid:\t0\t0\t0\t0\n"
13868 "Gid:\t0\t0\t0\t0\n"
13869 "bash$ B<cat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'>\n"
13870 "CapInh:\t0000000000000000\n"
13871 "CapPrm:\t0000001fffffffff\n"
13872 "CapEff:\t0000001fffffffff\n"
13873 msgstr ""
13874 "bash$ B<cat /proc/$$/status | egrep '^[UG]id'>\n"
13875 "Uid:\t0\t0\t0\t0\n"
13876 "Gid:\t0\t0\t0\t0\n"
13877 "bash$ B<cat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'>\n"
13878 "CapInh:\t0000000000000000\n"
13879 "CapPrm:\t0000001fffffffff\n"
13880 "CapEff:\t0000001fffffffff\n"
13881
13882 #. type: Plain text
13883 #: build/C/man7/user_namespaces.7:748
13884 msgid ""
13885 "Mounting a new I</proc> filesystem and listing all of the processes visible "
13886 "in the new PID namespace shows that the shell can't see any processes "
13887 "outside the PID namespace:"
13888 msgstr ""
13889 "I</proc> ファイルシステムをマウントし、新しい PID 名前空間で見えるプロセス一"
13890 "覧を表示すると、 シェルからは PID 名前空間外のプロセスが見えないことが分か"
13891 "る。"
13892
13893 #. type: Plain text
13894 #: build/C/man7/user_namespaces.7:756
13895 #, no-wrap
13896 msgid ""
13897 "bash$ B<mount -t proc proc /proc>\n"
13898 "bash$ B<ps ax>\n"
13899 "  PID TTY      STAT   TIME COMMAND\n"
13900 "    1 pts/3    S      0:00 bash\n"
13901 "   22 pts/3    R+     0:00 ps ax\n"
13902 msgstr ""
13903 "bash$ B<mount -t proc proc /proc>\n"
13904 "bash$ B<ps ax>\n"
13905 "  PID TTY      STAT   TIME COMMAND\n"
13906 "    1 pts/3    S      0:00 bash\n"
13907 "   22 pts/3    R+     0:00 ps ax\n"
13908
13909 #. type: SS
13910 #: build/C/man7/user_namespaces.7:758 build/C/man2/seccomp.2:574
13911 #, no-wrap
13912 msgid "Program source"
13913 msgstr "プログラムのソース"
13914
13915 #. type: Plain text
13916 #: build/C/man7/user_namespaces.7:762
13917 #, no-wrap
13918 msgid "/* userns_child_exec.c\n"
13919 msgstr "/* userns_child_exec.c\n"
13920
13921 #. type: Plain text
13922 #: build/C/man7/user_namespaces.7:764
13923 #, no-wrap
13924 msgid "   Licensed under GNU General Public License v2 or later\n"
13925 msgstr "   GNU General Public License v2 以降の元でライセンスされる\n"
13926
13927 #. type: Plain text
13928 #: build/C/man7/user_namespaces.7:780
13929 #, no-wrap
13930 msgid ""
13931 "   Create a child process that executes a shell command in new\n"
13932 "   namespace(s); allow UID and GID mappings to be specified when\n"
13933 "   creating a user namespace.\n"
13934 "*/\n"
13935 "#define _GNU_SOURCE\n"
13936 "#include E<lt>sched.hE<gt>\n"
13937 "#include E<lt>unistd.hE<gt>\n"
13938 "#include E<lt>stdlib.hE<gt>\n"
13939 "#include E<lt>sys/wait.hE<gt>\n"
13940 "#include E<lt>signal.hE<gt>\n"
13941 "#include E<lt>fcntl.hE<gt>\n"
13942 "#include E<lt>stdio.hE<gt>\n"
13943 "#include E<lt>string.hE<gt>\n"
13944 "#include E<lt>limits.hE<gt>\n"
13945 "#include E<lt>errno.hE<gt>\n"
13946 msgstr ""
13947 "   新しい名前空間でシェルコマンドを実行する子プロセスを作成する。\n"
13948 "   ユーザー名前空間を作成する際に UID と GID のマッピングを\n"
13949 "   指定することができる。\n"
13950 "*/\n"
13951 "#define _GNU_SOURCE\n"
13952 "#include E<lt>sched.hE<gt>\n"
13953 "#include E<lt>unistd.hE<gt>\n"
13954 "#include E<lt>stdlib.hE<gt>\n"
13955 "#include E<lt>sys/wait.hE<gt>\n"
13956 "#include E<lt>signal.hE<gt>\n"
13957 "#include E<lt>fcntl.hE<gt>\n"
13958 "#include E<lt>stdio.hE<gt>\n"
13959 "#include E<lt>string.hE<gt>\n"
13960 "#include E<lt>limits.hE<gt>\n"
13961 "#include E<lt>errno.hE<gt>\n"
13962
13963 #. type: Plain text
13964 #: build/C/man7/user_namespaces.7:783
13965 #, no-wrap
13966 msgid ""
13967 "/* A simple error-handling function: print an error message based\n"
13968 "   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
13969 msgstr ""
13970 "/* 簡単なエラー処理関数: \\\\(aqerrno\\\\(aq の値に基づいて\n"
13971 "   エラーメッセージを出力し、呼び出し元プロセスを終了する。 */\n"
13972
13973 #. type: Plain text
13974 #: build/C/man7/user_namespaces.7:786
13975 #, no-wrap
13976 msgid ""
13977 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
13978 "                        } while (0)\n"
13979 msgstr ""
13980 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
13981 "                        } while (0)\n"
13982
13983 #. type: Plain text
13984 #: build/C/man7/user_namespaces.7:791
13985 #, no-wrap
13986 msgid ""
13987 "struct child_args {\n"
13988 "    char **argv;        /* Command to be executed by child, with args */\n"
13989 "    int    pipe_fd[2];  /* Pipe used to synchronize parent and child */\n"
13990 "};\n"
13991 msgstr ""
13992 "struct child_args {\n"
13993 "    char **argv;        /* 子プロセスが実行するコマンドと引き数 */\n"
13994 "    int    pipe_fd[2];  /* 親プロセスと子プロセスを同期するためのパイプ */\n"
13995 "};\n"
13996
13997 #. type: Plain text
13998 #: build/C/man7/user_namespaces.7:793
13999 #, no-wrap
14000 msgid "static int verbose;\n"
14001 msgstr "static int verbose;\n"
14002
14003 #. type: Plain text
14004 #: build/C/man7/user_namespaces.7:826
14005 #, no-wrap
14006 msgid ""
14007 "static void\n"
14008 "usage(char *pname)\n"
14009 "{\n"
14010 "    fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n"
14011 "    fprintf(stderr, \"Create a child process that executes a shell \"\n"
14012 "            \"command in a new user namespace,\\en\"\n"
14013 "            \"and possibly also other new namespace(s).\\en\\en\");\n"
14014 "    fprintf(stderr, \"Options can be:\\en\\en\");\n"
14015 "#define fpe(str) fprintf(stderr, \"    %s\", str);\n"
14016 "    fpe(\"-i          New IPC namespace\\en\");\n"
14017 "    fpe(\"-m          New mount namespace\\en\");\n"
14018 "    fpe(\"-n          New network namespace\\en\");\n"
14019 "    fpe(\"-p          New PID namespace\\en\");\n"
14020 "    fpe(\"-u          New UTS namespace\\en\");\n"
14021 "    fpe(\"-U          New user namespace\\en\");\n"
14022 "    fpe(\"-M uid_map  Specify UID map for user namespace\\en\");\n"
14023 "    fpe(\"-G gid_map  Specify GID map for user namespace\\en\");\n"
14024 "    fpe(\"-z          Map user\\(aqs UID and GID to 0 in user namespace\\en\");\n"
14025 "    fpe(\"            (equivalent to: -M \\(aq0 E<lt>uidE<gt> 1\\(aq -G \\(aq0 E<lt>gidE<gt> 1\\(aq)\\en\");\n"
14026 "    fpe(\"-v          Display verbose messages\\en\");\n"
14027 "    fpe(\"\\en\");\n"
14028 "    fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n"
14029 "    fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n"
14030 "    fpe(\"\\en\");\n"
14031 "    fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n"
14032 "    fpe(\"\\en\");\n"
14033 "    fpe(\"    ID-inside-ns   ID-outside-ns   len\\en\");\n"
14034 "    fpe(\"\\en\");\n"
14035 "    fpe(\"A map string can contain multiple records, separated\"\n"
14036 "        \" by commas;\\en\");\n"
14037 "    fpe(\"the commas are replaced by newlines before writing\"\n"
14038 "        \" to map files.\\en\");\n"
14039 msgstr ""
14040 "static void\n"
14041 "usage(char *pname)\n"
14042 "{\n"
14043 "    fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n"
14044 "    fprintf(stderr, \"Create a child process that executes a shell \"\n"
14045 "            \"command in a new user namespace,\\en\"\n"
14046 "            \"and possibly also other new namespace(s).\\en\\en\");\n"
14047 "    fprintf(stderr, \"Options can be:\\en\\en\");\n"
14048 "#define fpe(str) fprintf(stderr, \"    %s\", str);\n"
14049 "    fpe(\"-i          New IPC namespace\\en\");\n"
14050 "    fpe(\"-m          New mount namespace\\en\");\n"
14051 "    fpe(\"-n          New network namespace\\en\");\n"
14052 "    fpe(\"-p          New PID namespace\\en\");\n"
14053 "    fpe(\"-u          New UTS namespace\\en\");\n"
14054 "    fpe(\"-U          New user namespace\\en\");\n"
14055 "    fpe(\"-M uid_map  Specify UID map for user namespace\\en\");\n"
14056 "    fpe(\"-G gid_map  Specify GID map for user namespace\\en\");\n"
14057 "    fpe(\"-z          Map user\\(aqs UID and GID to 0 in user namespace\\en\");\n"
14058 "    fpe(\"            (equivalent to: -M \\(aq0 E<lt>uidE<gt> 1\\(aq -G \\(aq0 E<lt>gidE<gt> 1\\(aq)\\en\");\n"
14059 "    fpe(\"-v          Display verbose messages\\en\");\n"
14060 "    fpe(\"\\en\");\n"
14061 "    fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n"
14062 "    fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n"
14063 "    fpe(\"\\en\");\n"
14064 "    fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n"
14065 "    fpe(\"\\en\");\n"
14066 "    fpe(\"    ID-inside-ns   ID-outside-ns   len\\en\");\n"
14067 "    fpe(\"\\en\");\n"
14068 "    fpe(\"A map string can contain multiple records, separated\"\n"
14069 "        \" by commas;\\en\");\n"
14070 "    fpe(\"the commas are replaced by newlines before writing\"\n"
14071 "        \" to map files.\\en\");\n"
14072
14073 #. type: Plain text
14074 #: build/C/man7/user_namespaces.7:834
14075 #, no-wrap
14076 msgid ""
14077 "/* Update the mapping file \\(aqmap_file\\(aq, with the value provided in\n"
14078 "   \\(aqmapping\\(aq, a string that defines a UID or GID mapping. A UID or\n"
14079 "   GID mapping consists of one or more newline-delimited records\n"
14080 "   of the form:\n"
14081 msgstr ""
14082 "/* マッピングファイル \\(aqmap_file\\(aq を \\(aqmapping\\(aq で指定\n"
14083 "   された値で更新する。 \\(aqmapping\\(aq は UID や GID マッピングを\n"
14084 "   定義する文字列である。 UID や GID マッピングは以下の形式の改行\n"
14085 "   で区切られた 1 つ以上のレコードである。\n"
14086
14087 #. type: Plain text
14088 #: build/C/man7/user_namespaces.7:836
14089 #, no-wrap
14090 msgid "       ID_inside-ns    ID-outside-ns   length\n"
14091 msgstr "       NS 内 ID        NS 外 ID        長さ\n"
14092
14093 #. type: Plain text
14094 #: build/C/man7/user_namespaces.7:841
14095 #, no-wrap
14096 msgid ""
14097 "   Requiring the user to supply a string that contains newlines is\n"
14098 "   of course inconvenient for command-line use. Thus, we permit the\n"
14099 "   use of commas to delimit records in this string, and replace them\n"
14100 "   with newlines before writing the string to the file. */\n"
14101 msgstr ""
14102 "   ユーザーに改行を含む文字列を指定するのを求めるのは、\n"
14103 "   コマンドラインを使う場合にはもちろん不便なことである。\n"
14104 "   そのため、 この文字列でレコードを区切るのにカンマを\n"
14105 "   使えるようにして、ファイルにこの文字列を書き込む前に\n"
14106 "   カンマを改行に置換する。 */\n"
14107
14108 #. type: Plain text
14109 #: build/C/man7/user_namespaces.7:847
14110 #, no-wrap
14111 msgid ""
14112 "static void\n"
14113 "update_map(char *mapping, char *map_file)\n"
14114 "{\n"
14115 "    int fd, j;\n"
14116 "    size_t map_len;     /* Length of \\(aqmapping\\(aq */\n"
14117 msgstr ""
14118 "static void\n"
14119 "update_map(char *mapping, char *map_file)\n"
14120 "{\n"
14121 "    int fd, j;\n"
14122 "    size_t map_len;     /* \\(aqmapping\\(aq の長さ */\n"
14123
14124 #. type: Plain text
14125 #: build/C/man7/user_namespaces.7:849
14126 #, no-wrap
14127 msgid "    /* Replace commas in mapping string with newlines */\n"
14128 msgstr "    /* マッピング文字列内のカンマを改行で置換する */\n"
14129
14130 #. type: Plain text
14131 #: build/C/man7/user_namespaces.7:854
14132 #, no-wrap
14133 msgid ""
14134 "    map_len = strlen(mapping);\n"
14135 "    for (j = 0; j E<lt> map_len; j++)\n"
14136 "        if (mapping[j] == \\(aq,\\(aq)\n"
14137 "            mapping[j] = \\(aq\\en\\(aq;\n"
14138 msgstr ""
14139 "    map_len = strlen(mapping);\n"
14140 "    for (j = 0; j E<lt> map_len; j++)\n"
14141 "        if (mapping[j] == \\(aq,\\(aq)\n"
14142 "            mapping[j] = \\(aq\\en\\(aq;\n"
14143
14144 #. type: Plain text
14145 #: build/C/man7/user_namespaces.7:861
14146 #, no-wrap
14147 msgid ""
14148 "    fd = open(map_file, O_RDWR);\n"
14149 "    if (fd == -1) {\n"
14150 "        fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n"
14151 "                strerror(errno));\n"
14152 "        exit(EXIT_FAILURE);\n"
14153 "    }\n"
14154 msgstr ""
14155 "    fd = open(map_file, O_RDWR);\n"
14156 "    if (fd == -1) {\n"
14157 "        fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n"
14158 "                strerror(errno));\n"
14159 "        exit(EXIT_FAILURE);\n"
14160 "    }\n"
14161
14162 #. type: Plain text
14163 #: build/C/man7/user_namespaces.7:867
14164 #, no-wrap
14165 msgid ""
14166 "    if (write(fd, mapping, map_len) != map_len) {\n"
14167 "        fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n"
14168 "                strerror(errno));\n"
14169 "        exit(EXIT_FAILURE);\n"
14170 "    }\n"
14171 msgstr ""
14172 "    if (write(fd, mapping, map_len) != map_len) {\n"
14173 "        fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n"
14174 "                strerror(errno));\n"
14175 "        exit(EXIT_FAILURE);\n"
14176 "    }\n"
14177
14178 #. type: Plain text
14179 #: build/C/man7/user_namespaces.7:870
14180 #, no-wrap
14181 msgid ""
14182 "    close(fd);\n"
14183 "}\n"
14184 msgstr ""
14185 "    close(fd);\n"
14186 "}\n"
14187
14188 #. type: Plain text
14189 #: build/C/man7/user_namespaces.7:876
14190 #, no-wrap
14191 msgid ""
14192 "static int              /* Start function for cloned child */\n"
14193 "childFunc(void *arg)\n"
14194 "{\n"
14195 "    struct child_args *args = (struct child_args *) arg;\n"
14196 "    char ch;\n"
14197 msgstr ""
14198 "static int              /* クローンされた子プロセスの開始関数 */\n"
14199 "childFunc(void *arg)\n"
14200 "{\n"
14201 "    struct child_args *args = (struct child_args *) arg;\n"
14202 "    char ch;\n"
14203
14204 #. type: Plain text
14205 #: build/C/man7/user_namespaces.7:881
14206 #, no-wrap
14207 msgid ""
14208 "    /* Wait until the parent has updated the UID and GID mappings.\n"
14209 "       See the comment in main(). We wait for end of file on a\n"
14210 "       pipe that will be closed by the parent process once it has\n"
14211 "       updated the mappings. */\n"
14212 msgstr ""
14213 "    /* 親プロセスが UID と GID マッピングを更新するまで待つ。\n"
14214 "       main() のコメントを参照。 パイプの end of file を待つ。\n"
14215 "       親プロセスが一旦マッピングを更新すると、\n"
14216 "       パイプはクローズされる。 */\n"
14217
14218 #. type: Plain text
14219 #: build/C/man7/user_namespaces.7:890
14220 #, no-wrap
14221 msgid ""
14222 "    close(args-E<gt>pipe_fd[1]);    /* Close our descriptor for the write\n"
14223 "                                   end of the pipe so that we see EOF\n"
14224 "                                   when parent closes its descriptor */\n"
14225 "    if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n"
14226 "        fprintf(stderr,\n"
14227 "                \"Failure in child: read from pipe returned != 0\\en\");\n"
14228 "        exit(EXIT_FAILURE);\n"
14229 "    }\n"
14230 msgstr ""
14231 "    close(args-E<gt>pipe_fd[1]);    /* パイプのこちら側の書き込み端のディスク\n"
14232 "                                       リプターをクローズする。これにより\n"
14233 "                                       親プロセスがディスクリプタをクローズ\n"
14234 "                                       すると EOF が見えるようになる。 */\n"
14235 "    if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n"
14236 "        fprintf(stderr,\n"
14237 "                \"Failure in child: read from pipe returned != 0\\en\");\n"
14238 "        exit(EXIT_FAILURE);\n"
14239 "    }\n"
14240
14241 #. type: Plain text
14242 #: build/C/man7/user_namespaces.7:892
14243 #, no-wrap
14244 msgid "    /* Execute a shell command */\n"
14245 msgstr "    /* シェルコマンドを実行する */\n"
14246
14247 #. type: Plain text
14248 #: build/C/man7/user_namespaces.7:897
14249 #, no-wrap
14250 msgid ""
14251 "    printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n"
14252 "    execvp(args-E<gt>argv[0], args-E<gt>argv);\n"
14253 "    errExit(\"execvp\");\n"
14254 "}\n"
14255 msgstr ""
14256 "    printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n"
14257 "    execvp(args-E<gt>argv[0], args-E<gt>argv);\n"
14258 "    errExit(\"execvp\");\n"
14259 "}\n"
14260
14261 #. type: Plain text
14262 #: build/C/man7/user_namespaces.7:899
14263 #, no-wrap
14264 msgid "#define STACK_SIZE (1024 * 1024)\n"
14265 msgstr "#define STACK_SIZE (1024 * 1024)\n"
14266
14267 #. type: Plain text
14268 #: build/C/man7/user_namespaces.7:901
14269 #, no-wrap
14270 msgid "static char child_stack[STACK_SIZE];    /* Space for child\\(aqs stack */\n"
14271 msgstr "static char child_stack[STACK_SIZE];    /* 子プロセスのスタック空間 */\n"
14272
14273 #. type: Plain text
14274 #: build/C/man7/user_namespaces.7:912
14275 #, no-wrap
14276 msgid ""
14277 "int\n"
14278 "main(int argc, char *argv[])\n"
14279 "{\n"
14280 "    int flags, opt, map_zero;\n"
14281 "    pid_t child_pid;\n"
14282 "    struct child_args args;\n"
14283 "    char *uid_map, *gid_map;\n"
14284 "    const int MAP_BUF_SIZE = 100;\n"
14285 "    char map_buf[MAP_BUF_SIZE];\n"
14286 "    char map_path[PATH_MAX];\n"
14287 msgstr ""
14288 "int\n"
14289 "main(int argc, char *argv[])\n"
14290 "{\n"
14291 "    int flags, opt, map_zero;\n"
14292 "    pid_t child_pid;\n"
14293 "    struct child_args args;\n"
14294 "    char *uid_map, *gid_map;\n"
14295 "    const int MAP_BUF_SIZE = 100;\n"
14296 "    char map_buf[MAP_BUF_SIZE];\n"
14297 "    char map_path[PATH_MAX];\n"
14298
14299 #. type: Plain text
14300 #: build/C/man7/user_namespaces.7:919
14301 #, no-wrap
14302 msgid ""
14303 "    /* Parse command-line options. The initial \\(aq+\\(aq character in\n"
14304 "       the final getopt() argument prevents GNU-style permutation\n"
14305 "       of command-line options. That\\(aqs useful, since sometimes\n"
14306 "       the \\(aqcommand\\(aq to be executed by this program itself\n"
14307 "       has command-line options. We don\\(aqt want getopt() to treat\n"
14308 "       those as options to this program. */\n"
14309 msgstr ""
14310 "    /* コマンドラインオプションを解析する。\n"
14311 "       最後の getopt() 引き数の最初の \\(aq+\\(aq 文字は\n"
14312 "       GNU 風のコマンドラインオプションの並び換えを防止する。\n"
14313 "       このプログラム自身が実行する「コマンド」にコマンドライン\n"
14314 "       オプションが含まれる場合があるからである。\n"
14315 "       getopt() にこれらをこのプログラムのオプションとして\n"
14316 "       扱ってほしくはないのだ。 */\n"
14317
14318 #. type: Plain text
14319 #: build/C/man7/user_namespaces.7:940
14320 #, no-wrap
14321 msgid ""
14322 "    flags = 0;\n"
14323 "    verbose = 0;\n"
14324 "    gid_map = NULL;\n"
14325 "    uid_map = NULL;\n"
14326 "    map_zero = 0;\n"
14327 "    while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n"
14328 "        switch (opt) {\n"
14329 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
14330 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
14331 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
14332 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
14333 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
14334 "        case \\(aqv\\(aq: verbose = 1;                  break;\n"
14335 "        case \\(aqz\\(aq: map_zero = 1;                 break;\n"
14336 "        case \\(aqM\\(aq: uid_map = optarg;             break;\n"
14337 "        case \\(aqG\\(aq: gid_map = optarg;             break;\n"
14338 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
14339 "        default:  usage(argv[0]);\n"
14340 "        }\n"
14341 "    }\n"
14342 msgstr ""
14343 "    flags = 0;\n"
14344 "    verbose = 0;\n"
14345 "    gid_map = NULL;\n"
14346 "    uid_map = NULL;\n"
14347 "    map_zero = 0;\n"
14348 "    while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n"
14349 "        switch (opt) {\n"
14350 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
14351 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
14352 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
14353 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
14354 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
14355 "        case \\(aqv\\(aq: verbose = 1;                  break;\n"
14356 "        case \\(aqz\\(aq: map_zero = 1;                 break;\n"
14357 "        case \\(aqM\\(aq: uid_map = optarg;             break;\n"
14358 "        case \\(aqG\\(aq: gid_map = optarg;             break;\n"
14359 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
14360 "        default:  usage(argv[0]);\n"
14361 "        }\n"
14362 "    }\n"
14363
14364 #. type: Plain text
14365 #: build/C/man7/user_namespaces.7:942
14366 #, no-wrap
14367 msgid "    /* -M or -G without -U is nonsensical */\n"
14368 msgstr "    /* -U なしの -M や -G の指定は意味がない */\n"
14369
14370 #. type: Plain text
14371 #: build/C/man7/user_namespaces.7:947
14372 #, no-wrap
14373 msgid ""
14374 "    if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n"
14375 "                !(flags & CLONE_NEWUSER)) ||\n"
14376 "            (map_zero && (uid_map != NULL || gid_map != NULL)))\n"
14377 "        usage(argv[0]);\n"
14378 msgstr ""
14379 "    if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n"
14380 "                !(flags & CLONE_NEWUSER)) ||\n"
14381 "            (map_zero && (uid_map != NULL || gid_map != NULL)))\n"
14382 "        usage(argv[0]);\n"
14383
14384 #. type: Plain text
14385 #: build/C/man7/user_namespaces.7:949
14386 #, no-wrap
14387 msgid "    args.argv = &argv[optind];\n"
14388 msgstr "    args.argv = &argv[optind];\n"
14389
14390 #. type: Plain text
14391 #: build/C/man7/user_namespaces.7:959
14392 #, no-wrap
14393 msgid ""
14394 "    /* We use a pipe to synchronize the parent and child, in order to\n"
14395 "       ensure that the parent sets the UID and GID maps before the child\n"
14396 "       calls execve(). This ensures that the child maintains its\n"
14397 "       capabilities during the execve() in the common case where we\n"
14398 "       want to map the child\\(aqs effective user ID to 0 in the new user\n"
14399 "       namespace. Without this synchronization, the child would lose\n"
14400 "       its capabilities if it performed an execve() with nonzero\n"
14401 "       user IDs (see the capabilities(7) man page for details of the\n"
14402 "       transformation of a process\\(aqs capabilities during execve()). */\n"
14403 msgstr ""
14404 "    /* 親プログラムと子プロセスを同期するためにパイプを使っている。\n"
14405 "       これは、子プロセスが execve() を呼び出す前に、親プロセスにより\n"
14406 "       UID と GID マップが設定されることを保証するためである。\n"
14407 "       これにより、新しいユーザー名前空間において子プロセスの実効\n"
14408 "       ユーザー ID を 0 にマッピングしたいという通常の状況で、\n"
14409 "       子プロセスが execve() 実行中にそのケーパビリティを維持する\n"
14410 "       ことができる。 この同期を行わないと、 0 以外のユーザー ID で\n"
14411 "       execve() を実行した際に、子プロセスがそのケーパビリティを失う\n"
14412 "       ことになる (execve() 実行中のプロセスのケーパビリティの変化の\n"
14413 "       詳細については capabilities(7) マニュアルページを参照)。 */\n"
14414
14415 #. type: Plain text
14416 #: build/C/man7/user_namespaces.7:962
14417 #, no-wrap
14418 msgid ""
14419 "    if (pipe(args.pipe_fd) == -1)\n"
14420 "        errExit(\"pipe\");\n"
14421 msgstr ""
14422 "    if (pipe(args.pipe_fd) == -1)\n"
14423 "        errExit(\"pipe\");\n"
14424
14425 #. type: Plain text
14426 #: build/C/man7/user_namespaces.7:964
14427 #, no-wrap
14428 msgid "    /* Create the child in new namespace(s) */\n"
14429 msgstr "    /* 新しい名前空間で子プロセスを作成する */\n"
14430
14431 #. type: Plain text
14432 #: build/C/man7/user_namespaces.7:969
14433 #, no-wrap
14434 msgid ""
14435 "    child_pid = clone(childFunc, child_stack + STACK_SIZE,\n"
14436 "                      flags | SIGCHLD, &args);\n"
14437 "    if (child_pid == -1)\n"
14438 "        errExit(\"clone\");\n"
14439 msgstr ""
14440 "    child_pid = clone(childFunc, child_stack + STACK_SIZE,\n"
14441 "                      flags | SIGCHLD, &args);\n"
14442 "    if (child_pid == -1)\n"
14443 "        errExit(\"clone\");\n"
14444
14445 #. type: Plain text
14446 #: build/C/man7/user_namespaces.7:971
14447 #, no-wrap
14448 msgid "    /* Parent falls through to here */\n"
14449 msgstr "    /* 親プロセスはここを実行する */\n"
14450
14451 #. type: Plain text
14452 #: build/C/man7/user_namespaces.7:975
14453 #, no-wrap
14454 msgid ""
14455 "    if (verbose)\n"
14456 "        printf(\"%s: PID of child created by clone() is %ld\\en\",\n"
14457 "                argv[0], (long) child_pid);\n"
14458 msgstr ""
14459 "    if (verbose)\n"
14460 "        printf(\"%s: PID of child created by clone() is %ld\\en\",\n"
14461 "                argv[0], (long) child_pid);\n"
14462
14463 #. type: Plain text
14464 #: build/C/man7/user_namespaces.7:977
14465 #, no-wrap
14466 msgid "    /* Update the UID and GID maps in the child */\n"
14467 msgstr "    /* 子プロセスの UID と GID のマッピングを更新する */\n"
14468
14469 #. type: Plain text
14470 #: build/C/man7/user_namespaces.7:996
14471 #, no-wrap
14472 msgid ""
14473 "    if (uid_map != NULL || map_zero) {\n"
14474 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/uid_map\",\n"
14475 "                (long) child_pid);\n"
14476 "        if (map_zero) {\n"
14477 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getuid());\n"
14478 "            uid_map = map_buf;\n"
14479 "        }\n"
14480 "        update_map(uid_map, map_path);\n"
14481 "    }\n"
14482 "    if (gid_map != NULL || map_zero) {\n"
14483 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/gid_map\",\n"
14484 "                (long) child_pid);\n"
14485 "        if (map_zero) {\n"
14486 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getgid());\n"
14487 "            gid_map = map_buf;\n"
14488 "        }\n"
14489 "        update_map(gid_map, map_path);\n"
14490 "    }\n"
14491 msgstr ""
14492 "    if (uid_map != NULL || map_zero) {\n"
14493 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/uid_map\",\n"
14494 "                (long) child_pid);\n"
14495 "        if (map_zero) {\n"
14496 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getuid());\n"
14497 "            uid_map = map_buf;\n"
14498 "        }\n"
14499 "        update_map(uid_map, map_path);\n"
14500 "    }\n"
14501 "    if (gid_map != NULL || map_zero) {\n"
14502 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/gid_map\",\n"
14503 "                (long) child_pid);\n"
14504 "        if (map_zero) {\n"
14505 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getgid());\n"
14506 "            gid_map = map_buf;\n"
14507 "        }\n"
14508 "        update_map(gid_map, map_path);\n"
14509 "    }\n"
14510
14511 #. type: Plain text
14512 #: build/C/man7/user_namespaces.7:999
14513 #, no-wrap
14514 msgid ""
14515 "    /* Close the write end of the pipe, to signal to the child that we\n"
14516 "       have updated the UID and GID maps */\n"
14517 msgstr ""
14518 "    /* パイプの書き込み端をクローズし、子プロセスに UID と GID の\n"
14519 "       マッピングが更新されたことを知らせる */\n"
14520
14521 #. type: Plain text
14522 #: build/C/man7/user_namespaces.7:1001
14523 #, no-wrap
14524 msgid "    close(args.pipe_fd[1]);\n"
14525 msgstr "    close(args.pipe_fd[1]);\n"
14526
14527 #. type: Plain text
14528 #: build/C/man7/user_namespaces.7:1004
14529 #, no-wrap
14530 msgid ""
14531 "    if (waitpid(child_pid, NULL, 0) == -1)      /* Wait for child */\n"
14532 "        errExit(\"waitpid\");\n"
14533 msgstr ""
14534 "    if (waitpid(child_pid, NULL, 0) == -1)      /* 子プロセスを待つ */\n"
14535 "        errExit(\"waitpid\");\n"
14536
14537 #. type: Plain text
14538 #: build/C/man7/user_namespaces.7:1007
14539 #, no-wrap
14540 msgid ""
14541 "    if (verbose)\n"
14542 "        printf(\"%s: terminating\\en\", argv[0]);\n"
14543 msgstr ""
14544 "    if (verbose)\n"
14545 "        printf(\"%s: terminating\\en\", argv[0]);\n"
14546
14547 #. type: Plain text
14548 #: build/C/man7/user_namespaces.7:1010
14549 #, no-wrap
14550 msgid ""
14551 "    exit(EXIT_SUCCESS);\n"
14552 "}\n"
14553 msgstr ""
14554 "    exit(EXIT_SUCCESS);\n"
14555 "}\n"
14556
14557 #.  From the shadow package
14558 #.  From the shadow package
14559 #.  From the shadow package
14560 #.  From the shadow package
14561 #. type: Plain text
14562 #: build/C/man7/user_namespaces.7:1024
14563 msgid ""
14564 "B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<setns>(2), B<unshare>(2), "
14565 "B<proc>(5), B<subgid>(5), B<subuid>(5), B<credentials>(7), "
14566 "B<capabilities>(7), B<namespaces>(7), B<pid_namespaces>(7)"
14567 msgstr ""
14568 "B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<setns>(2), B<unshare>(2), "
14569 "B<proc>(5), B<subgid>(5), B<subuid>(5), B<credentials>(7), "
14570 "B<capabilities>(7), B<namespaces>(7), B<pid_namespaces>(7)"
14571
14572 #. type: Plain text
14573 #: build/C/man7/user_namespaces.7:1027
14574 msgid ""
14575 "The kernel source file I<Documentation/namespaces/resource-control.txt>."
14576 msgstr ""
14577 "カーネルのソースファイル I<Documentation/namespaces/resource-control.txt>"
14578
14579 #. type: TH
14580 #: build/C/man2/seccomp.2:27
14581 #, no-wrap
14582 msgid "SECCOMP"
14583 msgstr "SECCOMP"
14584
14585 #. type: Plain text
14586 #: build/C/man2/seccomp.2:30
14587 msgid "seccomp - operate on Secure Computing state of the process"
14588 msgstr ""
14589
14590 #.  Kees Cook noted: Anything that uses SECCOMP_RET_TRACE returns will
14591 #.                   need <sys/ptrace.h>
14592 #. type: Plain text
14593 #: build/C/man2/seccomp.2:39
14594 #, no-wrap
14595 msgid ""
14596 "B<#include E<lt>linux/seccomp.hE<gt>>\n"
14597 "B<#include E<lt>linux/filter.hE<gt>>\n"
14598 "B<#include E<lt>linux/audit.hE<gt>>\n"
14599 "B<#include E<lt>linux/signal.hE<gt>>\n"
14600 "B<#include E<lt>sys/ptrace.hE<gt>>\n"
14601 msgstr ""
14602 "B<#include E<lt>linux/seccomp.hE<gt>>\n"
14603 "B<#include E<lt>linux/filter.hE<gt>>\n"
14604 "B<#include E<lt>linux/audit.hE<gt>>\n"
14605 "B<#include E<lt>linux/signal.hE<gt>>\n"
14606 "B<#include E<lt>sys/ptrace.hE<gt>>\n"
14607
14608 #. type: Plain text
14609 #: build/C/man2/seccomp.2:42
14610 #, no-wrap
14611 msgid "B<int seccomp(unsigned int >I<operation>B<, unsigned int >I<flags>B<, void *>I<args>B<);>\n"
14612 msgstr "B<int seccomp(unsigned int >I<operation>B<, unsigned int >I<flags>B<, void *>I<args>B<);>\n"
14613
14614 #. type: Plain text
14615 #: build/C/man2/seccomp.2:48
14616 msgid ""
14617 "The B<seccomp>()  system call operates on the Secure Computing (seccomp) "
14618 "state of the calling process."
14619 msgstr ""
14620
14621 #. type: Plain text
14622 #: build/C/man2/seccomp.2:52
14623 msgid "Currently, Linux supports the following I<operation> values:"
14624 msgstr ""
14625
14626 #. type: TP
14627 #: build/C/man2/seccomp.2:52
14628 #, no-wrap
14629 msgid "B<SECCOMP_SET_MODE_STRICT>"
14630 msgstr "B<SECCOMP_SET_MODE_STRICT>"
14631
14632 #. type: Plain text
14633 #: build/C/man2/seccomp.2:66
14634 msgid ""
14635 "The only system calls that the calling thread is permitted to make are "
14636 "B<read>(2), B<write>(2), B<_exit>(2), and B<sigreturn>(2).  Other system "
14637 "calls result in the delivery of a B<SIGKILL> signal.  Strict secure "
14638 "computing mode is useful for number-crunching applications that may need to "
14639 "execute untrusted byte code, perhaps obtained by reading from a pipe or "
14640 "socket."
14641 msgstr ""
14642
14643 #. type: Plain text
14644 #: build/C/man2/seccomp.2:70
14645 msgid ""
14646 "This operation is available only if the kernel is configured with "
14647 "B<CONFIG_SECCOMP> enabled."
14648 msgstr ""
14649
14650 #. type: Plain text
14651 #: build/C/man2/seccomp.2:76
14652 msgid "The value of I<flags> must be 0, and I<args> must be NULL."
14653 msgstr ""
14654
14655 #. type: Plain text
14656 #: build/C/man2/seccomp.2:78
14657 msgid "This operation is functionally identical to the call:"
14658 msgstr ""
14659
14660 #. type: Plain text
14661 #: build/C/man2/seccomp.2:80
14662 #, no-wrap
14663 msgid "    prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);\n"
14664 msgstr "    prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);\n"
14665
14666 #. type: TP
14667 #: build/C/man2/seccomp.2:80
14668 #, no-wrap
14669 msgid "B<SECCOMP_SET_MODE_FILTER>"
14670 msgstr "B<SECCOMP_SET_MODE_FILTER>"
14671
14672 #. type: Plain text
14673 #: build/C/man2/seccomp.2:95
14674 msgid ""
14675 "The system calls allowed are defined by a pointer to a Berkeley Packet "
14676 "Filter (BPF) passed via I<args>.  This argument is a pointer to a I<struct\\ "
14677 "sock_fprog>; it can be designed to filter arbitrary system calls and system "
14678 "call arguments.  If the filter is invalid, B<seccomp>()  fails, returning "
14679 "B<EINVAL> in I<errno>."
14680 msgstr ""
14681
14682 #. type: Plain text
14683 #: build/C/man2/seccomp.2:107
14684 msgid ""
14685 "If B<fork>(2)  or B<clone>(2)  is allowed by the filter, any child processes "
14686 "will be constrained to the same system call filters as the parent.  If "
14687 "B<execve>(2)  is allowed, the existing filters will be preserved across a "
14688 "call to B<execve>(2)."
14689 msgstr ""
14690
14691 #. type: Plain text
14692 #: build/C/man2/seccomp.2:117
14693 msgid ""
14694 "In order to use the B<SECCOMP_SET_MODE_FILTER> operation, either the caller "
14695 "must have the B<CAP_SYS_ADMIN> capability, or the thread must already have "
14696 "the I<no_new_privs> bit set.  If that bit was not already set by an ancestor "
14697 "of this thread, the thread must make the following call:"
14698 msgstr ""
14699
14700 #. type: Plain text
14701 #: build/C/man2/seccomp.2:119
14702 #, no-wrap
14703 msgid "    prctl(PR_SET_NO_NEW_PRIVS, 1);\n"
14704 msgstr "    prctl(PR_SET_NO_NEW_PRIVS, 1);\n"
14705
14706 #. type: Plain text
14707 #: build/C/man2/seccomp.2:138
14708 msgid ""
14709 "Otherwise, the B<SECCOMP_SET_MODE_FILTER> operation will fail and return "
14710 "B<EACCES> in I<errno>.  This requirement ensures that an unprivileged "
14711 "process cannot apply a malicious filter and then invoke a set-user-ID or "
14712 "other privileged program using B<execve>(2), thus potentially compromising "
14713 "that program.  (Such a malicious filter might, for example, cause an attempt "
14714 "to use B<setuid>(2)  to set the caller's user IDs to non-zero values to "
14715 "instead return 0 without actually making the system call.  Thus, the program "
14716 "might be tricked into retaining superuser privileges in circumstances where "
14717 "it is possible to influence it to do dangerous things because it did not "
14718 "actually drop privileges.)"
14719 msgstr ""
14720
14721 #. type: Plain text
14722 #: build/C/man2/seccomp.2:146
14723 msgid ""
14724 "If B<prctl>(2)  or B<seccomp>(2)  is allowed by the attached filter, further "
14725 "filters may be added.  This will increase evaluation time, but allows for "
14726 "further reduction of the attack surface during execution of a thread."
14727 msgstr ""
14728
14729 #. type: Plain text
14730 #: build/C/man2/seccomp.2:152
14731 msgid ""
14732 "The B<SECCOMP_SET_MODE_FILTER> operation is available only if the kernel is "
14733 "configured with B<CONFIG_SECCOMP_FILTER> enabled."
14734 msgstr ""
14735
14736 #. type: Plain text
14737 #: build/C/man2/seccomp.2:156
14738 msgid ""
14739 "When I<flags> is 0, this operation is functionally identical to the call:"
14740 msgstr ""
14741
14742 #. type: Plain text
14743 #: build/C/man2/seccomp.2:158
14744 #, no-wrap
14745 msgid "    prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, args);\n"
14746 msgstr "    prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, args);\n"
14747
14748 #. type: Plain text
14749 #: build/C/man2/seccomp.2:162
14750 msgid "The recognized I<flags> are:"
14751 msgstr ""
14752
14753 #. type: TP
14754 #: build/C/man2/seccomp.2:163
14755 #, no-wrap
14756 msgid "B<SECCOMP_FILTER_FLAG_TSYNC>"
14757 msgstr "B<SECCOMP_FILTER_FLAG_TSYNC>"
14758
14759 #. type: Plain text
14760 #: build/C/man2/seccomp.2:171
14761 msgid ""
14762 "When adding a new filter, synchronize all other threads of the calling "
14763 "process to the same seccomp filter tree.  A \"filter tree\" is the ordered "
14764 "list of filters attached to a thread.  (Attaching identical filters in "
14765 "separate B<seccomp>()  calls results in different filters from this "
14766 "perspective.)"
14767 msgstr ""
14768
14769 #. type: Plain text
14770 #: build/C/man2/seccomp.2:179
14771 msgid ""
14772 "If any thread cannot synchronize to the same filter tree, the call will not "
14773 "attach the new seccomp filter, and will fail, returning the first thread ID "
14774 "found that cannot synchronize.  Synchronization will fail if another thread "
14775 "in the same process is in B<SECCOMP_MODE_STRICT> or if it has attached new "
14776 "seccomp filters to itself, diverging from the calling thread's filter tree."
14777 msgstr ""
14778
14779 #. type: SS
14780 #: build/C/man2/seccomp.2:180
14781 #, no-wrap
14782 msgid "Filters"
14783 msgstr ""
14784
14785 #. type: Plain text
14786 #: build/C/man2/seccomp.2:185
14787 msgid ""
14788 "When adding filters via B<SECCOMP_SET_MODE_FILTER>, I<args> points to a "
14789 "filter program:"
14790 msgstr ""
14791
14792 #. type: Plain text
14793 #: build/C/man2/seccomp.2:193
14794 #, no-wrap
14795 msgid ""
14796 "struct sock_fprog {\n"
14797 "    unsigned short      len;    /* Number of BPF instructions */\n"
14798 "    struct sock_filter *filter; /* Pointer to array of\n"
14799 "                                   BPF instructions */\n"
14800 "};\n"
14801 msgstr ""
14802 "struct sock_fprog {\n"
14803 "    unsigned short      len;    /* Number of BPF instructions */\n"
14804 "    struct sock_filter *filter; /* Pointer to array of\n"
14805 "                                   BPF instructions */\n"
14806 "};\n"
14807
14808 #. type: Plain text
14809 #: build/C/man2/seccomp.2:197
14810 msgid "Each program must contain one or more BPF instructions:"
14811 msgstr ""
14812
14813 #. type: Plain text
14814 #: build/C/man2/seccomp.2:206
14815 #, no-wrap
14816 msgid ""
14817 "struct sock_filter {            /* Filter block */\n"
14818 "    __u16 code;                 /* Actual filter code */\n"
14819 "    __u8  jt;                   /* Jump true */\n"
14820 "    __u8  jf;                   /* Jump false */\n"
14821 "    __u32 k;                    /* Generic multiuse field */\n"
14822 "};\n"
14823 msgstr ""
14824 "struct sock_filter {            /* Filter block */\n"
14825 "    __u16 code;                 /* Actual filter code */\n"
14826 "    __u8  jt;                   /* Jump true */\n"
14827 "    __u8  jf;                   /* Jump false */\n"
14828 "    __u32 k;                    /* Generic multiuse field */\n"
14829 "};\n"
14830
14831 #. type: Plain text
14832 #: build/C/man2/seccomp.2:213
14833 msgid ""
14834 "When executing the instructions, the BPF program operates on the system call "
14835 "information made available (i.e., use the B<BPF_ABS> addressing mode) as a "
14836 "buffer of the following form:"
14837 msgstr ""
14838
14839 #. type: Plain text
14840 #: build/C/man2/seccomp.2:223
14841 #, no-wrap
14842 msgid ""
14843 "struct seccomp_data {\n"
14844 "    int   nr;                   /* System call number */\n"
14845 "    __u32 arch;                 /* AUDIT_ARCH_* value\n"
14846 "                                   (see E<lt>linux/audit.hE<gt>) */\n"
14847 "    __u64 instruction_pointer;  /* CPU instruction pointer */\n"
14848 "    __u64 args[6];              /* Up to 6 system call arguments */\n"
14849 "};\n"
14850 msgstr ""
14851 "struct seccomp_data {\n"
14852 "    int   nr;                   /* System call number */\n"
14853 "    __u32 arch;                 /* AUDIT_ARCH_* value\n"
14854 "                                   (see E<lt>linux/audit.hE<gt>) */\n"
14855 "    __u64 instruction_pointer;  /* CPU instruction pointer */\n"
14856 "    __u64 args[6];              /* Up to 6 system call arguments */\n"
14857 "};\n"
14858
14859 #. type: Plain text
14860 #: build/C/man2/seccomp.2:234
14861 msgid ""
14862 "A seccomp filter returns a 32-bit value consisting of two parts: the most "
14863 "significant 16 bits (corresponding to the mask defined by the constant "
14864 "B<SECCOMP_RET_ACTION>)  contain one of the \"action\" values listed below; "
14865 "the least significant 16-bits (defined by the constant B<SECCOMP_RET_DATA>)  "
14866 "are \"data\" to be associated with this return value."
14867 msgstr ""
14868
14869 #. type: Plain text
14870 #: build/C/man2/seccomp.2:242
14871 msgid ""
14872 "If multiple filters exist, they are all executed, in reverse order of their "
14873 "addition to the filter tree (i.e., the most recently installed filter is "
14874 "executed first).  The return value for the evaluation of a given system call "
14875 "is the first-seen B<SECCOMP_RET_ACTION> value of highest precedence (along "
14876 "with its accompanying data)  returned by execution of all of the filters."
14877 msgstr ""
14878
14879 #. type: Plain text
14880 #: build/C/man2/seccomp.2:245
14881 msgid ""
14882 "In decreasing order of precedence, the values that may be returned by a "
14883 "seccomp filter are:"
14884 msgstr ""
14885
14886 #. type: TP
14887 #: build/C/man2/seccomp.2:245
14888 #, no-wrap
14889 msgid "B<SECCOMP_RET_KILL>"
14890 msgstr "B<SECCOMP_RET_KILL>"
14891
14892 #. type: Plain text
14893 #: build/C/man2/seccomp.2:254
14894 msgid ""
14895 "This value results in the process exiting immediately without executing the "
14896 "system call.  The process terminates as though killed by a B<SIGSYS> signal "
14897 "(I<not> B<SIGKILL>)."
14898 msgstr ""
14899
14900 #. type: TP
14901 #: build/C/man2/seccomp.2:254
14902 #, no-wrap
14903 msgid "B<SECCOMP_RET_TRAP>"
14904 msgstr "B<SECCOMP_RET_TRAP>"
14905
14906 #. type: Plain text
14907 #: build/C/man2/seccomp.2:264
14908 msgid ""
14909 "This value results in the kernel sending a B<SIGSYS> signal to the "
14910 "triggering process without executing the system call.  Various fields will "
14911 "be set in the I<siginfo_t> structure (see B<sigaction>(2))  associated with "
14912 "signal:"
14913 msgstr ""
14914
14915 #. type: Plain text
14916 #: build/C/man2/seccomp.2:269
14917 msgid "I<si_signo> will contain B<SIGSYS>."
14918 msgstr ""
14919
14920 #. type: Plain text
14921 #: build/C/man2/seccomp.2:272
14922 msgid "I<si_call_addr> will show the address of the system call instruction."
14923 msgstr ""
14924
14925 #. type: Plain text
14926 #: build/C/man2/seccomp.2:277
14927 msgid ""
14928 "I<si_syscall> and I<si_arch> will indicate which system call was attempted."
14929 msgstr ""
14930
14931 #. type: Plain text
14932 #: build/C/man2/seccomp.2:281
14933 msgid "I<si_code> will contain B<SYS_SECCOMP>."
14934 msgstr ""
14935
14936 #. type: Plain text
14937 #: build/C/man2/seccomp.2:286
14938 msgid ""
14939 "I<si_errno> will contain the B<SECCOMP_RET_DATA> portion of the filter "
14940 "return value."
14941 msgstr ""
14942
14943 #. type: Plain text
14944 #: build/C/man2/seccomp.2:295
14945 msgid ""
14946 "The program counter will be as though the system call happened (i.e., it "
14947 "will not point to the system call instruction).  The return value register "
14948 "will contain an architecture-dependent value; if resuming execution, set it "
14949 "to something appropriate for the system call.  (The architecture dependency "
14950 "is because replacing it with B<ENOSYS> could overwrite some useful "
14951 "information.)"
14952 msgstr ""
14953
14954 #. type: TP
14955 #: build/C/man2/seccomp.2:295
14956 #, no-wrap
14957 msgid "B<SECCOMP_RET_ERRNO>"
14958 msgstr "B<SECCOMP_RET_ERRNO>"
14959
14960 #. type: Plain text
14961 #: build/C/man2/seccomp.2:302
14962 msgid ""
14963 "This value results in the B<SECCOMP_RET_DATA> portion of the filter's return "
14964 "value being passed to user space as the I<errno> value without executing the "
14965 "system call."
14966 msgstr ""
14967
14968 #. type: TP
14969 #: build/C/man2/seccomp.2:302
14970 #, no-wrap
14971 msgid "B<SECCOMP_RET_TRACE>"
14972 msgstr "B<SECCOMP_RET_TRACE>"
14973
14974 #. type: Plain text
14975 #: build/C/man2/seccomp.2:312
14976 msgid ""
14977 "When returned, this value will cause the kernel to attempt to notify a "
14978 "B<ptrace>(2)-based tracer prior to executing the system call.  If there is "
14979 "no tracer present, the system call is not executed and returns a failure "
14980 "status with I<errno> set to B<ENOSYS>."
14981 msgstr ""
14982
14983 #. type: Plain text
14984 #: build/C/man2/seccomp.2:323
14985 msgid ""
14986 "A tracer will be notified if it requests B<PTRACE_O_TRACESECCOMP> using "
14987 "I<ptrace(PTRACE_SETOPTIONS)>.  The tracer will be notified of a "
14988 "B<PTRACE_EVENT_SECCOMP> and the B<SECCOMP_RET_DATA> portion of the filter's "
14989 "return value will be available to the tracer via B<PTRACE_GETEVENTMSG>."
14990 msgstr ""
14991
14992 #. type: Plain text
14993 #: build/C/man2/seccomp.2:330
14994 msgid ""
14995 "The tracer can skip the system call by changing the system call number to "
14996 "-1.  Alternatively, the tracer can change the system call requested by "
14997 "changing the system call to a valid system call number.  If the tracer asks "
14998 "to skip the system call, then the system call will appear to return the "
14999 "value that the tracer puts in the return value register."
15000 msgstr ""
15001
15002 #. type: Plain text
15003 #: build/C/man2/seccomp.2:339
15004 msgid ""
15005 "The seccomp check will not be run again after the tracer is notified.  (This "
15006 "means that seccomp-based sandboxes B<must not> allow use of "
15007 "B<ptrace>(2)\\(emeven of other sandboxed processes\\(emwithout extreme care; "
15008 "ptracers can use this mechanism to escape from the seccomp sandbox.)"
15009 msgstr ""
15010
15011 #. type: TP
15012 #: build/C/man2/seccomp.2:339
15013 #, no-wrap
15014 msgid "B<SECCOMP_RET_ALLOW>"
15015 msgstr "B<SECCOMP_RET_ALLOW>"
15016
15017 #. type: Plain text
15018 #: build/C/man2/seccomp.2:342
15019 msgid "This value results in the system call being executed."
15020 msgstr ""
15021
15022 #. type: Plain text
15023 #: build/C/man2/seccomp.2:358
15024 msgid ""
15025 "On success, B<seccomp>()  returns 0.  On error, if "
15026 "B<SECCOMP_FILTER_FLAG_TSYNC> was used, the return value is the ID of the "
15027 "thread that caused the synchronization failure.  (This ID is a kernel thread "
15028 "ID of the type returned by B<clone>(2)  and B<gettid>(2).)  On other errors, "
15029 "-1 is returned, and I<errno> is set to indicate the cause of the error."
15030 msgstr ""
15031
15032 #. type: Plain text
15033 #: build/C/man2/seccomp.2:361
15034 msgid "B<seccomp>()  can fail for the following reasons:"
15035 msgstr "B<seccomp>()  は以下のエラーで失敗する。"
15036
15037 #. type: TP
15038 #: build/C/man2/seccomp.2:361
15039 #, no-wrap
15040 msgid "B<EACCESS>"
15041 msgstr "B<EACCESS>"
15042
15043 #. type: Plain text
15044 #: build/C/man2/seccomp.2:369
15045 msgid ""
15046 "The caller did not have the B<CAP_SYS_ADMIN> capability, or had not set "
15047 "I<no_new_privs> before using B<SECCOMP_SET_MODE_FILTER>."
15048 msgstr ""
15049
15050 #. type: Plain text
15051 #: build/C/man2/seccomp.2:373
15052 msgid "I<args> was not a valid address."
15053 msgstr ""
15054
15055 #. type: Plain text
15056 #: build/C/man2/seccomp.2:380
15057 msgid ""
15058 "I<operation> is unknown; or I<flags> are invalid for the given I<operation>."
15059 msgstr ""
15060
15061 #. type: Plain text
15062 #: build/C/man2/seccomp.2:387
15063 msgid ""
15064 "I<operation> included B<BPF_ABS>, but the specified offset was not aligned "
15065 "to a 32-bit boundary or exceeded I<sizeof(struct\\ seccomp_data)>."
15066 msgstr ""
15067
15068 #.  See kernel/seccomp.c::seccomp_may_assign_mode() in 3.18 sources
15069 #. type: Plain text
15070 #: build/C/man2/seccomp.2:393
15071 msgid ""
15072 "A secure computing mode has already been set, and I<operation> differs from "
15073 "the existing setting."
15074 msgstr ""
15075
15076 #.  See stub kernel/seccomp.c::seccomp_set_mode_filter() in 3.18 sources
15077 #. type: Plain text
15078 #: build/C/man2/seccomp.2:402
15079 msgid ""
15080 "I<operation> specified B<SECCOMP_SET_MODE_FILTER>, but the kernel was not "
15081 "built with B<CONFIG_SECCOMP_FILTER> enabled."
15082 msgstr ""
15083
15084 #. type: Plain text
15085 #: build/C/man2/seccomp.2:413
15086 msgid ""
15087 "I<operation> specified B<SECCOMP_SET_MODE_FILTER>, but the filter program "
15088 "pointed to by I<args> was not valid or the length of the filter program was "
15089 "zero or exceeded B<BPF_MAXINSNS> (4096) instructions.  B<EINVAL>"
15090 msgstr ""
15091
15092 #.  ENOMEM in kernel/seccomp.c::seccomp_attach_filter() in 3.18 sources
15093 #. type: Plain text
15094 #: build/C/man2/seccomp.2:426
15095 msgid ""
15096 "The total length of all filter programs attached to the calling thread would "
15097 "exceed B<MAX_INSNS_PER_PATH> (32768) instructions.  Note that for the "
15098 "purposes of calculating this limit, each already existing filter program "
15099 "incurs an overhead penalty of 4 instructions."
15100 msgstr ""
15101
15102 #. type: Plain text
15103 #: build/C/man2/seccomp.2:430
15104 msgid ""
15105 "Another thread caused a failure during thread sync, but its ID could not be "
15106 "determined."
15107 msgstr ""
15108
15109 #.  FIXME . Add glibc version
15110 #. type: Plain text
15111 #: build/C/man2/seccomp.2:435
15112 msgid "The B<seccomp>()  system call first appeared in Linux 3.17."
15113 msgstr "B<seccomp>() システムコールは Linux 3.17 で初めて登場した。"
15114
15115 #. type: Plain text
15116 #: build/C/man2/seccomp.2:439
15117 msgid "The B<seccomp>()  system call is a nonstandard Linux extension."
15118 msgstr "B<seccomp>() システムコールは非標準の Linux 拡張である。"
15119
15120 #. type: Plain text
15121 #: build/C/man2/seccomp.2:446
15122 msgid ""
15123 "The I<Seccomp> field of the I</proc/[pid]/status> file provides a method of "
15124 "viewing the seccomp mode of a process; see B<proc>(5)."
15125 msgstr ""
15126
15127 #. type: Plain text
15128 #: build/C/man2/seccomp.2:453
15129 msgid ""
15130 "B<seccomp>()  provides a superset of the functionality provided by the "
15131 "B<prctl>(2)  B<PR_SET_SECCOMP> operation (which does not support I<flags>)."
15132 msgstr ""
15133
15134 #. type: SS
15135 #: build/C/man2/seccomp.2:453
15136 #, no-wrap
15137 msgid "Seccomp-specific BPF details"
15138 msgstr ""
15139
15140 #. type: Plain text
15141 #: build/C/man2/seccomp.2:455
15142 msgid "Note the following BPF details specific to seccomp filters:"
15143 msgstr ""
15144
15145 #. type: Plain text
15146 #: build/C/man2/seccomp.2:463
15147 msgid ""
15148 "The B<BPF_H> and B<BPF_B> size modifiers are not supported: all operations "
15149 "must load and store (4-byte) words (B<BPF_W>)."
15150 msgstr ""
15151
15152 #. type: Plain text
15153 #: build/C/man2/seccomp.2:469
15154 msgid ""
15155 "To access the contents of the I<seccomp_data> buffer, use the B<BPF_ABS> "
15156 "addressing mode modifier."
15157 msgstr ""
15158
15159 #. type: Plain text
15160 #: build/C/man2/seccomp.2:476
15161 msgid ""
15162 "The B<BPF_LEN> addressing mode modifier yields an immediate mode operand "
15163 "whose value is the size of the I<seccomp_data> buffer."
15164 msgstr ""
15165
15166 #. type: Plain text
15167 #: build/C/man2/seccomp.2:482
15168 msgid ""
15169 "The program below accepts four or more arguments.  The first three arguments "
15170 "are a system call number, a numeric architecture identifier, and an error "
15171 "number.  The program uses these values to construct a BPF filter that is "
15172 "used at run time to perform the following checks:"
15173 msgstr ""
15174
15175 #. type: IP
15176 #: build/C/man2/seccomp.2:482
15177 #, no-wrap
15178 msgid "[1]"
15179 msgstr "[1]"
15180
15181 #. type: Plain text
15182 #: build/C/man2/seccomp.2:486
15183 msgid ""
15184 "If the program is not running on the specified architecture, the BPF filter "
15185 "causes system calls to fail with the error B<ENOSYS>."
15186 msgstr ""
15187
15188 #. type: IP
15189 #: build/C/man2/seccomp.2:486
15190 #, no-wrap
15191 msgid "[2]"
15192 msgstr "[2]"
15193
15194 #. type: Plain text
15195 #: build/C/man2/seccomp.2:491
15196 msgid ""
15197 "If the program attempts to execute the system call with the specified "
15198 "number, the BPF filter causes the system call to fail, with I<errno> being "
15199 "set to the specified error number."
15200 msgstr ""
15201
15202 #. type: Plain text
15203 #: build/C/man2/seccomp.2:500
15204 msgid ""
15205 "The remaining command-line arguments specify the pathname and additional "
15206 "arguments of a program that the example program should attempt to execute "
15207 "using B<execve>(3)  (a library function that employs the B<execve>(2)  "
15208 "system call).  Some example runs of the program are shown below."
15209 msgstr ""
15210
15211 #. type: Plain text
15212 #: build/C/man2/seccomp.2:504
15213 msgid ""
15214 "First, we display the architecture that we are running on (x86-64)  and then "
15215 "construct a shell function that looks up system call numbers on this "
15216 "architecture:"
15217 msgstr ""
15218
15219 #. type: Plain text
15220 #: build/C/man2/seccomp.2:513
15221 #, no-wrap
15222 msgid ""
15223 "$ B<uname -m>\n"
15224 "x86_64\n"
15225 "$ B<syscall_nr() {\n"
15226 "    cat /usr/src/linux/arch/x86/syscalls/syscall_64.tbl | \\e\n"
15227 "    awk '$2 != \"x32\" && $3 == \"'$1'\" { print $1 }'\n"
15228 "}>\n"
15229 msgstr ""
15230 "$ B<uname -m>\n"
15231 "x86_64\n"
15232 "$ B<syscall_nr() {\n"
15233 "    cat /usr/src/linux/arch/x86/syscalls/syscall_64.tbl | \\e\n"
15234 "    awk '$2 != \"x32\" && $3 == \"'$1'\" { print $1 }'\n"
15235 "}>\n"
15236
15237 #. type: Plain text
15238 #: build/C/man2/seccomp.2:520
15239 msgid ""
15240 "When the BPF filter rejects a system call (case [2] above), it causes the "
15241 "system call to fail with the error number specified on the command line.  In "
15242 "the experiments shown here, we'll use error number 99:"
15243 msgstr ""
15244
15245 #. type: Plain text
15246 #: build/C/man2/seccomp.2:525
15247 #, no-wrap
15248 msgid ""
15249 "$ B<errno 99>\n"
15250 "EADDRNOTAVAIL 99 Cannot assign requested address\n"
15251 msgstr ""
15252 "$ B<errno 99>\n"
15253 "EADDRNOTAVAIL 99 Cannot assign requested address\n"
15254
15255 #. type: Plain text
15256 #: build/C/man2/seccomp.2:533
15257 msgid ""
15258 "In the following example, we attempt to run the command B<whoami>(1), but "
15259 "the BPF filter rejects the B<execve>(2)  system call, so that the command is "
15260 "not even executed:"
15261 msgstr ""
15262
15263 #. type: Plain text
15264 #: build/C/man2/seccomp.2:544
15265 #, no-wrap
15266 msgid ""
15267 "$ B<syscall_nr execve>\n"
15268 "59\n"
15269 "$ B<./a.out>\n"
15270 "Usage: ./a.out E<lt>syscall_nrE<gt> E<lt>archE<gt> E<lt>errnoE<gt> E<lt>progE<gt> [E<lt>argsE<gt>]\n"
15271 "Hint for E<lt>archE<gt>: AUDIT_ARCH_I386: 0x40000003\n"
15272 "                 AUDIT_ARCH_X86_64: 0xC000003E\n"
15273 "$ B<./a.out 59 0xC000003E 99 /bin/whoami>\n"
15274 "execv: Cannot assign requested address\n"
15275 msgstr ""
15276 "$ B<syscall_nr execve>\n"
15277 "59\n"
15278 "$ B<./a.out>\n"
15279 "Usage: ./a.out E<lt>syscall_nrE<gt> E<lt>archE<gt> E<lt>errnoE<gt> E<lt>progE<gt> [E<lt>argsE<gt>]\n"
15280 "Hint for E<lt>archE<gt>: AUDIT_ARCH_I386: 0x40000003\n"
15281 "                 AUDIT_ARCH_X86_64: 0xC000003E\n"
15282 "$ B<./a.out 59 0xC000003E 99 /bin/whoami>\n"
15283 "execv: Cannot assign requested address\n"
15284
15285 #. type: Plain text
15286 #: build/C/man2/seccomp.2:552
15287 msgid ""
15288 "In the next example, the BPF filter rejects the B<write>(2)  system call, so "
15289 "that, although it is successfully started, the B<whoami>(1)  command is not "
15290 "able to write output:"
15291 msgstr ""
15292
15293 #. type: Plain text
15294 #: build/C/man2/seccomp.2:558
15295 #, no-wrap
15296 msgid ""
15297 "$ B<syscall_nr write>\n"
15298 "1\n"
15299 "$ B<./a.out 1 0xC000003E 99 /bin/whoami>\n"
15300 msgstr ""
15301 "$ B<syscall_nr write>\n"
15302 "1\n"
15303 "$ B<./a.out 1 0xC000003E 99 /bin/whoami>\n"
15304
15305 #. type: Plain text
15306 #: build/C/man2/seccomp.2:565
15307 msgid ""
15308 "In the final example, the BPF filter rejects a system call that is not used "
15309 "by the B<whoami>(1)  command, so it is able to successfully execute and "
15310 "produce output:"
15311 msgstr ""
15312
15313 #. type: Plain text
15314 #: build/C/man2/seccomp.2:572
15315 #, no-wrap
15316 msgid ""
15317 "$ B<syscall_nr preadv>\n"
15318 "295\n"
15319 "$ B<./a.out 295 0xC000003E 99 /bin/whoami>\n"
15320 "cecilia\n"
15321 msgstr ""
15322 "$ B<syscall_nr preadv>\n"
15323 "295\n"
15324 "$ B<./a.out 295 0xC000003E 99 /bin/whoami>\n"
15325 "cecilia\n"
15326
15327 #. type: Plain text
15328 #: build/C/man2/seccomp.2:586
15329 #, no-wrap
15330 msgid ""
15331 "#include E<lt>errno.hE<gt>\n"
15332 "#include E<lt>stddef.hE<gt>\n"
15333 "#include E<lt>stdio.hE<gt>\n"
15334 "#include E<lt>stdlib.hE<gt>\n"
15335 "#include E<lt>unistd.hE<gt>\n"
15336 "#include E<lt>linux/audit.hE<gt>\n"
15337 "#include E<lt>linux/filter.hE<gt>\n"
15338 "#include E<lt>linux/seccomp.hE<gt>\n"
15339 "#include E<lt>sys/prctl.hE<gt>\n"
15340 msgstr ""
15341 "#include E<lt>errno.hE<gt>\n"
15342 "#include E<lt>stddef.hE<gt>\n"
15343 "#include E<lt>stdio.hE<gt>\n"
15344 "#include E<lt>stdlib.hE<gt>\n"
15345 "#include E<lt>unistd.hE<gt>\n"
15346 "#include E<lt>linux/audit.hE<gt>\n"
15347 "#include E<lt>linux/filter.hE<gt>\n"
15348 "#include E<lt>linux/seccomp.hE<gt>\n"
15349 "#include E<lt>sys/prctl.hE<gt>\n"
15350
15351 #. type: Plain text
15352 #: build/C/man2/seccomp.2:595
15353 #, no-wrap
15354 msgid ""
15355 "static int\n"
15356 "install_filter(int syscall_nr, int t_arch, int f_errno)\n"
15357 "{\n"
15358 "    struct sock_filter filter[] = {\n"
15359 "        /* [0] Load architecture from 'seccomp_data' buffer into\n"
15360 "               accumulator */\n"
15361 "        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,\n"
15362 "                 (offsetof(struct seccomp_data, arch))),\n"
15363 msgstr ""
15364 "static int\n"
15365 "install_filter(int syscall_nr, int t_arch, int f_errno)\n"
15366 "{\n"
15367 "    struct sock_filter filter[] = {\n"
15368 "        /* [0] Load architecture from 'seccomp_data' buffer into\n"
15369 "               accumulator */\n"
15370 "        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,\n"
15371 "                 (offsetof(struct seccomp_data, arch))),\n"
15372
15373 #. type: Plain text
15374 #: build/C/man2/seccomp.2:599
15375 #, no-wrap
15376 msgid ""
15377 "        /* [1] Jump forward 4 instructions if architecture does not\n"
15378 "               match 't_arch' */\n"
15379 "        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, t_arch, 0, 4),\n"
15380 msgstr ""
15381 "        /* [1] Jump forward 4 instructions if architecture does not\n"
15382 "               match 't_arch' */\n"
15383 "        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, t_arch, 0, 4),\n"
15384
15385 #. type: Plain text
15386 #: build/C/man2/seccomp.2:604
15387 #, no-wrap
15388 msgid ""
15389 "        /* [2] Load system call number from 'seccomp_data' buffer into\n"
15390 "               accumulator */\n"
15391 "        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,\n"
15392 "                 (offsetof(struct seccomp_data, nr))),\n"
15393 msgstr ""
15394 "        /* [2] Load system call number from 'seccomp_data' buffer into\n"
15395 "               accumulator */\n"
15396 "        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,\n"
15397 "                 (offsetof(struct seccomp_data, nr))),\n"
15398
15399 #. type: Plain text
15400 #: build/C/man2/seccomp.2:608
15401 #, no-wrap
15402 msgid ""
15403 "        /* [3] Jump forward 1 instruction if system call number\n"
15404 "               does not match 'syscall_nr' */\n"
15405 "        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, syscall_nr, 0, 1),\n"
15406 msgstr ""
15407 "        /* [3] Jump forward 1 instruction if system call number\n"
15408 "               does not match 'syscall_nr' */\n"
15409 "        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, syscall_nr, 0, 1),\n"
15410
15411 #. type: Plain text
15412 #: build/C/man2/seccomp.2:613
15413 #, no-wrap
15414 msgid ""
15415 "        /* [4] Matching architecture and system call: don't execute\n"
15416 "\t       the system call, and return 'f_errno' in 'errno' */\n"
15417 "        BPF_STMT(BPF_RET | BPF_K,\n"
15418 "                 SECCOMP_RET_ERRNO | (f_errno & SECCOMP_RET_DATA)),\n"
15419 msgstr ""
15420 "        /* [4] Matching architecture and system call: don't execute\n"
15421 "\t       the system call, and return 'f_errno' in 'errno' */\n"
15422 "        BPF_STMT(BPF_RET | BPF_K,\n"
15423 "                 SECCOMP_RET_ERRNO | (f_errno & SECCOMP_RET_DATA)),\n"
15424
15425 #. type: Plain text
15426 #: build/C/man2/seccomp.2:617
15427 #, no-wrap
15428 msgid ""
15429 "        /* [5] Destination of system call number mismatch: allow other\n"
15430 "               system calls */\n"
15431 "        BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),\n"
15432 msgstr ""
15433 "        /* [5] Destination of system call number mismatch: allow other\n"
15434 "               system calls */\n"
15435 "        BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),\n"
15436
15437 #. type: Plain text
15438 #: build/C/man2/seccomp.2:621
15439 #, no-wrap
15440 msgid ""
15441 "        /* [6] Destination of architecture mismatch: kill process */\n"
15442 "        BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_KILL),\n"
15443 "    };\n"
15444 msgstr ""
15445 "        /* [6] Destination of architecture mismatch: kill process */\n"
15446 "        BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_KILL),\n"
15447 "    };\n"
15448
15449 #. type: Plain text
15450 #: build/C/man2/seccomp.2:626
15451 #, no-wrap
15452 msgid ""
15453 "    struct sock_fprog prog = {\n"
15454 "        .len = (unsigned short) (sizeof(filter) / sizeof(filter[0])),\n"
15455 "        .filter = filter,\n"
15456 "    };\n"
15457 msgstr ""
15458 "    struct sock_fprog prog = {\n"
15459 "        .len = (unsigned short) (sizeof(filter) / sizeof(filter[0])),\n"
15460 "        .filter = filter,\n"
15461 "    };\n"
15462
15463 #. type: Plain text
15464 #: build/C/man2/seccomp.2:631
15465 #, no-wrap
15466 msgid ""
15467 "    if (seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog)) {\n"
15468 "        perror(\"seccomp\");\n"
15469 "        return 1;\n"
15470 "    }\n"
15471 msgstr ""
15472 "    if (seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog)) {\n"
15473 "        perror(\"seccomp\");\n"
15474 "        return 1;\n"
15475 "    }\n"
15476
15477 #. type: Plain text
15478 #: build/C/man2/seccomp.2:634
15479 #, no-wrap
15480 msgid ""
15481 "    return 0;\n"
15482 "}\n"
15483 msgstr ""
15484 "    return 0;\n"
15485 "}\n"
15486
15487 #. type: Plain text
15488 #: build/C/man2/seccomp.2:646
15489 #, no-wrap
15490 msgid ""
15491 "int\n"
15492 "main(int argc, char **argv)\n"
15493 "{\n"
15494 "    if (argc E<lt> 5) {\n"
15495 "        fprintf(stderr, \"Usage: \"\n"
15496 "                \"%s E<lt>syscall_nrE<gt> E<lt>archE<gt> E<lt>errnoE<gt> E<lt>progE<gt> [E<lt>argsE<gt>]\\en\"\n"
15497 "                \"Hint for E<lt>archE<gt>: AUDIT_ARCH_I386: 0x%X\\en\"\n"
15498 "                \"                 AUDIT_ARCH_X86_64: 0x%X\\en\"\n"
15499 "                \"\\en\", argv[0], AUDIT_ARCH_I386, AUDIT_ARCH_X86_64);\n"
15500 "        exit(EXIT_FAILURE);\n"
15501 "    }\n"
15502 msgstr ""
15503 "int\n"
15504 "main(int argc, char **argv)\n"
15505 "{\n"
15506 "    if (argc E<lt> 5) {\n"
15507 "        fprintf(stderr, \"Usage: \"\n"
15508 "                \"%s E<lt>syscall_nrE<gt> E<lt>archE<gt> E<lt>errnoE<gt> E<lt>progE<gt> [E<lt>argsE<gt>]\\en\"\n"
15509 "                \"Hint for E<lt>archE<gt>: AUDIT_ARCH_I386: 0x%X\\en\"\n"
15510 "                \"                 AUDIT_ARCH_X86_64: 0x%X\\en\"\n"
15511 "                \"\\en\", argv[0], AUDIT_ARCH_I386, AUDIT_ARCH_X86_64);\n"
15512 "        exit(EXIT_FAILURE);\n"
15513 "    }\n"
15514
15515 #. type: Plain text
15516 #: build/C/man2/seccomp.2:651
15517 #, no-wrap
15518 msgid ""
15519 "    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {\n"
15520 "        perror(\"prctl\");\n"
15521 "        exit(EXIT_FAILURE);\n"
15522 "    }\n"
15523 msgstr ""
15524 "    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {\n"
15525 "        perror(\"prctl\");\n"
15526 "        exit(EXIT_FAILURE);\n"
15527 "    }\n"
15528
15529 #. type: Plain text
15530 #: build/C/man2/seccomp.2:656
15531 #, no-wrap
15532 msgid ""
15533 "    if (install_filter(strtol(argv[1], NULL, 0),\n"
15534 "                       strtol(argv[2], NULL, 0),\n"
15535 "                       strtol(argv[3], NULL, 0)))\n"
15536 "        exit(EXIT_FAILURE);\n"
15537 msgstr ""
15538 "    if (install_filter(strtol(argv[1], NULL, 0),\n"
15539 "                       strtol(argv[2], NULL, 0),\n"
15540 "                       strtol(argv[3], NULL, 0)))\n"
15541 "        exit(EXIT_FAILURE);\n"
15542
15543 #. type: Plain text
15544 #: build/C/man2/seccomp.2:661
15545 #, no-wrap
15546 msgid ""
15547 "    execv(argv[4], &argv[4]);\n"
15548 "    perror(\"execv\");\n"
15549 "    exit(EXIT_FAILURE);\n"
15550 "}\n"
15551 msgstr ""
15552 "    execv(argv[4], &argv[4]);\n"
15553 "    perror(\"execv\");\n"
15554 "    exit(EXIT_FAILURE);\n"
15555 "}\n"
15556
15557 #. type: Plain text
15558 #: build/C/man2/seccomp.2:668
15559 msgid "B<prctl>(2), B<ptrace>(2), B<sigaction>(2), B<signal>(7), B<socket>(7)"
15560 msgstr "B<prctl>(2), B<ptrace>(2), B<sigaction>(2), B<signal>(7), B<socket>(7)"
15561
15562 #. type: Plain text
15563 #: build/C/man2/seccomp.2:673
15564 msgid ""
15565 "The kernel source files I<Documentation/networking/filter.txt> and "
15566 "I<Documentation/prctl/seccomp_filter.txt>."
15567 msgstr ""
15568 "カーネルのソースファイル I<Documentation/networking/filter.txt> と "
15569 "I<Documentation/prctl/seccomp_filter.txt>"
15570
15571 #. type: Plain text
15572 #: build/C/man2/seccomp.2:679
15573 msgid ""
15574 "McCanne, S. and Jacobson, V. (1992)  I<The BSD Packet Filter: A New "
15575 "Architecture for User-level Packet Capture>, Proceedings of the USENIX "
15576 "Winter 1993 Conference E<.UR http://www.tcpdump.org/papers/bpf-usenix93.pdf> "
15577 "E<.UE>"
15578 msgstr ""