OSDN Git Service

b96a87e21ce3ebaff4e3fe29b61612ab9639dc16
[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-11 04:00+0900\n"
10 "PO-Revision-Date: 2015-01-11 05:36+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/getsid.2:64 build/C/man2/iopl.2:79
378 #: build/C/man2/ioprio_set.2:179 build/C/man2/seteuid.2:83
379 #: build/C/man2/setgid.2:64 build/C/man2/setpgid.2:231
380 #: build/C/man2/setresuid.2:103 build/C/man2/setreuid.2:132
381 #: build/C/man2/setsid.2:62 build/C/man2/setuid.2:110 build/C/man3/ulimit.3:75
382 #, no-wrap
383 msgid "B<EPERM>"
384 msgstr "B<EPERM>"
385
386 #. type: Plain text
387 #: build/C/man2/acct.2:123
388 msgid ""
389 "The calling process has insufficient privilege to enable process "
390 "accounting.  On Linux the B<CAP_SYS_PACCT> capability is required."
391 msgstr ""
392 "呼び出したプロセスにはプロセス・アカウントを有効にするのに十分な特権がない。 "
393 "Linux では B<CAP_SYS_PACCT> ケーパビリティ (capability) が必要である。"
394
395 #. type: TP
396 #: build/C/man2/acct.2:123
397 #, no-wrap
398 msgid "B<EROFS>"
399 msgstr "B<EROFS>"
400
401 #. type: Plain text
402 #: build/C/man2/acct.2:127
403 msgid "I<filename> refers to a file on a read-only filesystem."
404 msgstr ""
405 "読み込みだけのファイルシステム上のファイルを I<filename> が参照している。"
406
407 #. type: TP
408 #: build/C/man2/acct.2:127
409 #, no-wrap
410 msgid "B<EUSERS>"
411 msgstr "B<EUSERS>"
412
413 #. type: Plain text
414 #: build/C/man2/acct.2:130
415 msgid "There are no more free file structures or we ran out of memory."
416 msgstr "使用可能なファイル構造体がないか、メモリが足りない。"
417
418 #. type: SH
419 #: build/C/man2/acct.2:130 build/C/man5/acct.5:153
420 #: build/C/man7/capabilities.7:1120 build/C/man2/capget.2:218
421 #: build/C/man7/credentials.7:287 build/C/man2/getgid.2:44
422 #: build/C/man2/getgroups.2:133 build/C/man2/getpid.2:46
423 #: build/C/man2/getpriority.2:157 build/C/man2/getresuid.2:67
424 #: build/C/man2/getrlimit.2:504 build/C/man2/getrusage.2:202
425 #: build/C/man2/getsid.2:79 build/C/man2/getuid.2:45
426 #: build/C/man3/group_member.3:55 build/C/man2/iopl.2:87
427 #: build/C/man2/ioprio_set.2:196 build/C/man2/ipc.2:45
428 #: build/C/man7/namespaces.7:359 build/C/man7/pid_namespaces.7:351
429 #: build/C/man2/seteuid.2:99 build/C/man2/setfsgid.2:75
430 #: build/C/man2/setfsuid.2:75 build/C/man2/setgid.2:71
431 #: build/C/man2/setpgid.2:250 build/C/man2/setresuid.2:109
432 #: build/C/man2/setreuid.2:148 build/C/man2/setsid.2:68
433 #: build/C/man2/setuid.2:117 build/C/man3/ulimit.3:78
434 #: build/C/man7/user_namespaces.7:645 build/C/man2/seccomp.2:435
435 #, no-wrap
436 msgid "CONFORMING TO"
437 msgstr "準拠"
438
439 #.  SVr4 documents an EBUSY error condition, but no EISDIR or ENOSYS.
440 #.  Also AIX and HP-UX document EBUSY (attempt is made
441 #.  to enable accounting when it is already enabled), as does Solaris
442 #.  (attempt is made to enable accounting using the same file that is
443 #.  currently being used).
444 #. type: Plain text
445 #: build/C/man2/acct.2:137
446 msgid "SVr4, 4.3BSD (but not POSIX)."
447 msgstr "SVr4, 4.3BSD (POSIX ではない)。"
448
449 #. type: SH
450 #: build/C/man2/acct.2:137 build/C/man5/acct.5:157
451 #: build/C/man7/capabilities.7:1126 build/C/man2/capget.2:220
452 #: build/C/man7/cpuset.7:1341 build/C/man7/credentials.7:293
453 #: build/C/man2/getgid.2:46 build/C/man2/getgroups.2:141
454 #: build/C/man2/getpid.2:48 build/C/man2/getpriority.2:160
455 #: build/C/man2/getresuid.2:70 build/C/man2/getrlimit.2:527
456 #: build/C/man2/getrusage.2:213 build/C/man2/getsid.2:81
457 #: build/C/man2/getuid.2:47 build/C/man2/iopl.2:91
458 #: build/C/man2/ioprio_set.2:198 build/C/man2/ipc.2:49
459 #: build/C/man2/seteuid.2:101 build/C/man2/setfsgid.2:79
460 #: build/C/man2/setfsuid.2:79 build/C/man2/setgid.2:73
461 #: build/C/man2/setpgid.2:272 build/C/man2/setresuid.2:112
462 #: build/C/man2/setreuid.2:154 build/C/man2/setsid.2:70
463 #: build/C/man2/setuid.2:122 build/C/man7/user_namespaces.7:648
464 #: build/C/man2/seccomp.2:439
465 #, no-wrap
466 msgid "NOTES"
467 msgstr "注意"
468
469 #. type: Plain text
470 #: build/C/man2/acct.2:140
471 msgid ""
472 "No accounting is produced for programs running when a system crash occurs.  "
473 "In particular, nonterminating processes are never accounted for."
474 msgstr ""
475 "システムがクラッシュした時に実行中だったプログラムのアカウントは生成されな"
476 "い。 特に、終了しないプログラムがアカウントされることはない。"
477
478 #. type: Plain text
479 #: build/C/man2/acct.2:143
480 msgid ""
481 "The structure of the records written to the accounting file is described in "
482 "B<acct>(5)."
483 msgstr ""
484 "アカウント用ファイルに書き込まれるレコードの構造体については B<acct>(5)  に説"
485 "明がある。"
486
487 #. type: SH
488 #: build/C/man2/acct.2:143 build/C/man5/acct.5:174
489 #: build/C/man7/capabilities.7:1183 build/C/man2/capget.2:228
490 #: build/C/man7/cpuset.7:1488 build/C/man7/credentials.7:304
491 #: build/C/man2/getgid.2:62 build/C/man2/getgroups.2:178
492 #: build/C/man2/getpid.2:100 build/C/man2/getpriority.2:232
493 #: build/C/man2/getresuid.2:86 build/C/man2/getrlimit.2:759
494 #: build/C/man2/getrusage.2:253 build/C/man2/getsid.2:84
495 #: build/C/man2/getuid.2:73 build/C/man3/group_member.3:57
496 #: build/C/man2/iopl.2:100 build/C/man2/ioprio_set.2:346 build/C/man2/ipc.2:57
497 #: build/C/man7/namespaces.7:364 build/C/man7/pid_namespaces.7:356
498 #: build/C/man2/seteuid.2:141 build/C/man2/setfsgid.2:123
499 #: build/C/man2/setfsuid.2:131 build/C/man2/setgid.2:83
500 #: build/C/man2/setpgid.2:340 build/C/man2/setresuid.2:132
501 #: build/C/man2/setreuid.2:194 build/C/man2/setsid.2:93
502 #: build/C/man2/setuid.2:145 build/C/man7/svipc.7:335 build/C/man3/ulimit.3:83
503 #: build/C/man7/user_namespaces.7:1011 build/C/man2/seccomp.2:662
504 #, no-wrap
505 msgid "SEE ALSO"
506 msgstr "関連項目"
507
508 #. type: Plain text
509 #: build/C/man2/acct.2:145
510 msgid "B<acct>(5)"
511 msgstr "B<acct>(5)"
512
513 #. type: SH
514 #: build/C/man2/acct.2:145 build/C/man5/acct.5:179
515 #: build/C/man7/capabilities.7:1205 build/C/man2/capget.2:232
516 #: build/C/man7/cpuset.7:1506 build/C/man7/credentials.7:340
517 #: build/C/man2/getgid.2:67 build/C/man2/getgroups.2:186
518 #: build/C/man2/getpid.2:111 build/C/man2/getpriority.2:241
519 #: build/C/man2/getresuid.2:92 build/C/man2/getrlimit.2:777
520 #: build/C/man2/getrusage.2:260 build/C/man2/getsid.2:88
521 #: build/C/man2/getuid.2:78 build/C/man3/group_member.3:62
522 #: build/C/man2/iopl.2:104 build/C/man2/ioprio_set.2:354 build/C/man2/ipc.2:70
523 #: build/C/man7/namespaces.7:377 build/C/man7/pid_namespaces.7:365
524 #: build/C/man2/seteuid.2:149 build/C/man2/setfsgid.2:128
525 #: build/C/man2/setfsuid.2:136 build/C/man2/setgid.2:90
526 #: build/C/man2/setpgid.2:347 build/C/man2/setresuid.2:142
527 #: build/C/man2/setreuid.2:203 build/C/man2/setsid.2:100
528 #: build/C/man2/setuid.2:153 build/C/man7/svipc.7:353 build/C/man3/ulimit.3:88
529 #: build/C/man7/user_namespaces.7:1027 build/C/man2/seccomp.2:678
530 #, no-wrap
531 msgid "COLOPHON"
532 msgstr "この文書について"
533
534 #. type: Plain text
535 #: build/C/man2/acct.2:153 build/C/man5/acct.5:187
536 #: build/C/man7/capabilities.7:1213 build/C/man2/capget.2:240
537 #: build/C/man7/cpuset.7:1514 build/C/man7/credentials.7:348
538 #: build/C/man2/getgid.2:75 build/C/man2/getgroups.2:194
539 #: build/C/man2/getpid.2:119 build/C/man2/getpriority.2:249
540 #: build/C/man2/getresuid.2:100 build/C/man2/getrlimit.2:785
541 #: build/C/man2/getrusage.2:268 build/C/man2/getsid.2:96
542 #: build/C/man2/getuid.2:86 build/C/man3/group_member.3:70
543 #: build/C/man2/iopl.2:112 build/C/man2/ioprio_set.2:362 build/C/man2/ipc.2:78
544 #: build/C/man7/namespaces.7:385 build/C/man7/pid_namespaces.7:373
545 #: build/C/man2/seteuid.2:157 build/C/man2/setfsgid.2:136
546 #: build/C/man2/setfsuid.2:144 build/C/man2/setgid.2:98
547 #: build/C/man2/setpgid.2:355 build/C/man2/setresuid.2:150
548 #: build/C/man2/setreuid.2:211 build/C/man2/setsid.2:108
549 #: build/C/man2/setuid.2:161 build/C/man7/svipc.7:361 build/C/man3/ulimit.3:96
550 #: build/C/man7/user_namespaces.7:1035 build/C/man2/seccomp.2:686
551 msgid ""
552 "This page is part of release 3.77 of the Linux I<man-pages> project.  A "
553 "description of the project, information about reporting bugs, and the latest "
554 "version of this page, can be found at \\%http://www.kernel.org/doc/man-"
555 "pages/."
556 msgstr ""
557 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.77 の一部\n"
558 "である。プロジェクトの説明とバグ報告に関する情報は\n"
559 "http://www.kernel.org/doc/man-pages/ に書かれている。"
560
561 #. type: TH
562 #: build/C/man5/acct.5:25
563 #, no-wrap
564 msgid "2008-06-15"
565 msgstr "2008-06-15"
566
567 #. type: Plain text
568 #: build/C/man5/acct.5:28
569 msgid "acct - process accounting file"
570 msgstr "acct - プロセス・アカウンティング・ファイル"
571
572 #. type: Plain text
573 #: build/C/man5/acct.5:30
574 msgid "B<#include E<lt>sys/acct.hE<gt>>"
575 msgstr "B<#include E<lt>sys/acct.hE<gt>>"
576
577 #. type: Plain text
578 #: build/C/man5/acct.5:36
579 msgid ""
580 "If the kernel is built with the process accounting option enabled "
581 "(B<CONFIG_BSD_PROCESS_ACCT>), then calling B<acct>(2)  starts process "
582 "accounting, for example:"
583 msgstr ""
584 "カーネルがプロセス・アカウンティングのオプション "
585 "(B<CONFIG_BSD_PROCESS_ACCT>)  を有効にして作成されていると、以下のように "
586 "B<acct>(2)  を呼び出すとプロセス・アカウンティングが開始される。"
587
588 #. type: Plain text
589 #: build/C/man5/acct.5:39
590 msgid "acct(\"/var/log/pacct\");"
591 msgstr "acct(\"/var/log/pacct\");"
592
593 #. type: Plain text
594 #: build/C/man5/acct.5:47
595 msgid ""
596 "When process accounting is enabled, the kernel writes a record to the "
597 "accounting file as each process on the system terminates.  This record "
598 "contains information about the terminated process, and is defined in "
599 "I<E<lt>sys/acct.hE<gt>> as follows:"
600 msgstr ""
601 "プロセス・アカウンティングが有効になっていると、カーネルは システム上の各プロ"
602 "セスが終了するたびにアカウンティングファイルに レコードを書き込む。 このレ"
603 "コードは、終了したプロセスに関する情報を保持するもので、 I<E<lt>sys/acct."
604 "hE<gt>> で以下のように定義されている。"
605
606 #. type: Plain text
607 #: build/C/man5/acct.5:51
608 #, no-wrap
609 msgid "#define ACCT_COMM 16\n"
610 msgstr "#define ACCT_COMM 16\n"
611
612 #. type: Plain text
613 #: build/C/man5/acct.5:53
614 #, no-wrap
615 msgid "typedef u_int16_t comp_t;\n"
616 msgstr "typedef u_int16_t comp_t;\n"
617
618 #. type: Plain text
619 #: build/C/man5/acct.5:77
620 #, no-wrap
621 msgid ""
622 "struct acct {\n"
623 "    char ac_flag;           /* Accounting flags */\n"
624 "    u_int16_t ac_uid;       /* Accounting user ID */\n"
625 "    u_int16_t ac_gid;       /* Accounting group ID */\n"
626 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
627 "    u_int32_t ac_btime;     /* Process creation time\n"
628 "                               (seconds since the Epoch) */\n"
629 "    comp_t    ac_utime;     /* User CPU time */\n"
630 "    comp_t    ac_stime;     /* System CPU time */\n"
631 "    comp_t    ac_etime;     /* Elapsed time */\n"
632 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
633 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
634 "    comp_t    ac_rw;        /* Blocks read or written (unused) */\n"
635 "    comp_t    ac_minflt;    /* Minor page faults */\n"
636 "    comp_t    ac_majflt;    /* Major page faults */\n"
637 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
638 "    u_int32_t ac_exitcode;  /* Process termination status\n"
639 "                               (see wait(2)) */\n"
640 "    char      ac_comm[ACCT_COMM+1];\n"
641 "                            /* Command name (basename of last\n"
642 "                               executed command; null-terminated) */\n"
643 "    char      ac_pad[I<X>];    /* padding bytes */\n"
644 "};\n"
645 msgstr ""
646 "struct acct {\n"
647 "    char ac_flag;           /* Accounting flags */\n"
648 "    u_int16_t ac_uid;       /* Accounting user ID */\n"
649 "    u_int16_t ac_gid;       /* Accounting group ID */\n"
650 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
651 "    u_int32_t ac_btime;     /* Process creation time\n"
652 "                               (seconds since the Epoch) */\n"
653 "    comp_t    ac_utime;     /* User CPU time */\n"
654 "    comp_t    ac_stime;     /* System CPU time */\n"
655 "    comp_t    ac_etime;     /* Elapsed time */\n"
656 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
657 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
658 "    comp_t    ac_rw;        /* Blocks read or written (unused) */\n"
659 "    comp_t    ac_minflt;    /* Minor page faults */\n"
660 "    comp_t    ac_majflt;    /* Major page faults */\n"
661 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
662 "    u_int32_t ac_exitcode;  /* Process termination status\n"
663 "                               (see wait(2)) */\n"
664 "    char      ac_comm[ACCT_COMM+1];\n"
665 "                            /* Command name (basename of last\n"
666 "                               executed command; null-terminated) */\n"
667 "    char      ac_pad[I<X>];    /* padding bytes */\n"
668 "};\n"
669
670 #. type: Plain text
671 #: build/C/man5/acct.5:84
672 #, no-wrap
673 msgid ""
674 "enum {          /* Bits that may be set in ac_flag field */\n"
675 "    AFORK = 0x01,           /* Has executed fork, but no exec */\n"
676 "    ASU   = 0x02,           /* Used superuser privileges */\n"
677 "    ACORE = 0x08,           /* Dumped core */\n"
678 "    AXSIG = 0x10            /* Killed by a signal */\n"
679 "};\n"
680 msgstr ""
681 "enum {          /* Bits that may be set in ac_flag field */\n"
682 "    AFORK = 0x01,           /* Has executed fork, but no exec */\n"
683 "    ASU   = 0x02,           /* Used superuser privileges */\n"
684 "    ACORE = 0x08,           /* Dumped core */\n"
685 "    AXSIG = 0x10            /* Killed by a signal */\n"
686 "};\n"
687
688 #. type: Plain text
689 #: build/C/man5/acct.5:94
690 msgid ""
691 "The I<comp_t> data type is a floating-point value consisting of a 3-bit, "
692 "base-8 exponent, and a 13-bit mantissa.  A value, I<c>, of this type can be "
693 "converted to a (long) integer as follows:"
694 msgstr ""
695 "データ型 I<comp_t> は浮動小数点値で、3 ビット幅の基数が 8 の指数部と 13 ビッ"
696 "ト幅の仮数部から 構成される。 I<comp_t> 型の値 I<c> は以下のようにして (long "
697 "型の) 整数に変換できる。"
698
699 #. type: Plain text
700 #: build/C/man5/acct.5:97
701 #, no-wrap
702 msgid "    v = (c & 0x1fff) E<lt>E<lt> (((c E<gt>E<gt> 13) & 0x7) * 3);\n"
703 msgstr "    v = (c & 0x1fff) E<lt>E<lt> (((c E<gt>E<gt> 13) & 0x7) * 3);\n"
704
705 #. type: Plain text
706 #: build/C/man5/acct.5:107
707 msgid ""
708 "The I<ac_utime>, I<ac_stime>, and I<ac_etime> fields measure time in \"clock "
709 "ticks\"; divide these values by I<sysconf(_SC_CLK_TCK)> to convert them to "
710 "seconds."
711 msgstr ""
712 "フィールド I<ac_utime>, I<ac_stime>, I<ac_etime> は \"clock ticks\" 単位で計"
713 "測した時間である。 これらの値を I<sysconf(_SC_CLK_TCK)> で割ると、秒に変換で"
714 "きる。"
715
716 #. type: SS
717 #: build/C/man5/acct.5:107
718 #, no-wrap
719 msgid "Version 3 accounting file format"
720 msgstr "バージョン 3 のアカウンティングファイルのフォーマット"
721
722 #. type: Plain text
723 #: build/C/man5/acct.5:122
724 msgid ""
725 "Since kernel 2.6.8, an optional alternative version of the accounting file "
726 "can be produced if the B<CONFIG_BSD_PROCESS_ACCT_V3> option is set when "
727 "building the kernel.  With this option is set, the records written to the "
728 "accounting file contain additional fields, and the width of I<c_uid> and "
729 "I<ac_gid> fields is widened from 16 to 32 bits (in line with the increased "
730 "size of UID and GIDs in Linux 2.4 and later).  The records are defined as "
731 "follows:"
732 msgstr ""
733 "カーネル 2.6.8 以降では、 別のバージョンのアカウンティングファイルを生成する"
734 "ことができ、 これを使うにはカーネル構築時に B<CONFIG_BSD_PROCESS_ACCT_V3> オ"
735 "プションが有効になっている必要がある。 このオプションが設定されると、アカウン"
736 "ティングファイルに書き込まれる レコードにフィールドが追加される。 また、"
737 "フィールド I<c_uid> と I<ac_gid> の幅が 16 ビットから 32 ビットに拡張される "
738 "(これは Linux 2.4 以降で UID と GID のサイズが増えているのに 対応したものであ"
739 "る)。 このレコードは以下のように定義されている。"
740
741 #. type: Plain text
742 #: build/C/man5/acct.5:147
743 #, no-wrap
744 msgid ""
745 "struct acct_v3 {\n"
746 "    char      ac_flag;      /* Flags */\n"
747 "    char      ac_version;   /* Always set to ACCT_VERSION (3) */\n"
748 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
749 "    u_int32_t ac_exitcode;  /* Process termination status */\n"
750 "    u_int32_t ac_uid;       /* Real user ID */\n"
751 "    u_int32_t ac_gid;       /* Real group ID */\n"
752 "    u_int32_t ac_pid;       /* Process ID */\n"
753 "    u_int32_t ac_ppid;      /* Parent process ID */\n"
754 "    u_int32_t ac_btime;     /* Process creation time */\n"
755 "    float     ac_etime;     /* Elapsed time */\n"
756 "    comp_t    ac_utime;     /* User CPU time */\n"
757 "    comp_t    ac_stime;     /* System time */\n"
758 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
759 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
760 "    comp_t    ac_rw;        /* Blocks read or written\n"
761 "                               (unused) */\n"
762 "    comp_t    ac_minflt;    /* Minor page faults */\n"
763 "    comp_t    ac_majflt;    /* Major page faults */\n"
764 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
765 "    char      ac_comm[ACCT_COMM]; /* Command name */\n"
766 "};\n"
767 msgstr ""
768 "struct acct_v3 {\n"
769 "    char      ac_flag;      /* Flags */\n"
770 "    char      ac_version;   /* Always set to ACCT_VERSION (3) */\n"
771 "    u_int16_t ac_tty;       /* Controlling terminal */\n"
772 "    u_int32_t ac_exitcode;  /* Process termination status */\n"
773 "    u_int32_t ac_uid;       /* Real user ID */\n"
774 "    u_int32_t ac_gid;       /* Real group ID */\n"
775 "    u_int32_t ac_pid;       /* Process ID */\n"
776 "    u_int32_t ac_ppid;      /* Parent process ID */\n"
777 "    u_int32_t ac_btime;     /* Process creation time */\n"
778 "    float     ac_etime;     /* Elapsed time */\n"
779 "    comp_t    ac_utime;     /* User CPU time */\n"
780 "    comp_t    ac_stime;     /* System time */\n"
781 "    comp_t    ac_mem;       /* Average memory usage (kB) */\n"
782 "    comp_t    ac_io;        /* Characters transferred (unused) */\n"
783 "    comp_t    ac_rw;        /* Blocks read or written\n"
784 "                               (unused) */\n"
785 "    comp_t    ac_minflt;    /* Minor page faults */\n"
786 "    comp_t    ac_majflt;    /* Major page faults */\n"
787 "    comp_t    ac_swaps;     /* Number of swaps (unused) */\n"
788 "    char      ac_comm[ACCT_COMM]; /* Command name */\n"
789 "};\n"
790
791 #. type: SH
792 #: build/C/man5/acct.5:149 build/C/man7/cpuset.7:1338
793 #: build/C/man2/getresuid.2:60 build/C/man2/getrlimit.2:499
794 #: build/C/man2/getsid.2:75 build/C/man2/ioprio_set.2:193
795 #: build/C/man2/setfsgid.2:71 build/C/man2/setfsuid.2:71
796 #: build/C/man2/setresuid.2:107 build/C/man2/seccomp.2:430
797 #, no-wrap
798 msgid "VERSIONS"
799 msgstr "バージョン"
800
801 #. type: Plain text
802 #: build/C/man5/acct.5:153
803 msgid "The I<acct_v3> structure is defined in glibc since version 2.6."
804 msgstr "I<acct_v3> 構造体はバージョン 2.6 以降の glibc で定義されている。"
805
806 #. type: Plain text
807 #: build/C/man5/acct.5:157
808 msgid ""
809 "Process accounting originated on BSD.  Although it is present on most "
810 "systems, it is not standardized, and the details vary somewhat between "
811 "systems."
812 msgstr ""
813 "プロセスアカウンティングは BSD 由来である。 この機能はほとんどのシステムに存"
814 "在するが、標準化されておらず、 その詳細はシステムによりいくらか異なる。"
815
816 #. type: Plain text
817 #: build/C/man5/acct.5:160
818 msgid ""
819 "Records in the accounting file are ordered by termination time of the "
820 "process."
821 msgstr "アカウンティングファイルのレコードは、プロセスの終了時刻の順序となる。"
822
823 #. type: Plain text
824 #: build/C/man5/acct.5:167
825 msgid ""
826 "In kernels up to and including 2.6.9, a separate accounting record is "
827 "written for each thread created using the NPTL threading library; since "
828 "Linux 2.6.10, a single accounting record is written for the entire process "
829 "on termination of the last thread in the process."
830 msgstr ""
831 "バージョン 2.6.9 以前のカーネルでは、 NPTL スレッドライブラリを使って作成され"
832 "たスレッドでは スレッド毎に別々のアカウンティングレコードが書き込まれてい"
833 "た。 Linux 2.6.10 以降では、プロセス内の最後のスレッドが終了すると、 プロセス"
834 "全体についてのアカウンティングレコードが一つだけ書き込まれる。"
835
836 #. type: Plain text
837 #: build/C/man5/acct.5:174
838 msgid ""
839 "The I<proc/sys/kernel/acct> file, described in B<proc>(5), defines settings "
840 "that control the behavior of process accounting when disk space runs low."
841 msgstr ""
842 "I<proc/sys/kernel/acct> ファイル (B<proc>(5)  で説明されている) は、ディスク"
843 "容量の残りが少なくなった際の プロセス・アカウンティングの動作を制御する設定を"
844 "保持している。"
845
846 #. type: Plain text
847 #: build/C/man5/acct.5:179
848 msgid "B<lastcomm>(1), B<acct>(2), B<accton>(8), B<sa>(8)"
849 msgstr "B<lastcomm>(1), B<acct>(2), B<accton>(8), B<sa>(8)"
850
851 #. type: TH
852 #: build/C/man7/capabilities.7:48
853 #, no-wrap
854 msgid "CAPABILITIES"
855 msgstr "CAPABILITIES"
856
857 #. type: TH
858 #: build/C/man7/capabilities.7:48 build/C/man2/getpid.2:25
859 #: build/C/man7/namespaces.7:27 build/C/man2/seteuid.2:29
860 #: build/C/man2/setgid.2:29 build/C/man2/setresuid.2:26
861 #: build/C/man2/setreuid.2:45 build/C/man2/setuid.2:30 build/C/man7/svipc.7:40
862 #: build/C/man7/user_namespaces.7:27
863 #, no-wrap
864 msgid "2014-09-21"
865 msgstr "2014-09-21"
866
867 #. type: Plain text
868 #: build/C/man7/capabilities.7:51
869 msgid "capabilities - overview of Linux capabilities"
870 msgstr "capabilities - Linux のケーパビリティ (capability) の概要"
871
872 #. type: Plain text
873 #: build/C/man7/capabilities.7:63
874 msgid ""
875 "For the purpose of performing permission checks, traditional UNIX "
876 "implementations distinguish two categories of processes: I<privileged> "
877 "processes (whose effective user ID is 0, referred to as superuser or root), "
878 "and I<unprivileged> processes (whose effective UID is nonzero).  Privileged "
879 "processes bypass all kernel permission checks, while unprivileged processes "
880 "are subject to full permission checking based on the process's credentials "
881 "(usually: effective UID, effective GID, and supplementary group list)."
882 msgstr ""
883 "権限のチェックを行う観点から見ると、伝統的な UNIX の実装では プロセスは二つの"
884 "カテゴリに分類できる: I<特権> プロセス (実効ユーザID が 0 のプロセス。ユーザ"
885 "ID 0 は スーパーユーザや root と呼ばれる) と I<非特権> プロセス (実効ユーザ"
886 "ID が 0 以外のプロセス) である。 非特権プロセスでは、プロセスの資格情報 (通常"
887 "は、実効UID 、実効GID と追加のグループリスト) に基づく権限チェックが行われる"
888 "のに対し、 特権プロセスでは全てのカーネルの権限チェックがバイパスされる。"
889
890 #. type: Plain text
891 #: build/C/man7/capabilities.7:70
892 msgid ""
893 "Starting with kernel 2.2, Linux divides the privileges traditionally "
894 "associated with superuser into distinct units, known as I<capabilities>, "
895 "which can be independently enabled and disabled.  Capabilities are a per-"
896 "thread attribute."
897 msgstr ""
898 "バージョン 2.2 以降の Linux では、 これまでスーパーユーザに結び付けられてきた"
899 "権限を、 いくつかのグループに分割している。これらのグループは I<ケーパビリ"
900 "ティ>(capability)  と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケー"
901 "パビリティはスレッド単位の属性である。"
902
903 #. type: SS
904 #: build/C/man7/capabilities.7:70
905 #, no-wrap
906 msgid "Capabilities list"
907 msgstr "ケーパビリティのリスト"
908
909 #. type: Plain text
910 #: build/C/man7/capabilities.7:73
911 msgid ""
912 "The following list shows the capabilities implemented on Linux, and the "
913 "operations or behaviors that each capability permits:"
914 msgstr ""
915 "以下のリストは、 Linux で実装されているケーパビリティと 各ケーパビリティが許"
916 "可する操作と動作をまとめたものである。"
917
918 #. type: TP
919 #: build/C/man7/capabilities.7:73
920 #, no-wrap
921 msgid "B<CAP_AUDIT_CONTROL> (since Linux 2.6.11)"
922 msgstr "B<CAP_AUDIT_CONTROL> (Linux 2.6.11 以降)"
923
924 #. type: Plain text
925 #: build/C/man7/capabilities.7:77
926 msgid ""
927 "Enable and disable kernel auditing; change auditing filter rules; retrieve "
928 "auditing status and filtering rules."
929 msgstr ""
930 "カーネル監査 (audit) の有効無効の切り替え、 監査のフィルタルールの変更、 監査"
931 "の状況やフィルタルールの取得ができる。"
932
933 #. type: TP
934 #: build/C/man7/capabilities.7:77
935 #, no-wrap
936 msgid "B<CAP_AUDIT_READ> (since Linux 3.16)"
937 msgstr "B<CAP_AUDIT_READ> (Linux 3.16 以降)"
938
939 #.  commit a29b694aa1739f9d76538e34ae25524f9c549d59
940 #.  commit 3a101b8de0d39403b2c7e5c23fd0b005668acf48
941 #. type: Plain text
942 #: build/C/man7/capabilities.7:82
943 msgid "Allow reading the audit log via a multicast netlink socket."
944 msgstr "マルチキャスト netlink ソケット経由で監査ログの読み出しができる。"
945
946 #. type: TP
947 #: build/C/man7/capabilities.7:82
948 #, no-wrap
949 msgid "B<CAP_AUDIT_WRITE> (since Linux 2.6.11)"
950 msgstr "B<CAP_AUDIT_WRITE> (Linux 2.6.11 以降)"
951
952 #. type: Plain text
953 #: build/C/man7/capabilities.7:85
954 msgid "Write records to kernel auditing log."
955 msgstr "カーネル監査のログにレコードを書き込む。"
956
957 #. type: TP
958 #: build/C/man7/capabilities.7:85
959 #, no-wrap
960 msgid "B<CAP_BLOCK_SUSPEND> (since Linux 3.5)"
961 msgstr "B<CAP_BLOCK_SUSPEND> (Linux 3.5 以降)"
962
963 #. type: Plain text
964 #: build/C/man7/capabilities.7:91
965 msgid ""
966 "Employ features that can block system suspend (B<epoll>(7)  B<EPOLLWAKEUP>, "
967 "I</proc/sys/wake_lock>)."
968 msgstr ""
969 "システムのサスペンドをブロックできる機能を使用する (B<epoll>(7)  "
970 "B<EPOLLWAKEUP>, I</proc/sys/wake_lock>)。"
971
972 #. type: TP
973 #: build/C/man7/capabilities.7:91
974 #, no-wrap
975 msgid "B<CAP_CHOWN>"
976 msgstr "B<CAP_CHOWN>"
977
978 #. type: Plain text
979 #: build/C/man7/capabilities.7:95
980 msgid "Make arbitrary changes to file UIDs and GIDs (see B<chown>(2))."
981 msgstr "ファイルの UID とGID を任意に変更する (B<chown>(2)  参照)。"
982
983 #. type: TP
984 #: build/C/man7/capabilities.7:95
985 #, no-wrap
986 msgid "B<CAP_DAC_OVERRIDE>"
987 msgstr "B<CAP_DAC_OVERRIDE>"
988
989 #. type: Plain text
990 #: build/C/man7/capabilities.7:99
991 msgid ""
992 "Bypass file read, write, and execute permission checks.  (DAC is an "
993 "abbreviation of \"discretionary access control\".)"
994 msgstr ""
995 "ファイルの読み出し、書き込み、実行の権限チェックをバイパスする (DAC は "
996 "\"discretionary access control (任意のアクセス制御)\" の略である)。"
997
998 #. type: TP
999 #: build/C/man7/capabilities.7:99
1000 #, no-wrap
1001 msgid "B<CAP_DAC_READ_SEARCH>"
1002 msgstr "B<CAP_DAC_READ_SEARCH>"
1003
1004 #. type: IP
1005 #: build/C/man7/capabilities.7:103 build/C/man7/capabilities.7:106
1006 #: build/C/man7/capabilities.7:116 build/C/man7/capabilities.7:126
1007 #: build/C/man7/capabilities.7:130 build/C/man7/capabilities.7:132
1008 #: build/C/man7/capabilities.7:134 build/C/man7/capabilities.7:204
1009 #: build/C/man7/capabilities.7:206 build/C/man7/capabilities.7:208
1010 #: build/C/man7/capabilities.7:210 build/C/man7/capabilities.7:212
1011 #: build/C/man7/capabilities.7:214 build/C/man7/capabilities.7:216
1012 #: build/C/man7/capabilities.7:218 build/C/man7/capabilities.7:220
1013 #: build/C/man7/capabilities.7:244 build/C/man7/capabilities.7:246
1014 #: build/C/man7/capabilities.7:296 build/C/man7/capabilities.7:306
1015 #: build/C/man7/capabilities.7:312 build/C/man7/capabilities.7:317
1016 #: build/C/man7/capabilities.7:323 build/C/man7/capabilities.7:327
1017 #: build/C/man7/capabilities.7:334 build/C/man7/capabilities.7:337
1018 #: build/C/man7/capabilities.7:345 build/C/man7/capabilities.7:347
1019 #: build/C/man7/capabilities.7:356 build/C/man7/capabilities.7:365
1020 #: build/C/man7/capabilities.7:368 build/C/man7/capabilities.7:372
1021 #: build/C/man7/capabilities.7:380 build/C/man7/capabilities.7:383
1022 #: build/C/man7/capabilities.7:390 build/C/man7/capabilities.7:395
1023 #: build/C/man7/capabilities.7:401 build/C/man7/capabilities.7:405
1024 #: build/C/man7/capabilities.7:409 build/C/man7/capabilities.7:413
1025 #: build/C/man7/capabilities.7:417 build/C/man7/capabilities.7:444
1026 #: build/C/man7/capabilities.7:449 build/C/man7/capabilities.7:455
1027 #: build/C/man7/capabilities.7:458 build/C/man7/capabilities.7:461
1028 #: build/C/man7/capabilities.7:471 build/C/man7/capabilities.7:475
1029 #: build/C/man7/capabilities.7:492 build/C/man7/capabilities.7:495
1030 #: build/C/man7/capabilities.7:499 build/C/man7/capabilities.7:504
1031 #: build/C/man7/capabilities.7:513 build/C/man7/capabilities.7:518
1032 #: build/C/man7/capabilities.7:521 build/C/man7/capabilities.7:526
1033 #: build/C/man7/capabilities.7:529 build/C/man7/capabilities.7:532
1034 #: build/C/man7/capabilities.7:535 build/C/man7/capabilities.7:538
1035 #: build/C/man7/capabilities.7:543 build/C/man7/capabilities.7:545
1036 #: build/C/man7/capabilities.7:551 build/C/man7/capabilities.7:559
1037 #: build/C/man7/capabilities.7:561 build/C/man7/capabilities.7:565
1038 #: build/C/man7/capabilities.7:567 build/C/man7/capabilities.7:570
1039 #: build/C/man7/capabilities.7:574 build/C/man7/capabilities.7:576
1040 #: build/C/man7/capabilities.7:578 build/C/man7/capabilities.7:580
1041 #: build/C/man7/capabilities.7:589 build/C/man7/capabilities.7:596
1042 #: build/C/man7/capabilities.7:601 build/C/man7/capabilities.7:606
1043 #: build/C/man7/capabilities.7:611 build/C/man7/capabilities.7:636
1044 #: build/C/man7/capabilities.7:643 build/C/man7/capabilities.7:844
1045 #: build/C/man7/capabilities.7:852 build/C/man7/capabilities.7:1172
1046 #: build/C/man7/capabilities.7:1177 build/C/man7/cpuset.7:540
1047 #: build/C/man7/cpuset.7:545 build/C/man7/cpuset.7:550
1048 #: build/C/man7/cpuset.7:726 build/C/man7/cpuset.7:730
1049 #: build/C/man7/cpuset.7:927 build/C/man7/cpuset.7:930
1050 #: build/C/man7/cpuset.7:934 build/C/man7/cpuset.7:938
1051 #: build/C/man7/cpuset.7:942 build/C/man7/credentials.7:177
1052 #: build/C/man7/credentials.7:183 build/C/man7/credentials.7:195
1053 #: build/C/man7/credentials.7:217 build/C/man7/credentials.7:234
1054 #: build/C/man7/credentials.7:266 build/C/man7/credentials.7:269
1055 #: build/C/man7/credentials.7:280 build/C/man7/credentials.7:283
1056 #: build/C/man2/getrlimit.2:683 build/C/man2/getrlimit.2:686
1057 #: build/C/man7/namespaces.7:212 build/C/man7/namespaces.7:215
1058 #: build/C/man7/namespaces.7:228 build/C/man7/pid_namespaces.7:233
1059 #: build/C/man7/pid_namespaces.7:241 build/C/man7/pid_namespaces.7:252
1060 #: build/C/man7/user_namespaces.7:261 build/C/man7/user_namespaces.7:266
1061 #: build/C/man7/user_namespaces.7:272 build/C/man7/user_namespaces.7:285
1062 #: build/C/man7/user_namespaces.7:306 build/C/man7/user_namespaces.7:474
1063 #: build/C/man7/user_namespaces.7:477 build/C/man7/user_namespaces.7:479
1064 #: build/C/man7/user_namespaces.7:492 build/C/man7/user_namespaces.7:505
1065 #: build/C/man7/user_namespaces.7:532 build/C/man7/user_namespaces.7:541
1066 #: build/C/man2/seccomp.2:265 build/C/man2/seccomp.2:269
1067 #: build/C/man2/seccomp.2:272 build/C/man2/seccomp.2:277
1068 #: build/C/man2/seccomp.2:281 build/C/man2/seccomp.2:455
1069 #: build/C/man2/seccomp.2:463 build/C/man2/seccomp.2:469
1070 #, no-wrap
1071 msgid "*"
1072 msgstr "*"
1073
1074 #. type: Plain text
1075 #: build/C/man7/capabilities.7:106
1076 msgid ""
1077 "Bypass file read permission checks and directory read and execute permission "
1078 "checks;"
1079 msgstr ""
1080 "ファイルの読み出し権限のチェックとディレクトリの読み出しと実行 の権限チェック"
1081 "をバイパスする。"
1082
1083 #. type: Plain text
1084 #: build/C/man7/capabilities.7:109
1085 msgid "Invoke B<open_by_handle_at>(2)."
1086 msgstr "B<open_by_handle_at>(2) を起動する。"
1087
1088 #. type: TP
1089 #: build/C/man7/capabilities.7:112
1090 #, no-wrap
1091 msgid "B<CAP_FOWNER>"
1092 msgstr "B<CAP_FOWNER>"
1093
1094 #. type: Plain text
1095 #: build/C/man7/capabilities.7:126
1096 msgid ""
1097 "Bypass permission checks on operations that normally require the filesystem "
1098 "UID of the process to match the UID of the file (e.g., B<chmod>(2), "
1099 "B<utime>(2)), excluding those operations covered by B<CAP_DAC_OVERRIDE> and "
1100 "B<CAP_DAC_READ_SEARCH>;"
1101 msgstr ""
1102 "通常、プロセスのファイルシステム UID がファイルの UID に一致することが 要求さ"
1103 "れる操作 (例えば B<chmod>(2), B<utime>(2))  における権限チェックをバイパスす"
1104 "る。 但し、 B<CAP_DAC_OVERRIDE> か B<CAP_DAC_READ_SEARCH> によりチェックが行"
1105 "われる操作は除く。"
1106
1107 #. type: Plain text
1108 #: build/C/man7/capabilities.7:130
1109 msgid "set extended file attributes (see B<chattr>(1))  on arbitrary files;"
1110 msgstr ""
1111 "任意のファイルに対して拡張ファイル属性を設定する (B<chattr>(1)  参照)。"
1112
1113 #. type: Plain text
1114 #: build/C/man7/capabilities.7:132
1115 msgid "set Access Control Lists (ACLs) on arbitrary files;"
1116 msgstr "任意のファイルに対してアクセス制御リスト (ACL) を設定する。"
1117
1118 #. type: Plain text
1119 #: build/C/man7/capabilities.7:134
1120 msgid "ignore directory sticky bit on file deletion;"
1121 msgstr "ファイルの削除の際にディレクトリのスティッキービットを無視する。"
1122
1123 #. type: Plain text
1124 #: build/C/man7/capabilities.7:141
1125 msgid ""
1126 "specify B<O_NOATIME> for arbitrary files in B<open>(2)  and B<fcntl>(2)."
1127 msgstr ""
1128 "B<open>(2)  や B<fcntl>(2)  で任意のファイルに対して B<O_NOATIME> を指定す"
1129 "る。"
1130
1131 #. type: TP
1132 #: build/C/man7/capabilities.7:143
1133 #, no-wrap
1134 msgid "B<CAP_FSETID>"
1135 msgstr "B<CAP_FSETID>"
1136
1137 #. type: Plain text
1138 #: build/C/man7/capabilities.7:149
1139 msgid ""
1140 "Don't clear set-user-ID and set-group-ID permission bits when a file is "
1141 "modified; set the set-group-ID bit for a file whose GID does not match the "
1142 "filesystem or any of the supplementary GIDs of the calling process."
1143 msgstr ""
1144 "ファイルが変更されたときに set-user-ID とset-group-ID の許可ビットをクリア し"
1145 "ない。呼び出し元プロセスのファイルシステム GID と追加の GID のいずれとも GID "
1146 "が一致しないファイルに対して set-group-ID ビットを設定する。"
1147
1148 #. type: TP
1149 #: build/C/man7/capabilities.7:149
1150 #, no-wrap
1151 msgid "B<CAP_IPC_LOCK>"
1152 msgstr "B<CAP_IPC_LOCK>"
1153
1154 #.  FIXME . As at Linux 3.2, there are some strange uses of this capability
1155 #.  in other places; they probably should be replaced with something else.
1156 #. type: Plain text
1157 #: build/C/man7/capabilities.7:158
1158 msgid "Lock memory (B<mlock>(2), B<mlockall>(2), B<mmap>(2), B<shmctl>(2))."
1159 msgstr ""
1160 "メモリーのロック (B<mlock>(2), B<mlockall>(2), B<mmap>(2), B<shmctl>(2))  を"
1161 "行う。"
1162
1163 #. type: TP
1164 #: build/C/man7/capabilities.7:158
1165 #, no-wrap
1166 msgid "B<CAP_IPC_OWNER>"
1167 msgstr "B<CAP_IPC_OWNER>"
1168
1169 #. type: Plain text
1170 #: build/C/man7/capabilities.7:161
1171 msgid "Bypass permission checks for operations on System V IPC objects."
1172 msgstr ""
1173 "System V IPC オブジェクトに対する操作に関して権限チェックをバイパスする。"
1174
1175 #. type: TP
1176 #: build/C/man7/capabilities.7:161
1177 #, no-wrap
1178 msgid "B<CAP_KILL>"
1179 msgstr "B<CAP_KILL>"
1180
1181 #.  FIXME . CAP_KILL also has an effect for threads + setting child
1182 #.        termination signal to other than SIGCHLD: without this
1183 #.        capability, the termination signal reverts to SIGCHLD
1184 #.        if the child does an exec().  What is the rationale
1185 #.        for this?
1186 #. type: Plain text
1187 #: build/C/man7/capabilities.7:174
1188 msgid ""
1189 "Bypass permission checks for sending signals (see B<kill>(2)).  This "
1190 "includes use of the B<ioctl>(2)  B<KDSIGACCEPT> operation."
1191 msgstr ""
1192 "シグナルを送信する際に権限チェックをバイパスする (B<kill>(2)  参照)。これに"
1193 "は B<ioctl>(2)  の B<KDSIGACCEPT> 操作の使用も含まれる。"
1194
1195 #. type: TP
1196 #: build/C/man7/capabilities.7:174
1197 #, no-wrap
1198 msgid "B<CAP_LEASE> (since Linux 2.4)"
1199 msgstr "B<CAP_LEASE> (Linux 2.4 以降)"
1200
1201 #. type: Plain text
1202 #: build/C/man7/capabilities.7:178
1203 msgid "Establish leases on arbitrary files (see B<fcntl>(2))."
1204 msgstr "任意のファイルに対して ファイルリースを設定する (B<fcntl>(2)  参照)。"
1205
1206 #. type: TP
1207 #: build/C/man7/capabilities.7:178
1208 #, no-wrap
1209 msgid "B<CAP_LINUX_IMMUTABLE>"
1210 msgstr "B<CAP_LINUX_IMMUTABLE>"
1211
1212 #.  These attributes are now available on ext2, ext3, Reiserfs, XFS, JFS
1213 #. type: Plain text
1214 #: build/C/man7/capabilities.7:187
1215 msgid ""
1216 "Set the B<FS_APPEND_FL> and B<FS_IMMUTABLE_FL> inode flags (see "
1217 "B<chattr>(1))."
1218 msgstr ""
1219 "inode フラグ B<FS_APPEND_FL> と B<FS_IMMUTABLE_FL> を設定する (B<chattr>(1)  "
1220 "参照)。"
1221
1222 #. type: TP
1223 #: build/C/man7/capabilities.7:187
1224 #, no-wrap
1225 msgid "B<CAP_MAC_ADMIN> (since Linux 2.6.25)"
1226 msgstr "B<CAP_MAC_ADMIN> (Linux 2.6.25 以降)"
1227
1228 #. type: Plain text
1229 #: build/C/man7/capabilities.7:191
1230 msgid ""
1231 "Override Mandatory Access Control (MAC).  Implemented for the Smack Linux "
1232 "Security Module (LSM)."
1233 msgstr ""
1234 "強制アクセス制御 (MAC) を上書きする。 Smack Linux Security Module (LSM) 用に"
1235 "実装されている。"
1236
1237 #. type: TP
1238 #: build/C/man7/capabilities.7:191
1239 #, no-wrap
1240 msgid "B<CAP_MAC_OVERRIDE> (since Linux 2.6.25)"
1241 msgstr "B<CAP_MAC_OVERRIDE> (Linux 2.6.25 以降)"
1242
1243 #. type: Plain text
1244 #: build/C/man7/capabilities.7:195
1245 msgid ""
1246 "Allow MAC configuration or state changes.  Implemented for the Smack LSM."
1247 msgstr "MAC の設定や状態を変更する。 Smack LSM 用に実装されている。"
1248
1249 #. type: TP
1250 #: build/C/man7/capabilities.7:195
1251 #, no-wrap
1252 msgid "B<CAP_MKNOD> (since Linux 2.4)"
1253 msgstr "B<CAP_MKNOD> (Linux 2.4 以降)"
1254
1255 #. type: Plain text
1256 #: build/C/man7/capabilities.7:199
1257 msgid "Create special files using B<mknod>(2)."
1258 msgstr ""
1259 "(Linux 2.4 以降)  B<mknod>(2)  を使用してスペシャルファイルを作成する。"
1260
1261 #. type: TP
1262 #: build/C/man7/capabilities.7:199
1263 #, no-wrap
1264 msgid "B<CAP_NET_ADMIN>"
1265 msgstr "B<CAP_NET_ADMIN>"
1266
1267 #. type: Plain text
1268 #: build/C/man7/capabilities.7:202
1269 msgid "Perform various network-related operations:"
1270 msgstr "各種のネットワーク関係の操作を実行する:"
1271
1272 #. type: Plain text
1273 #: build/C/man7/capabilities.7:206
1274 msgid "interface configuration;"
1275 msgstr "インターフェースの設定"
1276
1277 #. type: Plain text
1278 #: build/C/man7/capabilities.7:208
1279 msgid "administration of IP firewall, masquerading, and accounting;"
1280 msgstr "IP のファイアウォール、マスカレード、アカウンティング"
1281
1282 #. type: Plain text
1283 #: build/C/man7/capabilities.7:210
1284 msgid "modify routing tables;"
1285 msgstr "ルーティングテーブルの変更"
1286
1287 #. type: Plain text
1288 #: build/C/man7/capabilities.7:212
1289 msgid "bind to any address for transparent proxying;"
1290 msgstr "透過的プロキシでの任意のアドレスの割り当て (bind)"
1291
1292 #. type: Plain text
1293 #: build/C/man7/capabilities.7:214
1294 msgid "set type-of-service (TOS)"
1295 msgstr "サービス種別 (type-of-service; TOS) のセット"
1296
1297 #. type: Plain text
1298 #: build/C/man7/capabilities.7:216
1299 msgid "clear driver statistics;"
1300 msgstr "ドライバの統計情報のクリア"
1301
1302 #. type: Plain text
1303 #: build/C/man7/capabilities.7:218
1304 msgid "set promiscuous mode;"
1305 msgstr "promiscuous モードをセットする"
1306
1307 #. type: Plain text
1308 #: build/C/man7/capabilities.7:220
1309 msgid "enabling multicasting;"
1310 msgstr "マルチキャストを有効にする"
1311
1312 #. type: Plain text
1313 #: build/C/man7/capabilities.7:231
1314 msgid ""
1315 "use B<setsockopt>(2)  to set the following socket options: B<SO_DEBUG>, "
1316 "B<SO_MARK>, B<SO_PRIORITY> (for a priority outside the range 0 to 6), "
1317 "B<SO_RCVBUFFORCE>, and B<SO_SNDBUFFORCE>."
1318 msgstr ""
1319 "B<setsockopt>(2) を使って以下のソケットオプションを設定する:\n"
1320 "B<SO_DEBUG>, B<SO_MARK>, \n"
1321 "B<SO_PRIORITY> (優先度を 0 から 6 以外に設定する場合),\n"
1322 "B<SO_RCVBUFFORCE>, and B<SO_SNDBUFFORCE>"
1323
1324 #. type: TP
1325 #: build/C/man7/capabilities.7:233
1326 #, no-wrap
1327 msgid "B<CAP_NET_BIND_SERVICE>"
1328 msgstr "B<CAP_NET_BIND_SERVICE>"
1329
1330 #. type: Plain text
1331 #: build/C/man7/capabilities.7:237
1332 msgid ""
1333 "Bind a socket to Internet domain privileged ports (port numbers less than "
1334 "1024)."
1335 msgstr ""
1336 "インターネットドメインの特権ポート (ポート番号が 1024 番未満)  をバインドでき"
1337 "る。"
1338
1339 #. type: TP
1340 #: build/C/man7/capabilities.7:237
1341 #, no-wrap
1342 msgid "B<CAP_NET_BROADCAST>"
1343 msgstr "B<CAP_NET_BROADCAST>"
1344
1345 #. type: Plain text
1346 #: build/C/man7/capabilities.7:240
1347 msgid "(Unused)  Make socket broadcasts, and listen to multicasts."
1348 msgstr ""
1349 "(未使用) ソケットのブロードキャストと、マルチキャストの待ち受けを行う。"
1350
1351 #. type: TP
1352 #: build/C/man7/capabilities.7:240
1353 #, no-wrap
1354 msgid "B<CAP_NET_RAW>"
1355 msgstr "B<CAP_NET_RAW>"
1356
1357 #. type: Plain text
1358 #: build/C/man7/capabilities.7:246
1359 msgid "use RAW and PACKET sockets;"
1360 msgstr "RAW ソケットと PACKET ソケットを使用する。"
1361
1362 #. type: Plain text
1363 #: build/C/man7/capabilities.7:248
1364 msgid "bind to any address for transparent proxying."
1365 msgstr "透過的プロキシでの任意のアドレスの割り当て (bind)"
1366
1367 #. type: TP
1368 #: build/C/man7/capabilities.7:251
1369 #, no-wrap
1370 msgid "B<CAP_SETGID>"
1371 msgstr "B<CAP_SETGID>"
1372
1373 #. type: Plain text
1374 #: build/C/man7/capabilities.7:257
1375 msgid ""
1376 "Make arbitrary manipulations of process GIDs and supplementary GID list; "
1377 "forge GID when passing socket credentials via UNIX domain sockets; write a "
1378 "group ID mapping in a user namespace (see B<user_namespaces>(7))."
1379 msgstr ""
1380 "プロセスの GID と追加の GID リストに対する任意の操作を行う。 UNIX ドメインソ"
1381 "ケット経由でソケットの資格情報 (credential) を渡す際に 偽の GID を渡すことが"
1382 "できる。 ユーザー名前空間にグループ ID マッピングを書き込むことができる "
1383 "(B<user_namespaces>(7) 参照)。"
1384
1385 #. type: TP
1386 #: build/C/man7/capabilities.7:257
1387 #, no-wrap
1388 msgid "B<CAP_SETFCAP> (since Linux 2.6.24)"
1389 msgstr "B<CAP_SETFCAP> (Linux 2.6.24 以降)"
1390
1391 #. type: Plain text
1392 #: build/C/man7/capabilities.7:260
1393 msgid "Set file capabilities."
1394 msgstr "ファイルケーパビリティを設定する。"
1395
1396 #. type: TP
1397 #: build/C/man7/capabilities.7:260
1398 #, no-wrap
1399 msgid "B<CAP_SETPCAP>"
1400 msgstr "B<CAP_SETPCAP>"
1401
1402 #. type: Plain text
1403 #: build/C/man7/capabilities.7:271
1404 msgid ""
1405 "If file capabilities are not supported: grant or remove any capability in "
1406 "the caller's permitted capability set to or from any other process.  (This "
1407 "property of B<CAP_SETPCAP> is not available when the kernel is configured to "
1408 "support file capabilities, since B<CAP_SETPCAP> has entirely different "
1409 "semantics for such kernels.)"
1410 msgstr ""
1411 "ファイルケーパビリティがサポートされていない場合: 呼び出し元が許可されている"
1412 "ケーパビリティセットに含まれる任意のケーパビリティを、 他のプロセスに付与した"
1413 "り、削除したりできる。 (カーネルがファイルケーパビリティをサポートしている場"
1414 "合、 B<CAP_SETPCAP> はこの役割を持たない。 なぜなら、ファイルケーパビリティを"
1415 "サポートしているカーネルでは B<CAP_SETPCAP> は全く別の意味を持つからである。)"
1416
1417 #. type: Plain text
1418 #: build/C/man7/capabilities.7:281
1419 msgid ""
1420 "If file capabilities are supported: add any capability from the calling "
1421 "thread's bounding set to its inheritable set; drop capabilities from the "
1422 "bounding set (via B<prctl>(2)  B<PR_CAPBSET_DROP>); make changes to the "
1423 "I<securebits> flags."
1424 msgstr ""
1425 "ファイルケーパビリティがサポートされている場合: 呼び出し元スレッドのバウン"
1426 "ディングセットの任意のケーパビリティを 自身の継承可能ケーパビリティセットに追"
1427 "加できる。 (B<prctl>(2)  B<PR_CAPBSET_DROP> を使って)  バウンディングセットか"
1428 "らケーパビリティを削除できる。 I<securebits> フラグを変更できる。"
1429
1430 #. type: TP
1431 #: build/C/man7/capabilities.7:281
1432 #, no-wrap
1433 msgid "B<CAP_SETUID>"
1434 msgstr "B<CAP_SETUID>"
1435
1436 #.  FIXME CAP_SETUID also an effect in exec(); document this.
1437 #. type: Plain text
1438 #: build/C/man7/capabilities.7:292
1439 msgid ""
1440 "Make arbitrary manipulations of process UIDs (B<setuid>(2), B<setreuid>(2), "
1441 "B<setresuid>(2), B<setfsuid>(2)); forge UID when passing socket credentials "
1442 "via UNIX domain sockets; write a user ID mapping in a user namespace (see "
1443 "B<user_namespaces>(7))."
1444 msgstr ""
1445 "プロセスの UID に対する任意の操作 (B<setuid>(2), B<setreuid>(2), "
1446 "B<setresuid>(2), B<setfsuid>(2))  を行う。 UNIX ドメインソケット経由でソケッ"
1447 "トの資格情報 (credential) を渡す際に 偽の UID を渡すことができる。 ユーザー名"
1448 "前空間にユーザー ID マッピングを書き込むことができる (B<user_namespaces>(7) "
1449 "参照)。"
1450
1451 #. type: TP
1452 #: build/C/man7/capabilities.7:292
1453 #, no-wrap
1454 msgid "B<CAP_SYS_ADMIN>"
1455 msgstr "B<CAP_SYS_ADMIN>"
1456
1457 #. type: Plain text
1458 #: build/C/man7/capabilities.7:306
1459 msgid ""
1460 "Perform a range of system administration operations including: "
1461 "B<quotactl>(2), B<mount>(2), B<umount>(2), B<swapon>(2), B<swapoff>(2), "
1462 "B<sethostname>(2), and B<setdomainname>(2);"
1463 msgstr ""
1464 "以下のシステム管理用の操作を実行する: B<quotactl>(2), B<mount>(2), "
1465 "B<umount>(2), B<swapon>(2), B<swapoff>(2), B<sethostname>(2), "
1466 "B<setdomainname>(2)."
1467
1468 #. type: Plain text
1469 #: build/C/man7/capabilities.7:312
1470 msgid ""
1471 "perform privileged B<syslog>(2)  operations (since Linux 2.6.37, "
1472 "B<CAP_SYSLOG> should be used to permit such operations);"
1473 msgstr ""
1474 "特権が必要な B<syslog>(2) の操作を実行する\n"
1475 "(Linux 2.6.37 以降では、このような操作を許可するには\n"
1476 "B<CAP_SYSLOG> を使うべきである)"
1477
1478 #. type: Plain text
1479 #: build/C/man7/capabilities.7:317
1480 msgid "perform B<VM86_REQUEST_IRQ> B<vm86>(2)  command;"
1481 msgstr "B<VM86_REQUEST_IRQ> B<vm86>(2) コマンドを実行する。"
1482
1483 #. type: Plain text
1484 #: build/C/man7/capabilities.7:323
1485 msgid ""
1486 "perform B<IPC_SET> and B<IPC_RMID> operations on arbitrary System V IPC "
1487 "objects;"
1488 msgstr ""
1489 "任意の System V IPC オブジェクトに対する B<IPC_SET> と B<IPC_RMID> 操作を実行"
1490 "する。"
1491
1492 #. type: Plain text
1493 #: build/C/man7/capabilities.7:327 build/C/man7/capabilities.7:574
1494 msgid "override B<RLIMIT_NPROC> resource limit;"
1495 msgstr "B<RLIMIT_NPROC> リソース制限を上書きする。"
1496
1497 #. type: Plain text
1498 #: build/C/man7/capabilities.7:334
1499 msgid ""
1500 "perform operations on I<trusted> and I<security> Extended Attributes (see "
1501 "B<attr>(5));"
1502 msgstr ""
1503 "拡張属性 I<trusted> と I<security> に対する操作を実行する (B<attr>(5)  参"
1504 "照)。"
1505
1506 #. type: Plain text
1507 #: build/C/man7/capabilities.7:337
1508 msgid "use B<lookup_dcookie>(2);"
1509 msgstr "B<lookup_dcookie>(2)  を呼び出す。"
1510
1511 #. type: Plain text
1512 #: build/C/man7/capabilities.7:345
1513 msgid ""
1514 "use B<ioprio_set>(2)  to assign B<IOPRIO_CLASS_RT> and (before Linux "
1515 "2.6.25)  B<IOPRIO_CLASS_IDLE> I/O scheduling classes;"
1516 msgstr ""
1517 "B<ioprio_set>(2)  を使って I/O スケジューリングクラス B<IOPRIO_CLASS_RT>, "
1518 "B<IOPRIO_CLASS_IDLE> を割り当てる (B<IOPRIO_CLASS_IDLE> は Linux 2.6.25 より"
1519 "前のバージョンのみ)。"
1520
1521 #. type: Plain text
1522 #: build/C/man7/capabilities.7:347
1523 msgid "forge UID when passing socket credentials;"
1524 msgstr "ソケットの資格情報 (credential) を渡す際に偽の UID を渡す。"
1525
1526 #. type: Plain text
1527 #: build/C/man7/capabilities.7:356
1528 msgid ""
1529 "exceed I</proc/sys/fs/file-max>, the system-wide limit on the number of open "
1530 "files, in system calls that open files (e.g., B<accept>(2), B<execve>(2), "
1531 "B<open>(2), B<pipe>(2));"
1532 msgstr ""
1533 "ファイルをオープンするシステムコール (例えば B<accept>(2), B<execve>(2), "
1534 "B<open>(2), B<pipe>(2))  でシステム全体でオープンできるファイル数の上限 I</"
1535 "proc/sys/fs/file-max> を超過する。"
1536
1537 #. type: Plain text
1538 #: build/C/man7/capabilities.7:365
1539 msgid ""
1540 "employ B<CLONE_*> flags that create new namespaces with B<clone>(2)  and "
1541 "B<unshare>(2)  (but, since Linux 3.8, creating user namespaces does not "
1542 "require any capability);"
1543 msgstr ""
1544 "B<clone>(2) と B<unshare>(2) で新しい名前空間を作成する B<CLONE_*> フラグを利"
1545 "用する (ただし、 Linux 3.8 以降では、ユーザー名前空間の作成にどのケーパビリ"
1546 "ティも必要としない)。"
1547
1548 #. type: Plain text
1549 #: build/C/man7/capabilities.7:368
1550 msgid "call B<perf_event_open>(2);"
1551 msgstr "B<perf_event_open>(2) を呼び出す。"
1552
1553 #. type: Plain text
1554 #: build/C/man7/capabilities.7:372
1555 msgid "access privileged I<perf> event information;"
1556 msgstr "特権が必要な I<perf> イベントの情報にアクセスする。"
1557
1558 #. type: Plain text
1559 #: build/C/man7/capabilities.7:380
1560 msgid ""
1561 "call B<setns>(2)  (requires B<CAP_SYS_ADMIN> in the I<target> namespace);"
1562 msgstr ""
1563 "B<setns>(2) を呼び出す (I<target> 名前空間での B<CAP_SYS_ADMIN> が必要)。"
1564
1565 #. type: Plain text
1566 #: build/C/man7/capabilities.7:383
1567 msgid "call B<fanotify_init>(2);"
1568 msgstr "B<fanotify_init>(2) を呼び出す。"
1569
1570 #. type: Plain text
1571 #: build/C/man7/capabilities.7:390
1572 msgid "perform B<KEYCTL_CHOWN> and B<KEYCTL_SETPERM> B<keyctl>(2)  operations;"
1573 msgstr "B<keyctl>(2)  の B<KEYCTL_CHOWN> と B<KEYCTL_SETPERM> 操作を実行する。"
1574
1575 #. type: Plain text
1576 #: build/C/man7/capabilities.7:395
1577 msgid "perform B<madvise>(2)  B<MADV_HWPOISON> operation;"
1578 msgstr "B<madvise>(2)  の B<MADV_HWPOISON> 操作を実行する。"
1579
1580 #. type: Plain text
1581 #: build/C/man7/capabilities.7:401
1582 msgid ""
1583 "employ the B<TIOCSTI> B<ioctl>(2)  to insert characters into the input queue "
1584 "of a terminal other than the caller's controlling terminal;"
1585 msgstr ""
1586 "B<TIOCSTI> B<ioctl>(2) を使って、\n"
1587 "呼び出し元の制御端末以外の端末の入力キューに文字を挿入する。"
1588
1589 #. type: Plain text
1590 #: build/C/man7/capabilities.7:405
1591 msgid "employ the obsolete B<nfsservctl>(2)  system call;"
1592 msgstr "廃止予定の B<nfsservctl>(2) システムコールを使用する。"
1593
1594 #. type: Plain text
1595 #: build/C/man7/capabilities.7:409
1596 msgid "employ the obsolete B<bdflush>(2)  system call;"
1597 msgstr "廃止予定の B<bdflush>(2) システムコールを使用する。"
1598
1599 #. type: Plain text
1600 #: build/C/man7/capabilities.7:413
1601 msgid "perform various privileged block-device B<ioctl>(2)  operations;"
1602 msgstr ""
1603 "特権が必要なブロックデバイスに対する各種の B<ioctl>(2) 操作を\n"
1604 "実行する。"
1605
1606 #. type: Plain text
1607 #: build/C/man7/capabilities.7:417
1608 msgid "perform various privileged filesystem B<ioctl>(2)  operations;"
1609 msgstr ""
1610 "特権が必要なファイルシステムに対する各種の B<ioctl>(2) 操作を\n"
1611 "実行する。"
1612
1613 #. type: Plain text
1614 #: build/C/man7/capabilities.7:419
1615 msgid "perform administrative operations on many device drivers."
1616 msgstr "多くのデバイスドライバに対する管理命令を実行する。"
1617
1618 #. type: TP
1619 #: build/C/man7/capabilities.7:421
1620 #, no-wrap
1621 msgid "B<CAP_SYS_BOOT>"
1622 msgstr "B<CAP_SYS_BOOT>"
1623
1624 #. type: Plain text
1625 #: build/C/man7/capabilities.7:427
1626 msgid "Use B<reboot>(2)  and B<kexec_load>(2)."
1627 msgstr "B<reboot>(2)  と B<kexec_load>(2)  を呼び出す。"
1628
1629 #. type: TP
1630 #: build/C/man7/capabilities.7:427
1631 #, no-wrap
1632 msgid "B<CAP_SYS_CHROOT>"
1633 msgstr "B<CAP_SYS_CHROOT>"
1634
1635 #. type: Plain text
1636 #: build/C/man7/capabilities.7:431
1637 msgid "Use B<chroot>(2)."
1638 msgstr "B<chroot>(2).  を呼び出す。"
1639
1640 #. type: TP
1641 #: build/C/man7/capabilities.7:431
1642 #, no-wrap
1643 msgid "B<CAP_SYS_MODULE>"
1644 msgstr "B<CAP_SYS_MODULE>"
1645
1646 #. type: Plain text
1647 #: build/C/man7/capabilities.7:440
1648 msgid ""
1649 "Load and unload kernel modules (see B<init_module>(2)  and "
1650 "B<delete_module>(2)); in kernels before 2.6.25: drop capabilities from the "
1651 "system-wide capability bounding set."
1652 msgstr ""
1653 "カーネルモジュールのロード、アンロードを行う (B<init_module>(2)  と "
1654 "B<delete_module>(2)  を参照のこと)。 バージョン 2.6.25 より前のカーネルで、 "
1655 "システム全体のケーパビリティバウンディングセット (capability bounding set)  "
1656 "からケーパビリティを外す。"
1657
1658 #. type: TP
1659 #: build/C/man7/capabilities.7:440
1660 #, no-wrap
1661 msgid "B<CAP_SYS_NICE>"
1662 msgstr "B<CAP_SYS_NICE>"
1663
1664 #. type: Plain text
1665 #: build/C/man7/capabilities.7:449
1666 msgid ""
1667 "Raise process nice value (B<nice>(2), B<setpriority>(2))  and change the "
1668 "nice value for arbitrary processes;"
1669 msgstr ""
1670 "プロセスの nice 値の引き上げ (B<nice>(2), B<setpriority>(2))  や、任意のプロ"
1671 "セスの nice 値の変更を行う。"
1672
1673 #. type: Plain text
1674 #: build/C/man7/capabilities.7:455
1675 msgid ""
1676 "set real-time scheduling policies for calling process, and set scheduling "
1677 "policies and priorities for arbitrary processes (B<sched_setscheduler>(2), "
1678 "B<sched_setparam>(2), B<shed_setattr>(2));"
1679 msgstr ""
1680 "呼び出し元プロセスに対するリアルタイムスケジューリングポリシーと、 任意のプロ"
1681 "セスに対するスケジューリングポリシーと優先度を設定する "
1682 "(B<sched_setscheduler>(2), B<sched_setparam>(2), B<shed_setattr>(2))。"
1683
1684 #. type: Plain text
1685 #: build/C/man7/capabilities.7:458
1686 msgid "set CPU affinity for arbitrary processes (B<sched_setaffinity>(2));"
1687 msgstr ""
1688 "任意のプロセスに対する CPU affinity を設定できる (B<sched_setaffinity>(2))。"
1689
1690 #. type: Plain text
1691 #: build/C/man7/capabilities.7:461
1692 msgid ""
1693 "set I/O scheduling class and priority for arbitrary processes "
1694 "(B<ioprio_set>(2));"
1695 msgstr ""
1696 "任意のプロセスに対して I/O スケジューリングクラスと優先度を設定できる "
1697 "(B<ioprio_set>(2))。"
1698
1699 #.  FIXME CAP_SYS_NICE also has the following effect for
1700 #.  migrate_pages(2):
1701 #.      do_migrate_pages(mm, &old, &new,
1702 #.          capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
1703 #.  Document this.
1704 #. type: Plain text
1705 #: build/C/man7/capabilities.7:471
1706 msgid ""
1707 "apply B<migrate_pages>(2)  to arbitrary processes and allow processes to be "
1708 "migrated to arbitrary nodes;"
1709 msgstr ""
1710 "B<migrate_pages>(2)  を任意のプロセスに適用し、プロセスを任意のノードに移動す"
1711 "る。"
1712
1713 #. type: Plain text
1714 #: build/C/man7/capabilities.7:475
1715 msgid "apply B<move_pages>(2)  to arbitrary processes;"
1716 msgstr "B<move_pages>(2)  を任意のプロセスに対して行う。"
1717
1718 #. type: Plain text
1719 #: build/C/man7/capabilities.7:482
1720 msgid ""
1721 "use the B<MPOL_MF_MOVE_ALL> flag with B<mbind>(2)  and B<move_pages>(2)."
1722 msgstr ""
1723 "B<mbind>(2)  と B<move_pages>(2)  で B<MPOL_MF_MOVE_ALL> フラグを使用する。"
1724
1725 #. type: TP
1726 #: build/C/man7/capabilities.7:484
1727 #, no-wrap
1728 msgid "B<CAP_SYS_PACCT>"
1729 msgstr "B<CAP_SYS_PACCT>"
1730
1731 #. type: Plain text
1732 #: build/C/man7/capabilities.7:488
1733 msgid "Use B<acct>(2)."
1734 msgstr "B<acct>(2)  を呼び出す。"
1735
1736 #. type: TP
1737 #: build/C/man7/capabilities.7:488
1738 #, no-wrap
1739 msgid "B<CAP_SYS_PTRACE>"
1740 msgstr "B<CAP_SYS_PTRACE>"
1741
1742 #. type: Plain text
1743 #: build/C/man7/capabilities.7:495
1744 msgid "Trace arbitrary processes using B<ptrace>(2);"
1745 msgstr "B<ptrace>(2)  を使って任意のプロセスをトレースする。"
1746
1747 #. type: Plain text
1748 #: build/C/man7/capabilities.7:499
1749 msgid "apply B<get_robust_list>(2)  to arbitrary processes;"
1750 msgstr "B<get_robust_list>(2)  を任意のプロセスに対して行う。"
1751
1752 #. type: Plain text
1753 #: build/C/man7/capabilities.7:504
1754 msgid ""
1755 "transfer data to or from the memory of arbitrary processes using "
1756 "B<process_vm_readv>(2)  and B<process_vm_writev>(2)."
1757 msgstr ""
1758 "B<process_vm_readv>(2) と B<process_vm_writev>(2) を使って任意のプロセスのメ"
1759 "モリとの間でデータの送受信を行う。"
1760
1761 #. type: Plain text
1762 #: build/C/man7/capabilities.7:507
1763 msgid "inspect processes using B<kcmp>(2)."
1764 msgstr "B<kcmp>(2) を使ってプロセス内部を調査する。"
1765
1766 #. type: TP
1767 #: build/C/man7/capabilities.7:509
1768 #, no-wrap
1769 msgid "B<CAP_SYS_RAWIO>"
1770 msgstr "B<CAP_SYS_RAWIO>"
1771
1772 #. type: Plain text
1773 #: build/C/man7/capabilities.7:518
1774 msgid "Perform I/O port operations (B<iopl>(2)  and B<ioperm>(2));"
1775 msgstr "I/O ポート操作を実行する (B<iopl>(2)、 B<ioperm>(2))。"
1776
1777 #. type: Plain text
1778 #: build/C/man7/capabilities.7:521
1779 msgid "access I</proc/kcore>;"
1780 msgstr "I</proc/kcore> にアクセスする。"
1781
1782 #. type: Plain text
1783 #: build/C/man7/capabilities.7:526
1784 msgid "employ the B<FIBMAP> B<ioctl>(2)  operation;"
1785 msgstr "B<FIBMAP> B<ioctl>(2) 操作を使用する。"
1786
1787 #. type: Plain text
1788 #: build/C/man7/capabilities.7:529
1789 msgid ""
1790 "open devices for accessing x86 model-specific registers (MSRs, see B<msr>(4))"
1791 msgstr ""
1792 "x86 モデルに固有のレジスタ (MSR レジスタ群、 B<msr>(4) 参照) にアクセスするた"
1793 "めのデバイスをオープンする。"
1794
1795 #. type: Plain text
1796 #: build/C/man7/capabilities.7:532
1797 msgid "update I</proc/sys/vm/mmap_min_addr>;"
1798 msgstr "I</proc/sys/vm/mmap_min_addr> を更新する。"
1799
1800 #. type: Plain text
1801 #: build/C/man7/capabilities.7:535
1802 msgid ""
1803 "create memory mappings at addresses below the value specified by I</proc/sys/"
1804 "vm/mmap_min_addr>;"
1805 msgstr ""
1806 "I</proc/sys/vm/mmap_min_addr> で指定された値よりも小さなアドレスにメモリマッ"
1807 "ピングを作成する。"
1808
1809 #. type: Plain text
1810 #: build/C/man7/capabilities.7:538
1811 msgid "map files in I</proc/bus/pci>;"
1812 msgstr "I</proc/bus/pci> にあるファイルをマップする。"
1813
1814 #. type: Plain text
1815 #: build/C/man7/capabilities.7:543
1816 msgid "open I</dev/mem> and I</dev/kmem>;"
1817 msgstr "I</dev/mem> や I</dev/kmem> をオープンする。"
1818
1819 #. type: Plain text
1820 #: build/C/man7/capabilities.7:545
1821 msgid "perform various SCSI device commands;"
1822 msgstr "各種の SCSI デバイスコマンドを実行する。"
1823
1824 #. type: Plain text
1825 #: build/C/man7/capabilities.7:551
1826 msgid "perform certain operations on B<hpsa>(4)  and B<cciss>(4)  devices;"
1827 msgstr "B<hpsa>(4) デバイスや B<cciss>(4) デバイスの特定の操作を実行する。"
1828
1829 #. type: Plain text
1830 #: build/C/man7/capabilities.7:553
1831 msgid "perform a range of device-specific operations on other devices."
1832 msgstr "他のデバイスに対して各種のデバイス固有命令を実行する。"
1833
1834 #. type: TP
1835 #: build/C/man7/capabilities.7:555
1836 #, no-wrap
1837 msgid "B<CAP_SYS_RESOURCE>"
1838 msgstr "B<CAP_SYS_RESOURCE>"
1839
1840 #. type: Plain text
1841 #: build/C/man7/capabilities.7:561
1842 msgid "Use reserved space on ext2 filesystems;"
1843 msgstr "ext2 ファイルシステム上の予約されている領域を使用する。"
1844
1845 #. type: Plain text
1846 #: build/C/man7/capabilities.7:565
1847 msgid "make B<ioctl>(2)  calls controlling ext3 journaling;"
1848 msgstr "ext3 のジャーナル機能を制御する B<ioctl>(2)  を使用する。"
1849
1850 #. type: Plain text
1851 #: build/C/man7/capabilities.7:567
1852 msgid "override disk quota limits;"
1853 msgstr "ディスク quota の上限を上書きする。"
1854
1855 #. type: Plain text
1856 #: build/C/man7/capabilities.7:570
1857 msgid "increase resource limits (see B<setrlimit>(2));"
1858 msgstr "リソース上限を増やす (B<setrlimit>(2))。"
1859
1860 #. type: Plain text
1861 #: build/C/man7/capabilities.7:576
1862 msgid "override maximum number of consoles on console allocation;"
1863 msgstr "コンソール割り当てにおいてコンソールの最大数を上書きする。"
1864
1865 #. type: Plain text
1866 #: build/C/man7/capabilities.7:578
1867 msgid "override maximum number of keymaps;"
1868 msgstr "キーマップの最大数を上書きする。"
1869
1870 #. type: Plain text
1871 #: build/C/man7/capabilities.7:580
1872 msgid "allow more than 64hz interrupts from the real-time clock;"
1873 msgstr "リアルタイムクロックから秒間 64 回を越える回数の割り当てが許可する。"
1874
1875 #. type: Plain text
1876 #: build/C/man7/capabilities.7:589
1877 msgid ""
1878 "raise I<msg_qbytes> limit for a System V message queue above the limit in I</"
1879 "proc/sys/kernel/msgmnb> (see B<msgop>(2)  and B<msgctl>(2));"
1880 msgstr ""
1881 "メッセージキューに関する上限 I<msg_qbytes> を \n"
1882 "I</proc/sys/kernel/msgmnb> に指定されている上限よりも大きく設定する\n"
1883 "(B<msgop>(2) と B<msgctl>(2) 参照)。"
1884
1885 #. type: Plain text
1886 #: build/C/man7/capabilities.7:596
1887 msgid ""
1888 "override the I</proc/sys/fs/pipe-size-max> limit when setting the capacity "
1889 "of a pipe using the B<F_SETPIPE_SZ> B<fcntl>(2)  command."
1890 msgstr ""
1891 "B<F_SETPIPE_SZ> B<fcntl>(2) を使ってパイプの容量を設定する際に\n"
1892 "上限 I</proc/sys/fs/pipe-size-max> を上書きする。"
1893
1894 #. type: Plain text
1895 #: build/C/man7/capabilities.7:601
1896 msgid ""
1897 "use B<F_SETPIPE_SZ> to increase the capacity of a pipe above the limit "
1898 "specified by I</proc/sys/fs/pipe-max-size>;"
1899 msgstr ""
1900 "I</proc/sys/fs/pipe-max-size> に指定されている上限を超えてパイプの容量\n"
1901 "を増やすのに B<F_SETPIPE_SZ> を使用する。"
1902
1903 #. type: Plain text
1904 #: build/C/man7/capabilities.7:606
1905 msgid ""
1906 "override I</proc/sys/fs/mqueue/queues_max> limit when creating POSIX message "
1907 "queues (see B<mq_overview>(7));"
1908 msgstr ""
1909 "POSIX メッセージキューを作成する際に、\n"
1910 "上限 I</proc/sys/fs/mqueue/queues_max> を上書きする\n"
1911 "(B<mq_overview>(7) 参照)。"
1912
1913 #. type: Plain text
1914 #: build/C/man7/capabilities.7:611
1915 msgid "employ B<prctl>(2)  B<PR_SET_MM> operation;"
1916 msgstr "B<prctl>(2) B<PR_SET_MM> 操作を使用する。"
1917
1918 #. type: Plain text
1919 #: build/C/man7/capabilities.7:616
1920 msgid ""
1921 "set I</proc/PID/oom_score_adj> to a value lower than the value last set by a "
1922 "process with B<CAP_SYS_RESOURCE>."
1923 msgstr ""
1924 "B<CAP_SYS_RESOURCE> を持ったプロセスによって最後に設定された値よりも小さな値"
1925 "を I</proc/PID/oom_score_adj> に設定する。"
1926
1927 #. type: TP
1928 #: build/C/man7/capabilities.7:618
1929 #, no-wrap
1930 msgid "B<CAP_SYS_TIME>"
1931 msgstr "B<CAP_SYS_TIME>"
1932
1933 #. type: Plain text
1934 #: build/C/man7/capabilities.7:625
1935 msgid ""
1936 "Set system clock (B<settimeofday>(2), B<stime>(2), B<adjtimex>(2)); set real-"
1937 "time (hardware) clock."
1938 msgstr ""
1939 "システムクロックを変更する (B<settimeofday>(2), B<stime>(2), "
1940 "B<adjtimex>(2))。 リアルタイム (ハードウェア) クロックを変更する。"
1941
1942 #. type: TP
1943 #: build/C/man7/capabilities.7:625
1944 #, no-wrap
1945 msgid "B<CAP_SYS_TTY_CONFIG>"
1946 msgstr "B<CAP_SYS_TTY_CONFIG>"
1947
1948 #. type: Plain text
1949 #: build/C/man7/capabilities.7:632
1950 msgid ""
1951 "Use B<vhangup>(2); employ various privileged B<ioctl>(2)  operations on "
1952 "virtual terminals."
1953 msgstr ""
1954 "B<vhangup>(2) を使用する。\n"
1955 "特権が必要な仮想端末に関する各種の B<ioctl>(2) 操作を利用できる。"
1956
1957 #. type: TP
1958 #: build/C/man7/capabilities.7:632
1959 #, no-wrap
1960 msgid "B<CAP_SYSLOG> (since Linux 2.6.37)"
1961 msgstr "B<CAP_SYSLOG> (Linux 2.6.37 以降)"
1962
1963 #. type: Plain text
1964 #: build/C/man7/capabilities.7:643
1965 msgid ""
1966 "Perform privileged B<syslog>(2)  operations.  See B<syslog>(2)  for "
1967 "information on which operations require privilege."
1968 msgstr ""
1969 "特権が必要な B<syslog>(2) 操作を実行できる。\n"
1970 "どの操作が特権が必要かについての情報は B<syslog>(2) を参照。"
1971
1972 #. type: Plain text
1973 #: build/C/man7/capabilities.7:653
1974 msgid ""
1975 "View kernel addresses exposed via I</proc> and other interfaces when I</proc/"
1976 "sys/kernel/kptr_restrict> has the value 1.  (See the discussion of the "
1977 "I<kptr_restrict> in B<proc>(5).)"
1978 msgstr ""
1979 "I</proc/sys/kernel/kptr_restrict> の値が 1 の場合、 I</proc> や他のインター"
1980 "フェース経由で公開されているカーネルアドレスを参照する (B<proc>(5) の "
1981 "I<kptr_restrict> の議論を参照)。"
1982
1983 #. type: TP
1984 #: build/C/man7/capabilities.7:655
1985 #, no-wrap
1986 msgid "B<CAP_WAKE_ALARM> (since Linux 3.0)"
1987 msgstr "B<CAP_WAKE_ALARM> (Linux 3.0 以降)"
1988
1989 #. type: Plain text
1990 #: build/C/man7/capabilities.7:663
1991 msgid ""
1992 "Trigger something that will wake up the system (set B<CLOCK_REALTIME_ALARM> "
1993 "and B<CLOCK_BOOTTIME_ALARM> timers)."
1994 msgstr ""
1995 "システムを起こすトリガーを有効にする (タイマー B<CLOCK_REALTIME_ALARM>\n"
1996 "や B<CLOCK_BOOTTIME_ALARM> を設定する)。"
1997
1998 #. type: SS
1999 #: build/C/man7/capabilities.7:663
2000 #, no-wrap
2001 msgid "Past and current implementation"
2002 msgstr "過去と現在の実装"
2003
2004 #. type: Plain text
2005 #: build/C/man7/capabilities.7:665
2006 msgid "A full implementation of capabilities requires that:"
2007 msgstr "完全な形のケーパビリティを実装するには、以下の要件を満たす必要がある:"
2008
2009 #. type: IP
2010 #: build/C/man7/capabilities.7:665 build/C/man7/capabilities.7:816
2011 #: build/C/man7/capabilities.7:963 build/C/man7/capabilities.7:1016
2012 #: build/C/man7/user_namespaces.7:173 build/C/man7/user_namespaces.7:515
2013 #, no-wrap
2014 msgid "1."
2015 msgstr "1."
2016
2017 #. type: Plain text
2018 #: build/C/man7/capabilities.7:669
2019 msgid ""
2020 "For all privileged operations, the kernel must check whether the thread has "
2021 "the required capability in its effective set."
2022 msgstr ""
2023 "全ての特権操作について、カーネルはそのスレッドの実効ケーパビリティセットに 必"
2024 "要なケーパビリティがあるかを確認する。"
2025
2026 #. type: IP
2027 #: build/C/man7/capabilities.7:669 build/C/man7/capabilities.7:821
2028 #: build/C/man7/capabilities.7:969 build/C/man7/capabilities.7:1022
2029 #: build/C/man7/user_namespaces.7:189 build/C/man7/user_namespaces.7:521
2030 #, no-wrap
2031 msgid "2."
2032 msgstr "2."
2033
2034 #. type: Plain text
2035 #: build/C/man7/capabilities.7:672
2036 msgid ""
2037 "The kernel must provide system calls allowing a thread's capability sets to "
2038 "be changed and retrieved."
2039 msgstr ""
2040 "カーネルで、あるスレッドのケーパビリティセットを変更したり、 取得したりできる"
2041 "システムコールが提供される。"
2042
2043 #. type: IP
2044 #: build/C/man7/capabilities.7:672 build/C/man7/capabilities.7:972
2045 #: build/C/man7/capabilities.7:1026 build/C/man7/user_namespaces.7:193
2046 #: build/C/man7/user_namespaces.7:526
2047 #, no-wrap
2048 msgid "3."
2049 msgstr "3."
2050
2051 #. type: Plain text
2052 #: build/C/man7/capabilities.7:675
2053 msgid ""
2054 "The filesystem must support attaching capabilities to an executable file, so "
2055 "that a process gains those capabilities when the file is executed."
2056 msgstr ""
2057 "ファイルシステムが、実行可能ファイルにケーパビリティを付与でき、ファイル 実行"
2058 "時にそのケーパビリティをプロセスが取得できるような機能をサポートする。"
2059
2060 #. type: Plain text
2061 #: build/C/man7/capabilities.7:679
2062 msgid ""
2063 "Before kernel 2.6.24, only the first two of these requirements are met; "
2064 "since kernel 2.6.24, all three requirements are met."
2065 msgstr ""
2066 "カーネル 2.6.24 より前では、最初の 2つの要件のみが満たされている。 カーネル "
2067 "2.6.24 以降では、3つの要件すべてが満たされている。"
2068
2069 #. type: SS
2070 #: build/C/man7/capabilities.7:679
2071 #, no-wrap
2072 msgid "Thread capability sets"
2073 msgstr "スレッドケーパビリティセット"
2074
2075 #. type: Plain text
2076 #: build/C/man7/capabilities.7:682
2077 msgid ""
2078 "Each thread has three capability sets containing zero or more of the above "
2079 "capabilities:"
2080 msgstr ""
2081 "各スレッドは以下の 3種類のケーパビリティセットを持つ。各々のケーパビリティ"
2082 "セットは 上記のケーパビリティの組み合わせである (全てのケーパビリティが無効で"
2083 "もよい)。"
2084
2085 #. type: TP
2086 #: build/C/man7/capabilities.7:682
2087 #, no-wrap
2088 msgid "I<Permitted>:"
2089 msgstr "I<許可 (permitted)>:"
2090
2091 #. type: Plain text
2092 #: build/C/man7/capabilities.7:690
2093 msgid ""
2094 "This is a limiting superset for the effective capabilities that the thread "
2095 "may assume.  It is also a limiting superset for the capabilities that may be "
2096 "added to the inheritable set by a thread that does not have the "
2097 "B<CAP_SETPCAP> capability in its effective set."
2098 msgstr ""
2099 "そのスレッドが持つことになっている実効ケーパビリティの 限定的なスーパーセット"
2100 "である。 これは、実効ケーパビリティセットに B<CAP_SETPCAP> ケーパビリティを"
2101 "持っていないスレッドが継承可能ケーパビリティセットに 追加可能なケーパビリティ"
2102 "の限定的なスーパーセットでもある。"
2103
2104 #. type: Plain text
2105 #: build/C/man7/capabilities.7:696
2106 msgid ""
2107 "If a thread drops a capability from its permitted set, it can never "
2108 "reacquire that capability (unless it B<execve>(2)s either a set-user-ID-root "
2109 "program, or a program whose associated file capabilities grant that "
2110 "capability)."
2111 msgstr ""
2112 "許可ケーパビリティセットから削除してしまったケーパビリティは、 (set-user-ID-"
2113 "root プログラムか、 そのケーパビリティをファイルケーパビリティで許可している"
2114 "プログラムを B<execve>(2)  しない限りは) もう一度獲得することはできない。"
2115
2116 #. type: TP
2117 #: build/C/man7/capabilities.7:696
2118 #, no-wrap
2119 msgid "I<Inheritable>:"
2120 msgstr "I<継承可能 (inheritable)>:"
2121
2122 #. type: Plain text
2123 #: build/C/man7/capabilities.7:703
2124 msgid ""
2125 "This is a set of capabilities preserved across an B<execve>(2).  It provides "
2126 "a mechanism for a process to assign capabilities to the permitted set of the "
2127 "new program during an B<execve>(2)."
2128 msgstr ""
2129 "B<execve>(2)  を前後で保持されるケーパビリティセットである。 この仕組みを使う"
2130 "ことで、あるプロセスが B<execve>(2)  を行う際に新しいプログラムの許可ケーパビ"
2131 "リティセットとして 割り当てるケーパビリティを指定することができる。"
2132
2133 #. type: TP
2134 #: build/C/man7/capabilities.7:703 build/C/man7/capabilities.7:753
2135 #, no-wrap
2136 msgid "I<Effective>:"
2137 msgstr "I<実効 (effective)>:"
2138
2139 #. type: Plain text
2140 #: build/C/man7/capabilities.7:707
2141 msgid ""
2142 "This is the set of capabilities used by the kernel to perform permission "
2143 "checks for the thread."
2144 msgstr ""
2145 "カーネルがスレッドの権限 (permission) をチェックするときに 使用するケーパビリ"
2146 "ティセットである。"
2147
2148 #. type: Plain text
2149 #: build/C/man7/capabilities.7:713
2150 msgid ""
2151 "A child created via B<fork>(2)  inherits copies of its parent's capability "
2152 "sets.  See below for a discussion of the treatment of capabilities during "
2153 "B<execve>(2)."
2154 msgstr ""
2155 "B<fork>(2)  で作成される子プロセスは、親のケーパビリティセットのコピーを継承"
2156 "する。 B<execve>(2)  中のケーパビリティの扱いについては下記を参照のこと。"
2157
2158 #. type: Plain text
2159 #: build/C/man7/capabilities.7:717
2160 msgid ""
2161 "Using B<capset>(2), a thread may manipulate its own capability sets (see "
2162 "below)."
2163 msgstr ""
2164 "B<capset>(2)  を使うと、プロセスは自分自身のケーパビリティセット を操作するこ"
2165 "とができる (下記参照)。"
2166
2167 #.  commit 73efc0394e148d0e15583e13712637831f926720
2168 #. type: Plain text
2169 #: build/C/man7/capabilities.7:726
2170 msgid ""
2171 "Since Linux 3.2, the file I</proc/sys/kernel/cap_last_cap> exposes the "
2172 "numerical value of the highest capability supported by the running kernel; "
2173 "this can be used to determine the highest bit that may be set in a "
2174 "capability set."
2175 msgstr ""
2176 "Linux 3.2 以降では、 ファイル I</proc/sys/kernel/cap_last_cap> で、 実行中の"
2177 "カーネルでサポートされているケーパビリティの最大値を参照できる。 この情報を"
2178 "使って、 ケーパビリティセットに設定される可能性がある最上位ビットを判定するこ"
2179 "とができる。"
2180
2181 #. type: SS
2182 #: build/C/man7/capabilities.7:726
2183 #, no-wrap
2184 msgid "File capabilities"
2185 msgstr "ファイルケーパビリティ"
2186
2187 #. type: Plain text
2188 #: build/C/man7/capabilities.7:741
2189 msgid ""
2190 "Since kernel 2.6.24, the kernel supports associating capability sets with an "
2191 "executable file using B<setcap>(8).  The file capability sets are stored in "
2192 "an extended attribute (see B<setxattr>(2))  named I<security.capability>.  "
2193 "Writing to this extended attribute requires the B<CAP_SETFCAP> capability.  "
2194 "The file capability sets, in conjunction with the capability sets of the "
2195 "thread, determine the capabilities of a thread after an B<execve>(2)."
2196 msgstr ""
2197 "カーネル 2.6.24 以降では、 B<setcap>(8)  を使って実行ファイルにケーパビリティ"
2198 "セットを対応付けることができる。 ファイルケーパビリティセットは I<security."
2199 "capability> という名前の拡張属性に保存される (B<setxattr>(2)  参照)。この拡張"
2200 "属性への書き込みには B<CAP_SETFCAP> ケーパビリティが必要である。 ファイルケー"
2201 "パビリティセットとスレッドのケーパビリティセットの両方が 考慮され、 "
2202 "B<execve>(2)  後のスレッドのケーパビリティセットが決定される。"
2203
2204 #. type: Plain text
2205 #: build/C/man7/capabilities.7:743
2206 msgid "The three file capability sets are:"
2207 msgstr "3 つのファイルケーパビリティセットが定義されている。"
2208
2209 #. type: TP
2210 #: build/C/man7/capabilities.7:743
2211 #, no-wrap
2212 msgid "I<Permitted> (formerly known as I<forced>):"
2213 msgstr "I<許可 (Permitted)> (以前のI<強制 (Forced)>):"
2214
2215 #. type: Plain text
2216 #: build/C/man7/capabilities.7:747
2217 msgid ""
2218 "These capabilities are automatically permitted to the thread, regardless of "
2219 "the thread's inheritable capabilities."
2220 msgstr ""
2221 "スレッドの継承可能ケーパビリティに関わらず、そのスレッドに自動的に 認められる"
2222 "ケーパビリティ。"
2223
2224 #. type: TP
2225 #: build/C/man7/capabilities.7:747
2226 #, no-wrap
2227 msgid "I<Inheritable> (formerly known as I<allowed>):"
2228 msgstr "I<継承可能 (Inheritable)> (以前の I<許容 (Allowed)>):"
2229
2230 #. type: Plain text
2231 #: build/C/man7/capabilities.7:753
2232 msgid ""
2233 "This set is ANDed with the thread's inheritable set to determine which "
2234 "inheritable capabilities are enabled in the permitted set of the thread "
2235 "after the B<execve>(2)."
2236 msgstr ""
2237 "このセットと、スレッドの継承可能ケーパビリティセットとの 論理積 (AND) がとら"
2238 "れ、 B<execve>(2)  の後にそのスレッドの許可ケーパビリティセットで有効となる "
2239 "継承可能ケーパビリティが決定される。"
2240
2241 #. type: Plain text
2242 #: build/C/man7/capabilities.7:763
2243 msgid ""
2244 "This is not a set, but rather just a single bit.  If this bit is set, then "
2245 "during an B<execve>(2)  all of the new permitted capabilities for the thread "
2246 "are also raised in the effective set.  If this bit is not set, then after an "
2247 "B<execve>(2), none of the new permitted capabilities is in the new effective "
2248 "set."
2249 msgstr ""
2250 "これは集合ではなく、1 ビットの情報である。 このビットがセットされていると、 "
2251 "B<execve>(2)  実行中に、そのスレッドの新しい許可ケーパビリティが全て 実効ケー"
2252 "パビリティ集合においてもセットされる。 このビットがセットされていない場合、 "
2253 "B<execve>(2)  後には新しい許可ケーパビリティのどれも新しい実効ケーパビリティ"
2254 "集合 にセットされない。"
2255
2256 #. type: Plain text
2257 #: build/C/man7/capabilities.7:779
2258 msgid ""
2259 "Enabling the file effective capability bit implies that any file permitted "
2260 "or inheritable capability that causes a thread to acquire the corresponding "
2261 "permitted capability during an B<execve>(2)  (see the transformation rules "
2262 "described below) will also acquire that capability in its effective set.  "
2263 "Therefore, when assigning capabilities to a file (B<setcap>(8), "
2264 "B<cap_set_file>(3), B<cap_set_fd>(3)), if we specify the effective flag as "
2265 "being enabled for any capability, then the effective flag must also be "
2266 "specified as enabled for all other capabilities for which the corresponding "
2267 "permitted or inheritable flags is enabled."
2268 msgstr ""
2269 "ファイルの実効ケーパビリティビットを有効にするというのは、 B<execve>(2)  実行"
2270 "時に、ファイルの許可ケーパビリティと継承ケーパビリティに対応するものが スレッ"
2271 "ドの許可ケーパビリティセットとしてセットされるが、 これが実効ケーパビリティ"
2272 "セットにもセットされるということである (ケーパビリティの変換ルールは下記参"
2273 "照)。 したがって、ファイルにケーパビリティを割り当てる際 (B<setcap>(8), "
2274 "B<cap_set_file>(3), B<cap_set_fd>(3))、 いずれかのケーパビリティに対して実効"
2275 "フラグを有効と指定する場合、 許可フラグや継承可能フラグを有効にした他の全ての"
2276 "ケーパビリティ についても実効フラグを有効と指定しなければならない。"
2277
2278 #. type: SS
2279 #: build/C/man7/capabilities.7:779
2280 #, no-wrap
2281 msgid "Transformation of capabilities during execve()"
2282 msgstr "execve() 中のケーパビリティの変換"
2283
2284 #. type: Plain text
2285 #: build/C/man7/capabilities.7:785
2286 msgid ""
2287 "During an B<execve>(2), the kernel calculates the new capabilities of the "
2288 "process using the following algorithm:"
2289 msgstr ""
2290 "B<execve>(2)  実行時に、カーネルはプロセスの新しいケーパビリティを次の アルゴ"
2291 "リズムを用いて計算する:"
2292
2293 #. type: Plain text
2294 #: build/C/man7/capabilities.7:790
2295 #, no-wrap
2296 msgid ""
2297 "P'(permitted) = (P(inheritable) & F(inheritable)) |\n"
2298 "                (F(permitted) & cap_bset)\n"
2299 msgstr ""
2300 "P'(permitted) = (P(inheritable) & F(inheritable)) |\n"
2301 "                (F(permitted) & cap_bset)\n"
2302
2303 #. type: Plain text
2304 #: build/C/man7/capabilities.7:792
2305 #, no-wrap
2306 msgid "P'(effective) = F(effective) ? P'(permitted) : 0\n"
2307 msgstr "P'(effective) = F(effective) ? P'(permitted) : 0\n"
2308
2309 #. type: Plain text
2310 #: build/C/man7/capabilities.7:794
2311 #, no-wrap
2312 msgid "P'(inheritable) = P(inheritable)    [i.e., unchanged]\n"
2313 msgstr "P'(inheritable) = P(inheritable)    [つまり、変更されない]\n"
2314
2315 #. type: Plain text
2316 #: build/C/man7/capabilities.7:798
2317 msgid "where:"
2318 msgstr "各変数の意味は以下の通り:"
2319
2320 #. type: IP
2321 #: build/C/man7/capabilities.7:799
2322 #, no-wrap
2323 msgid "P"
2324 msgstr "P"
2325
2326 #. type: Plain text
2327 #: build/C/man7/capabilities.7:802
2328 msgid "denotes the value of a thread capability set before the B<execve>(2)"
2329 msgstr "B<execve>(2)  前のスレッドのケーパビリティセットの値"
2330
2331 #. type: IP
2332 #: build/C/man7/capabilities.7:802
2333 #, no-wrap
2334 msgid "P'"
2335 msgstr "P'"
2336
2337 #. type: Plain text
2338 #: build/C/man7/capabilities.7:805
2339 msgid "denotes the value of a capability set after the B<execve>(2)"
2340 msgstr "B<execve>(2)  後のスレッドのケーパビリティセットの値"
2341
2342 #. type: IP
2343 #: build/C/man7/capabilities.7:805
2344 #, no-wrap
2345 msgid "F"
2346 msgstr "F"
2347
2348 #. type: Plain text
2349 #: build/C/man7/capabilities.7:807
2350 msgid "denotes a file capability set"
2351 msgstr "ファイルケーパビリティセットの値"
2352
2353 #. type: IP
2354 #: build/C/man7/capabilities.7:807
2355 #, no-wrap
2356 msgid "cap_bset"
2357 msgstr "cap_bset"
2358
2359 #. type: Plain text
2360 #: build/C/man7/capabilities.7:809
2361 msgid "is the value of the capability bounding set (described below)."
2362 msgstr "ケーパビリティバウンディングセットの値 (下記参照)"
2363
2364 #. type: SS
2365 #: build/C/man7/capabilities.7:811
2366 #, no-wrap
2367 msgid "Capabilities and execution of programs by root"
2368 msgstr "ケーパビリティと、ルートによるプログラムの実行"
2369
2370 #. type: Plain text
2371 #: build/C/man7/capabilities.7:816
2372 msgid ""
2373 "In order to provide an all-powerful I<root> using capability sets, during an "
2374 "B<execve>(2):"
2375 msgstr ""
2376 "B<execve>(2)  時に、ケーパビリティセットを使って、全ての権限を持った I<root> "
2377 "を実現するには、以下のようにする。"
2378
2379 #. type: Plain text
2380 #: build/C/man7/capabilities.7:821
2381 msgid ""
2382 "If a set-user-ID-root program is being executed, or the real user ID of the "
2383 "process is 0 (root)  then the file inheritable and permitted sets are "
2384 "defined to be all ones (i.e., all capabilities enabled)."
2385 msgstr ""
2386 "set-user-ID-root プログラムが実行される場合、 またはプロセスの実ユーザ ID が "
2387 "0 (root) の場合、 ファイルの継承可能セットと許可セットを全て 1 (全てのケーパ"
2388 "ビリティが有効) に定義する。"
2389
2390 #. type: Plain text
2391 #: build/C/man7/capabilities.7:824
2392 msgid ""
2393 "If a set-user-ID-root program is being executed, then the file effective bit "
2394 "is defined to be one (enabled)."
2395 msgstr ""
2396 "set-user-ID-root プログラムが実行される場合、 ファイルの実効ケーパビリティ"
2397 "ビットを 1 (enabled) に定義する。"
2398
2399 #.  If a process with real UID 0, and nonzero effective UID does an
2400 #.  exec(), then it gets all capabilities in its
2401 #.  permitted set, and no effective capabilities
2402 #. type: Plain text
2403 #: build/C/man7/capabilities.7:839
2404 msgid ""
2405 "The upshot of the above rules, combined with the capabilities "
2406 "transformations described above, is that when a process B<execve>(2)s a set-"
2407 "user-ID-root program, or when a process with an effective UID of 0 "
2408 "B<execve>(2)s a program, it gains all capabilities in its permitted and "
2409 "effective capability sets, except those masked out by the capability "
2410 "bounding set.  This provides semantics that are the same as those provided "
2411 "by traditional UNIX systems."
2412 msgstr ""
2413 "上記のルールにケーパビリティ変換を適用した結果をまとめると、 プロセスが set-"
2414 "user-ID-root プログラムを B<execve>(2)  する場合、または実効 UID が 0 のプロ"
2415 "セスがプログラムを B<execve>(2)  する場合、許可と実効のケーパビリティセットの"
2416 "全ケーパビリティ (正確には、ケーパビリティバウンディングセットによるマスクで"
2417 "除外されるもの 以外の全てのケーパビリティ) を取得するということである。 これ"
2418 "により、伝統的な UNIX システムと同じ振る舞いができるようになっている。"
2419
2420 #. type: SS
2421 #: build/C/man7/capabilities.7:839
2422 #, no-wrap
2423 msgid "Capability bounding set"
2424 msgstr "ケーパビリティ・バウンディングセット"
2425
2426 #. type: Plain text
2427 #: build/C/man7/capabilities.7:844
2428 msgid ""
2429 "The capability bounding set is a security mechanism that can be used to "
2430 "limit the capabilities that can be gained during an B<execve>(2).  The "
2431 "bounding set is used in the following ways:"
2432 msgstr ""
2433 "ケーパビリティ・バウンディングセット (capability bounding set) は、 "
2434 "B<execve>(2)  時に獲得できるケーパビリティを制限するために使われる セキュリ"
2435 "ティ機構である。 バウンディングセットは以下のように使用される。"
2436
2437 #. type: Plain text
2438 #: build/C/man7/capabilities.7:852
2439 msgid ""
2440 "During an B<execve>(2), the capability bounding set is ANDed with the file "
2441 "permitted capability set, and the result of this operation is assigned to "
2442 "the thread's permitted capability set.  The capability bounding set thus "
2443 "places a limit on the permitted capabilities that may be granted by an "
2444 "executable file."
2445 msgstr ""
2446 "B<execve>(2)  実行時に、ケーパビリティ・バウンディングセットと ファイルの許可"
2447 "ケーパビリティセットの論理和 (AND) を取ったものが、 そのスレッドの許可ケーパ"
2448 "ビリティセットに割り当てられる。 つまり、ケーパビリティ・バウンディングセット"
2449 "は、 実行ファイルが認めている許可ケーパビリティに対して 制限を課す働きをす"
2450 "る。"
2451
2452 #. type: Plain text
2453 #: build/C/man7/capabilities.7:864
2454 msgid ""
2455 "(Since Linux 2.6.25)  The capability bounding set acts as a limiting "
2456 "superset for the capabilities that a thread can add to its inheritable set "
2457 "using B<capset>(2).  This means that if a capability is not in the bounding "
2458 "set, then a thread can't add this capability to its inheritable set, even if "
2459 "it was in its permitted capabilities, and thereby cannot have this "
2460 "capability preserved in its permitted set when it B<execve>(2)s a file that "
2461 "has the capability in its inheritable set."
2462 msgstr ""
2463 "(Linux 2.6.25 以降)  ケーパビリティ・バウンディングセットは、スレッドが "
2464 "B<capset>(2)  により自身の継承可能セットに追加可能なケーパビリティの母集団を "
2465 "制限する役割を持つ。 スレッドに許可されたケーパビリティであっても、バウンディ"
2466 "ングセットに 含まれていなければ、スレッドはそのケーパビリティは自身の継承可能"
2467 "セットに 追加できず、その結果、継承可能セットにそのケーパビリティを含むファイ"
2468 "ルを B<execve>(2)  する場合、そのケーパビリティを許可セットに持ち続けることが"
2469 "できない、 ということである。"
2470
2471 #. type: Plain text
2472 #: build/C/man7/capabilities.7:871
2473 msgid ""
2474 "Note that the bounding set masks the file permitted capabilities, but not "
2475 "the inherited capabilities.  If a thread maintains a capability in its "
2476 "inherited set that is not in its bounding set, then it can still gain that "
2477 "capability in its permitted set by executing a file that has the capability "
2478 "in its inherited set."
2479 msgstr ""
2480 "バウンディングセットがマスクを行うのは、継承可能ケーパビリティではなく、 ファ"
2481 "イルの許可ケーパビリティのマスクを行う点に注意すること。 あるスレッドの継承可"
2482 "能セットにそのスレッドのバウンディングセットに 存在しないケーパビリティが含ま"
2483 "れている場合、そのスレッドは、 継承可能セットに含まれるケーパビリティを持つ"
2484 "ファイルを実行することにより、 許可セットに含まれるケーパビリティも獲得できる"
2485 "ということである。"
2486
2487 #. type: Plain text
2488 #: build/C/man7/capabilities.7:874
2489 msgid ""
2490 "Depending on the kernel version, the capability bounding set is either a "
2491 "system-wide attribute, or a per-process attribute."
2492 msgstr ""
2493 "カーネルのバージョンにより、ケーパビリティ・バウンディングセットは システム共"
2494 "通の属性の場合と、プロセス単位の属性の場合がある。"
2495
2496 #. type: Plain text
2497 #: build/C/man7/capabilities.7:876
2498 msgid "B<Capability bounding set prior to Linux 2.6.25>"
2499 msgstr "B<Linux 2.6.25 より前のケーパビリティ・バウンディングセット>"
2500
2501 #. type: Plain text
2502 #: build/C/man7/capabilities.7:884
2503 msgid ""
2504 "In kernels before 2.6.25, the capability bounding set is a system-wide "
2505 "attribute that affects all threads on the system.  The bounding set is "
2506 "accessible via the file I</proc/sys/kernel/cap-bound>.  (Confusingly, this "
2507 "bit mask parameter is expressed as a signed decimal number in I</proc/sys/"
2508 "kernel/cap-bound>.)"
2509 msgstr ""
2510 "2.6.25 より前のカーネルでは、ケーパビリティ・バウンディングセットは システム"
2511 "共通の属性で、システム上の全てのスレッドに適用される。 バウンディングセット"
2512 "は I</proc/sys/kernel/cap-bound> ファイル経由で参照できる。 (間違えやすいが、"
2513 "このビットマスク形式のパラメータは、 I</proc/sys/kernel/cap-bound> では符号付"
2514 "きの十進数で表現される。)"
2515
2516 #. type: Plain text
2517 #: build/C/man7/capabilities.7:891
2518 msgid ""
2519 "Only the B<init> process may set capabilities in the capability bounding "
2520 "set; other than that, the superuser (more precisely: programs with the "
2521 "B<CAP_SYS_MODULE> capability) may only clear capabilities from this set."
2522 msgstr ""
2523 "B<init> プロセスだけがケーパビリティ・バウンディングセットで ケーパビリティを"
2524 "セットすることができる。 それ以外では、スーパーユーザ (より正確には、 "
2525 "B<CAP_SYS_MODULE> ケーパビリティを持ったプログラム) が、 ケーパビリティ・バウ"
2526 "ンディングセットのケーパビリティのクリアが できるだけである。"
2527
2528 #. type: Plain text
2529 #: build/C/man7/capabilities.7:900
2530 msgid ""
2531 "On a standard system the capability bounding set always masks out the "
2532 "B<CAP_SETPCAP> capability.  To remove this restriction (dangerous!), modify "
2533 "the definition of B<CAP_INIT_EFF_SET> in I<include/linux/capability.h> and "
2534 "rebuild the kernel."
2535 msgstr ""
2536 "通常のシステムでは、ケーパビリティ・バウンディングセットは、 B<CAP_SETPCAP> "
2537 "が無効になっている。 この制限を取り去るには (取り去るのは危険!)、 I<include/"
2538 "linux/capability.h> 内の B<CAP_INIT_EFF_SET> の定義を修正し、カーネルを再構築"
2539 "する必要がある。"
2540
2541 #. type: Plain text
2542 #: build/C/man7/capabilities.7:904
2543 msgid ""
2544 "The system-wide capability bounding set feature was added to Linux starting "
2545 "with kernel version 2.2.11."
2546 msgstr ""
2547 "システム共通のケーパビリティ・バウンディングセット機能は、 カーネル 2.2.11 以"
2548 "降で Linux に追加された。"
2549
2550 #. type: Plain text
2551 #: build/C/man7/capabilities.7:906
2552 msgid "B<Capability bounding set from Linux 2.6.25 onward>"
2553 msgstr "B<Linux 2.6.25 以降のケーパビリティ・バウンディングセット>"
2554
2555 #. type: Plain text
2556 #: build/C/man7/capabilities.7:911
2557 msgid ""
2558 "From Linux 2.6.25, the I<capability bounding set> is a per-thread "
2559 "attribute.  (There is no longer a system-wide capability bounding set.)"
2560 msgstr ""
2561 "Linux 2.6.25 以降では、 「ケーパビリティ・バウンディングセット」はスレッド単"
2562 "位の属性である (システム共通のケーパビリティ・バウンディングセットはもはや存"
2563 "在しない)。"
2564
2565 #. type: Plain text
2566 #: build/C/man7/capabilities.7:916
2567 msgid ""
2568 "The bounding set is inherited at B<fork>(2)  from the thread's parent, and "
2569 "is preserved across an B<execve>(2)."
2570 msgstr ""
2571 "バウンディングセットは B<fork>(2)  時にはスレッドの親プロセスから継承され、 "
2572 "B<execve>(2)  の前後では保持される。"
2573
2574 #. type: Plain text
2575 #: build/C/man7/capabilities.7:929
2576 msgid ""
2577 "A thread may remove capabilities from its capability bounding set using the "
2578 "B<prctl>(2)  B<PR_CAPBSET_DROP> operation, provided it has the "
2579 "B<CAP_SETPCAP> capability.  Once a capability has been dropped from the "
2580 "bounding set, it cannot be restored to that set.  A thread can determine if "
2581 "a capability is in its bounding set using the B<prctl>(2)  "
2582 "B<PR_CAPBSET_READ> operation."
2583 msgstr ""
2584 "スレッドが B<CAP_SETPCAP> ケーパビリティを持っている場合、そのスレッドは "
2585 "B<prctl>(2)  の B<PR_CAPBSET_DROP> 操作を使って自身のケーパビリティ・バウン"
2586 "ディングセットから ケーパビリティを削除することができる。 いったんケーパビリ"
2587 "ティをバウンディングセットから削除してしまうと、 スレッドはそのケーパビリティ"
2588 "を再度セットすることはできない。 B<prctl>(2)  の B<PR_CAPBSET_READ> 操作を使"
2589 "うことで、スレッドがあるケーパビリティが自身のバウンディングセット に含まれて"
2590 "いるかを知ることができる。"
2591
2592 #. type: Plain text
2593 #: build/C/man7/capabilities.7:947
2594 msgid ""
2595 "Removing capabilities from the bounding set is supported only if file "
2596 "capabilities are compiled into the kernel.  In kernels before Linux 2.6.33, "
2597 "file capabilities were an optional feature configurable via the "
2598 "B<CONFIG_SECURITY_FILE_CAPABILITIES> option.  Since Linux 2.6.33, the "
2599 "configuration option has been removed and file capabilities are always part "
2600 "of the kernel.  When file capabilities are compiled into the kernel, the "
2601 "B<init> process (the ancestor of all processes) begins with a full bounding "
2602 "set.  If file capabilities are not compiled into the kernel, then B<init> "
2603 "begins with a full bounding set minus B<CAP_SETPCAP>, because this "
2604 "capability has a different meaning when there are no file capabilities."
2605 msgstr ""
2606 "バウンディングセットからのケーパビリティの削除がサポートされるのは、\n"
2607 "カーネルのコンパイル時にファイルケーパビリティが有効になっている場合\n"
2608 "だけである。Linux 2.6.33 より前のカーネルでは、ファイルケーパビリティは\n"
2609 "設定オプション B<CONFIG_SECURITY_FILE_CAPABILITIES> で切り替えられる追加の\n"
2610 "機能であった。Linux 2.6.33 以降では、この設定オプションは削除され、\n"
2611 "ファイルケーパビリティは常にカーネルに組込まれるようになった。\n"
2612 "ファイルケーパビリティがカーネルにコンパイル時に組み込まれている場合、\n"
2613 "(全てのプロセスの先祖である) I<init> プロセスはバウンディングセットで\n"
2614 "全てのケーパビリティが セットされた状態で開始する。ファイルケーパビリティ\n"
2615 "が有効になっていない場合には、 I<init> はバウンディングセットで\n"
2616 "B<CAP_SETPCAP> 以外の全てのケーパビリティがセットされた状態で開始する。\n"
2617 "このようになっているのは、 B<CAP_SETPCAP> ケーパビリティがファイルケー\n"
2618 "パビリティがサポートされていない場合には 違った意味を持つからである。"
2619
2620 #. type: Plain text
2621 #: build/C/man7/capabilities.7:954
2622 msgid ""
2623 "Removing a capability from the bounding set does not remove it from the "
2624 "thread's inherited set.  However it does prevent the capability from being "
2625 "added back into the thread's inherited set in the future."
2626 msgstr ""
2627 "バウンディングセットからケーパビリティを削除しても、 スレッドの継承可能セット"
2628 "からはそのケーパビリティは削除されない。 しかしながら、バウンディングセットか"
2629 "らの削除により、 この先そのケーパビリティをスレッドの継承可能セットに追加する"
2630 "こと はできなくなる。"
2631
2632 #. type: SS
2633 #: build/C/man7/capabilities.7:954
2634 #, no-wrap
2635 msgid "Effect of user ID changes on capabilities"
2636 msgstr "ユーザ ID 変更のケーパビリティへの影響"
2637
2638 #. type: Plain text
2639 #: build/C/man7/capabilities.7:963
2640 msgid ""
2641 "To preserve the traditional semantics for transitions between 0 and nonzero "
2642 "user IDs, the kernel makes the following changes to a thread's capability "
2643 "sets on changes to the thread's real, effective, saved set, and filesystem "
2644 "user IDs (using B<setuid>(2), B<setresuid>(2), or similar):"
2645 msgstr ""
2646 "ユーザ ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、 ス"
2647 "レッドの実 UID、実効 UID、保存 set-user-ID、ファイルシステム UID が "
2648 "(B<setuid>(2), B<setresuid>(2)  などを使って) 変更された際に、カーネルはその"
2649 "スレッドのケーパビリティセットに 以下の変更を行う:"
2650
2651 #. type: Plain text
2652 #: build/C/man7/capabilities.7:969
2653 msgid ""
2654 "If one or more of the real, effective or saved set user IDs was previously "
2655 "0, and as a result of the UID changes all of these IDs have a nonzero value, "
2656 "then all capabilities are cleared from the permitted and effective "
2657 "capability sets."
2658 msgstr ""
2659 "UID の変更前には実 UID、実効 UID、保存 set-user-ID のうち 少なくとも一つが 0 "
2660 "で、変更後に実 UID、実効 UID、保存 set-user-ID が すべて 0 以外の値になった場"
2661 "合、許可と実効のケーパビリティセットの 全ケーパビリティをクリアする。"
2662
2663 #. type: Plain text
2664 #: build/C/man7/capabilities.7:972
2665 msgid ""
2666 "If the effective user ID is changed from 0 to nonzero, then all capabilities "
2667 "are cleared from the effective set."
2668 msgstr ""
2669 "実効 UID が 0 から 0 以外に変更された場合、 実効ケーパビリティセットの全ケー"
2670 "パビリティをクリアする。"
2671
2672 #. type: Plain text
2673 #: build/C/man7/capabilities.7:975
2674 msgid ""
2675 "If the effective user ID is changed from nonzero to 0, then the permitted "
2676 "set is copied to the effective set."
2677 msgstr ""
2678 "実効 UID が 0 以外から 0 に変更された場合、 許可ケーパビリティセットの内容を"
2679 "実効ケーパビリティセットにコピーする。"
2680
2681 #. type: IP
2682 #: build/C/man7/capabilities.7:975 build/C/man7/capabilities.7:1030
2683 #: build/C/man7/user_namespaces.7:529
2684 #, no-wrap
2685 msgid "4."
2686 msgstr "4."
2687
2688 #. type: Plain text
2689 #: build/C/man7/capabilities.7:993
2690 msgid ""
2691 "If the filesystem user ID is changed from 0 to nonzero (see B<setfsuid>(2)), "
2692 "then the following capabilities are cleared from the effective set: "
2693 "B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, "
2694 "B<CAP_FSETID>, B<CAP_LINUX_IMMUTABLE> (since Linux 2.6.30), "
2695 "B<CAP_MAC_OVERRIDE>, and B<CAP_MKNOD> (since Linux 2.6.30).  If the "
2696 "filesystem UID is changed from nonzero to 0, then any of these capabilities "
2697 "that are enabled in the permitted set are enabled in the effective set."
2698 msgstr ""
2699 "ファイルシステム UID が 0 から 0 以外に変更された場合 (B<setfsuid>(2)  参"
2700 "照)、実効ケーパビリティセットの以下のケーパビリティがクリアされる: "
2701 "B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, "
2702 "B<CAP_FSETID>, B<CAP_LINUX_IMMUTABLE> (Linux 2.6.30 以降), "
2703 "B<CAP_MAC_OVERRIDE>, B<CAP_MKNOD> (Linux 2.6.30 以降)。 ファイルシステム UID "
2704 "が 0 以外から 0 に変更された場合、 上記のケーパビリティのうち許可ケーパビリ"
2705 "ティセットで有効になっているものが 実効ケーパビリティセットで有効にされる。"
2706
2707 #. type: Plain text
2708 #: build/C/man7/capabilities.7:1001
2709 msgid ""
2710 "If a thread that has a 0 value for one or more of its user IDs wants to "
2711 "prevent its permitted capability set being cleared when it resets all of its "
2712 "user IDs to nonzero values, it can do so using the B<prctl>(2)  "
2713 "B<PR_SET_KEEPCAPS> operation."
2714 msgstr ""
2715 "各種 UID のうち少なくとも一つが 0 であるスレッドが、 その UID の全てが 0 以外"
2716 "になったときに許可ケーパビリティセットが クリアされないようにしたい場合に"
2717 "は、 B<prctl>(2)  の B<PR_SET_KEEPCAPS> 操作を使えばよい。"
2718
2719 #. type: SS
2720 #: build/C/man7/capabilities.7:1001
2721 #, no-wrap
2722 msgid "Programmatically adjusting capability sets"
2723 msgstr "プログラムでケーパビリティセットを調整する"
2724
2725 #. type: Plain text
2726 #: build/C/man7/capabilities.7:1016
2727 msgid ""
2728 "A thread can retrieve and change its capability sets using the B<capget>(2)  "
2729 "and B<capset>(2)  system calls.  However, the use of B<cap_get_proc>(3)  and "
2730 "B<cap_set_proc>(3), both provided in the I<libcap> package, is preferred for "
2731 "this purpose.  The following rules govern changes to the thread capability "
2732 "sets:"
2733 msgstr ""
2734 "各スレッドは、 B<capget>(2)  や B<capset>(2)  を使って、自身のケーパビリティ"
2735 "セットを取得したり変更したりできる。 ただし、これを行うには、 I<libcap> パッ"
2736 "ケージで提供されている B<cap_get_proc>(3)  や B<cap_set_proc>(3)  を使うのが"
2737 "望ましい。 スレッドのケーパビリティセットの変更には以下のルールが適用される。"
2738
2739 #. type: Plain text
2740 #: build/C/man7/capabilities.7:1022
2741 msgid ""
2742 "If the caller does not have the B<CAP_SETPCAP> capability, the new "
2743 "inheritable set must be a subset of the combination of the existing "
2744 "inheritable and permitted sets."
2745 msgstr ""
2746 "呼び出し側が B<CAP_SETPCAP> ケーパビリティを持っていない場合、新しい継承可能"
2747 "セットは、 既存の継承可能セットと許可セットの積集合 (AND) の部分集合で なけれ"
2748 "ばならない。"
2749
2750 #. type: Plain text
2751 #: build/C/man7/capabilities.7:1026
2752 msgid ""
2753 "(Since Linux 2.6.25)  The new inheritable set must be a subset of the "
2754 "combination of the existing inheritable set and the capability bounding set."
2755 msgstr ""
2756 "(Linux 2.6.25 以降)  新しい継承可能セットは、既存の継承可能セットとケーパビリ"
2757 "ティ・ バウンディングセットの積集合 (AND) の部分集合でなければならない。"
2758
2759 #. type: Plain text
2760 #: build/C/man7/capabilities.7:1030
2761 msgid ""
2762 "The new permitted set must be a subset of the existing permitted set (i.e., "
2763 "it is not possible to acquire permitted capabilities that the thread does "
2764 "not currently have)."
2765 msgstr ""
2766 "新しい許可セットは、既存の許可セットの部分集合でなければならない (つまり、そ"
2767 "のスレッドが現在持っていない許可ケーパビリティを 獲得することはできない)。"
2768
2769 #. type: Plain text
2770 #: build/C/man7/capabilities.7:1032
2771 msgid "The new effective set must be a subset of the new permitted set."
2772 msgstr ""
2773 "新しい実効ケーパビリティセットは新しい許可ケーパビリティセットの 部分集合に"
2774 "なっていなければならない。"
2775
2776 #. type: SS
2777 #: build/C/man7/capabilities.7:1032
2778 #, no-wrap
2779 msgid "The securebits flags: establishing a capabilities-only environment"
2780 msgstr "securebits フラグ: ケーパビリティだけの環境を構築する"
2781
2782 #.  For some background:
2783 #.        see http://lwn.net/Articles/280279/ and
2784 #.        http://article.gmane.org/gmane.linux.kernel.lsm/5476/
2785 #. type: Plain text
2786 #: build/C/man7/capabilities.7:1043
2787 msgid ""
2788 "Starting with kernel 2.6.26, and with a kernel in which file capabilities "
2789 "are enabled, Linux implements a set of per-thread I<securebits> flags that "
2790 "can be used to disable special handling of capabilities for UID 0 "
2791 "(I<root>).  These flags are as follows:"
2792 msgstr ""
2793 "カーネル 2.6.26 以降で、 ファイルケーパビリティが有効になったカーネルでは、 "
2794 "スレッド単位の I<securebits> フラグが実装されており、このフラグを使うと UID "
2795 "0 (I<root>)  に対するケーパビリティの特別扱いを無効することができる。 以下の"
2796 "ようなフラグがある。"
2797
2798 #. type: TP
2799 #: build/C/man7/capabilities.7:1043
2800 #, no-wrap
2801 msgid "B<SECBIT_KEEP_CAPS>"
2802 msgstr "B<SECBIT_KEEP_CAPS>"
2803
2804 #. type: Plain text
2805 #: build/C/man7/capabilities.7:1055
2806 msgid ""
2807 "Setting this flag allows a thread that has one or more 0 UIDs to retain its "
2808 "capabilities when it switches all of its UIDs to a nonzero value.  If this "
2809 "flag is not set, then such a UID switch causes the thread to lose all "
2810 "capabilities.  This flag is always cleared on an B<execve>(2).  (This flag "
2811 "provides the same functionality as the older B<prctl>(2)  B<PR_SET_KEEPCAPS> "
2812 "operation.)"
2813 msgstr ""
2814 "このフラグをセットされている場合、UID が 0 のスレッドの UID が 0 以外の値に "
2815 "切り替わる際に、そのスレッドはケーパビリティを維持することができる。 このフラ"
2816 "グがセットされていない場合には、UID が 0 から 0 以外の値に 切り替わると、その"
2817 "スレッドは全てのケーパビリティを失う。 このフラグは B<execve>(2)  時には全て"
2818 "クリアされる (このフラグは、以前の B<prctl>(2)  の B<PR_SET_KEEPCAPS> 操作と"
2819 "同じ機能を提供するものである)。"
2820
2821 #. type: TP
2822 #: build/C/man7/capabilities.7:1055
2823 #, no-wrap
2824 msgid "B<SECBIT_NO_SETUID_FIXUP>"
2825 msgstr "B<SECBIT_NO_SETUID_FIXUP>"
2826
2827 #. type: Plain text
2828 #: build/C/man7/capabilities.7:1062
2829 msgid ""
2830 "Setting this flag stops the kernel from adjusting capability sets when the "
2831 "threads's effective and filesystem UIDs are switched between zero and "
2832 "nonzero values.  (See the subsection I<Effect of User ID Changes on "
2833 "Capabilities>.)"
2834 msgstr ""
2835 "このフラグをセットすると、スレッドの実効 UID とファイルシステム UID が 0 と "
2836 "0 以外の間で切り替わった場合に、 カーネルはケーパビリティセットの調整を行わな"
2837 "くなる (「ユーザ ID 変更のケーパビリティへの影響」の節を参照)。"
2838
2839 #. type: TP
2840 #: build/C/man7/capabilities.7:1062
2841 #, no-wrap
2842 msgid "B<SECBIT_NOROOT>"
2843 msgstr "B<SECBIT_NOROOT>"
2844
2845 #. type: Plain text
2846 #: build/C/man7/capabilities.7:1070
2847 msgid ""
2848 "If this bit is set, then the kernel does not grant capabilities when a set-"
2849 "user-ID-root program is executed, or when a process with an effective or "
2850 "real UID of 0 calls B<execve>(2).  (See the subsection I<Capabilities and "
2851 "execution of programs by root>.)"
2852 msgstr ""
2853 "このビットがセットされている場合、 set-user-ID-root プログラムの実行時や、 実"
2854 "効 UID か 実 UID が 0 のプロセスが B<execve>(2)  を呼び出した時に、カーネルは"
2855 "ケーパビリティを許可しない (「ケーパビリティと、ルートによるプログラムの実"
2856 "行」の節を参照)。"
2857
2858 #. type: Plain text
2859 #: build/C/man7/capabilities.7:1080
2860 msgid ""
2861 "Each of the above \"base\" flags has a companion \"locked\" flag.  Setting "
2862 "any of the \"locked\" flags is irreversible, and has the effect of "
2863 "preventing further changes to the corresponding \"base\" flag.  The locked "
2864 "flags are: B<SECBIT_KEEP_CAPS_LOCKED>, B<SECBIT_NO_SETUID_FIXUP_LOCKED>, and "
2865 "B<SECBIT_NOROOT_LOCKED>."
2866 msgstr ""
2867 "上記の \"base\" フラグの各々には対応する \"locked\" フラグが存在する。 いずれ"
2868 "の \"locked\" フラグも一度セットされると戻すことはできず、 それ以降は対応す"
2869 "る \"base\" フラグを変更することができなくなる。 \"locked\" フラグは "
2870 "B<SECBIT_KEEP_CAPS_LOCKED>, B<SECBIT_NO_SETUID_FIXUP_LOCKED>, "
2871 "B<SECBIT_NOROOT_LOCKED> という名前である。"
2872
2873 #. type: Plain text
2874 #: build/C/man7/capabilities.7:1092
2875 msgid ""
2876 "The I<securebits> flags can be modified and retrieved using the B<prctl>(2)  "
2877 "B<PR_SET_SECUREBITS> and B<PR_GET_SECUREBITS> operations.  The "
2878 "B<CAP_SETPCAP> capability is required to modify the flags."
2879 msgstr ""
2880 "I<securebits> フラグは、 B<prctl>(2)  の操作 B<PR_SET_SECUREBITS> や "
2881 "B<PR_GET_SECUREBITS> を使うことで変更したり取得したりできる。 フラグを変更す"
2882 "るには B<CAP_SETPCAP> ケーパビリティが必要である。"
2883
2884 #. type: Plain text
2885 #: build/C/man7/capabilities.7:1101
2886 msgid ""
2887 "The I<securebits> flags are inherited by child processes.  During an "
2888 "B<execve>(2), all of the flags are preserved, except B<SECBIT_KEEP_CAPS> "
2889 "which is always cleared."
2890 msgstr ""
2891 "I<securebits> フラグは子プロセスに継承される。 B<execve>(2) においては、\n"
2892 "B<SECBIT_KEEP_CAPS> が常にクリアされる以外は、全てのフラグが保持される。"
2893
2894 #. type: Plain text
2895 #: build/C/man7/capabilities.7:1106
2896 msgid ""
2897 "An application can use the following call to lock itself, and all of its "
2898 "descendants, into an environment where the only way of gaining capabilities "
2899 "is by executing a program with associated file capabilities:"
2900 msgstr ""
2901 "アプリケーションは、以下の呼び出しを行うことにより、 自分自身および子孫となる"
2902 "プロセス全てに対して、 必要なファイルケーパビリティを持ったプログラムを実行し"
2903 "ない限り、 対応するケーパビリティを獲得できないような状況に閉じこめることがで"
2904 "きる。"
2905
2906 #. type: Plain text
2907 #: build/C/man7/capabilities.7:1115
2908 #, no-wrap
2909 msgid ""
2910 "prctl(PR_SET_SECUREBITS,\n"
2911 "        SECBIT_KEEP_CAPS_LOCKED |\n"
2912 "        SECBIT_NO_SETUID_FIXUP |\n"
2913 "        SECBIT_NO_SETUID_FIXUP_LOCKED |\n"
2914 "        SECBIT_NOROOT |\n"
2915 "        SECBIT_NOROOT_LOCKED);\n"
2916 msgstr ""
2917 "prctl(PR_SET_SECUREBITS,\n"
2918 "        SECBIT_KEEP_CAPS_LOCKED |\n"
2919 "        SECBIT_NO_SETUID_FIXUP |\n"
2920 "        SECBIT_NO_SETUID_FIXUP_LOCKED |\n"
2921 "        SECBIT_NOROOT |\n"
2922 "        SECBIT_NOROOT_LOCKED);\n"
2923
2924 #. type: SS
2925 #: build/C/man7/capabilities.7:1117
2926 #, no-wrap
2927 msgid "Interaction with user namespaces"
2928 msgstr "ユーザー名前空間との相互作用"
2929
2930 #. type: Plain text
2931 #: build/C/man7/capabilities.7:1120
2932 msgid ""
2933 "For a discussion of the interaction of capabilities and user namespaces, see "
2934 "B<user_namespaces>(7)."
2935 msgstr ""
2936 "ケーパリビティとユーザー名前空間の相互の影響に関する議論は "
2937 "B<user_namespaces>(7) を参照。"
2938
2939 #. type: Plain text
2940 #: build/C/man7/capabilities.7:1126
2941 msgid ""
2942 "No standards govern capabilities, but the Linux capability implementation is "
2943 "based on the withdrawn POSIX.1e draft standard; see E<.UR http://wt."
2944 "tuxomania.net\\:/publications\\:/posix.1e/> E<.UE .>"
2945 msgstr ""
2946 "ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった "
2947 "POSIX.1e 草案に基づいて実装されている。 E<.UR http://wt.xpilot.org\\:/"
2948 "publications\\:/posix.1e/> E<.UE> を参照。"
2949
2950 #. type: Plain text
2951 #: build/C/man7/capabilities.7:1131
2952 msgid ""
2953 "Since kernel 2.5.27, capabilities are an optional kernel component, and can "
2954 "be enabled/disabled via the B<CONFIG_SECURITY_CAPABILITIES> kernel "
2955 "configuration option."
2956 msgstr ""
2957 "カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となって"
2958 "おり、カーネル設定オプション B<CONFIG_SECURITY_CAPABILITIES> により有効/無効"
2959 "を切り替えることができる。"
2960
2961 #.  7b9a7ec565505699f503b4fcf61500dceb36e744
2962 #. type: Plain text
2963 #: build/C/man7/capabilities.7:1145
2964 msgid ""
2965 "The I</proc/PID/task/TID/status> file can be used to view the capability "
2966 "sets of a thread.  The I</proc/PID/status> file shows the capability sets of "
2967 "a process's main thread.  Before Linux 3.8, nonexistent capabilities were "
2968 "shown as being enabled (1) in these sets.  Since Linux 3.8, all nonexistent "
2969 "capabilities (above B<CAP_LAST_CAP>)  are shown as disabled (0)."
2970 msgstr ""
2971 "I</proc/PID/task/TID/status> ファイルを使うと、スレッドのケーパビリティセット"
2972 "を見ることができる。 I</proc/PID/status> ファイルには、プロセスのメインスレッ"
2973 "ドのケーパビリティセットが表示される。 Linux 3.8 より前では、 これらのケーパ"
2974 "ビリティセットの表示で、 存在しないケーパビリティはすべて有効 (1) として表示"
2975 "される。 Linux 3.8 以降では、 存在しないケーパビリティはすべて無効 (0) として"
2976 "表示される。 (B<CAP_LAST_CAP> より大きい値を持つケーパビリティが存在しない"
2977 "ケーパビリティである)。"
2978
2979 #. type: Plain text
2980 #: build/C/man7/capabilities.7:1160
2981 msgid ""
2982 "The I<libcap> package provides a suite of routines for setting and getting "
2983 "capabilities that is more comfortable and less likely to change than the "
2984 "interface provided by B<capset>(2)  and B<capget>(2).  This package also "
2985 "provides the B<setcap>(8)  and B<getcap>(8)  programs.  It can be found at"
2986 msgstr ""
2987 "I<libcap> パッケージは、ケーパビリティを設定・取得するための ルーチン群を提供"
2988 "している。これらのインタフェースは、 B<capset>(2)  と B<capget>(2)  が提供す"
2989 "るインターフェースと比べて、より使いやすく、変更される可能性が少ない。 この"
2990 "パッケージでは、 B<setcap>(8), B<getcap>(8)  というプログラムも提供されてい"
2991 "る。 パッケージは以下で入手できる。"
2992
2993 #. type: Plain text
2994 #: build/C/man7/capabilities.7:1163
2995 msgid ""
2996 "E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/libs\\:/security\\:/linux-"
2997 "privs> E<.UE .>"
2998 msgstr ""
2999 "E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/libs\\:/security\\:/linux-"
3000 "privs> E<.UE .>"
3001
3002 #. type: Plain text
3003 #: build/C/man7/capabilities.7:1172
3004 msgid ""
3005 "Before kernel 2.6.24, and since kernel 2.6.24 if file capabilities are not "
3006 "enabled, a thread with the B<CAP_SETPCAP> capability can manipulate the "
3007 "capabilities of threads other than itself.  However, this is only "
3008 "theoretically possible, since no thread ever has B<CAP_SETPCAP> in either of "
3009 "these cases:"
3010 msgstr ""
3011 "バージョン 2.6.24 より前、およびファイルケーパビリティが 有効になっていない"
3012 "2.6.24 以降のカーネルでは、 B<CAP_SETPCAP> ケーパビリティを持ったスレッドは自"
3013 "分以外のスレッドの ケーパビリティを操作できる。 しかしながら、これは理論的に"
3014 "可能というだけである。 以下のいずれかの場合においても、どのスレッドも "
3015 "B<CAP_SETPCAP> ケーパビリティを持つことはないからである。"
3016
3017 #. type: Plain text
3018 #: build/C/man7/capabilities.7:1177
3019 msgid ""
3020 "In the pre-2.6.25 implementation the system-wide capability bounding set, I</"
3021 "proc/sys/kernel/cap-bound>, always masks out this capability, and this can "
3022 "not be changed without modifying the kernel source and rebuilding."
3023 msgstr ""
3024 "2.6.25 より前の実装では、システム共通のケーパビリティ・バウンディングセット "
3025 "I</proc/sys/kernel/cap-bound> ではこのケーパビリティは常に無効になっており、 "
3026 "ソースを変更してカーネルを再コンパイルしない限り、 これを変更することはできな"
3027 "い。"
3028
3029 #. type: Plain text
3030 #: build/C/man7/capabilities.7:1183
3031 msgid ""
3032 "If file capabilities are disabled in the current implementation, then "
3033 "B<init> starts out with this capability removed from its per-process "
3034 "bounding set, and that bounding set is inherited by all other processes "
3035 "created on the system."
3036 msgstr ""
3037 "現在の実装ではファイルケーパビリティが無効になっている場合、 プロセス毎のバウ"
3038 "ンディングセットからこのケーパビリティを抜いて B<init> は開始され、 システム"
3039 "上で生成される他の全てのプロセスでこのバウンディングセットが 継承される。"
3040
3041 #. type: Plain text
3042 #: build/C/man7/capabilities.7:1202
3043 msgid ""
3044 "B<capsh>(1), B<capget>(2), B<prctl>(2), B<setfsuid>(2), B<cap_clear>(3), "
3045 "B<cap_copy_ext>(3), B<cap_from_text>(3), B<cap_get_file>(3), "
3046 "B<cap_get_proc>(3), B<cap_init>(3), B<capgetp>(3), B<capsetp>(3), "
3047 "B<libcap>(3), B<credentials>(7), B<user_namespaces>(7), B<pthreads>(7), "
3048 "B<getcap>(8), B<setcap>(8)"
3049 msgstr ""
3050 "B<capsh>(1), B<capget>(2), B<prctl>(2), B<setfsuid>(2), B<cap_clear>(3), "
3051 "B<cap_copy_ext>(3), B<cap_from_text>(3), B<cap_get_file>(3), "
3052 "B<cap_get_proc>(3), B<cap_init>(3), B<capgetp>(3), B<capsetp>(3), "
3053 "B<libcap>(3), B<credentials>(7), B<user_namespaces>(7), B<pthreads>(7), "
3054 "B<getcap>(8), B<setcap>(8)"
3055
3056 #. type: Plain text
3057 #: build/C/man7/capabilities.7:1205
3058 msgid "I<include/linux/capability.h> in the Linux kernel source tree"
3059 msgstr "Linux カーネルソース内の I<include/linux/capability.h>"
3060
3061 #. type: TH
3062 #: build/C/man2/capget.2:15
3063 #, no-wrap
3064 msgid "CAPGET"
3065 msgstr "CAPGET"
3066
3067 #. type: TH
3068 #: build/C/man2/capget.2:15
3069 #, no-wrap
3070 msgid "2013-03-11"
3071 msgstr "2013-03-11"
3072
3073 #. type: Plain text
3074 #: build/C/man2/capget.2:18
3075 msgid "capget, capset - set/get capabilities of thread(s)"
3076 msgstr "capget, capset - スレッドのケーパビリティを設定/取得する"
3077
3078 #. type: Plain text
3079 #: build/C/man2/capget.2:20
3080 msgid "B<#include E<lt>sys/capability.hE<gt>>"
3081 msgstr "B<#include E<lt>sys/capability.hE<gt>>"
3082
3083 #. type: Plain text
3084 #: build/C/man2/capget.2:22
3085 msgid ""
3086 "B<int capget(cap_user_header_t >I<hdrp>B<, cap_user_data_t >I<datap>B<);>"
3087 msgstr ""
3088 "B<int capget(cap_user_header_t >I<hdrp>B<, cap_user_data_t >I<datap>B<);>"
3089
3090 #. type: Plain text
3091 #: build/C/man2/capget.2:24
3092 msgid ""
3093 "B<int capset(cap_user_header_t >I<hdrp>B<, const cap_user_data_t "
3094 ">I<datap>B<);>"
3095 msgstr ""
3096 "B<int capset(cap_user_header_t >I<hdrp>B<, const cap_user_data_t "
3097 ">I<datap>B<);>"
3098
3099 #. type: Plain text
3100 #: build/C/man2/capget.2:35
3101 msgid ""
3102 "As of Linux 2.2, the power of the superuser (root) has been partitioned into "
3103 "a set of discrete capabilities.  Each thread has a set of effective "
3104 "capabilities identifying which capabilities (if any) it may currently "
3105 "exercise.  Each thread also has a set of inheritable capabilities that may "
3106 "be passed through an B<execve>(2)  call, and a set of permitted capabilities "
3107 "that it can make effective or inheritable."
3108 msgstr ""
3109 "Linux 2.2 で、スーパーユーザー (root) の権限は、個別のケーパビリティ "
3110 "(capabilities) へと分割され、その集合として表現されるようになった。 各スレッ"
3111 "ドは「実効ケーパビリティ (effective capability) の集合」を持ち、 それによって"
3112 "現在どの操作が実行可能かを識別できる。 また、各スレッドは、 「継承可能ケーパ"
3113 "ビリティ (inheritable capability) の集合」と 「許可ケーパビリティ (permitted "
3114 "capability) の集合」を持つ。 「継承可能ケーパビリティの集合」は "
3115 "B<execve>(2)  を通じて渡すことができるケーパビリティの集合であり、 「許可ケー"
3116 "パビリティ (permitted capability) の集合」は 実効ケーパビリティや継承可能ケー"
3117 "パビリティとして有効にできる ケーパビリティを規定するものである。"
3118
3119 #. type: Plain text
3120 #: build/C/man2/capget.2:44
3121 msgid ""
3122 "These two system calls are the raw kernel interface for getting and setting "
3123 "thread capabilities.  Not only are these system calls specific to Linux, but "
3124 "the kernel API is likely to change and use of these system calls (in "
3125 "particular the format of the I<cap_user_*_t> types) is subject to extension "
3126 "with each kernel revision, but old programs will keep working."
3127 msgstr ""
3128 "この二つのシステムコールはスレッドのケーパビリティを取得したり設定したりする"
3129 "ための 生のカーネルインターフェースである。 これらのシステムコールは Linux 特"
3130 "有であるというだけでなく、 カーネル API は変更されるかもしれず、これらのシス"
3131 "テムコールの使用法 (特に I<cap_user_*_t> 型という書式) はカーネルのリビジョン"
3132 "毎に拡張されるかもしれないが、 以前のプログラムはそのまま動作する。"
3133
3134 #. type: Plain text
3135 #: build/C/man2/capget.2:55
3136 msgid ""
3137 "The portable interfaces are B<cap_set_proc>(3)  and B<cap_get_proc>(3); if "
3138 "possible, you should use those interfaces in applications.  If you wish to "
3139 "use the Linux extensions in applications, you should use the easier-to-use "
3140 "interfaces B<capsetp>(3)  and B<capgetp>(3)."
3141 msgstr ""
3142 "移植性のあるインターフェースは B<cap_set_proc>(3)  と B<cap_get_proc>(3)  で"
3143 "ある。 可能ならばアプリケーションはこれらの関数を使用すべきである。 アプリ"
3144 "ケーションに Linux 拡張を使用したい場合には、より簡単に 使えるインターフェー"
3145 "スである B<capsetp>(3)  と B<capgetp>(3)  を使用すべきである。"
3146
3147 #. type: SS
3148 #: build/C/man2/capget.2:55
3149 #, no-wrap
3150 msgid "Current details"
3151 msgstr "現在の詳細"
3152
3153 #. type: Plain text
3154 #: build/C/man2/capget.2:58
3155 msgid ""
3156 "Now that you have been warned, some current kernel details.  The structures "
3157 "are defined as follows."
3158 msgstr ""
3159 "現在のカーネルの詳細について注意を述べておく。 構造体は以下のように定義され"
3160 "る。"
3161
3162 #. type: Plain text
3163 #: build/C/man2/capget.2:63
3164 #, no-wrap
3165 msgid ""
3166 "#define _LINUX_CAPABILITY_VERSION_1  0x19980330\n"
3167 "#define _LINUX_CAPABILITY_U32S_1     1\n"
3168 msgstr ""
3169 "#define _LINUX_CAPABILITY_VERSION_1  0x19980330\n"
3170 "#define _LINUX_CAPABILITY_U32S_1     1\n"
3171
3172 #. type: Plain text
3173 #: build/C/man2/capget.2:66
3174 #, no-wrap
3175 msgid ""
3176 "#define _LINUX_CAPABILITY_VERSION_2  0x20071026\n"
3177 "#define _LINUX_CAPABILITY_U32S_2     2\n"
3178 msgstr ""
3179 "#define _LINUX_CAPABILITY_VERSION_2  0x20071026\n"
3180 "#define _LINUX_CAPABILITY_U32S_2     2\n"
3181
3182 #. type: Plain text
3183 #: build/C/man2/capget.2:71
3184 #, no-wrap
3185 msgid ""
3186 "typedef struct __user_cap_header_struct {\n"
3187 "   __u32 version;\n"
3188 "   int pid;\n"
3189 "} *cap_user_header_t;\n"
3190 msgstr ""
3191 "typedef struct __user_cap_header_struct {\n"
3192 "   __u32 version;\n"
3193 "   int pid;\n"
3194 "} *cap_user_header_t;\n"
3195
3196 #. type: Plain text
3197 #: build/C/man2/capget.2:77
3198 #, no-wrap
3199 msgid ""
3200 "typedef struct __user_cap_data_struct {\n"
3201 "   __u32 effective;\n"
3202 "   __u32 permitted;\n"
3203 "   __u32 inheritable;\n"
3204 "} *cap_user_data_t;\n"
3205 msgstr ""
3206 "typedef struct __user_cap_data_struct {\n"
3207 "   __u32 effective;\n"
3208 "   __u32 permitted;\n"
3209 "   __u32 inheritable;\n"
3210 "} *cap_user_data_t;\n"
3211
3212 #. type: Plain text
3213 #: build/C/man2/capget.2:96
3214 msgid ""
3215 "The I<effective>, I<permitted>, and I<inheritable> fields are bit masks of "
3216 "the capabilities defined in B<capabilities>(7).  Note the B<CAP_*> values "
3217 "are bit indexes and need to be bit-shifted before ORing into the bit "
3218 "fields.  To define the structures for passing to the system call you have to "
3219 "use the I<struct __user_cap_header_struct> and I<struct "
3220 "__user_cap_data_struct> names because the typedefs are only pointers."
3221 msgstr ""
3222 "フィールド I<effective>, I<permitted>, I<inheritable> は、 "
3223 "B<capabilities>(7)  で定義されるケーパビリティのビットマスクである。 "
3224 "I<CAP_*> はビット番号を表すインデックス値であり、 ビットフィールドに OR を行"
3225 "う前に I<CAP_*> の値の分だけビットシフトを行う必要がある。 typedef の方はポイ"
3226 "ンタなので、 このシステムコールに渡す構造体を定義するには、 I<struct "
3227 "__user_cap_header_struct> と I<struct __user_cap_data_struct> という名前を使"
3228 "用しなければならない。"
3229
3230 #. type: Plain text
3231 #: build/C/man2/capget.2:108
3232 msgid ""
3233 "Kernels prior to 2.6.25 prefer 32-bit capabilities with version "
3234 "B<_LINUX_CAPABILITY_VERSION_1>, and kernels 2.6.25+ prefer 64-bit "
3235 "capabilities with version B<_LINUX_CAPABILITY_VERSION_2>.  Note, 64-bit "
3236 "capabilities use I<datap>[0] and I<datap>[1], whereas 32-bit capabilities "
3237 "use only I<datap>[0]."
3238 msgstr ""
3239 "カーネル 2.6.25 より前では、バージョン B<_LINUX_CAPABILITY_VERSION_1> の 32 "
3240 "ビットケーパビリティが推奨である。 カーネル 2.6.25 以降では、バージョン "
3241 "B<_LINUX_CAPABILITY_VERSION_2> の 64 ビットケーパビリティが推奨である。 64 "
3242 "ビットケーパビリティでは I<datap>[0] と I<datap>[1] が使用されるのに対し、 "
3243 "32 ビットケーパビリティでは I<datap>[0] だけが使用される。"
3244
3245 #. type: Plain text
3246 #: build/C/man2/capget.2:112
3247 msgid ""
3248 "Another change affecting the behavior of these system calls is kernel "
3249 "support for file capabilities (VFS capability support).  This support is "
3250 "currently a compile time option (added in kernel 2.6.24)."
3251 msgstr ""
3252 "これらのシステムコールの挙動に影響があるもう一つの変更点は、 ファイルケーパビ"
3253 "リティ (file capabilities) のカーネルによるサポート (VFS ケーパビリティのサ"
3254 "ポート) である。 VFS ケーパビリティのサポートは現在のところコンパイル時のオプ"
3255 "ションである (カーネル 2.6.24 で追加された)。"
3256
3257 #. type: Plain text
3258 #: build/C/man2/capget.2:119
3259 msgid ""
3260 "For B<capget>()  calls, one can probe the capabilities of any process by "
3261 "specifying its process ID with the I<hdrp-E<gt>pid> field value."
3262 msgstr ""
3263 "B<capget>()  では、 I<hdrp-E<gt>pid> のフィールド値にケーパビリティを知りたい"
3264 "プロセスのプロセス ID を 指定することで、任意のプロセスのケーパビリティを調べ"
3265 "ることができる。"
3266
3267 #. type: SS
3268 #: build/C/man2/capget.2:119
3269 #, no-wrap
3270 msgid "With VFS capability support"
3271 msgstr "VFS ケーパビリティがサポートされている場合"
3272
3273 #. type: Plain text
3274 #: build/C/man2/capget.2:131
3275 msgid ""
3276 "VFS Capability support creates a file-attribute method for adding "
3277 "capabilities to privileged executables.  This privilege model obsoletes "
3278 "kernel support for one process asynchronously setting the capabilities of "
3279 "another.  That is, with VFS support, for B<capset>()  calls the only "
3280 "permitted values for I<hdrp-E<gt>pid> are 0 or B<getpid>(2), which are "
3281 "equivalent."
3282 msgstr ""
3283 "VFS ケーパビリティのサポートでは、特権実行ファイルにケーパビリティを 追加する"
3284 "ためのファイル属性メソッドが作成された。 この特権モデルの導入により、あるプロ"
3285 "セスにより別のプロセスのケーパビリティ を非同期に設定する機能のカーネルによる"
3286 "サポートは廃止される。 つまり、VFS サポートでは、 B<capset>()  を呼び出す際"
3287 "に I<hdrp-E<gt>pid> の値として許されるのは 0 と B<getpid>(2)  が返す値だけと"
3288 "なる (どちらの値でも等価である)。"
3289
3290 #. type: SS
3291 #: build/C/man2/capget.2:131
3292 #, no-wrap
3293 msgid "Without VFS capability support"
3294 msgstr "VFS ケーパビリティがサポートされていない場合"
3295
3296 #. type: Plain text
3297 #: build/C/man2/capget.2:157
3298 msgid ""
3299 "When the kernel does not support VFS capabilities, B<capset>()  calls can "
3300 "operate on the capabilities of the thread specified by the I<pid> field of "
3301 "I<hdrp> when that is nonzero, or on the capabilities of the calling thread "
3302 "if I<pid> is 0.  If I<pid> refers to a single-threaded process, then I<pid> "
3303 "can be specified as a traditional process ID; operating on a thread of a "
3304 "multithreaded process requires a thread ID of the type returned by "
3305 "B<gettid>(2).  For B<capset>(), I<pid> can also be: -1, meaning perform the "
3306 "change on all threads except the caller and B<init>(1); or a value less than "
3307 "-1, in which case the change is applied to all members of the process group "
3308 "whose ID is -I<pid>."
3309 msgstr ""
3310 "カーネルが VFS ケーパビリティをサポートしていない場合、 I<hdrp> の I<pid> "
3311 "フィールドが 0 以外であれば、 B<capset>()  の操作対象は I<pid> で指定されたス"
3312 "レッドのケーパビリティになる。 I<pid> が 0 の場合は呼び出し元のスレッドのケー"
3313 "パビリティが操作対象となる。 I<pid> がシングルスレッド・プロセスを参照してい"
3314 "る場合、 I<pid> は以前から使われているプロセスID を使って指定できる。 マルチ"
3315 "スレッド・プロセス内のあるスレッドを対象にする場合は、 B<gettid>(2)  が返すス"
3316 "レッドID を用いて指定する必要がある。 また、 B<capset>()  では -1 や -1 より"
3317 "小さな値を指定することもできる。 -1 は呼び出し元と B<init>(1)  を除く全てのス"
3318 "レッドを対象として変更を行うことを、 -1 より小さな値は ID が -I<pid> のプロセ"
3319 "スグループの全メンバ を対象として変更を行うことを意味する。"
3320
3321 #. type: Plain text
3322 #: build/C/man2/capget.2:160
3323 msgid "For details on the data, see B<capabilities>(7)."
3324 msgstr "このデータの詳細は B<capabilities>(7)  を参照すること。"
3325
3326 #. type: Plain text
3327 #: build/C/man2/capget.2:179
3328 msgid ""
3329 "The calls will fail with the error B<EINVAL>, and set the I<version> field "
3330 "of I<hdrp> to the kernel preferred value of B<_LINUX_CAPABILITY_VERSION_?> "
3331 "when an unsupported I<version> value is specified.  In this way, one can "
3332 "probe what the current preferred capability revision is."
3333 msgstr ""
3334 "I<hdrp> のフィールド I<version> にサポートされていない値が指定された場合、 呼"
3335 "び出しはエラー B<EINVAL> で失敗し、 I<version> にカーネル推奨の "
3336 "B<_LINUX_CAPABILITY_VERSION_?> を設定する。 このようにして、現在の推奨ケーパ"
3337 "ビリティ・リビジョンが何かを 調べることができる。"
3338
3339 #. type: Plain text
3340 #: build/C/man2/capget.2:188
3341 msgid ""
3342 "Bad memory address.  I<hdrp> must not be NULL.  I<datap> may be NULL only "
3343 "when the user is trying to determine the preferred capability version format "
3344 "supported by the kernel."
3345 msgstr ""
3346 "不正なメモリアドレス。 I<hdrp> は NULL であってはならない。 I<datap> に NULL "
3347 "を指定してよいのは、ユーザがカーネルがサポートしている 推奨のケーパビリティ・"
3348 "バージョンを判定しようとしているときだけである。"
3349
3350 #. type: TP
3351 #: build/C/man2/capget.2:188 build/C/man7/cpuset.7:1180
3352 #: build/C/man7/cpuset.7:1189 build/C/man7/cpuset.7:1198
3353 #: build/C/man7/cpuset.7:1208 build/C/man7/cpuset.7:1217
3354 #: build/C/man7/cpuset.7:1224 build/C/man7/cpuset.7:1231
3355 #: build/C/man2/getgroups.2:114 build/C/man2/getgroups.2:121
3356 #: build/C/man2/getpriority.2:118 build/C/man2/getrlimit.2:471
3357 #: build/C/man2/getrusage.2:198 build/C/man2/iopl.2:72
3358 #: build/C/man2/ioprio_set.2:170 build/C/man2/seteuid.2:80
3359 #: build/C/man2/setgid.2:59 build/C/man2/setpgid.2:225
3360 #: build/C/man2/setresuid.2:99 build/C/man2/setreuid.2:128
3361 #: build/C/man2/setuid.2:105 build/C/man2/seccomp.2:373
3362 #: build/C/man2/seccomp.2:380 build/C/man2/seccomp.2:387
3363 #: build/C/man2/seccomp.2:393 build/C/man2/seccomp.2:402
3364 #, no-wrap
3365 msgid "B<EINVAL>"
3366 msgstr "B<EINVAL>"
3367
3368 #. type: Plain text
3369 #: build/C/man2/capget.2:191
3370 msgid "One of the arguments was invalid."
3371 msgstr "引き数のどれかが無効である。"
3372
3373 #. type: Plain text
3374 #: build/C/man2/capget.2:196
3375 msgid ""
3376 "An attempt was made to add a capability to the Permitted set, or to set a "
3377 "capability in the Effective or Inheritable sets that is not in the Permitted "
3378 "set."
3379 msgstr ""
3380 "「許可ケーパビリティセット」にケーパビリティを追加しようとしているか、 もしく"
3381 "は「許可ケーパビリティセット」に含まれないケーパビリティを 「実効ケーパビリ"
3382 "ティセット」や「継承可能ケーパビリティセット」に セットしようとしている。"
3383
3384 #. type: Plain text
3385 #: build/C/man2/capget.2:215
3386 msgid ""
3387 "The caller attempted to use B<capset>()  to modify the capabilities of a "
3388 "thread other than itself, but lacked sufficient privilege.  For kernels "
3389 "supporting VFS capabilities, this is never permitted.  For kernels lacking "
3390 "VFS support, the B<CAP_SETPCAP> capability is required.  (A bug in kernels "
3391 "before 2.6.11 meant that this error could also occur if a thread without "
3392 "this capability tried to change its own capabilities by specifying the "
3393 "I<pid> field as a nonzero value (i.e., the value returned by B<getpid>(2))  "
3394 "instead of 0.)"
3395 msgstr ""
3396 "呼び出し元が自分以外のスレッドのケーパビリティを B<capset>()  を使って修正し"
3397 "ようとしたが、十分な特権がなかった。 VFS ケーパビリティをサポートしているカー"
3398 "ネルでは、 この操作が許可されることは決してない。 VFS ケーパビリティをサポー"
3399 "トしていないカーネルでは、 B<CAP_SETPCAP> ケーパビリティが必要である。 (バー"
3400 "ジョン 2.6.11 より前のカーネルには、 このケーパビリティを持たないスレッドが "
3401 "I<pid> フィールドに 0 でない値 (つまり、0 の代わりに B<getpid>(2)  が返す値) "
3402 "を指定して自分自身のケーパビリティを変更しようとした場合にも、 このエラーが発"
3403 "生するというバグがあった。)"
3404
3405 #. type: TP
3406 #: build/C/man2/capget.2:215 build/C/man7/cpuset.7:1330
3407 #: build/C/man2/getpriority.2:126 build/C/man2/getrlimit.2:495
3408 #: build/C/man2/getsid.2:70 build/C/man2/ioprio_set.2:187
3409 #: build/C/man2/setpgid.2:240 build/C/man2/seccomp.2:426
3410 #, no-wrap
3411 msgid "B<ESRCH>"
3412 msgstr "B<ESRCH>"
3413
3414 #. type: Plain text
3415 #: build/C/man2/capget.2:218
3416 msgid "No such thread."
3417 msgstr "そのようなスレッドが存在しない。"
3418
3419 #. type: Plain text
3420 #: build/C/man2/capget.2:220 build/C/man2/ioprio_set.2:198
3421 msgid "These system calls are Linux-specific."
3422 msgstr "これらのシステムコールは Linux 独自である。"
3423
3424 #. type: Plain text
3425 #: build/C/man2/capget.2:225
3426 msgid ""
3427 "The portable interface to the capability querying and setting functions is "
3428 "provided by the I<libcap> library and is available here:"
3429 msgstr ""
3430 "ケーパビリティを設定したり取得したりする機能のための移植性ある インターフェー"
3431 "スは I<libcap> ライブラリによって提供される。 このライブラリは以下から入手で"
3432 "きる:"
3433
3434 #. type: Plain text
3435 #: build/C/man2/capget.2:228
3436 msgid ""
3437 "E<.UR http://git.kernel.org/cgit\\:/linux\\:/kernel\\:/git\\:/morgan\\:\\:/"
3438 "libcap.git> E<.UE>"
3439 msgstr ""
3440 "E<.UR http://git.kernel.org/cgit\\:/linux\\:/kernel\\:/git\\:/morgan\\:\\:/"
3441 "libcap.git> E<.UE>"
3442
3443 #. type: Plain text
3444 #: build/C/man2/capget.2:232
3445 msgid "B<clone>(2), B<gettid>(2), B<capabilities>(7)"
3446 msgstr "B<clone>(2), B<gettid>(2), B<capabilities>(7)"
3447
3448 #. type: TH
3449 #: build/C/man7/cpuset.7:25
3450 #, no-wrap
3451 msgid "CPUSET"
3452 msgstr "CPUSET"
3453
3454 #. type: TH
3455 #: build/C/man7/cpuset.7:25
3456 #, no-wrap
3457 msgid "2014-05-21"
3458 msgstr "2014-05-21"
3459
3460 #. type: Plain text
3461 #: build/C/man7/cpuset.7:28
3462 msgid "cpuset - confine processes to processor and memory node subsets"
3463 msgstr ""
3464
3465 #. type: Plain text
3466 #: build/C/man7/cpuset.7:35
3467 msgid ""
3468 "The cpuset filesystem is a pseudo-filesystem interface to the kernel cpuset "
3469 "mechanism, which is used to control the processor placement and memory "
3470 "placement of processes.  It is commonly mounted at I</dev/cpuset>."
3471 msgstr ""
3472
3473 #. type: Plain text
3474 #: build/C/man7/cpuset.7:52
3475 msgid ""
3476 "On systems with kernels compiled with built in support for cpusets, all "
3477 "processes are attached to a cpuset, and cpusets are always present.  If a "
3478 "system supports cpusets, then it will have the entry B<nodev cpuset> in the "
3479 "file I</proc/filesystems>.  By mounting the cpuset filesystem (see the "
3480 "B<EXAMPLE> section below), the administrator can configure the cpusets on a "
3481 "system to control the processor and memory placement of processes on that "
3482 "system.  By default, if the cpuset configuration on a system is not modified "
3483 "or if the cpuset filesystem is not even mounted, then the cpuset mechanism, "
3484 "though present, has no affect on the system's behavior."
3485 msgstr ""
3486
3487 #. type: Plain text
3488 #: build/C/man7/cpuset.7:54
3489 msgid "A cpuset defines a list of CPUs and memory nodes."
3490 msgstr ""
3491
3492 #. type: Plain text
3493 #: build/C/man7/cpuset.7:63
3494 msgid ""
3495 "The CPUs of a system include all the logical processing units on which a "
3496 "process can execute, including, if present, multiple processor cores within "
3497 "a package and Hyper-Threads within a processor core.  Memory nodes include "
3498 "all distinct banks of main memory; small and SMP systems typically have just "
3499 "one memory node that contains all the system's main memory, while NUMA (non-"
3500 "uniform memory access) systems have multiple memory nodes."
3501 msgstr ""
3502
3503 #. type: Plain text
3504 #: build/C/man7/cpuset.7:73
3505 msgid ""
3506 "Cpusets are represented as directories in a hierarchical pseudo-filesystem, "
3507 "where the top directory in the hierarchy (I</dev/cpuset>)  represents the "
3508 "entire system (all online CPUs and memory nodes)  and any cpuset that is the "
3509 "child (descendant) of another parent cpuset contains a subset of that "
3510 "parent's CPUs and memory nodes.  The directories and files representing "
3511 "cpusets have normal filesystem permissions."
3512 msgstr ""
3513
3514 #. type: Plain text
3515 #: build/C/man7/cpuset.7:84
3516 msgid ""
3517 "Every process in the system belongs to exactly one cpuset.  A process is "
3518 "confined to run only on the CPUs in the cpuset it belongs to, and to "
3519 "allocate memory only on the memory nodes in that cpuset.  When a process "
3520 "B<fork>(2)s, the child process is placed in the same cpuset as its parent.  "
3521 "With sufficient privilege, a process may be moved from one cpuset to another "
3522 "and the allowed CPUs and memory nodes of an existing cpuset may be changed."
3523 msgstr ""
3524
3525 #. type: Plain text
3526 #: build/C/man7/cpuset.7:92
3527 msgid ""
3528 "When the system begins booting, a single cpuset is defined that includes all "
3529 "CPUs and memory nodes on the system, and all processes are in that cpuset.  "
3530 "During the boot process, or later during normal system operation, other "
3531 "cpusets may be created, as subdirectories of this top cpuset, under the "
3532 "control of the system administrator, and processes may be placed in these "
3533 "other cpusets."
3534 msgstr ""
3535
3536 #. type: Plain text
3537 #: build/C/man7/cpuset.7:114
3538 msgid ""
3539 "Cpusets are integrated with the B<sched_setaffinity>(2)  scheduling affinity "
3540 "mechanism and the B<mbind>(2)  and B<set_mempolicy>(2)  memory-placement "
3541 "mechanisms in the kernel.  Neither of these mechanisms let a process make "
3542 "use of a CPU or memory node that is not allowed by that process's cpuset.  "
3543 "If changes to a process's cpuset placement conflict with these other "
3544 "mechanisms, then cpuset placement is enforced even if it means overriding "
3545 "these other mechanisms.  The kernel accomplishes this overriding by silently "
3546 "restricting the CPUs and memory nodes requested by these other mechanisms to "
3547 "those allowed by the invoking process's cpuset.  This can result in these "
3548 "other calls returning an error, if for example, such a call ends up "
3549 "requesting an empty set of CPUs or memory nodes, after that request is "
3550 "restricted to the invoking process's cpuset."
3551 msgstr ""
3552
3553 #. type: Plain text
3554 #: build/C/man7/cpuset.7:120
3555 msgid ""
3556 "Typically, a cpuset is used to manage the CPU and memory-node confinement "
3557 "for a set of cooperating processes such as a batch scheduler job, and these "
3558 "other mechanisms are used to manage the placement of individual processes or "
3559 "memory regions within that set or job."
3560 msgstr ""
3561
3562 #. type: SH
3563 #: build/C/man7/cpuset.7:120
3564 #, no-wrap
3565 msgid "FILES"
3566 msgstr ""
3567
3568 #. type: Plain text
3569 #: build/C/man7/cpuset.7:125
3570 msgid ""
3571 "Each directory below I</dev/cpuset> represents a cpuset and contains a fixed "
3572 "set of pseudo-files describing the state of that cpuset."
3573 msgstr ""
3574
3575 #. type: Plain text
3576 #: build/C/man7/cpuset.7:135
3577 msgid ""
3578 "New cpusets are created using the B<mkdir>(2)  system call or the "
3579 "B<mkdir>(1)  command.  The properties of a cpuset, such as its flags, "
3580 "allowed CPUs and memory nodes, and attached processes, are queried and "
3581 "modified by reading or writing to the appropriate file in that cpuset's "
3582 "directory, as listed below."
3583 msgstr ""
3584
3585 #. type: Plain text
3586 #: build/C/man7/cpuset.7:141
3587 msgid ""
3588 "The pseudo-files in each cpuset directory are automatically created when the "
3589 "cpuset is created, as a result of the B<mkdir>(2)  invocation.  It is not "
3590 "possible to directly add or remove these pseudo-files."
3591 msgstr ""
3592
3593 #. type: Plain text
3594 #: build/C/man7/cpuset.7:149
3595 msgid ""
3596 "A cpuset directory that contains no child cpuset directories, and has no "
3597 "attached processes, can be removed using B<rmdir>(2)  or B<rmdir>(1).  It is "
3598 "not necessary, or possible, to remove the pseudo-files inside the directory "
3599 "before removing it."
3600 msgstr ""
3601
3602 #. type: Plain text
3603 #: build/C/man7/cpuset.7:163
3604 msgid ""
3605 "The pseudo-files in each cpuset directory are small text files that may be "
3606 "read and written using traditional shell utilities such as B<cat>(1), and "
3607 "B<echo>(1), or from a program by using file I/O library functions or system "
3608 "calls, such as B<open>(2), B<read>(2), B<write>(2), and B<close>(2)."
3609 msgstr ""
3610
3611 #.  ====================== tasks ======================
3612 #. type: Plain text
3613 #: build/C/man7/cpuset.7:168
3614 msgid ""
3615 "The pseudo-files in a cpuset directory represent internal kernel state and "
3616 "do not have any persistent image on disk.  Each of these per-cpuset files is "
3617 "listed and described below."
3618 msgstr ""
3619
3620 #. type: TP
3621 #: build/C/man7/cpuset.7:168
3622 #, no-wrap
3623 msgid "I<tasks>"
3624 msgstr "I<tasks>"
3625
3626 #. type: Plain text
3627 #: build/C/man7/cpuset.7:178
3628 msgid ""
3629 "List of the process IDs (PIDs) of the processes in that cpuset.  The list is "
3630 "formatted as a series of ASCII decimal numbers, each followed by a newline.  "
3631 "A process may be added to a cpuset (automatically removing it from the "
3632 "cpuset that previously contained it) by writing its PID to that cpuset's "
3633 "I<tasks> file (with or without a trailing newline)."
3634 msgstr ""
3635
3636 #.  =================== notify_on_release ===================
3637 #. type: Plain text
3638 #: build/C/man7/cpuset.7:186
3639 msgid ""
3640 "B<Warning:> only one PID may be written to the I<tasks> file at a time.  If "
3641 "a string is written that contains more than one PID, only the first one will "
3642 "be used."
3643 msgstr ""
3644
3645 #. type: TP
3646 #: build/C/man7/cpuset.7:186
3647 #, no-wrap
3648 msgid "I<notify_on_release>"
3649 msgstr "I<notify_on_release>"
3650
3651 #.  ====================== cpus ======================
3652 #. type: Plain text
3653 #: build/C/man7/cpuset.7:195
3654 msgid ""
3655 "Flag (0 or 1).  If set (1), that cpuset will receive special handling after "
3656 "it is released, that is, after all processes cease using it (i.e., terminate "
3657 "or are moved to a different cpuset)  and all child cpuset directories have "
3658 "been removed.  See the B<Notify On Release> section, below."
3659 msgstr ""
3660
3661 #. type: TP
3662 #: build/C/man7/cpuset.7:195
3663 #, no-wrap
3664 msgid "I<cpuset.cpus>"
3665 msgstr "I<cpuset.cpus>"
3666
3667 #. type: Plain text
3668 #: build/C/man7/cpuset.7:202
3669 msgid ""
3670 "List of the physical numbers of the CPUs on which processes in that cpuset "
3671 "are allowed to execute.  See B<List Format> below for a description of the "
3672 "format of I<cpus>."
3673 msgstr ""
3674
3675 #.  ==================== cpu_exclusive ====================
3676 #. type: Plain text
3677 #: build/C/man7/cpuset.7:208
3678 msgid ""
3679 "The CPUs allowed to a cpuset may be changed by writing a new list to its "
3680 "I<cpus> file."
3681 msgstr ""
3682
3683 #. type: TP
3684 #: build/C/man7/cpuset.7:208
3685 #, no-wrap
3686 msgid "I<cpuset.cpu_exclusive>"
3687 msgstr "I<cpuset.cpu_exclusive>"
3688
3689 #. type: Plain text
3690 #: build/C/man7/cpuset.7:215
3691 msgid ""
3692 "Flag (0 or 1).  If set (1), the cpuset has exclusive use of its CPUs (no "
3693 "sibling or cousin cpuset may overlap CPUs).  By default this is off (0).  "
3694 "Newly created cpusets also initially default this to off (0)."
3695 msgstr ""
3696
3697 #.  ====================== mems ======================
3698 #. type: Plain text
3699 #: build/C/man7/cpuset.7:237
3700 msgid ""
3701 "Two cpusets are I<sibling> cpusets if they share the same parent cpuset in "
3702 "the I</dev/cpuset> hierarchy.  Two cpusets are I<cousin> cpusets if neither "
3703 "is the ancestor of the other.  Regardless of the I<cpu_exclusive> setting, "
3704 "if one cpuset is the ancestor of another, and if both of these cpusets have "
3705 "nonempty I<cpus>, then their I<cpus> must overlap, because the I<cpus> of "
3706 "any cpuset are always a subset of the I<cpus> of its parent cpuset."
3707 msgstr ""
3708
3709 #. type: TP
3710 #: build/C/man7/cpuset.7:237
3711 #, no-wrap
3712 msgid "I<cpuset.mems>"
3713 msgstr "I<cpuset.mems>"
3714
3715 #.  ==================== mem_exclusive ====================
3716 #. type: Plain text
3717 #: build/C/man7/cpuset.7:245
3718 msgid ""
3719 "List of memory nodes on which processes in this cpuset are allowed to "
3720 "allocate memory.  See B<List Format> below for a description of the format "
3721 "of I<mems>."
3722 msgstr ""
3723
3724 #. type: TP
3725 #: build/C/man7/cpuset.7:245
3726 #, no-wrap
3727 msgid "I<cpuset.mem_exclusive>"
3728 msgstr "I<cpuset.mem_exclusive>"
3729
3730 #. type: Plain text
3731 #: build/C/man7/cpuset.7:253
3732 msgid ""
3733 "Flag (0 or 1).  If set (1), the cpuset has exclusive use of its memory nodes "
3734 "(no sibling or cousin may overlap).  Also if set (1), the cpuset is a "
3735 "B<Hardwall> cpuset (see below).  By default this is off (0).  Newly created "
3736 "cpusets also initially default this to off (0)."
3737 msgstr ""
3738
3739 #.  ==================== mem_hardwall ====================
3740 #. type: Plain text
3741 #: build/C/man7/cpuset.7:261
3742 msgid ""
3743 "Regardless of the I<mem_exclusive> setting, if one cpuset is the ancestor of "
3744 "another, then their memory nodes must overlap, because the memory nodes of "
3745 "any cpuset are always a subset of the memory nodes of that cpuset's parent "
3746 "cpuset."
3747 msgstr ""
3748
3749 #. type: TP
3750 #: build/C/man7/cpuset.7:261
3751 #, no-wrap
3752 msgid "I<cpuset.mem_hardwall> (since Linux 2.6.26)"
3753 msgstr "I<cpuset.mem_hardwall> (Linux 2.6.26 以降)"
3754
3755 #.  ==================== memory_migrate ====================
3756 #. type: Plain text
3757 #: build/C/man7/cpuset.7:272
3758 msgid ""
3759 "Flag (0 or 1).  If set (1), the cpuset is a B<Hardwall> cpuset (see below).  "
3760 "Unlike B<mem_exclusive>, there is no constraint on whether cpusets marked "
3761 "B<mem_hardwall> may have overlapping memory nodes with sibling or cousin "
3762 "cpusets.  By default this is off (0).  Newly created cpusets also initially "
3763 "default this to off (0)."
3764 msgstr ""
3765
3766 #. type: TP
3767 #: build/C/man7/cpuset.7:272
3768 #, no-wrap
3769 msgid "I<cpuset.memory_migrate> (since Linux 2.6.16)"
3770 msgstr "I<cpuset.memory_migrate> (Linux 2.6.16 以降)"
3771
3772 #.  ==================== memory_pressure ====================
3773 #. type: Plain text
3774 #: build/C/man7/cpuset.7:279
3775 msgid ""
3776 "Flag (0 or 1).  If set (1), then memory migration is enabled.  By default "
3777 "this is off (0).  See the B<Memory Migration> section, below."
3778 msgstr ""
3779
3780 #. type: TP
3781 #: build/C/man7/cpuset.7:279
3782 #, no-wrap
3783 msgid "I<cpuset.memory_pressure> (since Linux 2.6.16)"
3784 msgstr "I<cpuset.memory_pressure> (Linux 2.6.16 以降)"
3785
3786 #.  ================= memory_pressure_enabled =================
3787 #. type: Plain text
3788 #: build/C/man7/cpuset.7:292
3789 msgid ""
3790 "A measure of how much memory pressure the processes in this cpuset are "
3791 "causing.  See the B<Memory Pressure> section, below.  Unless "
3792 "I<memory_pressure_enabled> is enabled, always has value zero (0).  This file "
3793 "is read-only.  See the B<WARNINGS> section, below."
3794 msgstr ""
3795
3796 #. type: TP
3797 #: build/C/man7/cpuset.7:292
3798 #, no-wrap
3799 msgid "I<cpuset.memory_pressure_enabled> (since Linux 2.6.16)"
3800 msgstr "I<cpuset.memory_pressure_enabled> (Linux 2.6.16 以降)"
3801
3802 #.  ================== memory_spread_page ==================
3803 #. type: Plain text
3804 #: build/C/man7/cpuset.7:304
3805 msgid ""
3806 "Flag (0 or 1).  This file is present only in the root cpuset, normally I</"
3807 "dev/cpuset>.  If set (1), the I<memory_pressure> calculations are enabled "
3808 "for all cpusets in the system.  By default this is off (0).  See the "
3809 "B<Memory Pressure> section, below."
3810 msgstr ""
3811
3812 #. type: TP
3813 #: build/C/man7/cpuset.7:304
3814 #, no-wrap
3815 msgid "I<cpuset.memory_spread_page> (since Linux 2.6.17)"
3816 msgstr "I<cpuset.memory_spread_page> (Linux 2.6.17 以降)"
3817
3818 #.  ================== memory_spread_slab ==================
3819 #. type: Plain text
3820 #: build/C/man7/cpuset.7:314
3821 msgid ""
3822 "Flag (0 or 1).  If set (1), pages in the kernel page cache (filesystem "
3823 "buffers) are uniformly spread across the cpuset.  By default this is off (0) "
3824 "in the top cpuset, and inherited from the parent cpuset in newly created "
3825 "cpusets.  See the B<Memory Spread> section, below."
3826 msgstr ""
3827
3828 #. type: TP
3829 #: build/C/man7/cpuset.7:314
3830 #, no-wrap
3831 msgid "I<cpuset.memory_spread_slab> (since Linux 2.6.17)"
3832 msgstr "I<cpuset.memory_spread_slab> (Linux 2.6.17 以降)"
3833
3834 #.  ================== sched_load_balance ==================
3835 #. type: Plain text
3836 #: build/C/man7/cpuset.7:325
3837 msgid ""
3838 "Flag (0 or 1).  If set (1), the kernel slab caches for file I/O (directory "
3839 "and inode structures) are uniformly spread across the cpuset.  By default "
3840 "this is off (0) in the top cpuset, and inherited from the parent cpuset in "
3841 "newly created cpusets.  See the B<Memory Spread> section, below."
3842 msgstr ""
3843
3844 #. type: TP
3845 #: build/C/man7/cpuset.7:325
3846 #, no-wrap
3847 msgid "I<cpuset.sched_load_balance> (since Linux 2.6.24)"
3848 msgstr "I<cpuset.sched_load_balance> (Linux 2.6.24 以降)"
3849
3850 #.  ================== sched_relax_domain_level ==================
3851 #. type: Plain text
3852 #: build/C/man7/cpuset.7:339
3853 msgid ""
3854 "Flag (0 or 1).  If set (1, the default) the kernel will automatically load "
3855 "balance processes in that cpuset over the allowed CPUs in that cpuset.  If "
3856 "cleared (0) the kernel will avoid load balancing processes in this cpuset, "
3857 "I<unless> some other cpuset with overlapping CPUs has its "
3858 "I<sched_load_balance> flag set.  See B<Scheduler Load Balancing>, below, for "
3859 "further details."
3860 msgstr ""
3861
3862 #. type: TP
3863 #: build/C/man7/cpuset.7:339
3864 #, no-wrap
3865 msgid "I<cpuset.sched_relax_domain_level> (since Linux 2.6.26)"
3866 msgstr "I<cpuset.sched_relax_domain_level> (Linux 2.6.26 以降)"
3867
3868 #.  ================== proc cpuset ==================
3869 #. type: Plain text
3870 #: build/C/man7/cpuset.7:359
3871 msgid ""
3872 "Integer, between -1 and a small positive value.  The "
3873 "I<sched_relax_domain_level> controls the width of the range of CPUs over "
3874 "which the kernel scheduler performs immediate rebalancing of runnable tasks "
3875 "across CPUs.  If I<sched_load_balance> is disabled, then the setting of "
3876 "I<sched_relax_domain_level> does not matter, as no such load balancing is "
3877 "done.  If I<sched_load_balance> is enabled, then the higher the value of the "
3878 "I<sched_relax_domain_level>, the wider the range of CPUs over which "
3879 "immediate load balancing is attempted.  See B<Scheduler Relax Domain Level>, "
3880 "below, for further details."
3881 msgstr ""
3882
3883 #.  ================== proc status ==================
3884 #. type: Plain text
3885 #: build/C/man7/cpuset.7:367
3886 msgid ""
3887 "In addition to the above pseudo-files in each directory below I</dev/"
3888 "cpuset>, each process has a pseudo-file, I</proc/E<lt>pidE<gt>/cpuset>, that "
3889 "displays the path of the process's cpuset directory relative to the root of "
3890 "the cpuset filesystem."
3891 msgstr ""
3892
3893 #. type: Plain text
3894 #: build/C/man7/cpuset.7:378
3895 msgid ""
3896 "Also the I</proc/E<lt>pidE<gt>/status> file for each process has four added "
3897 "lines, displaying the process's I<Cpus_allowed> (on which CPUs it may be "
3898 "scheduled) and I<Mems_allowed> (on which memory nodes it may obtain memory), "
3899 "in the two formats B<Mask Format> and B<List Format> (see below)  as shown "
3900 "in the following example:"
3901 msgstr ""
3902
3903 #. type: Plain text
3904 #: build/C/man7/cpuset.7:385
3905 #, no-wrap
3906 msgid ""
3907 "Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff\n"
3908 "Cpus_allowed_list:     0-127\n"
3909 "Mems_allowed:   ffffffff,ffffffff\n"
3910 "Mems_allowed_list:     0-63\n"
3911 msgstr ""
3912 "Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff\n"
3913 "Cpus_allowed_list:     0-127\n"
3914 "Mems_allowed:   ffffffff,ffffffff\n"
3915 "Mems_allowed_list:     0-63\n"
3916
3917 #.  ================== EXTENDED CAPABILITIES ==================
3918 #. type: Plain text
3919 #: build/C/man7/cpuset.7:391
3920 msgid ""
3921 "The \"allowed\" fields were added in Linux 2.6.24; the \"allowed_list\" "
3922 "fields were added in Linux 2.6.26."
3923 msgstr ""
3924
3925 #. type: SH
3926 #: build/C/man7/cpuset.7:391
3927 #, no-wrap
3928 msgid "EXTENDED CAPABILITIES"
3929 msgstr ""
3930
3931 #.  ================== Exclusive Cpusets ==================
3932 #. type: Plain text
3933 #: build/C/man7/cpuset.7:399
3934 msgid ""
3935 "In addition to controlling which I<cpus> and I<mems> a process is allowed to "
3936 "use, cpusets provide the following extended capabilities."
3937 msgstr ""
3938
3939 #. type: SS
3940 #: build/C/man7/cpuset.7:399
3941 #, no-wrap
3942 msgid "Exclusive cpusets"
3943 msgstr ""
3944
3945 #. type: Plain text
3946 #: build/C/man7/cpuset.7:406
3947 msgid ""
3948 "If a cpuset is marked I<cpu_exclusive> or I<mem_exclusive>, no other cpuset, "
3949 "other than a direct ancestor or descendant, may share any of the same CPUs "
3950 "or memory nodes."
3951 msgstr ""
3952
3953 #.  ================== Hardwall ==================
3954 #. type: Plain text
3955 #: build/C/man7/cpuset.7:432
3956 msgid ""
3957 "A cpuset that is I<mem_exclusive> restricts kernel allocations for buffer "
3958 "cache pages and other internal kernel data pages commonly shared by the "
3959 "kernel across multiple users.  All cpusets, whether I<mem_exclusive> or not, "
3960 "restrict allocations of memory for user space.  This enables configuring a "
3961 "system so that several independent jobs can share common kernel data, while "
3962 "isolating each job's user allocation in its own cpuset.  To do this, "
3963 "construct a large I<mem_exclusive> cpuset to hold all the jobs, and "
3964 "construct child, non-I<mem_exclusive> cpusets for each individual job.  Only "
3965 "a small amount of kernel memory, such as requests from interrupt handlers, "
3966 "is allowed to be placed on memory nodes outside even a I<mem_exclusive> "
3967 "cpuset."
3968 msgstr ""
3969
3970 #. type: SS
3971 #: build/C/man7/cpuset.7:432
3972 #, no-wrap
3973 msgid "Hardwall"
3974 msgstr ""
3975
3976 #. type: Plain text
3977 #: build/C/man7/cpuset.7:447
3978 msgid ""
3979 "A cpuset that has I<mem_exclusive> or I<mem_hardwall> set is a I<hardwall> "
3980 "cpuset.  A I<hardwall> cpuset restricts kernel allocations for page, buffer, "
3981 "and other data commonly shared by the kernel across multiple users.  All "
3982 "cpusets, whether I<hardwall> or not, restrict allocations of memory for user "
3983 "space."
3984 msgstr ""
3985
3986 #. type: Plain text
3987 #: build/C/man7/cpuset.7:458
3988 msgid ""
3989 "This enables configuring a system so that several independent jobs can share "
3990 "common kernel data, such as filesystem pages, while isolating each job's "
3991 "user allocation in its own cpuset.  To do this, construct a large "
3992 "I<hardwall> cpuset to hold all the jobs, and construct child cpusets for "
3993 "each individual job which are not I<hardwall> cpusets."
3994 msgstr ""
3995
3996 #.  ================== Notify On Release ==================
3997 #. type: Plain text
3998 #: build/C/man7/cpuset.7:464
3999 msgid ""
4000 "Only a small amount of kernel memory, such as requests from interrupt "
4001 "handlers, is allowed to be taken outside even a I<hardwall> cpuset."
4002 msgstr ""
4003
4004 #. type: SS
4005 #: build/C/man7/cpuset.7:464
4006 #, no-wrap
4007 msgid "Notify on release"
4008 msgstr ""
4009
4010 #. type: Plain text
4011 #: build/C/man7/cpuset.7:476
4012 msgid ""
4013 "If the I<notify_on_release> flag is enabled (1) in a cpuset, then whenever "
4014 "the last process in the cpuset leaves (exits or attaches to some other "
4015 "cpuset)  and the last child cpuset of that cpuset is removed, the kernel "
4016 "will run the command I</sbin/cpuset_release_agent>, supplying the pathname "
4017 "(relative to the mount point of the cpuset filesystem) of the abandoned "
4018 "cpuset.  This enables automatic removal of abandoned cpusets."
4019 msgstr ""
4020
4021 #. type: Plain text
4022 #: build/C/man7/cpuset.7:484
4023 msgid ""
4024 "The default value of I<notify_on_release> in the root cpuset at system boot "
4025 "is disabled (0).  The default value of other cpusets at creation is the "
4026 "current value of their parent's I<notify_on_release> setting."
4027 msgstr ""
4028
4029 #. type: Plain text
4030 #: build/C/man7/cpuset.7:492
4031 msgid ""
4032 "The command I</sbin/cpuset_release_agent> is invoked, with the name (I</dev/"
4033 "cpuset> relative path)  of the to-be-released cpuset in I<argv[1]>."
4034 msgstr ""
4035
4036 #. type: Plain text
4037 #: build/C/man7/cpuset.7:496
4038 msgid ""
4039 "The usual contents of the command I</sbin/cpuset_release_agent> is simply "
4040 "the shell script:"
4041 msgstr ""
4042
4043 #. type: Plain text
4044 #: build/C/man7/cpuset.7:501
4045 #, no-wrap
4046 msgid ""
4047 "#!/bin/sh\n"
4048 "rmdir /dev/cpuset/$1\n"
4049 msgstr ""
4050 "#!/bin/sh\n"
4051 "rmdir /dev/cpuset/$1\n"
4052
4053 #.  ================== Memory Pressure ==================
4054 #. type: Plain text
4055 #: build/C/man7/cpuset.7:509
4056 msgid ""
4057 "As with other flag values below, this flag can be changed by writing an "
4058 "ASCII number 0 or 1 (with optional trailing newline)  into the file, to "
4059 "clear or set the flag, respectively."
4060 msgstr ""
4061
4062 #. type: SS
4063 #: build/C/man7/cpuset.7:509
4064 #, no-wrap
4065 msgid "Memory pressure"
4066 msgstr ""
4067
4068 #. type: Plain text
4069 #: build/C/man7/cpuset.7:515
4070 msgid ""
4071 "The I<memory_pressure> of a cpuset provides a simple per-cpuset running "
4072 "average of the rate that the processes in a cpuset are attempting to free up "
4073 "in-use memory on the nodes of the cpuset to satisfy additional memory "
4074 "requests."
4075 msgstr ""
4076
4077 #. type: Plain text
4078 #: build/C/man7/cpuset.7:519
4079 msgid ""
4080 "This enables batch managers that are monitoring jobs running in dedicated "
4081 "cpusets to efficiently detect what level of memory pressure that job is "
4082 "causing."
4083 msgstr ""
4084
4085 #. type: Plain text
4086 #: build/C/man7/cpuset.7:526
4087 msgid ""
4088 "This is useful both on tightly managed systems running a wide mix of "
4089 "submitted jobs, which may choose to terminate or reprioritize jobs that are "
4090 "trying to use more memory than allowed on the nodes assigned them, and with "
4091 "tightly coupled, long-running, massively parallel scientific computing jobs "
4092 "that will dramatically fail to meet required performance goals if they start "
4093 "to use more memory than allowed to them."
4094 msgstr ""
4095
4096 #. type: Plain text
4097 #: build/C/man7/cpuset.7:531
4098 msgid ""
4099 "This mechanism provides a very economical way for the batch manager to "
4100 "monitor a cpuset for signs of memory pressure.  It's up to the batch manager "
4101 "or other user code to decide what action to take if it detects signs of "
4102 "memory pressure."
4103 msgstr ""
4104
4105 #. type: Plain text
4106 #: build/C/man7/cpuset.7:538
4107 msgid ""
4108 "Unless memory pressure calculation is enabled by setting the pseudo-file I</"
4109 "dev/cpuset/cpuset.memory_pressure_enabled>, it is not computed for any "
4110 "cpuset, and reads from any I<memory_pressure> always return zero, as "
4111 "represented by the ASCII string \"0\\en\".  See the B<WARNINGS> section, "
4112 "below."
4113 msgstr ""
4114
4115 #. type: Plain text
4116 #: build/C/man7/cpuset.7:540
4117 msgid "A per-cpuset, running average is employed for the following reasons:"
4118 msgstr ""
4119
4120 #. type: Plain text
4121 #: build/C/man7/cpuset.7:545
4122 msgid ""
4123 "Because this meter is per-cpuset rather than per-process or per virtual "
4124 "memory region, the system load imposed by a batch scheduler monitoring this "
4125 "metric is sharply reduced on large systems, because a scan of the tasklist "
4126 "can be avoided on each set of queries."
4127 msgstr ""
4128
4129 #. type: Plain text
4130 #: build/C/man7/cpuset.7:550
4131 msgid ""
4132 "Because this meter is a running average rather than an accumulating counter, "
4133 "a batch scheduler can detect memory pressure with a single read, instead of "
4134 "having to read and accumulate results for a period of time."
4135 msgstr ""
4136
4137 #. type: Plain text
4138 #: build/C/man7/cpuset.7:556
4139 msgid ""
4140 "Because this meter is per-cpuset rather than per-process, the batch "
4141 "scheduler can obtain the key information\\(emmemory pressure in a cpuset"
4142 "\\(emwith a single read, rather than having to query and accumulate results "
4143 "over all the (dynamically changing)  set of processes in the cpuset."
4144 msgstr ""
4145
4146 #. type: Plain text
4147 #: build/C/man7/cpuset.7:564
4148 msgid ""
4149 "The I<memory_pressure> of a cpuset is calculated using a per-cpuset simple "
4150 "digital filter that is kept within the kernel.  For each cpuset, this filter "
4151 "tracks the recent rate at which processes attached to that cpuset enter the "
4152 "kernel direct reclaim code."
4153 msgstr ""
4154
4155 #. type: Plain text
4156 #: build/C/man7/cpuset.7:573
4157 msgid ""
4158 "The kernel direct reclaim code is entered whenever a process has to satisfy "
4159 "a memory page request by first finding some other page to repurpose, due to "
4160 "lack of any readily available already free pages.  Dirty filesystem pages "
4161 "are repurposed by first writing them to disk.  Unmodified filesystem buffer "
4162 "pages are repurposed by simply dropping them, though if that page is needed "
4163 "again, it will have to be reread from disk."
4164 msgstr ""
4165
4166 #.  ================== Memory Spread ==================
4167 #. type: Plain text
4168 #: build/C/man7/cpuset.7:581
4169 msgid ""
4170 "The I<cpuset.memory_pressure> file provides an integer number representing "
4171 "the recent (half-life of 10 seconds) rate of entries to the direct reclaim "
4172 "code caused by any process in the cpuset, in units of reclaims attempted per "
4173 "second, times 1000."
4174 msgstr ""
4175
4176 #. type: SS
4177 #: build/C/man7/cpuset.7:581
4178 #, no-wrap
4179 msgid "Memory spread"
4180 msgstr ""
4181
4182 #. type: Plain text
4183 #: build/C/man7/cpuset.7:589
4184 msgid ""
4185 "There are two Boolean flag files per cpuset that control where the kernel "
4186 "allocates pages for the filesystem buffers and related in-kernel data "
4187 "structures.  They are called I<cpuset.memory_spread_page> and I<cpuset."
4188 "memory_spread_slab>."
4189 msgstr ""
4190
4191 #. type: Plain text
4192 #: build/C/man7/cpuset.7:596
4193 msgid ""
4194 "If the per-cpuset Boolean flag file I<cpuset.memory_spread_page> is set, "
4195 "then the kernel will spread the filesystem buffers (page cache) evenly over "
4196 "all the nodes that the faulting process is allowed to use, instead of "
4197 "preferring to put those pages on the node where the process is running."
4198 msgstr ""
4199
4200 #. type: Plain text
4201 #: build/C/man7/cpuset.7:604
4202 msgid ""
4203 "If the per-cpuset Boolean flag file I<cpuset.memory_spread_slab> is set, "
4204 "then the kernel will spread some filesystem-related slab caches, such as "
4205 "those for inodes and directory entries, evenly over all the nodes that the "
4206 "faulting process is allowed to use, instead of preferring to put those pages "
4207 "on the node where the process is running."
4208 msgstr ""
4209
4210 #. type: Plain text
4211 #: build/C/man7/cpuset.7:609
4212 msgid ""
4213 "The setting of these flags does not affect the data segment (see B<brk>(2))  "
4214 "or stack segment pages of a process."
4215 msgstr ""
4216
4217 #. type: Plain text
4218 #: build/C/man7/cpuset.7:617
4219 msgid ""
4220 "By default, both kinds of memory spreading are off and the kernel prefers to "
4221 "allocate memory pages on the node local to where the requesting process is "
4222 "running.  If that node is not allowed by the process's NUMA memory policy or "
4223 "cpuset configuration or if there are insufficient free memory pages on that "
4224 "node, then the kernel looks for the nearest node that is allowed and has "
4225 "sufficient free memory."
4226 msgstr ""
4227
4228 #. type: Plain text
4229 #: build/C/man7/cpuset.7:620
4230 msgid ""
4231 "When new cpusets are created, they inherit the memory spread settings of "
4232 "their parent."
4233 msgstr ""
4234
4235 #. type: Plain text
4236 #: build/C/man7/cpuset.7:635
4237 msgid ""
4238 "Setting memory spreading causes allocations for the affected page or slab "
4239 "caches to ignore the process's NUMA memory policy and be spread instead.  "
4240 "However, the effect of these changes in memory placement caused by cpuset-"
4241 "specified memory spreading is hidden from the B<mbind>(2)  or "
4242 "B<set_mempolicy>(2)  calls.  These two NUMA memory policy calls always "
4243 "appear to behave as if no cpuset-specified memory spreading is in effect, "
4244 "even if it is.  If cpuset memory spreading is subsequently turned off, the "
4245 "NUMA memory policy most recently specified by these calls is automatically "
4246 "reapplied."
4247 msgstr ""
4248
4249 #. type: Plain text
4250 #: build/C/man7/cpuset.7:644
4251 msgid ""
4252 "Both I<cpuset.memory_spread_page> and I<cpuset.memory_spread_slab> are "
4253 "Boolean flag files.  By default they contain \"0\", meaning that the feature "
4254 "is off for that cpuset.  If a \"1\" is written to that file, that turns the "
4255 "named feature on."
4256 msgstr ""
4257
4258 #. type: Plain text
4259 #: build/C/man7/cpuset.7:647
4260 msgid ""
4261 "Cpuset-specified memory spreading behaves similarly to what is known (in "
4262 "other contexts) as round-robin or interleave memory placement."
4263 msgstr ""
4264
4265 #. type: Plain text
4266 #: build/C/man7/cpuset.7:650
4267 msgid ""
4268 "Cpuset-specified memory spreading can provide substantial performance "
4269 "improvements for jobs that:"
4270 msgstr ""
4271
4272 #. type: IP
4273 #: build/C/man7/cpuset.7:650 build/C/man7/user_namespaces.7:384
4274 #, no-wrap
4275 msgid "a)"
4276 msgstr "a)"
4277
4278 #. type: Plain text
4279 #: build/C/man7/cpuset.7:654
4280 msgid ""
4281 "need to place thread-local data on memory nodes close to the CPUs which are "
4282 "running the threads that most frequently access that data; but also"
4283 msgstr ""
4284
4285 #. type: IP
4286 #: build/C/man7/cpuset.7:654 build/C/man7/user_namespaces.7:389
4287 #, no-wrap
4288 msgid "b)"
4289 msgstr "b)"
4290
4291 #. type: Plain text
4292 #: build/C/man7/cpuset.7:657
4293 msgid ""
4294 "need to access large filesystem data sets that must to be spread across the "
4295 "several nodes in the job's cpuset in order to fit."
4296 msgstr ""
4297
4298 #.  ================== Memory Migration ==================
4299 #. type: Plain text
4300 #: build/C/man7/cpuset.7:664
4301 msgid ""
4302 "Without this policy, the memory allocation across the nodes in the job's "
4303 "cpuset can become very uneven, especially for jobs that might have just a "
4304 "single thread initializing or reading in the data set."
4305 msgstr ""
4306
4307 #. type: SS
4308 #: build/C/man7/cpuset.7:664
4309 #, no-wrap
4310 msgid "Memory migration"
4311 msgstr ""
4312
4313 #. type: Plain text
4314 #: build/C/man7/cpuset.7:673
4315 msgid ""
4316 "Normally, under the default setting (disabled) of I<cpuset.memory_migrate>, "
4317 "once a page is allocated (given a physical page of main memory), then that "
4318 "page stays on whatever node it was allocated, so long as it remains "
4319 "allocated, even if the cpuset's memory-placement policy I<mems> subsequently "
4320 "changes."
4321 msgstr ""
4322
4323 #. type: Plain text
4324 #: build/C/man7/cpuset.7:679
4325 msgid ""
4326 "When memory migration is enabled in a cpuset, if the I<mems> setting of the "
4327 "cpuset is changed, then any memory page in use by any process in the cpuset "
4328 "that is on a memory node that is no longer allowed will be migrated to a "
4329 "memory node that is allowed."
4330 msgstr ""
4331
4332 #. type: Plain text
4333 #: build/C/man7/cpuset.7:685
4334 msgid ""
4335 "Furthermore, if a process is moved into a cpuset with I<memory_migrate> "
4336 "enabled, any memory pages it uses that were on memory nodes allowed in its "
4337 "previous cpuset, but which are not allowed in its new cpuset, will be "
4338 "migrated to a memory node allowed in the new cpuset."
4339 msgstr ""
4340
4341 #.  ================== Scheduler Load Balancing ==================
4342 #. type: Plain text
4343 #: build/C/man7/cpuset.7:693
4344 msgid ""
4345 "The relative placement of a migrated page within the cpuset is preserved "
4346 "during these migration operations if possible.  For example, if the page was "
4347 "on the second valid node of the prior cpuset, then the page will be placed "
4348 "on the second valid node of the new cpuset, if possible."
4349 msgstr ""
4350
4351 #. type: SS
4352 #: build/C/man7/cpuset.7:693
4353 #, no-wrap
4354 msgid "Scheduler load balancing"
4355 msgstr ""
4356
4357 #. type: Plain text
4358 #: build/C/man7/cpuset.7:700
4359 msgid ""
4360 "The kernel scheduler automatically load balances processes.  If one CPU is "
4361 "underutilized, the kernel will look for processes on other more overloaded "
4362 "CPUs and move those processes to the underutilized CPU, within the "
4363 "constraints of such placement mechanisms as cpusets and "
4364 "B<sched_setaffinity>(2)."
4365 msgstr ""
4366
4367 #. type: Plain text
4368 #: build/C/man7/cpuset.7:713
4369 msgid ""
4370 "The algorithmic cost of load balancing and its impact on key shared kernel "
4371 "data structures such as the process list increases more than linearly with "
4372 "the number of CPUs being balanced.  For example, it costs more to load "
4373 "balance across one large set of CPUs than it does to balance across two "
4374 "smaller sets of CPUs, each of half the size of the larger set.  (The precise "
4375 "relationship between the number of CPUs being balanced and the cost of load "
4376 "balancing depends on implementation details of the kernel process scheduler, "
4377 "which is subject to change over time, as improved kernel scheduler "
4378 "algorithms are implemented.)"
4379 msgstr ""
4380
4381 #. type: Plain text
4382 #: build/C/man7/cpuset.7:719
4383 msgid ""
4384 "The per-cpuset flag I<sched_load_balance> provides a mechanism to suppress "
4385 "this automatic scheduler load balancing in cases where it is not needed and "
4386 "suppressing it would have worthwhile performance benefits."
4387 msgstr ""
4388
4389 #. type: Plain text
4390 #: build/C/man7/cpuset.7:723
4391 msgid ""
4392 "By default, load balancing is done across all CPUs, except those marked "
4393 "isolated using the kernel boot time \"isolcpus=\" argument.  (See "
4394 "B<Scheduler Relax Domain Level>, below, to change this default.)"
4395 msgstr ""
4396
4397 #. type: Plain text
4398 #: build/C/man7/cpuset.7:726
4399 msgid ""
4400 "This default load balancing across all CPUs is not well suited to the "
4401 "following two situations:"
4402 msgstr ""
4403
4404 #. type: Plain text
4405 #: build/C/man7/cpuset.7:730
4406 msgid ""
4407 "On large systems, load balancing across many CPUs is expensive.  If the "
4408 "system is managed using cpusets to place independent jobs on separate sets "
4409 "of CPUs, full load balancing is unnecessary."
4410 msgstr ""
4411
4412 #. type: Plain text
4413 #: build/C/man7/cpuset.7:734
4414 msgid ""
4415 "Systems supporting real-time on some CPUs need to minimize system overhead "
4416 "on those CPUs, including avoiding process load balancing if that is not "
4417 "needed."
4418 msgstr ""
4419
4420 #. type: Plain text
4421 #: build/C/man7/cpuset.7:744
4422 msgid ""
4423 "When the per-cpuset flag I<sched_load_balance> is enabled (the default "
4424 "setting), it requests load balancing across all the CPUs in that cpuset's "
4425 "allowed CPUs, ensuring that load balancing can move a process (not otherwise "
4426 "pinned, as by B<sched_setaffinity>(2))  from any CPU in that cpuset to any "
4427 "other."
4428 msgstr ""
4429
4430 #. type: Plain text
4431 #: build/C/man7/cpuset.7:753
4432 msgid ""
4433 "When the per-cpuset flag I<sched_load_balance> is disabled, then the "
4434 "scheduler will avoid load balancing across the CPUs in that cpuset, "
4435 "I<except> in so far as is necessary because some overlapping cpuset has "
4436 "I<sched_load_balance> enabled."
4437 msgstr ""
4438
4439 #. type: Plain text
4440 #: build/C/man7/cpuset.7:761
4441 msgid ""
4442 "So, for example, if the top cpuset has the flag I<sched_load_balance> "
4443 "enabled, then the scheduler will load balance across all CPUs, and the "
4444 "setting of the I<sched_load_balance> flag in other cpusets has no effect, as "
4445 "we're already fully load balancing."
4446 msgstr ""
4447
4448 #. type: Plain text
4449 #: build/C/man7/cpuset.7:766
4450 msgid ""
4451 "Therefore in the above two situations, the flag I<sched_load_balance> should "
4452 "be disabled in the top cpuset, and only some of the smaller, child cpusets "
4453 "would have this flag enabled."
4454 msgstr ""
4455
4456 #. type: Plain text
4457 #: build/C/man7/cpuset.7:774
4458 msgid ""
4459 "When doing this, you don't usually want to leave any unpinned processes in "
4460 "the top cpuset that might use nontrivial amounts of CPU, as such processes "
4461 "may be artificially constrained to some subset of CPUs, depending on the "
4462 "particulars of this flag setting in descendant cpusets.  Even if such a "
4463 "process could use spare CPU cycles in some other CPUs, the kernel scheduler "
4464 "might not consider the possibility of load balancing that process to the "
4465 "underused CPU."
4466 msgstr ""
4467
4468 #.  ================== Scheduler Relax Domain Level ==================
4469 #. type: Plain text
4470 #: build/C/man7/cpuset.7:780
4471 msgid ""
4472 "Of course, processes pinned to a particular CPU can be left in a cpuset that "
4473 "disables I<sched_load_balance> as those processes aren't going anywhere else "
4474 "anyway."
4475 msgstr ""
4476
4477 #. type: SS
4478 #: build/C/man7/cpuset.7:780
4479 #, no-wrap
4480 msgid "Scheduler relax domain level"
4481 msgstr ""
4482
4483 #. type: Plain text
4484 #: build/C/man7/cpuset.7:801
4485 msgid ""
4486 "The kernel scheduler performs immediate load balancing whenever a CPU "
4487 "becomes free or another task becomes runnable.  This load balancing works to "
4488 "ensure that as many CPUs as possible are usefully employed running tasks.  "
4489 "The kernel also performs periodic load balancing off the software clock "
4490 "described in B<time>(7).  The setting of I<sched_relax_domain_level> applies "
4491 "only to immediate load balancing.  Regardless of the "
4492 "I<sched_relax_domain_level> setting, periodic load balancing is attempted "
4493 "over all CPUs (unless disabled by turning off I<sched_load_balance>.)  In "
4494 "any case, of course, tasks will be scheduled to run only on CPUs allowed by "
4495 "their cpuset, as modified by B<sched_setaffinity>(2)  system calls."
4496 msgstr ""
4497
4498 #. type: Plain text
4499 #: build/C/man7/cpuset.7:809
4500 msgid ""
4501 "On small systems, such as those with just a few CPUs, immediate load "
4502 "balancing is useful to improve system interactivity and to minimize wasteful "
4503 "idle CPU cycles.  But on large systems, attempting immediate load balancing "
4504 "across a large number of CPUs can be more costly than it is worth, depending "
4505 "on the particular performance characteristics of the job mix and the "
4506 "hardware."
4507 msgstr ""
4508
4509 #. type: Plain text
4510 #: build/C/man7/cpuset.7:817
4511 msgid ""
4512 "The exact meaning of the small integer values of I<sched_relax_domain_level> "
4513 "will depend on internal implementation details of the kernel scheduler code "
4514 "and on the non-uniform architecture of the hardware.  Both of these will "
4515 "evolve over time and vary by system architecture and kernel version."
4516 msgstr ""
4517
4518 #. type: Plain text
4519 #: build/C/man7/cpuset.7:822
4520 msgid ""
4521 "As of this writing, when this capability was introduced in Linux 2.6.26, on "
4522 "certain popular architectures, the positive values of "
4523 "I<sched_relax_domain_level> have the following meanings."
4524 msgstr ""
4525
4526 #. type: IP
4527 #: build/C/man7/cpuset.7:824
4528 #, no-wrap
4529 msgid "B<(1)>"
4530 msgstr "B<(1)>"
4531
4532 #. type: Plain text
4533 #: build/C/man7/cpuset.7:827
4534 msgid ""
4535 "Perform immediate load balancing across Hyper-Thread siblings on the same "
4536 "core."
4537 msgstr ""
4538
4539 #. type: IP
4540 #: build/C/man7/cpuset.7:827
4541 #, no-wrap
4542 msgid "B<(2)>"
4543 msgstr "B<(2)>"
4544
4545 #. type: Plain text
4546 #: build/C/man7/cpuset.7:829
4547 msgid ""
4548 "Perform immediate load balancing across other cores in the same package."
4549 msgstr ""
4550
4551 #. type: IP
4552 #: build/C/man7/cpuset.7:829
4553 #, no-wrap
4554 msgid "B<(3)>"
4555 msgstr "B<(3)>"
4556
4557 #. type: Plain text
4558 #: build/C/man7/cpuset.7:832
4559 msgid ""
4560 "Perform immediate load balancing across other CPUs on the same node or blade."
4561 msgstr ""
4562
4563 #. type: IP
4564 #: build/C/man7/cpuset.7:832
4565 #, no-wrap
4566 msgid "B<(4)>"
4567 msgstr "B<(4)>"
4568
4569 #. type: Plain text
4570 #: build/C/man7/cpuset.7:835
4571 msgid ""
4572 "Perform immediate load balancing across over several (implementation detail) "
4573 "nodes [On NUMA systems]."
4574 msgstr ""
4575
4576 #. type: IP
4577 #: build/C/man7/cpuset.7:835
4578 #, no-wrap
4579 msgid "B<(5)>"
4580 msgstr "B<(5)>"
4581
4582 #. type: Plain text
4583 #: build/C/man7/cpuset.7:838
4584 msgid ""
4585 "Perform immediate load balancing across over all CPUs in system [On NUMA "
4586 "systems]."
4587 msgstr ""
4588
4589 #. type: Plain text
4590 #: build/C/man7/cpuset.7:847
4591 msgid ""
4592 "The I<sched_relax_domain_level> value of zero (0) always means don't perform "
4593 "immediate load balancing, hence that load balancing is done only "
4594 "periodically, not immediately when a CPU becomes available or another task "
4595 "becomes runnable."
4596 msgstr ""
4597
4598 #. type: Plain text
4599 #: build/C/man7/cpuset.7:855
4600 msgid ""
4601 "The I<sched_relax_domain_level> value of minus one (-1)  always means use "
4602 "the system default value.  The system default value can vary by architecture "
4603 "and kernel version.  This system default value can be changed by kernel boot-"
4604 "time \"relax_domain_level=\" argument."
4605 msgstr ""
4606
4607 #. type: Plain text
4608 #: build/C/man7/cpuset.7:863
4609 msgid ""
4610 "In the case of multiple overlapping cpusets which have conflicting "
4611 "I<sched_relax_domain_level> values, then the highest such value applies to "
4612 "all CPUs in any of the overlapping cpusets.  In such cases, the value "
4613 "B<minus one (-1)> is the lowest value, overridden by any other value, and "
4614 "the value B<zero (0)> is the next lowest value."
4615 msgstr ""
4616
4617 #. type: SH
4618 #: build/C/man7/cpuset.7:863
4619 #, no-wrap
4620 msgid "FORMATS"
4621 msgstr ""
4622
4623 #.  ================== Mask Format ==================
4624 #. type: Plain text
4625 #: build/C/man7/cpuset.7:867
4626 msgid ""
4627 "The following formats are used to represent sets of CPUs and memory nodes."
4628 msgstr ""
4629
4630 #. type: SS
4631 #: build/C/man7/cpuset.7:867
4632 #, no-wrap
4633 msgid "Mask format"
4634 msgstr ""
4635
4636 #. type: Plain text
4637 #: build/C/man7/cpuset.7:872
4638 msgid ""
4639 "The B<Mask Format> is used to represent CPU and memory-node bit masks in the "
4640 "I</proc/E<lt>pidE<gt>/status> file."
4641 msgstr ""
4642
4643 #. type: Plain text
4644 #: build/C/man7/cpuset.7:880
4645 msgid ""
4646 "This format displays each 32-bit word in hexadecimal (using ASCII characters "
4647 "\"0\" - \"9\" and \"a\" - \"f\"); words are filled with leading zeros, if "
4648 "required.  For masks longer than one word, a comma separator is used between "
4649 "words.  Words are displayed in big-endian order, which has the most "
4650 "significant bit first.  The hex digits within a word are also in big-endian "
4651 "order."
4652 msgstr ""
4653
4654 #. type: Plain text
4655 #: build/C/man7/cpuset.7:883
4656 msgid ""
4657 "The number of 32-bit words displayed is the minimum number needed to display "
4658 "all bits of the bit mask, based on the size of the bit mask."
4659 msgstr ""
4660
4661 #. type: Plain text
4662 #: build/C/man7/cpuset.7:885
4663 msgid "Examples of the B<Mask Format>:"
4664 msgstr ""
4665
4666 #. type: Plain text
4667 #: build/C/man7/cpuset.7:893
4668 #, no-wrap
4669 msgid ""
4670 "00000001                        # just bit 0 set\n"
4671 "40000000,00000000,00000000      # just bit 94 set\n"
4672 "00000001,00000000,00000000      # just bit 64 set\n"
4673 "000000ff,00000000               # bits 32-39 set\n"
4674 "00000000,000e3862               # 1,5,6,11-13,17-19 set\n"
4675 msgstr ""
4676 "00000001                        # just bit 0 set\n"
4677 "40000000,00000000,00000000      # just bit 94 set\n"
4678 "00000001,00000000,00000000      # just bit 64 set\n"
4679 "000000ff,00000000               # bits 32-39 set\n"
4680 "00000000,000e3862               # 1,5,6,11-13,17-19 set\n"
4681
4682 #. type: Plain text
4683 #: build/C/man7/cpuset.7:897
4684 msgid "A mask with bits 0, 1, 2, 4, 8, 16, 32, and 64 set displays as:"
4685 msgstr ""
4686
4687 #. type: Plain text
4688 #: build/C/man7/cpuset.7:901
4689 #, no-wrap
4690 msgid "00000001,00000001,00010117\n"
4691 msgstr "00000001,00000001,00010117\n"
4692
4693 #.  ================== List Format ==================
4694 #. type: Plain text
4695 #: build/C/man7/cpuset.7:908
4696 msgid ""
4697 "The first \"1\" is for bit 64, the second for bit 32, the third for bit 16, "
4698 "the fourth for bit 8, the fifth for bit 4, and the \"7\" is for bits 2, 1, "
4699 "and 0."
4700 msgstr ""
4701
4702 #. type: SS
4703 #: build/C/man7/cpuset.7:908
4704 #, no-wrap
4705 msgid "List format"
4706 msgstr ""
4707
4708 #. type: Plain text
4709 #: build/C/man7/cpuset.7:915
4710 msgid ""
4711 "The B<List Format> for I<cpus> and I<mems> is a comma-separated list of CPU "
4712 "or memory-node numbers and ranges of numbers, in ASCII decimal."
4713 msgstr ""
4714
4715 #. type: Plain text
4716 #: build/C/man7/cpuset.7:917
4717 msgid "Examples of the B<List Format>:"
4718 msgstr ""
4719
4720 #. type: Plain text
4721 #: build/C/man7/cpuset.7:922
4722 #, no-wrap
4723 msgid ""
4724 "0-4,9           # bits 0, 1, 2, 3, 4, and 9 set\n"
4725 "0-2,7,12-14     # bits 0, 1, 2, 7, 12, 13, and 14 set\n"
4726 msgstr ""
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
4730 #.  ================== RULES ==================
4731 #. type: SH
4732 #: build/C/man7/cpuset.7:925
4733 #, no-wrap
4734 msgid "RULES"
4735 msgstr ""
4736
4737 #. type: Plain text
4738 #: build/C/man7/cpuset.7:927
4739 msgid "The following rules apply to each cpuset:"
4740 msgstr ""
4741
4742 #. type: Plain text
4743 #: build/C/man7/cpuset.7:930
4744 msgid ""
4745 "Its CPUs and memory nodes must be a (possibly equal)  subset of its parent's."
4746 msgstr ""
4747
4748 #. type: Plain text
4749 #: build/C/man7/cpuset.7:934
4750 msgid "It can be marked I<cpu_exclusive> only if its parent is."
4751 msgstr ""
4752
4753 #. type: Plain text
4754 #: build/C/man7/cpuset.7:938
4755 msgid "It can be marked I<mem_exclusive> only if its parent is."
4756 msgstr ""
4757
4758 #. type: Plain text
4759 #: build/C/man7/cpuset.7:942
4760 msgid "If it is I<cpu_exclusive>, its CPUs may not overlap any sibling."
4761 msgstr ""
4762
4763 #.  ================== PERMISSIONS ==================
4764 #. type: Plain text
4765 #: build/C/man7/cpuset.7:947
4766 msgid ""
4767 "If it is I<memory_exclusive>, its memory nodes may not overlap any sibling."
4768 msgstr ""
4769
4770 #. type: SH
4771 #: build/C/man7/cpuset.7:947
4772 #, no-wrap
4773 msgid "PERMISSIONS"
4774 msgstr ""
4775
4776 #. type: Plain text
4777 #: build/C/man7/cpuset.7:952
4778 msgid ""
4779 "The permissions of a cpuset are determined by the permissions of the "
4780 "directories and pseudo-files in the cpuset filesystem, normally mounted at "
4781 "I</dev/cpuset>."
4782 msgstr ""
4783
4784 #. type: Plain text
4785 #: build/C/man7/cpuset.7:961
4786 msgid ""
4787 "For instance, a process can put itself in some other cpuset (than its "
4788 "current one) if it can write the I<tasks> file for that cpuset.  This "
4789 "requires execute permission on the encompassing directories and write "
4790 "permission on the I<tasks> file."
4791 msgstr ""
4792
4793 #. type: Plain text
4794 #: build/C/man7/cpuset.7:968
4795 msgid ""
4796 "An additional constraint is applied to requests to place some other process "
4797 "in a cpuset.  One process may not attach another to a cpuset unless it would "
4798 "have permission to send that process a signal (see B<kill>(2))."
4799 msgstr ""
4800
4801 #. type: Plain text
4802 #: build/C/man7/cpuset.7:979
4803 msgid ""
4804 "A process may create a child cpuset if it can access and write the parent "
4805 "cpuset directory.  It can modify the CPUs or memory nodes in a cpuset if it "
4806 "can access that cpuset's directory (execute permissions on the each of the "
4807 "parent directories) and write the corresponding I<cpus> or I<mems> file."
4808 msgstr ""
4809
4810 #. type: Plain text
4811 #: build/C/man7/cpuset.7:1000
4812 msgid ""
4813 "There is one minor difference between the manner in which these permissions "
4814 "are evaluated and the manner in which normal filesystem operation "
4815 "permissions are evaluated.  The kernel interprets relative pathnames "
4816 "starting at a process's current working directory.  Even if one is operating "
4817 "on a cpuset file, relative pathnames are interpreted relative to the "
4818 "process's current working directory, not relative to the process's current "
4819 "cpuset.  The only ways that cpuset paths relative to a process's current "
4820 "cpuset can be used are if either the process's current working directory is "
4821 "its cpuset (it first did a B<cd> or B<chdir>(2)  to its cpuset directory "
4822 "beneath I</dev/cpuset>, which is a bit unusual)  or if some user code "
4823 "converts the relative cpuset path to a full filesystem path."
4824 msgstr ""
4825
4826 #.  ================== WARNINGS ==================
4827 #. type: Plain text
4828 #: build/C/man7/cpuset.7:1015
4829 msgid ""
4830 "In theory, this means that user code should specify cpusets using absolute "
4831 "pathnames, which requires knowing the mount point of the cpuset filesystem "
4832 "(usually, but not necessarily, I</dev/cpuset>).  In practice, all user level "
4833 "code that this author is aware of simply assumes that if the cpuset "
4834 "filesystem is mounted, then it is mounted at I</dev/cpuset>.  Furthermore, "
4835 "it is common practice for carefully written user code to verify the presence "
4836 "of the pseudo-file I</dev/cpuset/tasks> in order to verify that the cpuset "
4837 "pseudo-filesystem is currently mounted."
4838 msgstr ""
4839
4840 #. type: SH
4841 #: build/C/man7/cpuset.7:1015
4842 #, no-wrap
4843 msgid "WARNINGS"
4844 msgstr ""
4845
4846 #. type: SS
4847 #: build/C/man7/cpuset.7:1016
4848 #, no-wrap
4849 msgid "Enabling memory_pressure"
4850 msgstr ""
4851
4852 #. type: Plain text
4853 #: build/C/man7/cpuset.7:1025
4854 msgid ""
4855 "By default, the per-cpuset file I<cpuset.memory_pressure> always contains "
4856 "zero (0).  Unless this feature is enabled by writing \"1\" to the pseudo-"
4857 "file I</dev/cpuset/cpuset.memory_pressure_enabled>, the kernel does not "
4858 "compute per-cpuset I<memory_pressure>."
4859 msgstr ""
4860
4861 #. type: SS
4862 #: build/C/man7/cpuset.7:1025
4863 #, no-wrap
4864 msgid "Using the echo command"
4865 msgstr ""
4866
4867 #.  Gack!  csh(1)'s echo does this
4868 #. type: Plain text
4869 #: build/C/man7/cpuset.7:1036
4870 msgid ""
4871 "When using the B<echo> command at the shell prompt to change the values of "
4872 "cpuset files, beware that the built-in B<echo> command in some shells does "
4873 "not display an error message if the B<write>(2)  system call fails.  For "
4874 "example, if the command:"
4875 msgstr ""
4876
4877 #. type: Plain text
4878 #: build/C/man7/cpuset.7:1040
4879 #, no-wrap
4880 msgid "echo 19 E<gt> cpuset.mems\n"
4881 msgstr "echo 19 E<gt> cpuset.mems\n"
4882
4883 #. type: Plain text
4884 #: build/C/man7/cpuset.7:1053
4885 msgid ""
4886 "failed because memory node 19 was not allowed (perhaps the current system "
4887 "does not have a memory node 19), then the B<echo> command might not display "
4888 "any error.  It is better to use the B</bin/echo> external command to change "
4889 "cpuset file settings, as this command will display B<write>(2)  errors, as "
4890 "in the example:"
4891 msgstr ""
4892
4893 #. type: Plain text
4894 #: build/C/man7/cpuset.7:1058
4895 #, no-wrap
4896 msgid ""
4897 "/bin/echo 19 E<gt> cpuset.mems\n"
4898 "/bin/echo: write error: Invalid argument\n"
4899 msgstr ""
4900 "/bin/echo 19 E<gt> cpuset.mems\n"
4901 "/bin/echo: write error: Invalid argument\n"
4902
4903 #.  ================== EXCEPTIONS ==================
4904 #. type: SH
4905 #: build/C/man7/cpuset.7:1061
4906 #, no-wrap
4907 msgid "EXCEPTIONS"
4908 msgstr ""
4909
4910 #. type: SS
4911 #: build/C/man7/cpuset.7:1062
4912 #, no-wrap
4913 msgid "Memory placement"
4914 msgstr ""
4915
4916 #. type: Plain text
4917 #: build/C/man7/cpuset.7:1065
4918 msgid ""
4919 "Not all allocations of system memory are constrained by cpusets, for the "
4920 "following reasons."
4921 msgstr ""
4922
4923 #. type: Plain text
4924 #: build/C/man7/cpuset.7:1080
4925 msgid ""
4926 "If hot-plug functionality is used to remove all the CPUs that are currently "
4927 "assigned to a cpuset, then the kernel will automatically update the "
4928 "I<cpus_allowed> of all processes attached to CPUs in that cpuset to allow "
4929 "all CPUs.  When memory hot-plug functionality for removing memory nodes is "
4930 "available, a similar exception is expected to apply there as well.  In "
4931 "general, the kernel prefers to violate cpuset placement, rather than "
4932 "starving a process that has had all its allowed CPUs or memory nodes taken "
4933 "offline.  User code should reconfigure cpusets to refer only to online CPUs "
4934 "and memory nodes when using hot-plug to add or remove such resources."
4935 msgstr ""
4936
4937 #. type: Plain text
4938 #: build/C/man7/cpuset.7:1088
4939 msgid ""
4940 "A few kernel-critical, internal memory-allocation requests, marked "
4941 "GFP_ATOMIC, must be satisfied immediately.  The kernel may drop some request "
4942 "or malfunction if one of these allocations fail.  If such a request cannot "
4943 "be satisfied within the current process's cpuset, then we relax the cpuset, "
4944 "and look for memory anywhere we can find it.  It's better to violate the "
4945 "cpuset than stress the kernel."
4946 msgstr ""
4947
4948 #. type: Plain text
4949 #: build/C/man7/cpuset.7:1092
4950 msgid ""
4951 "Allocations of memory requested by kernel drivers while processing an "
4952 "interrupt lack any relevant process context, and are not confined by cpusets."
4953 msgstr ""
4954
4955 #. type: SS
4956 #: build/C/man7/cpuset.7:1092
4957 #, no-wrap
4958 msgid "Renaming cpusets"
4959 msgstr ""
4960
4961 #.  ================== ERRORS ==================
4962 #. type: Plain text
4963 #: build/C/man7/cpuset.7:1100
4964 msgid ""
4965 "You can use the B<rename>(2)  system call to rename cpusets.  Only simple "
4966 "renaming is supported; that is, changing the name of a cpuset directory is "
4967 "permitted, but moving a directory into a different directory is not "
4968 "permitted."
4969 msgstr ""
4970
4971 #. type: Plain text
4972 #: build/C/man7/cpuset.7:1104
4973 msgid ""
4974 "The Linux kernel implementation of cpusets sets I<errno> to specify the "
4975 "reason for a failed system call affecting cpusets."
4976 msgstr ""
4977
4978 #. type: Plain text
4979 #: build/C/man7/cpuset.7:1109
4980 msgid ""
4981 "The possible I<errno> settings and their meaning when set on a failed cpuset "
4982 "call are as listed below."
4983 msgstr ""
4984
4985 #. type: TP
4986 #: build/C/man7/cpuset.7:1109
4987 #, no-wrap
4988 msgid "B<E2BIG>"
4989 msgstr "B<E2BIG>"
4990
4991 #. type: Plain text
4992 #: build/C/man7/cpuset.7:1116
4993 msgid ""
4994 "Attempted a B<write>(2)  on a special cpuset file with a length larger than "
4995 "some kernel-determined upper limit on the length of such writes."
4996 msgstr ""
4997
4998 #. type: Plain text
4999 #: build/C/man7/cpuset.7:1123
5000 msgid ""
5001 "Attempted to B<write>(2)  the process ID (PID) of a process to a cpuset "
5002 "I<tasks> file when one lacks permission to move that process."
5003 msgstr ""
5004
5005 #. type: Plain text
5006 #: build/C/man7/cpuset.7:1129
5007 msgid ""
5008 "Attempted to add, using B<write>(2), a CPU or memory node to a cpuset, when "
5009 "that CPU or memory node was not already in its parent."
5010 msgstr ""
5011
5012 #. type: Plain text
5013 #: build/C/man7/cpuset.7:1137
5014 msgid ""
5015 "Attempted to set, using B<write>(2), I<cpuset.cpu_exclusive> or I<cpuset."
5016 "mem_exclusive> on a cpuset whose parent lacks the same setting."
5017 msgstr ""
5018
5019 #. type: Plain text
5020 #: build/C/man7/cpuset.7:1144
5021 msgid "Attempted to B<write>(2)  a I<cpuset.memory_pressure> file."
5022 msgstr ""
5023
5024 #. type: Plain text
5025 #: build/C/man7/cpuset.7:1147
5026 msgid "Attempted to create a file in a cpuset directory."
5027 msgstr ""
5028
5029 #. type: TP
5030 #: build/C/man7/cpuset.7:1147 build/C/man7/cpuset.7:1152
5031 #: build/C/man7/cpuset.7:1157
5032 #, no-wrap
5033 msgid "B<EBUSY>"
5034 msgstr "B<EBUSY>"
5035
5036 #. type: Plain text
5037 #: build/C/man7/cpuset.7:1152
5038 msgid ""
5039 "Attempted to remove, using B<rmdir>(2), a cpuset with attached processes."
5040 msgstr ""
5041
5042 #. type: Plain text
5043 #: build/C/man7/cpuset.7:1157
5044 msgid "Attempted to remove, using B<rmdir>(2), a cpuset with child cpusets."
5045 msgstr ""
5046
5047 #. type: Plain text
5048 #: build/C/man7/cpuset.7:1162
5049 msgid ""
5050 "Attempted to remove a CPU or memory node from a cpuset that is also in a "
5051 "child of that cpuset."
5052 msgstr ""
5053
5054 #. type: TP
5055 #: build/C/man7/cpuset.7:1162 build/C/man7/cpuset.7:1167
5056 #, no-wrap
5057 msgid "B<EEXIST>"
5058 msgstr "B<EEXIST>"
5059
5060 #. type: Plain text
5061 #: build/C/man7/cpuset.7:1167
5062 msgid "Attempted to create, using B<mkdir>(2), a cpuset that already exists."
5063 msgstr ""
5064
5065 #. type: Plain text
5066 #: build/C/man7/cpuset.7:1172
5067 msgid "Attempted to B<rename>(2)  a cpuset to a name that already exists."
5068 msgstr ""
5069
5070 #. type: Plain text
5071 #: build/C/man7/cpuset.7:1180
5072 msgid ""
5073 "Attempted to B<read>(2)  or B<write>(2)  a cpuset file using a buffer that "
5074 "is outside the writing processes accessible address space."
5075 msgstr ""
5076
5077 #. type: Plain text
5078 #: build/C/man7/cpuset.7:1189
5079 msgid ""
5080 "Attempted to change a cpuset, using B<write>(2), in a way that would violate "
5081 "a I<cpu_exclusive> or I<mem_exclusive> attribute of that cpuset or any of "
5082 "its siblings."
5083 msgstr ""
5084
5085 #. type: Plain text
5086 #: build/C/man7/cpuset.7:1198
5087 msgid ""
5088 "Attempted to B<write>(2)  an empty I<cpuset.cpus> or I<cpuset.mems> list to "
5089 "a cpuset which has attached processes or child cpusets."
5090 msgstr ""
5091
5092 #. type: Plain text
5093 #: build/C/man7/cpuset.7:1208
5094 msgid ""
5095 "Attempted to B<write>(2)  a I<cpuset.cpus> or I<cpuset.mems> list which "
5096 "included a range with the second number smaller than the first number."
5097 msgstr ""
5098
5099 #. type: Plain text
5100 #: build/C/man7/cpuset.7:1217
5101 msgid ""
5102 "Attempted to B<write>(2)  a I<cpuset.cpus> or I<cpuset.mems> list which "
5103 "included an invalid character in the string."
5104 msgstr ""
5105
5106 #. type: Plain text
5107 #: build/C/man7/cpuset.7:1224
5108 msgid ""
5109 "Attempted to B<write>(2)  a list to a I<cpuset.cpus> file that did not "
5110 "include any online CPUs."
5111 msgstr ""
5112
5113 #. type: Plain text
5114 #: build/C/man7/cpuset.7:1231
5115 msgid ""
5116 "Attempted to B<write>(2)  a list to a I<cpuset.mems> file that did not "
5117 "include any online memory nodes."
5118 msgstr ""
5119
5120 #. type: Plain text
5121 #: build/C/man7/cpuset.7:1238
5122 msgid ""
5123 "Attempted to B<write>(2)  a list to a I<cpuset.mems> file that included a "
5124 "node that held no memory."
5125 msgstr ""
5126
5127 #. type: Plain text
5128 #: build/C/man7/cpuset.7:1246
5129 msgid ""
5130 "Attempted to B<write>(2)  a string to a cpuset I<tasks> file that does not "
5131 "begin with an ASCII decimal integer."
5132 msgstr ""
5133
5134 #. type: Plain text
5135 #: build/C/man7/cpuset.7:1251
5136 msgid "Attempted to B<rename>(2)  a cpuset into a different directory."
5137 msgstr ""
5138
5139 #. type: Plain text
5140 #: build/C/man7/cpuset.7:1258
5141 msgid ""
5142 "Attempted to B<read>(2)  a I</proc/E<lt>pidE<gt>/cpuset> file for a cpuset "
5143 "path that is longer than the kernel page size."
5144 msgstr ""
5145
5146 #. type: Plain text
5147 #: build/C/man7/cpuset.7:1263
5148 msgid ""
5149 "Attempted to create, using B<mkdir>(2), a cpuset whose base directory name "
5150 "is longer than 255 characters."
5151 msgstr ""
5152
5153 #. type: Plain text
5154 #: build/C/man7/cpuset.7:1270
5155 msgid ""
5156 "Attempted to create, using B<mkdir>(2), a cpuset whose full pathname, "
5157 "including the mount point (typically \"/dev/cpuset/\") prefix, is longer "
5158 "than 4095 characters."
5159 msgstr ""
5160
5161 #. type: TP
5162 #: build/C/man7/cpuset.7:1270
5163 #, no-wrap
5164 msgid "B<ENODEV>"
5165 msgstr "B<ENODEV>"
5166
5167 #. type: Plain text
5168 #: build/C/man7/cpuset.7:1275
5169 msgid ""
5170 "The cpuset was removed by another process at the same time as a B<write>(2)  "
5171 "was attempted on one of the pseudo-files in the cpuset directory."
5172 msgstr ""
5173
5174 #. type: Plain text
5175 #: build/C/man7/cpuset.7:1280
5176 msgid ""
5177 "Attempted to create, using B<mkdir>(2), a cpuset in a parent cpuset that "
5178 "doesn't exist."
5179 msgstr ""
5180
5181 #. type: Plain text
5182 #: build/C/man7/cpuset.7:1287
5183 msgid ""
5184 "Attempted to B<access>(2)  or B<open>(2)  a nonexistent file in a cpuset "
5185 "directory."
5186 msgstr ""
5187
5188 #. type: Plain text
5189 #: build/C/man7/cpuset.7:1292
5190 msgid ""
5191 "Insufficient memory is available within the kernel; can occur on a variety "
5192 "of system calls affecting cpusets, but only if the system is extremely short "
5193 "of memory."
5194 msgstr ""
5195
5196 #. type: TP
5197 #: build/C/man7/cpuset.7:1292 build/C/man7/cpuset.7:1304
5198 #, no-wrap
5199 msgid "B<ENOSPC>"
5200 msgstr "B<ENOSPC>"
5201
5202 #. type: Plain text
5203 #: build/C/man7/cpuset.7:1304
5204 msgid ""
5205 "Attempted to B<write>(2)  the process ID (PID)  of a process to a cpuset "
5206 "I<tasks> file when the cpuset had an empty I<cpuset.cpus> or empty I<cpuset."
5207 "mems> setting."
5208 msgstr ""
5209
5210 #. type: Plain text
5211 #: build/C/man7/cpuset.7:1314
5212 msgid ""
5213 "Attempted to B<write>(2)  an empty I<cpuset.cpus> or I<cpuset.mems> setting "
5214 "to a cpuset that has tasks attached."
5215 msgstr ""
5216
5217 #. type: Plain text
5218 #: build/C/man7/cpuset.7:1319
5219 msgid "Attempted to B<rename>(2)  a nonexistent cpuset."
5220 msgstr ""
5221
5222 #. type: Plain text
5223 #: build/C/man7/cpuset.7:1322
5224 msgid "Attempted to remove a file from a cpuset directory."
5225 msgstr ""
5226
5227 #. type: TP
5228 #: build/C/man7/cpuset.7:1322
5229 #, no-wrap
5230 msgid "B<ERANGE>"
5231 msgstr "B<ERANGE>"
5232
5233 #. type: Plain text
5234 #: build/C/man7/cpuset.7:1330
5235 msgid ""
5236 "Specified a I<cpuset.cpus> or I<cpuset.mems> list to the kernel which "
5237 "included a number too large for the kernel to set in its bit masks."
5238 msgstr ""
5239
5240 #.  ================== VERSIONS ==================
5241 #. type: Plain text
5242 #: build/C/man7/cpuset.7:1338
5243 msgid ""
5244 "Attempted to B<write>(2)  the process ID (PID) of a nonexistent process to a "
5245 "cpuset I<tasks> file."
5246 msgstr ""
5247
5248 #.  ================== NOTES ==================
5249 #. type: Plain text
5250 #: build/C/man7/cpuset.7:1341
5251 msgid "Cpusets appeared in version 2.6.12 of the Linux kernel."
5252 msgstr ""
5253
5254 #.  ================== BUGS ==================
5255 #. type: Plain text
5256 #: build/C/man7/cpuset.7:1352
5257 msgid ""
5258 "Despite its name, the I<pid> parameter is actually a thread ID, and each "
5259 "thread in a threaded group can be attached to a different cpuset.  The value "
5260 "returned from a call to B<gettid>(2)  can be passed in the argument I<pid>."
5261 msgstr ""
5262
5263 #. type: SH
5264 #: build/C/man7/cpuset.7:1352 build/C/man2/getpriority.2:225
5265 #: build/C/man2/getrlimit.2:570 build/C/man2/ioprio_set.2:337
5266 #: build/C/man2/setfsgid.2:106 build/C/man2/setfsuid.2:114
5267 #, no-wrap
5268 msgid "BUGS"
5269 msgstr "バグ"
5270
5271 #.  ================== EXAMPLE ==================
5272 #. type: Plain text
5273 #: build/C/man7/cpuset.7:1365
5274 msgid ""
5275 "I<cpuset.memory_pressure> cpuset files can be opened for writing, creation, "
5276 "or truncation, but then the B<write>(2)  fails with I<errno> set to "
5277 "B<EACCES>, and the creation and truncation options on B<open>(2)  have no "
5278 "effect."
5279 msgstr ""
5280
5281 #. type: SH
5282 #: build/C/man7/cpuset.7:1365 build/C/man2/getrlimit.2:703
5283 #: build/C/man7/namespaces.7:361 build/C/man7/pid_namespaces.7:353
5284 #: build/C/man7/user_namespaces.7:677 build/C/man2/seccomp.2:476
5285 #, no-wrap
5286 msgid "EXAMPLE"
5287 msgstr "例"
5288
5289 #. type: Plain text
5290 #: build/C/man7/cpuset.7:1368
5291 msgid ""
5292 "The following examples demonstrate querying and setting cpuset options using "
5293 "shell commands."
5294 msgstr ""
5295
5296 #. type: SS
5297 #: build/C/man7/cpuset.7:1368
5298 #, no-wrap
5299 msgid "Creating and attaching to a cpuset."
5300 msgstr ""
5301
5302 #. type: Plain text
5303 #: build/C/man7/cpuset.7:1371
5304 msgid ""
5305 "To create a new cpuset and attach the current command shell to it, the steps "
5306 "are:"
5307 msgstr ""
5308
5309 #. type: IP
5310 #: build/C/man7/cpuset.7:1373 build/C/man7/cpuset.7:1412
5311 #, no-wrap
5312 msgid "1)"
5313 msgstr "1)"
5314
5315 #. type: Plain text
5316 #: build/C/man7/cpuset.7:1375
5317 msgid "mkdir /dev/cpuset (if not already done)"
5318 msgstr ""
5319
5320 #. type: IP
5321 #: build/C/man7/cpuset.7:1375 build/C/man7/cpuset.7:1418
5322 #, no-wrap
5323 msgid "2)"
5324 msgstr "2)"
5325
5326 #. type: Plain text
5327 #: build/C/man7/cpuset.7:1377
5328 msgid "mount -t cpuset none /dev/cpuset (if not already done)"
5329 msgstr ""
5330
5331 #. type: IP
5332 #: build/C/man7/cpuset.7:1377 build/C/man7/cpuset.7:1421
5333 #, no-wrap
5334 msgid "3)"
5335 msgstr "3)"
5336
5337 #. type: Plain text
5338 #: build/C/man7/cpuset.7:1380
5339 msgid "Create the new cpuset using B<mkdir>(1)."
5340 msgstr ""
5341
5342 #. type: IP
5343 #: build/C/man7/cpuset.7:1380 build/C/man7/cpuset.7:1424
5344 #, no-wrap
5345 msgid "4)"
5346 msgstr "4)"
5347
5348 #. type: Plain text
5349 #: build/C/man7/cpuset.7:1382
5350 msgid "Assign CPUs and memory nodes to the new cpuset."
5351 msgstr ""
5352
5353 #. type: IP
5354 #: build/C/man7/cpuset.7:1382 build/C/man7/cpuset.7:1429
5355 #, no-wrap
5356 msgid "5)"
5357 msgstr "5)"
5358
5359 #. type: Plain text
5360 #: build/C/man7/cpuset.7:1384
5361 msgid "Attach the shell to the new cpuset."
5362 msgstr ""
5363
5364 #. type: Plain text
5365 #: build/C/man7/cpuset.7:1389
5366 msgid ""
5367 "For example, the following sequence of commands will set up a cpuset named "
5368 "\"Charlie\", containing just CPUs 2 and 3, and memory node 1, and then "
5369 "attach the current shell to that cpuset."
5370 msgstr ""
5371
5372 #. type: Plain text
5373 #: build/C/man7/cpuset.7:1403
5374 #, no-wrap
5375 msgid ""
5376 "$B< mkdir /dev/cpuset>\n"
5377 "$B< mount -t cpuset cpuset /dev/cpuset>\n"
5378 "$B< cd /dev/cpuset>\n"
5379 "$B< mkdir Charlie>\n"
5380 "$B< cd Charlie>\n"
5381 "$B< /bin/echo 2-3 E<gt> cpuset.cpus>\n"
5382 "$B< /bin/echo 1 E<gt> cpuset.mems>\n"
5383 "$B< /bin/echo $$ E<gt> tasks>\n"
5384 "# The current shell is now running in cpuset Charlie\n"
5385 "# The next line should display '/Charlie'\n"
5386 "$B< cat /proc/self/cpuset>\n"
5387 msgstr ""
5388 "$B< mkdir /dev/cpuset>\n"
5389 "$B< mount -t cpuset cpuset /dev/cpuset>\n"
5390 "$B< cd /dev/cpuset>\n"
5391 "$B< mkdir Charlie>\n"
5392 "$B< cd Charlie>\n"
5393 "$B< /bin/echo 2-3 E<gt> cpuset.cpus>\n"
5394 "$B< /bin/echo 1 E<gt> cpuset.mems>\n"
5395 "$B< /bin/echo $$ E<gt> tasks>\n"
5396 "# The current shell is now running in cpuset Charlie\n"
5397 "# The next line should display '/Charlie'\n"
5398 "$B< cat /proc/self/cpuset>\n"
5399
5400 #. type: SS
5401 #: build/C/man7/cpuset.7:1405
5402 #, no-wrap
5403 msgid "Migrating a job to different memory nodes."
5404 msgstr ""
5405
5406 #. type: Plain text
5407 #: build/C/man7/cpuset.7:1410
5408 msgid ""
5409 "To migrate a job (the set of processes attached to a cpuset)  to different "
5410 "CPUs and memory nodes in the system, including moving the memory pages "
5411 "currently allocated to that job, perform the following steps."
5412 msgstr ""
5413
5414 #. type: Plain text
5415 #: build/C/man7/cpuset.7:1418
5416 msgid ""
5417 "Let's say we want to move the job in cpuset I<alpha> (CPUs 4-7 and memory "
5418 "nodes 2-3) to a new cpuset I<beta> (CPUs 16-19 and memory nodes 8-9)."
5419 msgstr ""
5420
5421 #. type: Plain text
5422 #: build/C/man7/cpuset.7:1421
5423 msgid "First create the new cpuset I<beta>."
5424 msgstr ""
5425
5426 #. type: Plain text
5427 #: build/C/man7/cpuset.7:1424
5428 msgid "Then allow CPUs 16-19 and memory nodes 8-9 in I<beta>."
5429 msgstr ""
5430
5431 #. type: Plain text
5432 #: build/C/man7/cpuset.7:1429
5433 msgid "Then enable I<memory_migration> in I<beta>."
5434 msgstr ""
5435
5436 #. type: Plain text
5437 #: build/C/man7/cpuset.7:1434
5438 msgid "Then move each process from I<alpha> to I<beta>."
5439 msgstr ""
5440
5441 #. type: Plain text
5442 #: build/C/man7/cpuset.7:1437
5443 msgid "The following sequence of commands accomplishes this."
5444 msgstr ""
5445
5446 #. type: Plain text
5447 #: build/C/man7/cpuset.7:1447
5448 #, no-wrap
5449 msgid ""
5450 "$B< cd /dev/cpuset>\n"
5451 "$B< mkdir beta>\n"
5452 "$B< cd beta>\n"
5453 "$B< /bin/echo 16-19 E<gt> cpuset.cpus>\n"
5454 "$B< /bin/echo 8-9 E<gt> cpuset.mems>\n"
5455 "$B< /bin/echo 1 E<gt> cpuset.memory_migrate>\n"
5456 "$B< while read i; do /bin/echo $i; done E<lt> ../alpha/tasks E<gt> tasks>\n"
5457 msgstr ""
5458 "$B< cd /dev/cpuset>\n"
5459 "$B< mkdir beta>\n"
5460 "$B< cd beta>\n"
5461 "$B< /bin/echo 16-19 E<gt> cpuset.cpus>\n"
5462 "$B< /bin/echo 8-9 E<gt> cpuset.mems>\n"
5463 "$B< /bin/echo 1 E<gt> cpuset.memory_migrate>\n"
5464 "$B< while read i; do /bin/echo $i; done E<lt> ../alpha/tasks E<gt> tasks>\n"
5465
5466 #. type: Plain text
5467 #: build/C/man7/cpuset.7:1456
5468 msgid ""
5469 "The above should move any processes in I<alpha> to I<beta>, and any memory "
5470 "held by these processes on memory nodes 2-3 to memory nodes 8-9, "
5471 "respectively."
5472 msgstr ""
5473
5474 #. type: Plain text
5475 #: build/C/man7/cpuset.7:1458
5476 msgid "Notice that the last step of the above sequence did not do:"
5477 msgstr ""
5478
5479 #. type: Plain text
5480 #: build/C/man7/cpuset.7:1462
5481 #, no-wrap
5482 msgid "$B< cp ../alpha/tasks tasks>\n"
5483 msgstr "$B< cp ../alpha/tasks tasks>\n"
5484
5485 #. type: Plain text
5486 #: build/C/man7/cpuset.7:1473
5487 msgid ""
5488 "The I<while> loop, rather than the seemingly easier use of the B<cp>(1)  "
5489 "command, was necessary because only one process PID at a time may be written "
5490 "to the I<tasks> file."
5491 msgstr ""
5492
5493 #. type: Plain text
5494 #: build/C/man7/cpuset.7:1481
5495 msgid ""
5496 "The same effect (writing one PID at a time) as the I<while> loop can be "
5497 "accomplished more efficiently, in fewer keystrokes and in syntax that works "
5498 "on any shell, but alas more obscurely, by using the B<-u> (unbuffered) "
5499 "option of B<sed>(1):"
5500 msgstr ""
5501
5502 #. type: Plain text
5503 #: build/C/man7/cpuset.7:1485
5504 #, no-wrap
5505 msgid "$B< sed -un p E<lt> ../alpha/tasks E<gt> tasks>\n"
5506 msgstr "$B< sed -un p E<lt> ../alpha/tasks E<gt> tasks>\n"
5507
5508 #. type: Plain text
5509 #: build/C/man7/cpuset.7:1503
5510 msgid ""
5511 "B<taskset>(1), B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), "
5512 "B<sched_getaffinity>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
5513 "B<set_mempolicy>(2), B<CPU_SET>(3), B<proc>(5), B<numa>(7), B<sched>(7), "
5514 "B<migratepages>(8), B<numactl>(8)"
5515 msgstr ""
5516 "B<taskset>(1), B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), "
5517 "B<sched_getaffinity>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
5518 "B<set_mempolicy>(2), B<CPU_SET>(3), B<proc>(5), B<numa>(7), B<sched>(7), "
5519 "B<migratepages>(8), B<numactl>(8)"
5520
5521 #. type: Plain text
5522 #: build/C/man7/cpuset.7:1506
5523 msgid "I<Documentation/cpusets.txt> in the Linux kernel source tree"
5524 msgstr "Linux カーネルソース内の I<Documentation/cpusets.txt>"
5525
5526 #. type: TH
5527 #: build/C/man7/credentials.7:27
5528 #, no-wrap
5529 msgid "CREDENTIALS"
5530 msgstr "CREDENTIALS"
5531
5532 #. type: TH
5533 #: build/C/man7/credentials.7:27 build/C/man2/setsid.2:31
5534 #, no-wrap
5535 msgid "2014-12-31"
5536 msgstr "2014-12-31"
5537
5538 #. type: Plain text
5539 #: build/C/man7/credentials.7:30
5540 msgid "credentials - process identifiers"
5541 msgstr "credentials - 認証に用いられるプロセスの識別子"
5542
5543 #. type: SS
5544 #: build/C/man7/credentials.7:31
5545 #, no-wrap
5546 msgid "Process ID (PID)"
5547 msgstr "プロセスID (PID)"
5548
5549 #. type: Plain text
5550 #: build/C/man7/credentials.7:41
5551 msgid ""
5552 "Each process has a unique nonnegative integer identifier that is assigned "
5553 "when the process is created using B<fork>(2).  A process can obtain its PID "
5554 "using B<getpid>(2).  A PID is represented using the type I<pid_t> (defined "
5555 "in I<E<lt>sys/types.hE<gt>>)."
5556 msgstr ""
5557 "各プロセスは、負でない整数の一意な識別子を持つ。 この識別子は B<fork>(2)  を"
5558 "使ってプロセスが生成される際に割り当てられる。 プロセスは B<getpid>(2)  を"
5559 "使って自分の PID を取得できる。 PID は I<pid_t> 型で表現される (I<pid_t> は "
5560 "I<E<lt>sys/types.hE<gt>> で定義されている)。"
5561
5562 #.  .BR sched_rr_get_interval (2),
5563 #.  .BR sched_getaffinity (2),
5564 #.  .BR sched_setaffinity (2),
5565 #.  .BR sched_getparam (2),
5566 #.  .BR sched_setparam (2),
5567 #.  .BR sched_setscheduler (2),
5568 #.  .BR sched_getscheduler (2),
5569 #.  .BR getsid (2),
5570 #.  .BR waitid (2),
5571 #.  .BR wait4 (2),
5572 #. type: Plain text
5573 #: build/C/man7/credentials.7:62
5574 msgid ""
5575 "PIDs are used in a range of system calls to identify the process affected by "
5576 "the call, for example: B<kill>(2), B<ptrace>(2), B<setpriority>(2)  "
5577 "B<setpgid>(2), B<setsid>(2), B<sigqueue>(3), and B<waitpid>(2)."
5578 msgstr ""
5579 "PID は各種のシステムコールでそのシステムコールが作用するプロセスを 特定するた"
5580 "めに使用される。以下に例を挙げる: B<kill>(2), B<ptrace>(2), "
5581 "B<setpriority>(2), B<setpgid>(2), B<setsid>(2), B<sigqueue>(3), "
5582 "B<waitpid>(2)."
5583
5584 #. type: Plain text
5585 #: build/C/man7/credentials.7:65
5586 msgid "A process's PID is preserved across an B<execve>(2)."
5587 msgstr "プロセスの PID は B<execve>(2)  の前後で不変である。"
5588
5589 #. type: SS
5590 #: build/C/man7/credentials.7:65
5591 #, no-wrap
5592 msgid "Parent process ID (PPID)"
5593 msgstr "親プロセス ID (PPID)"
5594
5595 #. type: Plain text
5596 #: build/C/man7/credentials.7:73
5597 msgid ""
5598 "A process's parent process ID identifies the process that created this "
5599 "process using B<fork>(2).  A process can obtain its PPID using "
5600 "B<getppid>(2).  A PPID is represented using the type I<pid_t>."
5601 msgstr ""
5602 "プロセスの親プロセスの ID は、 B<fork>(2)  を使ってそのプロセスを生成したプロ"
5603 "セスを示す。 プロセスは B<getppid>(2)  を使って自分の PPID を取得できる。 "
5604 "PPID は I<pid_t> 型で表現される。"
5605
5606 #. type: Plain text
5607 #: build/C/man7/credentials.7:76
5608 msgid "A process's PPID is preserved across an B<execve>(2)."
5609 msgstr "プロセスの PPID は B<execve>(2)  の前後で不変である。"
5610
5611 #. type: SS
5612 #: build/C/man7/credentials.7:76
5613 #, no-wrap
5614 msgid "Process group ID and session ID"
5615 msgstr "プロセスグループ ID とセッション ID"
5616
5617 #. type: Plain text
5618 #: build/C/man7/credentials.7:84
5619 msgid ""
5620 "Each process has a session ID and a process group ID, both represented using "
5621 "the type I<pid_t>.  A process can obtain its session ID using B<getsid>(2), "
5622 "and its process group ID using B<getpgrp>(2)."
5623 msgstr ""
5624 "各プロセスはセッション ID とプロセスグループ ID を持つ。 これらの ID はどちら"
5625 "も I<pid_t> 型で表現される。 プロセスは、それぞれ B<getsid>(2), "
5626 "B<getpgrp>(2)  を使って自分のセッション ID、プロセスグループ ID を取得でき"
5627 "る。"
5628
5629 #. type: Plain text
5630 #: build/C/man7/credentials.7:90
5631 msgid ""
5632 "A child created by B<fork>(2)  inherits its parent's session ID and process "
5633 "group ID.  A process's session ID and process group ID are preserved across "
5634 "an B<execve>(2)."
5635 msgstr ""
5636 "B<fork>(2)  で生成された子プロセスは親プロセスのセッション ID とプロセスグ"
5637 "ループ ID を継承する。プロセスのセッション ID とプロセスグループ ID は "
5638 "B<execve>(2)  の前後で不変である。"
5639
5640 #. type: Plain text
5641 #: build/C/man7/credentials.7:103
5642 msgid ""
5643 "Sessions and process groups are abstractions devised to support shell job "
5644 "control.  A process group (sometimes called a \"job\") is a collection of "
5645 "processes that share the same process group ID; the shell creates a new "
5646 "process group for the process(es) used to execute single command or pipeline "
5647 "(e.g., the two processes created to execute the command \"ls\\ |\\ wc\" are "
5648 "placed in the same process group).  A process's group membership can be set "
5649 "using B<setpgid>(2).  The process whose process ID is the same as its "
5650 "process group ID is the I<process group leader> for that group."
5651 msgstr ""
5652 "セッションとプロセスグループの概念は、シェルのジョブ制御を行うために 考案され"
5653 "たものである。 プロセスグループ (時には「ジョブ」と呼ばれることもある) は、 "
5654 "同じプロセスグループ ID を共有するプロセスの集まりである。 シェルは、一つのコ"
5655 "マンドもしくはパイプラインの実行に使われるプロセス群に 対して一つのプロセスグ"
5656 "ループを生成する (例えば、コマンド \"ls\\ |\\ wc\" を実行するために生成される"
5657 "二つのプロセスは 同じプロセスグループに置かれる)。 所属するプロセスグループ"
5658 "は B<setpgid>(2)  を使って設定できる。 自身のプロセス ID がプロセスグループ "
5659 "ID と同じプロセスは、 そのグループの「プロセスグループ・リーダー」である。"
5660
5661 #. type: Plain text
5662 #: build/C/man7/credentials.7:115
5663 msgid ""
5664 "A session is a collection of processes that share the same session ID.  All "
5665 "of the members of a process group also have the same session ID (i.e., all "
5666 "of the members of a process group always belong to the same session, so that "
5667 "sessions and process groups form a strict two-level hierarchy of "
5668 "processes.)  A new session is created when a process calls B<setsid>(2), "
5669 "which creates a new session whose session ID is the same as the PID of the "
5670 "process that called B<setsid>(2).  The creator of the session is called the "
5671 "I<session leader>."
5672 msgstr ""
5673 "セッションは、同じセッション ID を共有するプロセスの集まりである。 ある一つの"
5674 "プロセスグループの全メンバーは同じセッション ID を持つ (つまり、一つのプロセ"
5675 "スグループのメンバーは全て同じセッションに所属し、 これにより、セッションとプ"
5676 "ロセスグループで二階層のプロセス階層が形成できる)。 新たなセッションの生成は"
5677 "プロセスが B<setsid>(2)  を呼び出すことで行う。 B<setsid>(2)  は、 "
5678 "B<setsid>(2)  を呼び出したプロセスの PID と同じ値のセッション ID を持つ 新た"
5679 "なセッションを生成する。 セッションの生成者は「セッション・リーダー」と呼ばれ"
5680 "る。"
5681
5682 #. type: Plain text
5683 #: build/C/man7/credentials.7:124
5684 msgid ""
5685 "All of the processes in a session share a I<controlling terminal>.  The "
5686 "controlling terminal is established when the session leader first opens a "
5687 "terminal (unless the B<O_NOCTTY> flag is specified when calling "
5688 "B<open>(2)).  A terminal may be the controlling terminal of at most one "
5689 "session."
5690 msgstr ""
5691 "あるセッションの全プロセスは一つの I<制御端末> を共有する。 セッションリー"
5692 "ダーが最初に端末をオープンした際に制御端末は設定される (B<open>(2) の呼び出し"
5693 "で B<O_NOCTTY> フラグが指定された場合を除く)。 一つの端末は、最大でも一つの"
5694 "セッションの制御端末にしかなれない。"
5695
5696 #. type: Plain text
5697 #: build/C/man7/credentials.7:146
5698 msgid ""
5699 "At most one of the jobs in a session may be the I<foreground job>; other "
5700 "jobs in the session are I<background jobs>.  Only the foreground job may "
5701 "read from the terminal; when a process in the background attempts to read "
5702 "from the terminal, its process group is sent a B<SIGTTIN> signal, which "
5703 "suspends the job.  If the B<TOSTOP> flag has been set for the terminal (see "
5704 "B<termios>(3)), then only the foreground job may write to the terminal; "
5705 "writes from background job cause a B<SIGTTOU> signal to be generated, which "
5706 "suspends the job.  When terminal keys that generate a signal (such as the "
5707 "I<interrupt> key, normally control-C)  are pressed, the signal is sent to "
5708 "the processes in the foreground job."
5709 msgstr ""
5710 "一つのセッションのジョブの中で、I<フォアグラウンドジョブ>になれるのは最大でも"
5711 "一つで、そのセッションの他のジョブはI<バックグラウンドジョブ>である。 フォア"
5712 "グラウンドジョブだけが端末からの読み込みを行える。 バックグラウンドのプロセス"
5713 "が端末から読み込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグ"
5714 "ナルである B<SIGTTIN> が所属するプロセスグループに対して送信される。 端末に "
5715 "B<TOSTOP> フラグがセットされていた場合 (B<termios>(3) 参照)、 フォアグラウン"
5716 "ドジョブだけが端末への書き込みを行える。 バックグラウンドのプロセスが端末への"
5717 "書き込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグナルであ"
5718 "る B<SIGTTOU> が生成される。 シグナルを生成する端末キー (例えば I<中断>キー、"
5719 "通常は control-C) が押された場合、 そのシグナルはフォアグラウンドジョブのプロ"
5720 "セスに送信される。"
5721
5722 #. type: Plain text
5723 #: build/C/man7/credentials.7:167
5724 msgid ""
5725 "Various system calls and library functions may operate on all members of a "
5726 "process group, including B<kill>(2), B<killpg>(2), B<getpriority>(2), "
5727 "B<setpriority>(2), B<ioprio_get>(2), B<ioprio_set>(2), B<waitid>(2), and "
5728 "B<waitpid>(2).  See also the discussion of the B<F_GETOWN>, B<F_GETOWN_EX>, "
5729 "B<F_SETOWN>, and B<F_SETOWN_EX> operations in B<fcntl>(2)."
5730 msgstr ""
5731 "様々なシステムコールやライブラリ関数で、プロセスグループの全メンバーに対して"
5732 "操作を行うことができる。 例えば、 B<kill>(2), B<killpg>(2), "
5733 "B<getpriority>(2), B<setpriority>(2), B<ioprio_get>(2), B<ioprio_set>(2), "
5734 "B<waitid>(2), B<waitpid>(2) など。 B<fcntl>(2) の操作 B<F_GETOWN>, "
5735 "B<F_GETOWN_EX>, B<F_SETOWN>, B<F_SETOWN_EX> の議論も参照。"
5736
5737 #. type: SS
5738 #: build/C/man7/credentials.7:167
5739 #, no-wrap
5740 msgid "User and group identifiers"
5741 msgstr "ユーザ ID とグループ ID"
5742
5743 #. type: Plain text
5744 #: build/C/man7/credentials.7:175
5745 msgid ""
5746 "Each process has various associated user and groups IDs.  These IDs are "
5747 "integers, respectively represented using the types I<uid_t> and I<gid_t> "
5748 "(defined in I<E<lt>sys/types.hE<gt>>)."
5749 msgstr ""
5750 "各プロセスは、数種類のユーザ ID とグループ ID を持つ。 ユーザ ID、グループ "
5751 "ID は整数で、それぞれ I<uid_t>, I<gid_t> 型で表現される (これらは I<E<lt>sys/"
5752 "types.hE<gt>> で定義されている)。"
5753
5754 #. type: Plain text
5755 #: build/C/man7/credentials.7:177
5756 msgid "On Linux, each process has the following user and group identifiers:"
5757 msgstr ""
5758 "Linux では、各プロセスは以下のような種類のユーザ ID とグループ ID を持つ。"
5759
5760 #. type: Plain text
5761 #: build/C/man7/credentials.7:183
5762 msgid ""
5763 "Real user ID and real group ID.  These IDs determine who owns the process.  "
5764 "A process can obtain its real user (group) ID using B<getuid>(2)  "
5765 "(B<getgid>(2))."
5766 msgstr ""
5767 "実ユーザ ID と実グループ ID。 これらの ID によりプロセスの所有者が決定され"
5768 "る。 プロセスが自分の実ユーザ ID、実グループ ID を取得するには、それぞれ "
5769 "B<getuid>(2), B<getgid>(2)  を使用する。"
5770
5771 #. type: Plain text
5772 #: build/C/man7/credentials.7:195
5773 msgid ""
5774 "Effective user ID and effective group ID.  These IDs are used by the kernel "
5775 "to determine the permissions that the process will have when accessing "
5776 "shared resources such as message queues, shared memory, and semaphores.  On "
5777 "most UNIX systems, these IDs also determine the permissions when accessing "
5778 "files.  However, Linux uses the filesystem IDs described below for this "
5779 "task.  A process can obtain its effective user (group) ID using "
5780 "B<geteuid>(2)  (B<getegid>(2))."
5781 msgstr ""
5782 "実効ユーザ ID と実効グループ ID。 これらの ID は、メッセージキュー、共有メモ"
5783 "リ、セマフォなどの 共有リソースにアクセスしようとした際にそのプロセスがアクセ"
5784 "ス許可を 持っているかをカーネルが判定するのに使用される。 ほとんどの UNIX シ"
5785 "ステムでは、これらの ID はファイルへのアクセス時の アクセス許可の判定にも使用"
5786 "される。 しかしながら、Linux ではファイルへのアクセス許可の判定には 後述の"
5787 "ファイルシステム ID が使用される。 プロセスが自分の実効ユーザ ID、実効グルー"
5788 "プ ID を取得するには、それぞれ B<geteuid>(2), B<getegid>(2)  を使用する。"
5789
5790 #. type: Plain text
5791 #: build/C/man7/credentials.7:217
5792 msgid ""
5793 "Saved set-user-ID and saved set-group-ID.  These IDs are used in set-user-ID "
5794 "and set-group-ID programs to save a copy of the corresponding effective IDs "
5795 "that were set when the program was executed (see B<execve>(2)).  A set-user-"
5796 "ID program can assume and drop privileges by switching its effective user ID "
5797 "back and forth between the values in its real user ID and saved set-user-"
5798 "ID.  This switching is done via calls to B<seteuid>(2), B<setreuid>(2), or "
5799 "B<setresuid>(2).  A set-group-ID program performs the analogous tasks using "
5800 "B<setegid>(2), B<setregid>(2), or B<setresgid>(2).  A process can obtain its "
5801 "saved set-user-ID (set-group-ID) using B<getresuid>(2)  (B<getresgid>(2))."
5802 msgstr ""
5803 "保存 (saved) set-user-ID と保存 set-group-ID。 これらの ID は、set-user-ID "
5804 "や set-group-ID されたプログラムにおいて、 プログラムの実行時に設定された実"
5805 "効 ID のコピーを保存するために 使用される (B<execve>(2)  参照)。 set-user-ID "
5806 "プログラムは、実効ユーザ ID を実ユーザID と保存 set-user-ID の間で行ったり来"
5807 "たり切り替えることで、特権を得たり落としたりできる。 この切り替えは "
5808 "B<seteuid>(2), B<setreuid>(2), B<setresuid>(2)  を呼び出すことで実行できる。 "
5809 "set-group-ID プログラムは、 B<setegid>(2), B<setregid>(2), B<setresgid>(2)  "
5810 "を使って同様のことができる。 プロセスが自分の保存 set-user-ID、保存 set-"
5811 "group-ID を取得するには、 B<getresuid(2),> B<getresgids>(2)  をそれぞれ使用す"
5812 "る。"
5813
5814 #. type: Plain text
5815 #: build/C/man7/credentials.7:234
5816 msgid ""
5817 "Filesystem user ID and filesystem group ID (Linux-specific).  These IDs, in "
5818 "conjunction with the supplementary group IDs described below, are used to "
5819 "determine permissions for accessing files; see B<path_resolution>(7)  for "
5820 "details.  Whenever a process's effective user (group) ID is changed, the "
5821 "kernel also automatically changes the filesystem user (group) ID to the same "
5822 "value.  Consequently, the filesystem IDs normally have the same values as "
5823 "the corresponding effective ID, and the semantics for file-permission checks "
5824 "are thus the same on Linux as on other UNIX systems.  The filesystem IDs can "
5825 "be made to differ from the effective IDs by calling B<setfsuid>(2)  and "
5826 "B<setfsgid>(2)."
5827 msgstr ""
5828 "ファイルシステム・ユーザ ID とファイルシステム・グループ ID (Linux 固有)。 こ"
5829 "れらの ID は、後述の補助グループ ID と組み合わせて使用され、 ファイルへのアク"
5830 "セス権の決定に利用される。詳細は B<path_resolution>(7)  を参照。 プロセスの実"
5831 "効 ID (ユーザ ID や グループ ID) が変更されるたびに、 カーネルは自動的に対応"
5832 "するファイルシステム ID を同じ値に変更する。 その結果、ファイルシステム ID は"
5833 "通常は対応する実効 ID と同じ値となり、 ファイルのアクセス権のチェック方法は "
5834 "Linux と他の UNIX システムで同じである。 ファイルシステム ID は実効 ID とは異"
5835 "なる値にすることができ、 変更は B<setfsuid>(2)  と B<setfsgid>(2)  を呼び出し"
5836 "て行う。"
5837
5838 #.  Since kernel 2.6.4, the limit is visible via the read-only file
5839 #.  /proc/sys/kernel/ngroups_max.
5840 #.  As at 2.6.22-rc2, this file is still read-only.
5841 #. type: Plain text
5842 #: build/C/man7/credentials.7:253
5843 msgid ""
5844 "Supplementary group IDs.  This is a set of additional group IDs that are "
5845 "used for permission checks when accessing files and other shared resources.  "
5846 "On Linux kernels before 2.6.4, a process can be a member of up to 32 "
5847 "supplementary groups; since kernel 2.6.4, a process can be a member of up to "
5848 "65536 supplementary groups.  The call I<sysconf(_SC_NGROUPS_MAX)> can be "
5849 "used to determine the number of supplementary groups of which a process may "
5850 "be a member.  A process can obtain its set of supplementary group IDs using "
5851 "B<getgroups>(2), and can modify the set using B<setgroups>(2)."
5852 msgstr ""
5853 "補助グループ ID。 この ID は、ファイルや他の共有リソースへのアクセス時にアク"
5854 "セス許可の チェックに使用される、追加のグループ ID の集合である。 カーネル "
5855 "2.6.4 より前の Linux では、一つのプロセスあたりの 補助グループのメンバー数は"
5856 "最大で 32 である。 カーネル 2.6.4 以降では、一つのプロセスあたりの 補助グルー"
5857 "プのメンバー数は最大で 65536 である。 I<sysconf(_SC_NGROUPS_MAX)> を呼び出す"
5858 "ことで、あるプロセスがメンバーとなることができる可能性のある 補助グループ数を"
5859 "知ることができる。 プロセスは、自分の補助グループ ID の集合を "
5860 "B<getgroups>(2)  で取得でき、 B<setgroups>(2)  で集合を変更できる。"
5861
5862 #. type: Plain text
5863 #: build/C/man7/credentials.7:263
5864 msgid ""
5865 "A child process created by B<fork>(2)  inherits copies of its parent's user "
5866 "and groups IDs.  During an B<execve>(2), a process's real user and group ID "
5867 "and supplementary group IDs are preserved; the effective and saved set IDs "
5868 "may be changed, as described in B<execve>(2)."
5869 msgstr ""
5870 "B<fork>(2)  で生成された子プロセスは親プロセスのユーザ ID とグループ ID を継"
5871 "承する。 B<execve>(2)  の間、プロセスの実ユーザ/グループ ID と補助グループ "
5872 "ID 集合は不変である。 実効 ID と保存セット ID は変更される可能性がある "
5873 "(B<execve>(2)  で説明されている)。"
5874
5875 #. type: Plain text
5876 #: build/C/man7/credentials.7:266
5877 msgid ""
5878 "Aside from the purposes noted above, a process's user IDs are also employed "
5879 "in a number of other contexts:"
5880 msgstr "上記の目的以外にも、プロセスのユーザ ID は他の様々な場面で利用される。"
5881
5882 #. type: Plain text
5883 #: build/C/man7/credentials.7:269
5884 msgid "when determining the permissions for sending signals (see B<kill>(2));"
5885 msgstr "シグナルを送る許可の判定時 (B<kill>(2)  参照)"
5886
5887 #. type: Plain text
5888 #: build/C/man7/credentials.7:280
5889 msgid ""
5890 "when determining the permissions for setting process-scheduling parameters "
5891 "(nice value, real time scheduling policy and priority, CPU affinity, I/O "
5892 "priority) using B<setpriority>(2), B<sched_setaffinity>(2), "
5893 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_setattr>(2), and "
5894 "B<ioprio_set>(2);"
5895 msgstr ""
5896 "プロセスのスケジューリング関連のパラメータ (nice 値、 リアルタイム・スケ"
5897 "ジューリングポリシーや優先度、CPU affinity、 入出力優先度) の設定許可の判定"
5898 "時。 スケジューリング関連のパラメータ設定には B<setpriority>(2), "
5899 "B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
5900 "B<sched_setattr>(2), B<ioprio_set>(2)  が使用される。"
5901
5902 #. type: Plain text
5903 #: build/C/man7/credentials.7:283
5904 msgid "when checking resource limits (see B<getrlimit>(2));"
5905 msgstr "リソース上限のチェック時 (B<getrlimit>(2)  参照)"
5906
5907 #. type: Plain text
5908 #: build/C/man7/credentials.7:287
5909 msgid ""
5910 "when checking the limit on the number of inotify instances that the process "
5911 "may create (see B<inotify>(7))."
5912 msgstr ""
5913 "プロセスが生成できる inotify インスタンス数の上限のチェック時 (B<inotify>(7) "
5914 "参照)"
5915
5916 #. type: Plain text
5917 #: build/C/man7/credentials.7:293
5918 msgid ""
5919 "Process IDs, parent process IDs, process group IDs, and session IDs are "
5920 "specified in POSIX.1-2001.  The real, effective, and saved set user and "
5921 "groups IDs, and the supplementary group IDs, are specified in POSIX.1-2001.  "
5922 "The filesystem user and group IDs are a Linux extension."
5923 msgstr ""
5924 "プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は "
5925 "POSIX.1-2001 で規定されている。 実 ID、実効 ID、保存セット ID のユーザ ID / "
5926 "グループ ID および 補助グループ ID は POSIX.1-2001 で規定されている。 ファイ"
5927 "ルシステム・ユーザ ID / グループ ID は Linux による拡張である。"
5928
5929 #. type: Plain text
5930 #: build/C/man7/credentials.7:304
5931 msgid ""
5932 "The POSIX threads specification requires that credentials are shared by all "
5933 "of the threads in a process.  However, at the kernel level, Linux maintains "
5934 "separate user and group credentials for each thread.  The NPTL threading "
5935 "implementation does some work to ensure that any change to user or group "
5936 "credentials (e.g., calls to B<setuid>(2), B<setresuid>(2))  is carried "
5937 "through to all of the POSIX threads in a process."
5938 msgstr ""
5939 "POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで 共有される"
5940 "ことを求めている。 しかしながら、カーネルのレベルでは、Linux はスレッド毎に"
5941 "別々の ユーザとグループに関する識別子を管理している。 NPTL スレッド実装が、"
5942 "(例えば B<setuid>(2), B<setresuid>(2)  などの呼び出しによる) ユーザやグループ"
5943 "に関する識別子に対する変更が プロセス内の全ての POSIX スレッドに対して反映さ"
5944 "れることを保証する ための処理を行っている。"
5945
5946 #. type: Plain text
5947 #: build/C/man7/credentials.7:340
5948 msgid ""
5949 "B<bash>(1), B<csh>(1), B<ps>(1), B<access>(2), B<execve>(2), "
5950 "B<faccessat>(2), B<fork>(2), B<getgroups>(2), B<getpgrp>(2), B<getpid>(2), "
5951 "B<getppid>(2), B<getsid>(2), B<kill>(2), B<killpg>(2), B<setegid>(2), "
5952 "B<seteuid>(2), B<setfsgid>(2), B<setfsuid>(2), B<setgid>(2), "
5953 "B<setgroups>(2), B<setresgid>(2), B<setresuid>(2), B<setuid>(2), "
5954 "B<waitpid>(2), B<euidaccess>(3), B<initgroups>(3), B<tcgetpgrp>(3), "
5955 "B<tcsetpgrp>(3), B<capabilities>(7), B<namespaces>(7), "
5956 "B<path_resolution>(7), B<pid_namespaces>(7), B<signal>(7), "
5957 "B<user_namespaces>(7), B<unix>(7)"
5958 msgstr ""
5959 "B<bash>(1), B<csh>(1), B<ps>(1), B<access>(2), B<execve>(2), "
5960 "B<faccessat>(2), B<fork>(2), B<getgroups>(2), B<getpgrp>(2), B<getpid>(2), "
5961 "B<getppid>(2), B<getsid>(2), B<kill>(2), B<killpg>(2), B<setegid>(2), "
5962 "B<seteuid>(2), B<setfsgid>(2), B<setfsuid>(2), B<setgid>(2), "
5963 "B<setgroups>(2), B<setresgid>(2), B<setresuid>(2), B<setuid>(2), "
5964 "B<waitpid>(2), B<euidaccess>(3), B<initgroups>(3), B<tcgetpgrp>(3), "
5965 "B<tcsetpgrp>(3), B<capabilities>(7), B<namespaces>(7), "
5966 "B<path_resolution>(7), B<pid_namespaces>(7), B<signal>(7), "
5967 "B<user_namespaces>(7), B<unix>(7)"
5968
5969 #. type: TH
5970 #: build/C/man2/getgid.2:25
5971 #, no-wrap
5972 msgid "GETGID"
5973 msgstr "GETGID"
5974
5975 #. type: TH
5976 #: build/C/man2/getgid.2:25 build/C/man2/getresuid.2:28
5977 #: build/C/man2/getuid.2:26
5978 #, no-wrap
5979 msgid "2010-11-22"
5980 msgstr "2010-11-22"
5981
5982 #. type: Plain text
5983 #: build/C/man2/getgid.2:28
5984 msgid "getgid, getegid - get group identity"
5985 msgstr "getgid, getegid - グループ ID を得る"
5986
5987 #. type: Plain text
5988 #: build/C/man2/getgid.2:30 build/C/man2/getgroups.2:38
5989 #: build/C/man2/getpid.2:32 build/C/man2/getresuid.2:35
5990 #: build/C/man2/getsid.2:31 build/C/man2/getuid.2:31
5991 #: build/C/man3/group_member.3:30 build/C/man2/seteuid.2:36
5992 #: build/C/man2/setgid.2:36 build/C/man2/setpgid.2:53
5993 #: build/C/man2/setresuid.2:33 build/C/man2/setreuid.2:52
5994 #: build/C/man2/setsid.2:37 build/C/man2/setuid.2:37
5995 msgid "B<#include E<lt>unistd.hE<gt>>"
5996 msgstr "B<#include E<lt>unistd.hE<gt>>"
5997
5998 #. type: Plain text
5999 #: build/C/man2/getgid.2:32 build/C/man2/getgroups.2:36
6000 #: build/C/man2/getpid.2:30 build/C/man2/getuid.2:33 build/C/man2/seteuid.2:34
6001 #: build/C/man2/setgid.2:34 build/C/man2/setreuid.2:50
6002 #: build/C/man2/setuid.2:35
6003 msgid "B<#include E<lt>sys/types.hE<gt>>"
6004 msgstr "B<#include E<lt>sys/types.hE<gt>>"
6005
6006 #. type: Plain text
6007 #: build/C/man2/getgid.2:34
6008 msgid "B<gid_t getgid(void);>"
6009 msgstr "B<gid_t getgid(void);>"
6010
6011 #. type: Plain text
6012 #: build/C/man2/getgid.2:36
6013 msgid "B<gid_t getegid(void);>"
6014 msgstr "B<gid_t getegid(void);>"
6015
6016 #. type: Plain text
6017 #: build/C/man2/getgid.2:39
6018 msgid "B<getgid>()  returns the real group ID of the calling process."
6019 msgstr "B<getgid>()  は呼び出し元のプロセスの実グループ ID を返す。"
6020
6021 #. type: Plain text
6022 #: build/C/man2/getgid.2:42
6023 msgid "B<getegid>()  returns the effective group ID of the calling process."
6024 msgstr "B<getegid>()  は呼び出し元のプロセスの実効グループ ID を返す。"
6025
6026 #. type: Plain text
6027 #: build/C/man2/getgid.2:44 build/C/man2/getpid.2:46 build/C/man2/getuid.2:45
6028 msgid "These functions are always successful."
6029 msgstr "これらの関数は常に成功する。"
6030
6031 #. type: Plain text
6032 #: build/C/man2/getgid.2:46 build/C/man2/getuid.2:47
6033 msgid "POSIX.1-2001, 4.3BSD."
6034 msgstr "POSIX.1-2001, 4.3BSD."
6035
6036 #. type: Plain text
6037 #: build/C/man2/getgid.2:62
6038 msgid ""
6039 "The original Linux B<getgid>()  and B<getegid>()  system calls supported "
6040 "only 16-bit group IDs.  Subsequently, Linux 2.4 added B<getgid32>()  and "
6041 "B<getegid32>(), supporting 32-bit IDs.  The glibc B<getgid>()  and "
6042 "B<getegid>()  wrapper functions transparently deal with the variations "
6043 "across kernel versions."
6044 msgstr ""
6045 "元々の Linux の B<getgid>() と B<getegid>() システムコールは\n"
6046 "16 ビットのグループ ID だけに対応していた。\n"
6047 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6048 "B<getgid32>() と B<getegid32>() が追加された。\n"
6049 "glibc の B<getgid>() と B<getegid>() のラッパー関数は\n"
6050 "カーネルバージョンによるこの違いを吸収している。"
6051
6052 #. type: Plain text
6053 #: build/C/man2/getgid.2:67
6054 msgid "B<getresgid>(2), B<setgid>(2), B<setregid>(2), B<credentials>(7)"
6055 msgstr "B<getresgid>(2), B<setgid>(2), B<setregid>(2), B<credentials>(7)"
6056
6057 #. type: TH
6058 #: build/C/man2/getgroups.2:31
6059 #, no-wrap
6060 msgid "GETGROUPS"
6061 msgstr "GETGROUPS"
6062
6063 #. type: TH
6064 #: build/C/man2/getgroups.2:31 build/C/man2/getpriority.2:45
6065 #, no-wrap
6066 msgid "2014-08-19"
6067 msgstr "2014-08-19"
6068
6069 #. type: Plain text
6070 #: build/C/man2/getgroups.2:34
6071 msgid "getgroups, setgroups - get/set list of supplementary group IDs"
6072 msgstr "getgroups, setgroups - 補助グループ ID のリストを取得/設定する"
6073
6074 #. type: Plain text
6075 #: build/C/man2/getgroups.2:40
6076 msgid "B<int getgroups(int >I<size>B<, gid_t >I<list>B<[]);>"
6077 msgstr "B<int getgroups(int >I<size>B<, gid_t >I<list>B<[]);>"
6078
6079 #. type: Plain text
6080 #: build/C/man2/getgroups.2:42
6081 msgid "B<#include E<lt>grp.hE<gt>>"
6082 msgstr "B<#include E<lt>grp.hE<gt>>"
6083
6084 #. type: Plain text
6085 #: build/C/man2/getgroups.2:44
6086 msgid "B<int setgroups(size_t >I<size>B<, const gid_t *>I<list>B<);>"
6087 msgstr "B<int setgroups(size_t >I<size>B<, const gid_t *>I<list>B<);>"
6088
6089 #. type: Plain text
6090 #: build/C/man2/getgroups.2:52
6091 msgid "B<setgroups>(): _BSD_SOURCE"
6092 msgstr "B<setgroups>(): _BSD_SOURCE"
6093
6094 #. type: Plain text
6095 #: build/C/man2/getgroups.2:70
6096 msgid ""
6097 "B<getgroups>()  returns the supplementary group IDs of the calling process "
6098 "in I<list>.  The argument I<size> should be set to the maximum number of "
6099 "items that can be stored in the buffer pointed to by I<list>.  If the "
6100 "calling process is a member of more than I<size> supplementary groups, then "
6101 "an error results.  It is unspecified whether the effective group ID of the "
6102 "calling process is included in the returned list.  (Thus, an application "
6103 "should also call B<getegid>(2)  and add or remove the resulting value.)"
6104 msgstr ""
6105 "B<getgroups>()  は呼び出し元プロセスの補助グループ (supplementary group) ID "
6106 "を I<list> に返す。 I<size> 引き数には、 I<list> により参照されるバッファに格"
6107 "納できる要素の最大数を設定すべきである。 呼び出し元プロセスが I<size> 個より"
6108 "多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロ"
6109 "セスの実効グループ ID が、 返されるリストに含まれるかどうかは規定されていな"
6110 "い (したがって、アプリケーションは B<getegid>(2)  を呼び出し、その結果の値を"
6111 "追加・削除すべきである)。"
6112
6113 #. type: Plain text
6114 #: build/C/man2/getgroups.2:81
6115 msgid ""
6116 "If I<size> is zero, I<list> is not modified, but the total number of "
6117 "supplementary group IDs for the process is returned.  This allows the caller "
6118 "to determine the size of a dynamically allocated I<list> to be used in a "
6119 "further call to B<getgroups>()."
6120 msgstr ""
6121 "I<size> が 0 ならば、 I<list> は修正されないが、そのプロセスの補助グループ "
6122 "ID の合計数が返される。 これを使うことで、それ以降の B<getgroups>()  の呼び出"
6123 "しで必要となる動的割り当てバッファ I<list> のサイズを、呼び出し元が決定するこ"
6124 "とができる。"
6125
6126 #. type: Plain text
6127 #: build/C/man2/getgroups.2:92
6128 msgid ""
6129 "B<setgroups>()  sets the supplementary group IDs for the calling process.  "
6130 "Appropriate privileges (Linux: the B<CAP_SETGID> capability) are required.  "
6131 "The I<size> argument specifies the number of supplementary group IDs in the "
6132 "buffer pointed to by I<list>."
6133 msgstr ""
6134 "B<setgroups>()  は、呼び出し元プロセスの補助グループ ID を設定する。 適切な特"
6135 "権 (Linux では B<CAP_SETGID> ケーパビリティ (capability)) が必要である。 "
6136 "I<size> 引き数には、 I<list> により参照されるバッファに格納された補助グルー"
6137 "プ ID の数を指定する。"
6138
6139 #. type: Plain text
6140 #: build/C/man2/getgroups.2:99
6141 msgid ""
6142 "On success, B<getgroups>()  returns the number of supplementary group IDs.  "
6143 "On error, -1 is returned, and I<errno> is set appropriately."
6144 msgstr ""
6145 "B<getgroups>()  は、成功すると補助グループ ID の数を返す。 エラーの場合 -1 を"
6146 "返し、 I<errno> を適切に設定する。"
6147
6148 #. type: Plain text
6149 #: build/C/man2/getgroups.2:106
6150 msgid ""
6151 "On success, B<setgroups>()  returns 0.  On error, -1 is returned, and "
6152 "I<errno> is set appropriately."
6153 msgstr ""
6154 "B<setgroups>()  は、成功すると 0 を返す。 エラーの場合 -1 を返し、 I<errno> "
6155 "を適切に設定する。"
6156
6157 #. type: Plain text
6158 #: build/C/man2/getgroups.2:111
6159 msgid "I<list> has an invalid address."
6160 msgstr "I<list> が不正なアドレスである。"
6161
6162 #. type: Plain text
6163 #: build/C/man2/getgroups.2:114
6164 msgid "B<getgroups>()  can additionally fail with the following error:"
6165 msgstr "B<getgroups>()  は、上記に加えて以下のエラーで失敗する可能性がある。"
6166
6167 #. type: Plain text
6168 #: build/C/man2/getgroups.2:118
6169 msgid ""
6170 "I<size> is less than the number of supplementary group IDs, but is not zero."
6171 msgstr "I<size> が補助グループ ID の数より小さいが 0 でない。"
6172
6173 #. type: Plain text
6174 #: build/C/man2/getgroups.2:121
6175 msgid "B<setgroups>()  can additionally fail with the following errors:"
6176 msgstr "B<setgroups>()  は、上記に加えて以下のエラーで失敗する可能性がある。"
6177
6178 #. type: Plain text
6179 #: build/C/man2/getgroups.2:127
6180 msgid ""
6181 "I<size> is greater than B<NGROUPS_MAX> (32 before Linux 2.6.4; 65536 since "
6182 "Linux 2.6.4)."
6183 msgstr ""
6184 "I<size> が B<NGROUPS_MAX> より大きい (B<NGROUPS_MAX> は Linux 2.6.4 より前で"
6185 "は 32、Linux 2.6.4 以降では 65536)。"
6186
6187 #. type: Plain text
6188 #: build/C/man2/getgroups.2:133
6189 msgid "The calling process has insufficient privilege."
6190 msgstr "呼び出し元プロセスが十分な特権を持っていない。"
6191
6192 #. type: Plain text
6193 #: build/C/man2/getgroups.2:141
6194 msgid ""
6195 "SVr4, 4.3BSD.  The B<getgroups>()  function is in POSIX.1-2001.  Since "
6196 "B<setgroups>()  requires privilege, it is not covered by POSIX.1-2001."
6197 msgstr ""
6198 "SVr4, 4.3BSD.  B<getgroups>()  関数は POSIX.1-2001 に準拠している。 "
6199 "B<setgroups>()  は特権を必要とするため、POSIX.1-2001 に従っていない。"
6200
6201 #. type: Plain text
6202 #: build/C/man2/getgroups.2:153
6203 msgid ""
6204 "A process can have up to B<NGROUPS_MAX> supplementary group IDs in addition "
6205 "to the effective group ID.  The constant B<NGROUPS_MAX> is defined in "
6206 "I<E<lt>limits.hE<gt>>.  The set of supplementary group IDs is inherited from "
6207 "the parent process, and preserved across an B<execve>(2)."
6208 msgstr ""
6209 "プロセスは、実効グループ ID に加え、最大 B<NGROUPS_MAX> までの補助グループ "
6210 "ID を持つことができる。 定数 B<NGROUPS_MAX> は I<E<lt>limits.hE<gt>> で定義さ"
6211 "れている。 補助グループ ID の集合は親プロセスから継承され、 B<execve>(2)  の"
6212 "前後で保持される。"
6213
6214 #. type: Plain text
6215 #: build/C/man2/getgroups.2:156
6216 msgid ""
6217 "The maximum number of supplementary group IDs can be found at run time using "
6218 "B<sysconf>(3):"
6219 msgstr ""
6220 "補助グループ ID の最大数は、実行時に B<sysconf>(3)  を使って以下のようにして"
6221 "調べることができる:"
6222
6223 #. type: Plain text
6224 #: build/C/man2/getgroups.2:160
6225 #, no-wrap
6226 msgid ""
6227 "    long ngroups_max;\n"
6228 "    ngroups_max = sysconf(_SC_NGROUPS_MAX);\n"
6229 msgstr ""
6230 "    long ngroups_max;\n"
6231 "    ngroups_max = sysconf(_SC_NGROUPS_MAX);\n"
6232
6233 #. type: Plain text
6234 #: build/C/man2/getgroups.2:168
6235 msgid ""
6236 "The maximum return value of B<getgroups>()  cannot be larger than one more "
6237 "than this value.  Since Linux 2.6.4, the maximum number of supplementary "
6238 "group IDs is also exposed via the Linux-specific read-only file, I</proc/sys/"
6239 "kernel/ngroups_max>."
6240 msgstr ""
6241 "B<getgroups>() の返り値の最大値は、この値より大きくなることはない。 Linux "
6242 "2.6.4 以降では、補助グループ ID の最大数も Linux 固有の読み込み専用のファイ"
6243 "ル I</proc/sys/kernel/ngroups_max> 経由で公開されている。"
6244
6245 #. type: Plain text
6246 #: build/C/man2/getgroups.2:178
6247 msgid ""
6248 "The original Linux B<getgroups>()  system call supported only 16-bit group "
6249 "IDs.  Subsequently, Linux 2.4 added B<getgroups32>(), supporting 32-bit "
6250 "IDs.  The glibc B<getgroups>()  wrapper function transparently deals with "
6251 "the variation across kernel versions."
6252 msgstr ""
6253 "元々の Linux の B<getgroups>() システムコールは 16 ビットのグループ ID だけ\n"
6254 "に対応していた。その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6255 "B<getgroups>() が追加された。glibc の B<getgroups> のラッパー関数はカーネル\n"
6256 "バージョンによるこの違いを吸収している。"
6257
6258 #. type: Plain text
6259 #: build/C/man2/getgroups.2:186
6260 msgid ""
6261 "B<getgid>(2), B<setgid>(2), B<getgrouplist>(3), B<group_member>(3), "
6262 "B<initgroups>(3), B<capabilities>(7), B<credentials>(7)"
6263 msgstr ""
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
6267 #. type: TH
6268 #: build/C/man2/getpid.2:25
6269 #, no-wrap
6270 msgid "GETPID"
6271 msgstr "GETPID"
6272
6273 #. type: Plain text
6274 #: build/C/man2/getpid.2:28
6275 msgid "getpid, getppid - get process identification"
6276 msgstr "getpid, getppid - プロセス ID を得る"
6277
6278 #. type: Plain text
6279 #: build/C/man2/getpid.2:34
6280 msgid "B<pid_t getpid(void);>"
6281 msgstr "B<pid_t getpid(void);>"
6282
6283 #. type: Plain text
6284 #: build/C/man2/getpid.2:36
6285 msgid "B<pid_t getppid(void);>"
6286 msgstr "B<pid_t getppid(void);>"
6287
6288 #. type: Plain text
6289 #: build/C/man2/getpid.2:41
6290 msgid ""
6291 "B<getpid>()  returns the process ID of the calling process.  (This is often "
6292 "used by routines that generate unique temporary filenames.)"
6293 msgstr ""
6294 "B<getpid>()  は呼び出し元のプロセスのプロセス ID を返す。(テンポラリ用のファ"
6295 "イル名として 他と重ならない名前を生成するルーチンでしばしば使用される。)"
6296
6297 #. type: Plain text
6298 #: build/C/man2/getpid.2:44
6299 msgid ""
6300 "B<getppid>()  returns the process ID of the parent of the calling process."
6301 msgstr "B<getppid>()  は呼び出し元のプロセスの親プロセスのプロセス ID を返す。"
6302
6303 #. type: Plain text
6304 #: build/C/man2/getpid.2:48
6305 msgid "POSIX.1-2001, 4.3BSD, SVr4."
6306 msgstr "POSIX.1-2001, 4.3BSD, SVr4."
6307
6308 #.  The following program demonstrates this "feature":
6309 #.  #define _GNU_SOURCE
6310 #.  #include <sys/syscall.h>
6311 #.  #include <sys/wait.h>
6312 #.  #include <stdio.h>
6313 #.  #include <stdlib.h>
6314 #.  #include <unistd.h>
6315 #.  int
6316 #.  main(int argc, char *argv[])
6317 #.  {
6318 #.     /* The following statement fills the getpid() cache */
6319 #.     printf("parent PID = %ld
6320 #. ", (long) getpid());
6321 #.     if (syscall(SYS_fork) == 0) {
6322 #.         if (getpid() != syscall(SYS_getpid))
6323 #.             printf("child getpid() mismatch: getpid()=%ld; "
6324 #.                     "syscall(SYS_getpid)=%ld
6325 #. ",
6326 #.                     (long) getpid(), (long) syscall(SYS_getpid));
6327 #.         exit(EXIT_SUCCESS);
6328 #.     }
6329 #.     wait(NULL);
6330 #. }
6331 #. type: Plain text
6332 #: build/C/man2/getpid.2:100
6333 msgid ""
6334 "Since glibc version 2.3.4, the glibc wrapper function for B<getpid>()  "
6335 "caches PIDs, so as to avoid additional system calls when a process calls "
6336 "B<getpid>()  repeatedly.  Normally this caching is invisible, but its "
6337 "correct operation relies on support in the wrapper functions for B<fork>(2), "
6338 "B<vfork>(2), and B<clone>(2): if an application bypasses the glibc wrappers "
6339 "for these system calls by using B<syscall>(2), then a call to B<getpid>()  "
6340 "in the child will return the wrong value (to be precise: it will return the "
6341 "PID of the parent process).  See also B<clone>(2)  for discussion of a case "
6342 "where B<getpid>()  may return the wrong value even when invoking "
6343 "B<clone>(2)  via the glibc wrapper function."
6344 msgstr ""
6345 "glibc バージョン 2.3.4 以降では、 glibc の B<getpid>()  のラッパー関数は PID "
6346 "をキャッシュする。 これは、プロセスが繰り返し B<getpid>()  を呼び出した場合に"
6347 "その都度システムコールを呼ぶのを避けるためである。 通常は、このキャッシュ処理"
6348 "が見えることはないが、 キャッシュ処理が正しく働くためには B<fork>(2), "
6349 "B<vfork>(2), B<clone>(2)  のラッパー関数でのサポートが必要である。 アプリケー"
6350 "ションがこれらのシステムコールを呼び出す際に、 glibc のラッパー関数を経由せず"
6351 "に B<syscall>(2)  を使った場合には、子プロセスで B<getpid>()  を呼び出すと間"
6352 "違った値が返ることだろう (正確にいうと、親プロセスの PID が返される)。 "
6353 "B<clone>(2)  を glibc のラッパー関数経由で起動した際にも B<getpid>()  が間"
6354 "違った値を返す場合があり、これに関する議論は B<clone>(2)  も参照してほしい。"
6355
6356 #. type: Plain text
6357 #: build/C/man2/getpid.2:111
6358 msgid ""
6359 "B<clone>(2), B<fork>(2), B<kill>(2), B<exec>(3), B<mkstemp>(3), "
6360 "B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3), B<credentials>(7), "
6361 "B<pid_namespaces>(7)"
6362 msgstr ""
6363 "B<clone>(2), B<fork>(2), B<kill>(2), B<exec>(3), B<mkstemp>(3), "
6364 "B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3), B<credentials>(7), "
6365 "B<pid_namespaces>(7)"
6366
6367 #. type: TH
6368 #: build/C/man2/getpriority.2:45
6369 #, no-wrap
6370 msgid "GETPRIORITY"
6371 msgstr "GETPRIORITY"
6372
6373 #. type: Plain text
6374 #: build/C/man2/getpriority.2:48
6375 msgid "getpriority, setpriority - get/set program scheduling priority"
6376 msgstr ""
6377 "getpriority, setpriority - プログラムのスケジューリングの優先度を取得/設定す"
6378 "る"
6379
6380 #. type: Plain text
6381 #: build/C/man2/getpriority.2:50 build/C/man2/getrlimit.2:69
6382 #: build/C/man2/getrusage.2:44
6383 msgid "B<#include E<lt>sys/time.hE<gt>>"
6384 msgstr "B<#include E<lt>sys/time.hE<gt>>"
6385
6386 #. type: Plain text
6387 #: build/C/man2/getpriority.2:52 build/C/man2/getrlimit.2:71
6388 #: build/C/man2/getrusage.2:46
6389 msgid "B<#include E<lt>sys/resource.hE<gt>>"
6390 msgstr "B<#include E<lt>sys/resource.hE<gt>>"
6391
6392 #. type: Plain text
6393 #: build/C/man2/getpriority.2:54
6394 msgid "B<int getpriority(int >I<which>B<, id_t >I<who>B<);>"
6395 msgstr "B<int getpriority(int >I<which>B<, id_t >I<who>B<);>"
6396
6397 #. type: Plain text
6398 #: build/C/man2/getpriority.2:56
6399 msgid "B<int setpriority(int >I<which>B<, id_t >I<who>B<, int >I<prio>B<);>"
6400 msgstr "B<int setpriority(int >I<which>B<, id_t >I<who>B<, int >I<prio>B<);>"
6401
6402 #. type: Plain text
6403 #: build/C/man2/getpriority.2:67
6404 msgid ""
6405 "The scheduling priority of the process, process group, or user, as indicated "
6406 "by I<which> and I<who> is obtained with the B<getpriority>()  call and set "
6407 "with the B<setpriority>()  call."
6408 msgstr ""
6409 "システムコール B<getpriority>()  や B<setpriority>()  は、 I<which> と "
6410 "I<who> で指定されたプロセス、プロセスグループ、ユーザーの スケジューリング優"
6411 "先度 (scheduling priority) の 取得や設定をそれぞれ行う。"
6412
6413 #. type: Plain text
6414 #: build/C/man2/getpriority.2:94
6415 msgid ""
6416 "The value I<which> is one of B<PRIO_PROCESS>, B<PRIO_PGRP>, or B<PRIO_USER>, "
6417 "and I<who> is interpreted relative to I<which> (a process identifier for "
6418 "B<PRIO_PROCESS>, process group identifier for B<PRIO_PGRP>, and a user ID "
6419 "for B<PRIO_USER>).  A zero value for I<who> denotes (respectively) the "
6420 "calling process, the process group of the calling process, or the real user "
6421 "ID of the calling process.  I<Prio> is a value in the range -20 to 19 (but "
6422 "see the Notes below).  The default priority is 0; lower priorities cause "
6423 "more favorable scheduling."
6424 msgstr ""
6425 "I<which> の値は B<PRIO_PROCESS>, B<PRIO_PGRP>, B<PRIO_USER>, のどれか一つ"
6426 "で、 I<who> は I<which> に応じて解釈される (B<PRIO_PROCESS> だとプロセス識別"
6427 "子、 B<PRIO_PGRP> だとプロセスグループ識別子、 B<PRIO_USER> だと UID (ユーザ"
6428 "ID) と解釈される)。 I<who> がゼロならば、(それぞれ)呼び出したプロセス、 呼び"
6429 "出したプロセスのプロセスグループ、 呼び出したプロセスの実UID を意味する。 "
6430 "I<prio> は -20 から 19 の範囲の値で (但し以下の注意の項を参照のこと)、 デフォ"
6431 "ルトの優先度は 0 である; 小さな数字ほど、有利なスケジューリングとなる。"
6432
6433 #. type: Plain text
6434 #: build/C/man2/getpriority.2:104
6435 msgid ""
6436 "The B<getpriority>()  call returns the highest priority (lowest numerical "
6437 "value)  enjoyed by any of the specified processes.  The B<setpriority>()  "
6438 "call sets the priorities of all of the specified processes to the specified "
6439 "value.  Only the superuser may lower priorities."
6440 msgstr ""
6441 "B<getpriority>()  コールは指定したプロセスの中の最も高い優先度 (数値的には最"
6442 "小の値) を返す。 B<setpriority>()  コールは指定したプロセス全ての優先度を指定"
6443 "した値に設定する。 優先度を今より小さい値に設定できるのはスーパーユーザーだけ"
6444 "である。"
6445
6446 #. type: Plain text
6447 #: build/C/man2/getpriority.2:117
6448 msgid ""
6449 "Since B<getpriority>()  can legitimately return the value -1, it is "
6450 "necessary to clear the external variable I<errno> prior to the call, then "
6451 "check it afterward to determine if -1 is an error or a legitimate value.  "
6452 "The B<setpriority>()  call returns 0 if there is no error, or -1 if there is."
6453 msgstr ""
6454 "B<getpriority>()  は成功した場合にも -1 の値を返す可能性があるので、 呼び出し"
6455 "の前に外部変数の I<errno> をクリアし、呼び出しの後に返り値の -1 が正当な値か "
6456 "エラーかを判別する必要がある。 B<setpriority>()  コールはエラーがなければ 0 "
6457 "を返し、エラーがあれば -1 を返す。"
6458
6459 #. type: Plain text
6460 #: build/C/man2/getpriority.2:126
6461 msgid "I<which> was not one of B<PRIO_PROCESS>, B<PRIO_PGRP>, or B<PRIO_USER>."
6462 msgstr ""
6463 "I<which> が B<PRIO_PROCESS>, B<PRIO_PGRP>, B<PRIO_USER> のいずれでもない。"
6464
6465 #. type: Plain text
6466 #: build/C/man2/getpriority.2:133
6467 msgid "No process was located using the I<which> and I<who> values specified."
6468 msgstr "I<which> と I<who> で指定されたプロセスが存在しない。"
6469
6470 #. type: Plain text
6471 #: build/C/man2/getpriority.2:137
6472 msgid ""
6473 "In addition to the errors indicated above, B<setpriority>()  may fail if:"
6474 msgstr "上記のものに加えて B<setpriority>()  では以下のエラーがある:"
6475
6476 #. type: Plain text
6477 #: build/C/man2/getpriority.2:149
6478 msgid ""
6479 "The caller attempted to lower a process priority, but did not have the "
6480 "required privilege (on Linux: did not have the B<CAP_SYS_NICE> capability).  "
6481 "Since Linux 2.6.12, this error occurs only if the caller attempts to set a "
6482 "process priority outside the range of the B<RLIMIT_NICE> soft resource limit "
6483 "of the target process; see B<getrlimit>(2)  for details."
6484 msgstr ""
6485 "呼び出し元がプロセスの優先度を下げようとしたが、必要な特権を 持っていなかっ"
6486 "た (Linux の場合、 B<CAP_SYS_NICE> ケーパビリティがなかった)。 Linux 2.6.12 "
6487 "以降では、呼び出し元が、あるプロセスの優先度を、 変更対象のプロセスのリソー"
6488 "ス B<RLIMIT_NICE> のソフトリミットの範囲外に設定しようとした場合にのみ、 この"
6489 "エラーが発生する。詳細は B<getrlimit>(2)  を参照。"
6490
6491 #. type: Plain text
6492 #: build/C/man2/getpriority.2:157
6493 msgid ""
6494 "A process was located, but its effective user ID did not match either the "
6495 "effective or the real user ID of the caller, and was not privileged (on "
6496 "Linux: did not have the B<CAP_SYS_NICE> capability).  But see NOTES below."
6497 msgstr ""
6498 "プロセスは見つかったが、そのプロセスの実効 (effective) UID が 呼び出し元の実"
6499 "効UID にも実 (real) UID にも一致せず、 呼び出し元が特権も持っていなかった "
6500 "(Linux の場合、 B<CAP_SYS_NICE> ケーパビリティがなかった)。 以下の「注意」も"
6501 "参照のこと。"
6502
6503 #. type: Plain text
6504 #: build/C/man2/getpriority.2:160
6505 msgid ""
6506 "SVr4, 4.4BSD (these function calls first appeared in 4.2BSD), POSIX.1-2001."
6507 msgstr "SVr4, 4.4BSD (これらの関数は 4.2BSD で最初に登場した), POSIX.1-2001."
6508
6509 #. type: Plain text
6510 #: build/C/man2/getpriority.2:166
6511 msgid ""
6512 "A child created by B<fork>(2)  inherits its parent's nice value.  The nice "
6513 "value is preserved across B<execve>(2)."
6514 msgstr ""
6515 "B<fork>(2)  で作成された子プロセスは、 親プロセスの nice 値を継承する。 "
6516 "B<execve>(2)  の前後で nice 値は保存される。"
6517
6518 #. type: Plain text
6519 #: build/C/man2/getpriority.2:177
6520 msgid ""
6521 "The degree to which their relative nice value affects the scheduling of "
6522 "processes varies across UNIX systems, and, on Linux, across kernel "
6523 "versions.  Starting with kernel 2.6.23, Linux adopted an algorithm that "
6524 "causes relative differences in nice values to have a much stronger effect.  "
6525 "This causes very low nice values (+19) to truly provide little CPU to a "
6526 "process whenever there is any other higher priority load on the system, and "
6527 "makes high nice values (-20) deliver most of the CPU to applications that "
6528 "require it (e.g., some audio applications)."
6529 msgstr ""
6530 "相対的な nice 値の違いがプロセス間のスケジューリングにどの程度影響を与えるか "
6531 "は、UNIX システム間で異なり、Linux ではカーネルバージョンにより異なる。 "
6532 "Linux は、カーネル 2.6.23 以降で、nice 値の相対的な違いが、非常に強い影響を "
6533 "与えるアルゴリズムを採用した。このアルゴリズムでは、 他に優先度の高いものがシ"
6534 "ステムに存在する時には、 非常に低い nice 値 (+19) ではプロセスに本当にほとん"
6535 "ど CPU が割り当てられない。 また、高い nice 値 (-20) では CPU を必要とするア"
6536 "プリケーション (例えば オーディオアプリケーション) に CPU のほとんどが割り当"
6537 "てられる。"
6538
6539 #. type: Plain text
6540 #: build/C/man2/getpriority.2:192
6541 msgid ""
6542 "The details on the condition for B<EPERM> depend on the system.  The above "
6543 "description is what POSIX.1-2001 says, and seems to be followed on all System"
6544 "\\ V-like systems.  Linux kernels before 2.6.12 required the real or "
6545 "effective user ID of the caller to match the real user of the process I<who> "
6546 "(instead of its effective user ID).  Linux 2.6.12 and later require the "
6547 "effective user ID of the caller to match the real or effective user ID of "
6548 "the process I<who>.  All BSD-like systems (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, "
6549 "FreeBSD 4.3, OpenBSD-2.5, ...) behave in the same manner as Linux 2.6.12 and "
6550 "later."
6551 msgstr ""
6552 "B<EPERM> が発生する条件の詳細はシステムに依存する。 上記の説明は "
6553 "POSIX.1-2001 のものであり、全ての System\\ V 風システムは これに従っているよ"
6554 "うである。 2.6.12 より前の Linux カーネルでは、呼び出し元の実 UID または 実"
6555 "効 UID がプロセス I<who> の (実効 UID でなく)  実 UID に一致する必要がある。 "
6556 "Linux 2.6.12 以降では、呼び出し元の実行 UID がプロセス I<who> の実 UID か実"
6557 "効 UID のいずれかと一致する必要がある。 全ての BSD 風システム (SunOS 4.1.3, "
6558 "Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5等) は、 Linux 2.6.12 以降と同じ"
6559 "動作をする。"
6560
6561 #. type: Plain text
6562 #: build/C/man2/getpriority.2:197
6563 msgid ""
6564 "The actual priority range varies between kernel versions.  Linux before "
6565 "1.3.36 had -infinity..15.  Since kernel 1.3.43, Linux has the range "
6566 "-20..19.  On some other systems, the range of nice values is -20..20."
6567 msgstr ""
6568 "実際の優先度の範囲はカーネルのバージョンにより異なる。 バージョン 1.3.36 より"
6569 "前の Linux では -infinity(マイナス無限大)..15 である。 カーネル 1.3.43 以降"
6570 "の Linux では、 -20..19 である。 他のいくつかのシステムでは、この範囲が "
6571 "-20..20 である。"
6572
6573 #. type: Plain text
6574 #: build/C/man2/getpriority.2:210
6575 msgid ""
6576 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
6577 "portability.  (Indeed, I<E<lt>sys/resource.hE<gt>> defines the I<rusage> "
6578 "structure with fields of type I<struct timeval> defined in I<E<lt>sys/time."
6579 "hE<gt>>.)"
6580 msgstr ""
6581 "現在では I<E<lt>sys/time.hE<gt>> をインクルードする必要はないが、インクルード"
6582 "すれば移植性を高めることができる (実際には I<E<lt>sys/resource.hE<gt>> で "
6583 "I<rusage> 構造体が定義されているが、そのフィールドで使用されている I<struct "
6584 "timeval> 型は I<E<lt>sys/time.hE<gt>> で定義されている)。"
6585
6586 #. type: SS
6587 #: build/C/man2/getpriority.2:210 build/C/man2/seteuid.2:132
6588 #, no-wrap
6589 msgid "C library/kernel ABI differences"
6590 msgstr "C ライブラリとカーネル ABI の違い"
6591
6592 #. type: Plain text
6593 #: build/C/man2/getpriority.2:225
6594 msgid ""
6595 "Within the kernel, nice values are actually represented using the range "
6596 "40..1 (since negative numbers are error codes) and these are the values "
6597 "employed by the B<setpriority>()  and B<getpriority>()  system calls.  The "
6598 "glibc wrapper functions for these system calls handle the translations "
6599 "between the user-land and kernel representations of the nice value according "
6600 "to the formula I<unice\\ =\\ 20\\ -\\ knice>.  (Thus, the kernels 40..1 "
6601 "range corresponds to the range -20..19 as seen by user space.)"
6602 msgstr ""
6603 "カーネル内部では、nice 値は実際には 40 〜 1 の範囲を使って 表現されており (負"
6604 "の値はエラーコードとなるため)、こちらの値が システムコール B<setpriority>()  "
6605 "と B<getpriority>()  で使用されている。 glibc のこれらのシステムコールのラッ"
6606 "パー関数において、nice 値の ユーザ領域 (user-land) とカーネル表現の間の変換が"
6607 "行われる。 変換式は I<unice\\ =\\ 20\\ -\\ knice> となる。 (したがって、カー"
6608 "ネルの 40..1 の範囲はユーザー空間で見える -20..19 の範囲に対応する。)"
6609
6610 #. type: Plain text
6611 #: build/C/man2/getpriority.2:232
6612 msgid ""
6613 "According to POSIX, the nice value is a per-process setting.  However, under "
6614 "the current Linux/NPTL implementation of POSIX threads, the nice value is a "
6615 "per-thread attribute: different threads in the same process can have "
6616 "different nice values.  Portable applications should avoid relying on the "
6617 "Linux behavior, which may be made standards conformant in the future."
6618 msgstr ""
6619 "POSIX では nice 値はプロセス単位の設定となっている。 一方、 現在の POSIX ス"
6620 "レッドの Linux/NPTL 実装では、 nice 値はスレッド単位の属性である。 同じプロセ"
6621 "スの別々のスレッドが異なる nice 値を持つ場合がある。 移植性が必要なアプリケー"
6622 "ションではこの Linux の動作を前提するのは避けるべきである。 Linux の動作は将"
6623 "来標準に準拠した動作になるかもしれない。"
6624
6625 #. type: Plain text
6626 #: build/C/man2/getpriority.2:238
6627 msgid "B<nice>(1), B<renice>(1), B<fork>(2), B<capabilities>(7), B<sched>(7)"
6628 msgstr "B<nice>(1), B<renice>(1), B<fork>(2), B<capabilities>(7), B<sched>(7)"
6629
6630 #. type: Plain text
6631 #: build/C/man2/getpriority.2:241
6632 msgid ""
6633 "I<Documentation/scheduler/sched-nice-design.txt> in the Linux kernel source "
6634 "tree (since Linux 2.6.23)"
6635 msgstr ""
6636 "Linux カーネルのソースツリー内の I<Documentation/scheduler/sched-nice-design."
6637 "txt> (Linux 2.6.23 以降)"
6638
6639 #. type: TH
6640 #: build/C/man2/getresuid.2:28
6641 #, no-wrap
6642 msgid "GETRESUID"
6643 msgstr "GETRESUID"
6644
6645 #. type: Plain text
6646 #: build/C/man2/getresuid.2:31
6647 msgid "getresuid, getresgid - get real, effective and saved user/group IDs"
6648 msgstr ""
6649 "getresuid, getresgid - 実、実効、保存、ユーザー ID / グループ ID を取得する"
6650
6651 #. type: Plain text
6652 #: build/C/man2/getresuid.2:33 build/C/man2/setresuid.2:31
6653 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
6654 msgstr "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */"
6655
6656 #. type: Plain text
6657 #: build/C/man2/getresuid.2:37
6658 msgid ""
6659 "B<int getresuid(uid_t *>I<ruid>B<, uid_t *>I<euid>B<, uid_t *>I<suid>B<);>"
6660 msgstr ""
6661 "B<int getresuid(uid_t *>I<ruid>B<, uid_t *>I<euid>B<, uid_t *>I<suid>B<);>"
6662
6663 #. type: Plain text
6664 #: build/C/man2/getresuid.2:39
6665 msgid ""
6666 "B<int getresgid(gid_t *>I<rgid>B<, gid_t *>I<egid>B<, gid_t *>I<sgid>B<);>"
6667 msgstr ""
6668 "B<int getresgid(gid_t *>I<rgid>B<, gid_t *>I<egid>B<, gid_t *>I<sgid>B<);>"
6669
6670 #. type: Plain text
6671 #: build/C/man2/getresuid.2:50
6672 msgid ""
6673 "B<getresuid>()  returns the real UID, the effective UID, and the saved set-"
6674 "user-ID of the calling process, in the arguments I<ruid>, I<euid>, and "
6675 "I<suid>, respectively.  B<getresgid>()  performs the analogous task for the "
6676 "process's group IDs."
6677 msgstr ""
6678 "B<getresuid>()  は、呼び出したプロセスの実 (real) UID、実効 (effective) "
6679 "UID、 保存 (saved) set-user-ID (B<getresgid> の場合はグループ ID) を、 それぞ"
6680 "れ引き数 I<ruid>, I<euid>, I<suid> に格納して返す。 B<getresgid>()  は、呼び"
6681 "出したプロセスのグループ ID について同様の処理を行う。"
6682
6683 #. type: Plain text
6684 #: build/C/man2/getresuid.2:60
6685 msgid ""
6686 "One of the arguments specified an address outside the calling program's "
6687 "address space."
6688 msgstr ""
6689 "指定した引き数のどれかが、呼び出したプログラムのアドレス空間の外の アドレスで"
6690 "ある。"
6691
6692 #. type: Plain text
6693 #: build/C/man2/getresuid.2:62
6694 msgid "These system calls appeared on Linux starting with kernel 2.1.44."
6695 msgstr "これらのシステムコールはカーネル 2.1.44 から Linux に登場した。"
6696
6697 #. type: Plain text
6698 #: build/C/man2/getresuid.2:67
6699 msgid ""
6700 "The prototypes are given by glibc since version 2.3.2, provided "
6701 "B<_GNU_SOURCE> is defined."
6702 msgstr ""
6703 "プロトタイプ宣言は 2.3.2 以降の glibc では B<_GNU_SOURCE> を定義していると得"
6704 "られる。"
6705
6706 #. type: Plain text
6707 #: build/C/man2/getresuid.2:70 build/C/man2/setresuid.2:112
6708 msgid ""
6709 "These calls are nonstandard; they also appear on HP-UX and some of the BSDs."
6710 msgstr "これらのコールは非標準である。 HP-UX や BSD 系のいくつかにも存在する。"
6711
6712 #. type: Plain text
6713 #: build/C/man2/getresuid.2:86
6714 msgid ""
6715 "The original Linux B<getresuid>()  and B<getresgid>()  system calls "
6716 "supported only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
6717 "B<getresuid32>()  and B<getresgid32>(), supporting 32-bit IDs.  The glibc "
6718 "B<getresuid>()  and B<getresgid>()  wrapper functions transparently deal "
6719 "with the variations across kernel versions."
6720 msgstr ""
6721 "元々の Linux の B<getresuid>() と B<getresgid>() システムコールは\n"
6722 "16 ビットのグループ ID だけに対応していた。\n"
6723 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
6724 "B<getresuid32>() と B<getresgid32>() が追加された。\n"
6725 "glibc の B<getresuid>() と B<getresgid>() のラッパー関数は\n"
6726 "カーネルバージョンによるこの違いを吸収している。"
6727
6728 #. type: Plain text
6729 #: build/C/man2/getresuid.2:92
6730 msgid ""
6731 "B<getuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
6732 "B<credentials>(7)"
6733 msgstr ""
6734 "B<getuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
6735 "B<credentials>(7)"
6736
6737 #. type: TH
6738 #: build/C/man2/getrlimit.2:64
6739 #, no-wrap
6740 msgid "GETRLIMIT"
6741 msgstr "GETRLIMIT"
6742
6743 #. type: TH
6744 #: build/C/man2/getrlimit.2:64
6745 #, no-wrap
6746 msgid "2014-10-02"
6747 msgstr "2014-10-02"
6748
6749 #. type: Plain text
6750 #: build/C/man2/getrlimit.2:67
6751 msgid "getrlimit, setrlimit, prlimit - get/set resource limits"
6752 msgstr "getrlimit, setrlimit, prlimit - 資源の制限を取得/設定する"
6753
6754 #. type: Plain text
6755 #: build/C/man2/getrlimit.2:73
6756 msgid "B<int getrlimit(int >I<resource>B<, struct rlimit *>I<rlim>B<);>"
6757 msgstr "B<int getrlimit(int >I<resource>B<, struct rlimit *>I<rlim>B<);>"
6758
6759 #. type: Plain text
6760 #: build/C/man2/getrlimit.2:75
6761 msgid "B<int setrlimit(int >I<resource>B<, const struct rlimit *>I<rlim>B<);>"
6762 msgstr "B<int setrlimit(int >I<resource>B<, const struct rlimit *>I<rlim>B<);>"
6763
6764 #. type: Plain text
6765 #: build/C/man2/getrlimit.2:78
6766 msgid ""
6767 "B<int prlimit(pid_t >I<pid>B<, int >I<resource>B<, const struct rlimit "
6768 "*>I<new_limit>B<,>"
6769 msgstr ""
6770 "B<int prlimit(pid_t >I<pid>B<, int >I<resource>B<, const struct rlimit "
6771 "*>I<new_limit>B<,>"
6772
6773 #. type: Plain text
6774 #: build/C/man2/getrlimit.2:80
6775 msgid "B< struct rlimit *>I<old_limit>B<);>"
6776 msgstr "B< struct rlimit *>I<old_limit>B<);>"
6777
6778 #. type: Plain text
6779 #: build/C/man2/getrlimit.2:88
6780 msgid "B<prlimit>(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64"
6781 msgstr "B<prlimit>(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64"
6782
6783 #. type: Plain text
6784 #: build/C/man2/getrlimit.2:97
6785 msgid ""
6786 "The B<getrlimit>()  and B<setrlimit>()  system calls get and set resource "
6787 "limits respectively.  Each resource has an associated soft and hard limit, "
6788 "as defined by the I<rlimit> structure:"
6789 msgstr ""
6790 "B<getrlimit>() と B<setrlimit>() はそれぞれ資源 (resource) の制限\n"
6791 "(limit) の設定と取得を行う。 各リソースには、それに対応するソフトリミッ\n"
6792 "トとハードリミットがあり、 I<rlimit> 構造体で定義される:"
6793
6794 #. type: Plain text
6795 #: build/C/man2/getrlimit.2:104
6796 #, no-wrap
6797 msgid ""
6798 "struct rlimit {\n"
6799 "    rlim_t rlim_cur;  /* Soft limit */\n"
6800 "    rlim_t rlim_max;  /* Hard limit (ceiling for rlim_cur) */\n"
6801 "};\n"
6802 msgstr ""
6803 "struct rlimit {\n"
6804 "    rlim_t rlim_cur;  /* ソフトリミット */\n"
6805 "    rlim_t rlim_max;  /* ハードリミット\n"
6806 "                         (rlim_cur より小さくない) */\n"
6807 "};\n"
6808
6809 #. type: Plain text
6810 #: build/C/man2/getrlimit.2:115
6811 msgid ""
6812 "The soft limit is the value that the kernel enforces for the corresponding "
6813 "resource.  The hard limit acts as a ceiling for the soft limit: an "
6814 "unprivileged process may set only its soft limit to a value in the range "
6815 "from 0 up to the hard limit, and (irreversibly) lower its hard limit.  A "
6816 "privileged process (under Linux: one with the B<CAP_SYS_RESOURCE> "
6817 "capability) may make arbitrary changes to either limit value."
6818 msgstr ""
6819 "ソフトリミットは、カーネルが対応するリソースに対して課す制限値である。 ハード"
6820 "リミットはソフトリミットの上限として働く。 特権を持たないプロセスは、ソフトリ"
6821 "ミットの値を 0 からハードリミットの範囲に設定することと、 ハードリミットを下"
6822 "げることのみができる (一度下げたハードリミットは上げられない)。 特権プロセス "
6823 "(Linux では B<CAP_SYS_RESOURCE> ケーパビリティ (capability) を持つプロセス) "
6824 "は ソフトリミットとハードリミットを自由に変更できる。"
6825
6826 #. type: Plain text
6827 #: build/C/man2/getrlimit.2:122
6828 msgid ""
6829 "The value B<RLIM_INFINITY> denotes no limit on a resource (both in the "
6830 "structure returned by B<getrlimit>()  and in the structure passed to "
6831 "B<setrlimit>())."
6832 msgstr ""
6833 "値 B<RLIM_INFINITY> はリソースに制限がないことを表す (この値は "
6834 "B<getrlimit>()  が返す構造体と B<setrlimit>()  に渡す構造体の両方で使用され"
6835 "る)。"
6836
6837 #. type: Plain text
6838 #: build/C/man2/getrlimit.2:126
6839 msgid "The I<resource> argument must be one of:"
6840 msgstr "I<resource> 引き数は次のいずれか 1 つである。"
6841
6842 #. type: TP
6843 #: build/C/man2/getrlimit.2:126
6844 #, no-wrap
6845 msgid "B<RLIMIT_AS>"
6846 msgstr "B<RLIMIT_AS>"
6847
6848 #.  since 2.0.27 / 2.1.12
6849 #. type: Plain text
6850 #: build/C/man2/getrlimit.2:146
6851 msgid ""
6852 "The maximum size of the process's virtual memory (address space) in bytes.  "
6853 "This limit affects calls to B<brk>(2), B<mmap>(2), and B<mremap>(2), which "
6854 "fail with the error B<ENOMEM> upon exceeding this limit.  Also automatic "
6855 "stack expansion will fail (and generate a B<SIGSEGV> that kills the process "
6856 "if no alternate stack has been made available via B<sigaltstack>(2)).  Since "
6857 "the value is a I<long>, on machines with a 32-bit I<long> either this limit "
6858 "is at most 2 GiB, or this resource is unlimited."
6859 msgstr ""
6860 "プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。 この制限は "
6861 "B<brk>(2), B<mmap>(2), B<mremap>(2)  の呼び出しに影響し、この制限を超えた場合"
6862 "は エラー B<ENOMEM> で失敗する。 また自動的なスタック拡張にも失敗する (さら"
6863 "に B<sigaltstack>(2)  を使った代替スタックを利用可能にしていなかった場合に"
6864 "は、 B<SIGSEGV> を生成してそのプロセスを kill する)。 この値は I<long> 型なの"
6865 "で、32 ビットの I<long> 型を持つマシンでは、 この制限は最大で 2 GiB になる"
6866 "か、この資源が無制限になる。"
6867
6868 #. type: TP
6869 #: build/C/man2/getrlimit.2:146
6870 #, no-wrap
6871 msgid "B<RLIMIT_CORE>"
6872 msgstr "B<RLIMIT_CORE>"
6873
6874 #. type: Plain text
6875 #: build/C/man2/getrlimit.2:154
6876 msgid ""
6877 "Maximum size of a I<core> file (see B<core>(5)).  When 0 no core dump files "
6878 "are created.  When nonzero, larger dumps are truncated to this size."
6879 msgstr ""
6880 "I<core> ファイルの最大サイズ (B<core>(5) 参照)。 0 の場合、core ファイルは生"
6881 "成されない。 0 以外の場合、このサイズより大きいダンプは切り詰められる。"
6882
6883 #. type: TP
6884 #: build/C/man2/getrlimit.2:154
6885 #, no-wrap
6886 msgid "B<RLIMIT_CPU>"
6887 msgstr "B<RLIMIT_CPU>"
6888
6889 #. type: Plain text
6890 #: build/C/man2/getrlimit.2:174
6891 msgid ""
6892 "CPU time limit in seconds.  When the process reaches the soft limit, it is "
6893 "sent a B<SIGXCPU> signal.  The default action for this signal is to "
6894 "terminate the process.  However, the signal can be caught, and the handler "
6895 "can return control to the main program.  If the process continues to consume "
6896 "CPU time, it will be sent B<SIGXCPU> once per second until the hard limit is "
6897 "reached, at which time it is sent B<SIGKILL>.  (This latter point describes "
6898 "Linux behavior.  Implementations vary in how they treat processes which "
6899 "continue to consume CPU time after reaching the soft limit.  Portable "
6900 "applications that need to catch this signal should perform an orderly "
6901 "termination upon first receipt of B<SIGXCPU>.)"
6902 msgstr ""
6903 "CPU 時間の上限 (秒数)。プロセスがソフトリミットに達した場合に、\n"
6904 "B<SIGXCPU> シグナルを送る。このシグナルに対するデフォルトの動作は、\n"
6905 "プロセスの終了である。ただし、シグナルをキャッチして、ハンドラがメイン\n"
6906 "プログラムに制御を返すこともできる。プロセスが CPU 時間を使い続けた\n"
6907 "場合は、ハードリミットに達するまで 1 秒毎にプロセスに B<SIGXCPU> を送り、\n"
6908 "ハードリミットに達すると B<SIGKILL> を送る。\n"
6909 "(ソフトリミットを超過したときの動作は、 Linux における動作である。ソフ\n"
6910 "トリミットを超えて CPU 時間を使い続けるプロセスの扱い方についての実装は\n"
6911 "変化してきている。 このシグナルをキャッチする必要のある 移植性を考えた\n"
6912 "アプリケーションでは、 最初に B<SIGXCPU> を受け取った時点で正しく終了\n"
6913 "すべきである。)"
6914
6915 #. type: TP
6916 #: build/C/man2/getrlimit.2:174
6917 #, no-wrap
6918 msgid "B<RLIMIT_DATA>"
6919 msgstr "B<RLIMIT_DATA>"
6920
6921 #. type: Plain text
6922 #: build/C/man2/getrlimit.2:185
6923 msgid ""
6924 "The maximum size of the process's data segment (initialized data, "
6925 "uninitialized data, and heap).  This limit affects calls to B<brk>(2)  and "
6926 "B<sbrk>(2), which fail with the error B<ENOMEM> upon encountering the soft "
6927 "limit of this resource."
6928 msgstr ""
6929 "プロセスのデータセグメント (初期化されたデータ・初期化されていないデータ・"
6930 "ヒープ) の最大値。 このリミットは B<brk>(2)  と B<sbrk>(2)  の呼び出しに影響"
6931 "する。 これらの関数は、このリソースのソフトリミットに達すると、 エラー "
6932 "B<ENOMEM> で失敗する。"
6933
6934 #. type: TP
6935 #: build/C/man2/getrlimit.2:185
6936 #, no-wrap
6937 msgid "B<RLIMIT_FSIZE>"
6938 msgstr "B<RLIMIT_FSIZE>"
6939
6940 #. type: Plain text
6941 #: build/C/man2/getrlimit.2:197
6942 msgid ""
6943 "The maximum size of files that the process may create.  Attempts to extend a "
6944 "file beyond this limit result in delivery of a B<SIGXFSZ> signal.  By "
6945 "default, this signal terminates a process, but a process can catch this "
6946 "signal instead, in which case the relevant system call (e.g., B<write>(2), "
6947 "B<truncate>(2))  fails with the error B<EFBIG>."
6948 msgstr ""
6949 "プロセスが作成できるファイルサイズの最大値。 このサイズを超えてファイルを拡張"
6950 "すると、 B<SIGXFSZ> シグナルを送る。 デフォルトでは、このシグナルはプロセスを"
6951 "終了する。 プロセスをキャッチすることもできるが、 関連するシステムコール "
6952 "(B<write>(2), B<truncate>(2)  など) はエラー B<EFBIG> で失敗する。"
6953
6954 #. type: TP
6955 #: build/C/man2/getrlimit.2:197
6956 #, no-wrap
6957 msgid "B<RLIMIT_LOCKS> (Early Linux 2.4 only)"
6958 msgstr "B<RLIMIT_LOCKS> (初期の Linux 2.4 のみ)"
6959
6960 #.  to be precise: Linux 2.4.0-test9; no longer in 2.4.25 / 2.5.65
6961 #. type: Plain text
6962 #: build/C/man2/getrlimit.2:205
6963 msgid ""
6964 "A limit on the combined number of B<flock>(2)  locks and B<fcntl>(2)  leases "
6965 "that this process may establish."
6966 msgstr ""
6967 "このプロセスが実行できる B<flock>(2)  ロック数と B<fcntl>(2)  リース数の合計"
6968 "値を制限する。"
6969
6970 #. type: TP
6971 #: build/C/man2/getrlimit.2:205
6972 #, no-wrap
6973 msgid "B<RLIMIT_MEMLOCK>"
6974 msgstr "B<RLIMIT_MEMLOCK>"
6975
6976 #. type: Plain text
6977 #: build/C/man2/getrlimit.2:243
6978 msgid ""
6979 "The maximum number of bytes of memory that may be locked into RAM.  In "
6980 "effect this limit is rounded down to the nearest multiple of the system page "
6981 "size.  This limit affects B<mlock>(2)  and B<mlockall>(2)  and the "
6982 "B<mmap>(2)  B<MAP_LOCKED> operation.  Since Linux 2.6.9 it also affects the "
6983 "B<shmctl>(2)  B<SHM_LOCK> operation, where it sets a maximum on the total "
6984 "bytes in shared memory segments (see B<shmget>(2))  that may be locked by "
6985 "the real user ID of the calling process.  The B<shmctl>(2)  B<SHM_LOCK> "
6986 "locks are accounted for separately from the per-process memory locks "
6987 "established by B<mlock>(2), B<mlockall>(2), and B<mmap>(2)  B<MAP_LOCKED>; a "
6988 "process can lock bytes up to this limit in each of these two categories.  In "
6989 "Linux kernels before 2.6.9, this limit controlled the amount of memory that "
6990 "could be locked by a privileged process.  Since Linux 2.6.9, no limits are "
6991 "placed on the amount of memory that a privileged process may lock, and this "
6992 "limit instead governs the amount of memory that an unprivileged process may "
6993 "lock."
6994 msgstr ""
6995 "RAM 内にロックできるメモリの最大バイト数。 実際には、この制限はシステムページ"
6996 "サイズの最も近い倍数に 切り捨てて丸められる。 この制限は B<mlock>(2), "
6997 "B<mlockall>(2), B<mmap>(2)  の B<MAP_LOCKED> 操作に影響する。 Linux 2.6.9 以"
6998 "降では B<shmctl>(2)  B<SHM_LOCK> 操作にも影響する。 この操作は呼び出し元プロ"
6999 "セスの実 (real) ユーザー ID にロックされる 共有メモリセグメント "
7000 "(B<shmget>(2)  を参照) の合計バイト数の最大値を設定する。 B<shmctl>(2)  "
7001 "B<SHM_LOCK> によるロックは、 B<mlock>(2), B<mlockall>(2), B<mmap>(2)  の "
7002 "B<MAP_LOCKED> によって確立されるプロセス毎のメモリロックとは分けて数える。 1 "
7003 "つのプロセスはこの制限までのバイトをロックできる。 この制限には 2 つの種類が"
7004 "ある。 2.6.9 より前の Linux カーネル では、 この制限は特権プロセスによって"
7005 "ロックされるメモリの合計を制御していた。 Linux 2.6.9 以降では、特権プロセスが"
7006 "ロックするメモリの合計に制限はなく、 代わりにこの制限は非特権プロセスがロック"
7007 "するメモリの合計に 適用されるようになった。"
7008
7009 #. type: TP
7010 #: build/C/man2/getrlimit.2:243
7011 #, no-wrap
7012 msgid "B<RLIMIT_MSGQUEUE> (since Linux 2.6.8)"
7013 msgstr "B<RLIMIT_MSGQUEUE> (Linux 2.6.8 以降)"
7014
7015 #. type: Plain text
7016 #: build/C/man2/getrlimit.2:251
7017 msgid ""
7018 "Specifies the limit on the number of bytes that can be allocated for POSIX "
7019 "message queues for the real user ID of the calling process.  This limit is "
7020 "enforced for B<mq_open>(3).  Each message queue that the user creates counts "
7021 "(until it is removed)  against this limit according to the formula:"
7022 msgstr ""
7023 "呼び出し元プロセスの実ユーザー ID に対して、 POSIX メッセージキューのために確"
7024 "保できるバイト数の制限を指定する。 この制限は B<mq_open>(3)  に対して適用され"
7025 "る。 ユーザが作成した各々のメッセージキューのバイト数は 以下の式により計算さ"
7026 "れ、(そのキューが削除されるまでの間)  この制限の計算対象に含められる。"
7027
7028 #. type: Plain text
7029 #: build/C/man2/getrlimit.2:260
7030 #, no-wrap
7031 msgid ""
7032 "    Since Linux 3.5:\n"
7033 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg) +\n"
7034 "                min(attr.mq_maxmsg, MQ_PRIO_MAX) *\n"
7035 "                      sizeof(struct posix_msg_tree_node)+\n"
7036 "                                /* For overhead */\n"
7037 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7038 "                                /* For message data */\n"
7039 msgstr ""
7040 "    Linux 3.5 以降:\n"
7041 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg) +\n"
7042 "                min(attr.mq_maxmsg, MQ_PRIO_MAX) *\n"
7043 "                      sizeof(struct posix_msg_tree_node)+\n"
7044 "                                /* オーバーヘッド分 */\n"
7045 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7046 "                                /* メッセージデータ分 */\n"
7047
7048 #. type: Plain text
7049 #: build/C/man2/getrlimit.2:266
7050 #, no-wrap
7051 msgid ""
7052 "    Linux 3.4 and earlier:\n"
7053 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +\n"
7054 "                                /* For overhead */\n"
7055 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7056 "                                /* For message data */\n"
7057 msgstr ""
7058 "    Linux 3.4 以前:\n"
7059 "        bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +\n"
7060 "                                /* オーバーヘッド分 */\n"
7061 "                attr.mq_maxmsg * attr.mq_msgsize;\n"
7062 "                                /* メッセージデータ分 */\n"
7063
7064 #. type: Plain text
7065 #: build/C/man2/getrlimit.2:279
7066 msgid ""
7067 "where I<attr> is the I<mq_attr> structure specified as the fourth argument "
7068 "to B<mq_open>(3), and the I<msg_msg> and I<posix_msg_tree_node> structures "
7069 "are kernel-internal structures."
7070 msgstr ""
7071 "ここで I<attr> は I<mq_attr> 構造体であり、 B<mq_open>(3)  の第 4 引き数とし"
7072 "て指定される。 また、構造体 I<msg_msg> と I<posix_msg_tree_node> はカーネル内"
7073 "部の構造体である。"
7074
7075 #. type: Plain text
7076 #: build/C/man2/getrlimit.2:285
7077 msgid ""
7078 "The \"overhead\" addend in the formula accounts for overhead bytes required "
7079 "by the implementation and ensures that the user cannot create an unlimited "
7080 "number of zero-length messages (such messages nevertheless each consume some "
7081 "system memory for bookkeeping overhead)."
7082 msgstr ""
7083 "上記の式での「オーバーヘッド」加算分は、実装において必要となるオーバーヘッド"
7084 "を考慮したものである。 また、これにより、ユーザーが長さ 0 のメッセージを無制"
7085 "限に作れないことが保証される (このようなメッセージであっても、 記録のための"
7086 "オーバーヘッドでシステムメモリを消費する)。"
7087
7088 #. type: TP
7089 #: build/C/man2/getrlimit.2:285
7090 #, no-wrap
7091 msgid "B<RLIMIT_NICE> (since Linux 2.6.12, but see BUGS below)"
7092 msgstr "B<RLIMIT_NICE> (Linux 2.6.12 以降, 下記の「バグ」の節も参照)"
7093
7094 #. type: Plain text
7095 #: build/C/man2/getrlimit.2:298
7096 msgid ""
7097 "Specifies a ceiling to which the process's nice value can be raised using "
7098 "B<setpriority>(2)  or B<nice>(2).  The actual ceiling for the nice value is "
7099 "calculated as I<20\\ -\\ rlim_cur>.  (This strangeness occurs because "
7100 "negative numbers cannot be specified as resource limit values, since they "
7101 "typically have special meanings.  For example, B<RLIM_INFINITY> typically is "
7102 "the same as -1.)"
7103 msgstr ""
7104 "B<setpriority>(2)  や B<nice>(2)  を使って引き上げられるプロセスの nice 値の"
7105 "上限を指定する。 nice 値の実際の上限は I<20\\ -\\ rlim_cur> で計算される (こ"
7106 "のような変な状況は、リソース制限値として負の数を指定できないため 発生する。通"
7107 "常、負の値は特別な意味を持っているからである。 例えば、通常は "
7108 "B<RLIM_INFINITY> の値は -1 である)。"
7109
7110 #. type: TP
7111 #: build/C/man2/getrlimit.2:298
7112 #, no-wrap
7113 msgid "B<RLIMIT_NOFILE>"
7114 msgstr "B<RLIMIT_NOFILE>"
7115
7116 #. type: Plain text
7117 #: build/C/man2/getrlimit.2:312
7118 msgid ""
7119 "Specifies a value one greater than the maximum file descriptor number that "
7120 "can be opened by this process.  Attempts (B<open>(2), B<pipe>(2), B<dup>(2), "
7121 "etc.)  to exceed this limit yield the error B<EMFILE>.  (Historically, this "
7122 "limit was named B<RLIMIT_OFILE> on BSD.)"
7123 msgstr ""
7124 "このプロセスがオープンできるファイルディスクリプタ数の最大値より 1 大きい値を"
7125 "指定する。 (B<open>(2), B<pipe>(2), B<dup>(2)  などにより) この上限を超えよう"
7126 "とした場合、エラー B<EMFILE> が発生する (歴史的に、BSD ではこの上限は "
7127 "B<RLIMIT_OFILE> という名前となっている)。"
7128
7129 #. type: TP
7130 #: build/C/man2/getrlimit.2:312
7131 #, no-wrap
7132 msgid "B<RLIMIT_NPROC>"
7133 msgstr "B<RLIMIT_NPROC>"
7134
7135 #. type: Plain text
7136 #: build/C/man2/getrlimit.2:325
7137 msgid ""
7138 "The maximum number of processes (or, more precisely on Linux, threads)  that "
7139 "can be created for the real user ID of the calling process.  Upon "
7140 "encountering this limit, B<fork>(2)  fails with the error B<EAGAIN>.  This "
7141 "limit is not enforced for processes that have either the B<CAP_SYS_ADMIN> or "
7142 "the B<CAP_SYS_RESOURCE> capability."
7143 msgstr ""
7144 "呼び出したプロセスの実ユーザー ID で作成できる最大プロセス数 (より正確には "
7145 "Linux ではスレッド数)。 この上限に達すると、 B<fork>(2)  はエラー B<EAGAIN> "
7146 "で失敗する。 この上限値は、ケーパビリティ B<CAP_SYS_ADMIN> か "
7147 "B<CAP_SYS_RESOURCE> のどちらかを持つプロセスには適用されない。"
7148
7149 #. type: TP
7150 #: build/C/man2/getrlimit.2:325
7151 #, no-wrap
7152 msgid "B<RLIMIT_RSS>"
7153 msgstr "B<RLIMIT_RSS>"
7154
7155 #.  As at kernel 2.6.12, this limit still does nothing in 2.6 though
7156 #.  talk of making it do something has surfaced from time to time in LKML
7157 #.        -- MTK, Jul 05
7158 #. type: Plain text
7159 #: build/C/man2/getrlimit.2:337
7160 msgid ""
7161 "Specifies the limit (in pages) of the process's resident set (the number of "
7162 "virtual pages resident in RAM).  This limit has effect only in Linux 2.4.x, "
7163 "x E<lt> 30, and there affects only calls to B<madvise>(2)  specifying "
7164 "B<MADV_WILLNEED>."
7165 msgstr ""
7166 "プロセスの resident set (RAM 上に存在する仮想ページの数) の 上限を (ページ数"
7167 "で) 指定する。 この制限は 2.4.30 より前でしか影響がなく、 B<madvise>(2)  に "
7168 "B<MADV_WILLNEED> を指定した関数コールにしか影響しない。"
7169
7170 #. type: TP
7171 #: build/C/man2/getrlimit.2:337
7172 #, no-wrap
7173 msgid "B<RLIMIT_RTPRIO> (since Linux 2.6.12, but see BUGS)"
7174 msgstr "B<RLIMIT_RTPRIO> (Linux 2.6.12 以降, バグの節も参照)"
7175
7176 #. type: Plain text
7177 #: build/C/man2/getrlimit.2:344
7178 msgid ""
7179 "Specifies a ceiling on the real-time priority that may be set for this "
7180 "process using B<sched_setscheduler>(2)  and B<sched_setparam>(2)."
7181 msgstr ""
7182 "B<sched_setscheduler>(2)  や B<sched_setparam>(2)  を使って設定できる、そのプ"
7183 "ロセスのリアルタイム優先度の上限を指定する。"
7184
7185 #. type: TP
7186 #: build/C/man2/getrlimit.2:344
7187 #, no-wrap
7188 msgid "B<RLIMIT_RTTIME> (since Linux 2.6.25)"
7189 msgstr "B<RLIMIT_RTTIME> (Linux 2.6.25 以降)"
7190
7191 #. type: Plain text
7192 #: build/C/man2/getrlimit.2:356
7193 msgid ""
7194 "Specifies a limit (in microseconds)  on the amount of CPU time that a "
7195 "process scheduled under a real-time scheduling policy may consume without "
7196 "making a blocking system call.  For the purpose of this limit, each time a "
7197 "process makes a blocking system call, the count of its consumed CPU time is "
7198 "reset to zero.  The CPU time count is not reset if the process continues "
7199 "trying to use the CPU but is preempted, its time slice expires, or it calls "
7200 "B<sched_yield>(2)."
7201 msgstr ""
7202 "リアルタイムスケジューリング方針でスケジューリングされるプロセスが ブロッキン"
7203 "グ型のシステムコールを呼び出さずに消費することのできる CPU 時間の合計について"
7204 "の上限を (マイクロ秒単位で) 指定する。 この上限の目的のため、プロセスがブロッ"
7205 "キング型のシステムコールを 呼び出す度に、消費された CPU 時間のカウントは 0 に"
7206 "リセットされる。 プロセスが CPU を使い続けようとしたが他のプロセスに置き換え"
7207 "られた (preempted) 場合や、そのプロセスのタイムスライスが満了した場合、 その"
7208 "プロセスが B<sched_yield>(2)  を呼び出した場合は、CPU 時間のカウントはリセッ"
7209 "トされない。"
7210
7211 #. type: Plain text
7212 #: build/C/man2/getrlimit.2:367
7213 msgid ""
7214 "Upon reaching the soft limit, the process is sent a B<SIGXCPU> signal.  If "
7215 "the process catches or ignores this signal and continues consuming CPU time, "
7216 "then B<SIGXCPU> will be generated once each second until the hard limit is "
7217 "reached, at which point the process is sent a B<SIGKILL> signal."
7218 msgstr ""
7219 "ソフトリミットに達すると、そのプロセスに B<SIGXCPU> シグナルが送られる。その"
7220 "プロセスがこのシグナルを捕捉するか 無視して、CPU 時間を消費し続けた場合に"
7221 "は、 ハードリミットに達するまで 1 秒に 1 回 B<SIGXCPU> が生成され続けることに"
7222 "なる。 ハードリミットに達した時点で、そのプロセスには B<SIGKILL> シグナルが送"
7223 "られる。"
7224
7225 #. type: Plain text
7226 #: build/C/man2/getrlimit.2:370
7227 msgid ""
7228 "The intended use of this limit is to stop a runaway real-time process from "
7229 "locking up the system."
7230 msgstr ""
7231 "この上限を意図的に使用するのは、暴走したリアルタイムプロセスを 停止して、シス"
7232 "テムが動かなくなるのを避ける場合である。"
7233
7234 #. type: TP
7235 #: build/C/man2/getrlimit.2:370
7236 #, no-wrap
7237 msgid "B<RLIMIT_SIGPENDING> (since Linux 2.6.8)"
7238 msgstr "B<RLIMIT_SIGPENDING> (Linux 2.6.8 以降)"
7239
7240 #.  This replaces the /proc/sys/kernel/rtsig-max system-wide limit
7241 #.  that was present in kernels <= 2.6.7.  MTK Dec 04
7242 #. type: Plain text
7243 #: build/C/man2/getrlimit.2:384
7244 msgid ""
7245 "Specifies the limit on the number of signals that may be queued for the real "
7246 "user ID of the calling process.  Both standard and real-time signals are "
7247 "counted for the purpose of checking this limit.  However, the limit is "
7248 "enforced only for B<sigqueue>(3); it is always possible to use B<kill>(2)  "
7249 "to queue one instance of any of the signals that are not already queued to "
7250 "the process."
7251 msgstr ""
7252 "呼び出し元プロセスの実ユーザー ID に対して キューに入れられるシグナルの\n"
7253 "数の制限を指定する。この制限をチェックするため、標準シグナルとリアルタ\n"
7254 "イムシグナルの両方がカウントされる。しかし、この制限は B<sigqueue>(3)\n"
7255 "に対してのみ適用され、 B<kill>(2) 使うことで、そのプロセスに対してま\n"
7256 "だキューに入れられていない シグナルのインスタンスをキューに入れることが\n"
7257 "できる。"
7258
7259 #. type: TP
7260 #: build/C/man2/getrlimit.2:384
7261 #, no-wrap
7262 msgid "B<RLIMIT_STACK>"
7263 msgstr "B<RLIMIT_STACK>"
7264
7265 #. type: Plain text
7266 #: build/C/man2/getrlimit.2:392
7267 msgid ""
7268 "The maximum size of the process stack, in bytes.  Upon reaching this limit, "
7269 "a B<SIGSEGV> signal is generated.  To handle this signal, a process must "
7270 "employ an alternate signal stack (B<sigaltstack>(2))."
7271 msgstr ""
7272 "プロセススタックの最大サイズをバイト単位で指定する。 この上限に達すると、 "
7273 "B<SIGSEGV> シグナルが生成される。 このシグナルを扱うためには、 プロセスは代り"
7274 "のシグナルスタック (B<sigaltstack>(2))  を使用しなければならない。"
7275
7276 #. type: Plain text
7277 #: build/C/man2/getrlimit.2:397
7278 msgid ""
7279 "Since Linux 2.6.23, this limit also determines the amount of space used for "
7280 "the process's command-line arguments and environment variables; for details, "
7281 "see B<execve>(2)."
7282 msgstr ""
7283 "Linux 2.6.23 以降では、この制限はプロセスのコマンドライン引き数と環境変数 に"
7284 "使用される空間の合計サイズの上限の決定にも使用される。詳細については "
7285 "B<execve>(2)  を参照。"
7286
7287 #. type: SS
7288 #: build/C/man2/getrlimit.2:397
7289 #, no-wrap
7290 msgid "prlimit()"
7291 msgstr "prlimit()"
7292
7293 #.  commit c022a0acad534fd5f5d5f17280f6d4d135e74e81
7294 #.  Author: Jiri Slaby <jslaby@suse.cz>
7295 #.  Date:   Tue May 4 18:03:50 2010 +0200
7296 #.      rlimits: implement prlimit64 syscall
7297 #.  commit 6a1d5e2c85d06da35cdfd93f1a27675bfdc3ad8c
7298 #.  Author: Jiri Slaby <jslaby@suse.cz>
7299 #.  Date:   Wed Mar 24 17:06:58 2010 +0100
7300 #.      rlimits: add rlimit64 structure
7301 #. type: Plain text
7302 #: build/C/man2/getrlimit.2:417
7303 msgid ""
7304 "The Linux-specific B<prlimit>()  system call combines and extends the "
7305 "functionality of B<setrlimit>()  and B<getrlimit>().  It can be used to both "
7306 "set and get the resource limits of an arbitrary process."
7307 msgstr ""
7308 "Linux 固有の B<prlimit>() システムコールは、 B<setrlimit>() と B<getrlimit> "
7309 "の機能を合わせて拡張したものである。 このシステムコールを使って、任意のプロセ"
7310 "スのリソース上限の設定と取得を行うことができる。"
7311
7312 #. type: Plain text
7313 #: build/C/man2/getrlimit.2:424
7314 msgid ""
7315 "The I<resource> argument has the same meaning as for B<setrlimit>()  and "
7316 "B<getrlimit>()."
7317 msgstr ""
7318 "I<resource> 引き数は B<setrlimit>() や B<getrlimit>() と同じ意味である。"
7319
7320 #. type: Plain text
7321 #: build/C/man2/getrlimit.2:442
7322 msgid ""
7323 "If the I<new_limit> argument is a not NULL, then the I<rlimit> structure to "
7324 "which it points is used to set new values for the soft and hard limits for "
7325 "I<resource>.  If the I<old_limit> argument is a not NULL, then a successful "
7326 "call to B<prlimit>()  places the previous soft and hard limits for "
7327 "I<resource> in the I<rlimit> structure pointed to by I<old_limit>."
7328 msgstr ""
7329 "I<new_limit> 引き数が NULL 以外の場合、 I<new_limit> が指す I<rlimit> 構造体"
7330 "を使って I<resource> のソフトリミットとハードリミットの新しい値が設定され"
7331 "る。 I<old_limit> 引き数が NULL 以外の場合、 B<prlimit>() の呼び出しが成功す"
7332 "ると、 I<resource> の直前のソフトリミットとハードリミットが I<old_limit> が指"
7333 "す I<rlimit> 構造体に格納される。"
7334
7335 #.  FIXME . this permission check is strange
7336 #.  Asked about this on LKML, 7 Nov 2010
7337 #.      "Inconsistent credential checking in prlimit() syscall"
7338 #. type: Plain text
7339 #: build/C/man2/getrlimit.2:461
7340 msgid ""
7341 "The I<pid> argument specifies the ID of the process on which the call is to "
7342 "operate.  If I<pid> is 0, then the call applies to the calling process.  To "
7343 "set or get the resources of a process other than itself, the caller must "
7344 "have the B<CAP_SYS_RESOURCE> capability, or the real, effective, and saved "
7345 "set user IDs of the target process must match the real user ID of the caller "
7346 "I<and> the real, effective, and saved set group IDs of the target process "
7347 "must match the real group ID of the caller."
7348 msgstr ""
7349 "I<pid> 引き数は呼び出しの操作対象となるプロセス ID を指定する。 I<pid> が 0 "
7350 "の場合、呼び出しは呼び出し元プロセスに対して適用される。 自分以外のプロセスの"
7351 "リソースの設定と取得を行うためには、 呼び出し元プロセスが "
7352 "B<CAP_SYS_RESOURCE> ケーパビリティを持っているか、 対象となるプロセスの実ユー"
7353 "ザ ID、 実効ユーザ ID、 保存 set-user-ID が呼び出し元プロセスの実ユーザ ID と"
7354 "一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存 "
7355 "set-group-ID が呼び出し元プロセスの実グループ ID と一致していなければならな"
7356 "い。"
7357
7358 #. type: Plain text
7359 #: build/C/man2/getrlimit.2:466
7360 msgid ""
7361 "On success, these system calls return 0.  On error, -1 is returned, and "
7362 "I<errno> is set appropriately."
7363 msgstr ""
7364 "成功した場合、これらのシステムコールは 0 を返す。\n"
7365 "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
7366
7367 #. type: Plain text
7368 #: build/C/man2/getrlimit.2:471
7369 msgid ""
7370 "A pointer argument points to a location outside the accessible address space."
7371 msgstr "場所を指すポインタ引き数がアクセス可能なアドレス空間外を指している。"
7372
7373 #. type: Plain text
7374 #: build/C/man2/getrlimit.2:483
7375 msgid ""
7376 "The value specified in I<resource> is not valid; or, for B<setrlimit>()  or "
7377 "B<prlimit>(): I<rlim-E<gt>rlim_cur> was greater than I<rlim-E<gt>rlim_max>."
7378 msgstr ""
7379 "I<resource> で指定された値が有効でない。\n"
7380 "または、 B<setrlimit>() や B<prlimit>() で、\n"
7381 "I<rlim-E<gt>rlim_cur> が I<rlim-E<gt>rlim_max> よりも大きかった。"
7382
7383 #. type: Plain text
7384 #: build/C/man2/getrlimit.2:495
7385 msgid ""
7386 "An unprivileged process tried to raise the hard limit; the "
7387 "B<CAP_SYS_RESOURCE> capability is required to do this.  Or, the caller tried "
7388 "to increase the hard B<RLIMIT_NOFILE> limit above the current kernel maximum "
7389 "(B<NR_OPEN>).  Or, the calling process did not have permission to set limits "
7390 "for the process specified by I<pid>."
7391 msgstr ""
7392 "特権のないプロセスがハードリミットを上げようとした。\n"
7393 "これを行うためには B<CAP_SYS_RESOURCE> ケーパビリティが必要である。\n"
7394 "または、特権のないプロセスが B<RLIMIT_NOFILE> ハードリミットを\n"
7395 "現在のカーネルの最大値 (B<NR_OPEN>) 以上に増やそうとした。\n"
7396 "または、呼び出したプロセスが I<pid> で指定されたプロセスのリミットを\n"
7397 "設定する許可を持っていなかった。"
7398
7399 #. type: Plain text
7400 #: build/C/man2/getrlimit.2:499
7401 msgid "Could not find a process with the ID specified in I<pid>."
7402 msgstr "I<pid> で指定された ID のプロセスが見つからなかった。"
7403
7404 #. type: Plain text
7405 #: build/C/man2/getrlimit.2:504
7406 msgid ""
7407 "The B<prlimit>()  system call is available since Linux 2.6.36.  Library "
7408 "support is available since glibc 2.13."
7409 msgstr ""
7410 "B<prlimit>() システムコールは Linux 2.6.36 以降で利用できる。 ライブラリのサ"
7411 "ポートは glibc 2.13 以降で利用できる。"
7412
7413 #. type: Plain text
7414 #: build/C/man2/getrlimit.2:508
7415 msgid "B<getrlimit>(), B<setrlimit>(): SVr4, 4.3BSD, POSIX.1-2001."
7416 msgstr "B<getrlimit>(), B<setrlimit>(): SVr4, 4.3BSD, POSIX.1-2001."
7417
7418 #. type: Plain text
7419 #: build/C/man2/getrlimit.2:511
7420 msgid "B<prlimit>(): Linux-specific."
7421 msgstr "B<prlimit>(): Linux 固有。"
7422
7423 #. type: Plain text
7424 #: build/C/man2/getrlimit.2:527
7425 msgid ""
7426 "B<RLIMIT_MEMLOCK> and B<RLIMIT_NPROC> derive from BSD and are not specified "
7427 "in POSIX.1-2001; they are present on the BSDs and Linux, but on few other "
7428 "implementations.  B<RLIMIT_RSS> derives from BSD and is not specified in "
7429 "POSIX.1-2001; it is nevertheless present on most implementations.  "
7430 "B<RLIMIT_MSGQUEUE>, B<RLIMIT_NICE>, B<RLIMIT_RTPRIO>, B<RLIMIT_RTTIME>, and "
7431 "B<RLIMIT_SIGPENDING> are Linux-specific."
7432 msgstr ""
7433 "B<RLIMIT_MEMLOCK> と B<RLIMIT_NPROC> は BSD から派生し、\n"
7434 "POSIX.1-2001 には指定されていない。\n"
7435 "これらは BSD 系と Linux に存在するが、他の実装は少ない。\n"
7436 "B<RLIMIT_RSS> は BSD から派生し、POSIX.1-2001 には指定されていない。\n"
7437 "それにも関わらず多くの実装で存在する。\n"
7438 "B<RLIMIT_MSGQUEUE>, B<RLIMIT_NICE>, B<RLIMIT_RTPRIO>, B<RLIMIT_RTTIME>,\n"
7439 "B<RLIMIT_SIGPENDING> は Linux 固有のものである。"
7440
7441 #. type: Plain text
7442 #: build/C/man2/getrlimit.2:533
7443 msgid ""
7444 "A child process created via B<fork>(2)  inherits its parent's resource "
7445 "limits.  Resource limits are preserved across B<execve>(2)."
7446 msgstr ""
7447 "B<fork>(2)  で作成された作成された子プロセスは、 親プロセスのリソース制限を継"
7448 "承する。 B<execve>(2)  の前後でリソース制限は保存される。"
7449
7450 #. type: Plain text
7451 #: build/C/man2/getrlimit.2:538
7452 msgid ""
7453 "Lowering the soft limit for a resource below the process's current "
7454 "consumption of that resource will succeed (but will prevent the process from "
7455 "further increasing its consumption of the resource)."
7456 msgstr ""
7457 "リソースのソフトリミットをそのプロセスが現在のリソース使用量より小さい値に設"
7458 "定することはできる (但し、そのプロセスはそれ以降そのリソースの使用量を増やす"
7459 "ことができなくなる)。"
7460
7461 #. type: Plain text
7462 #: build/C/man2/getrlimit.2:547
7463 msgid ""
7464 "One can set the resource limits of the shell using the built-in I<ulimit> "
7465 "command (I<limit> in B<csh>(1)).  The shell's resource limits are inherited "
7466 "by the processes that it creates to execute commands."
7467 msgstr ""
7468 "シェルのリソース制限は、シェルの組み込みコマンドである I<ulimit> (B<csh>(1)  "
7469 "では I<limit )> を使って設定することができる。 このシェルのリソース制限は、コ"
7470 "マンドを実行してシェルが生成するプロセス に引き継がれる。"
7471
7472 #. type: Plain text
7473 #: build/C/man2/getrlimit.2:552
7474 msgid ""
7475 "Since Linux 2.6.24, the resource limits of any process can be inspected via "
7476 "I</proc/[pid]/limits>; see B<proc>(5)."
7477 msgstr ""
7478 "Linux 2.6.24 以降では、 プロセスのリソース上限は I</proc/[pid]/limits> で知る"
7479 "ことができる。 B<proc>(5) 参照。"
7480
7481 #. type: Plain text
7482 #: build/C/man2/getrlimit.2:561
7483 msgid ""
7484 "Ancient systems provided a B<vlimit>()  function with a similar purpose to "
7485 "B<setrlimit>().  For backward compatibility, glibc also provides "
7486 "B<vlimit>().  All new applications should be written using B<setrlimit>()."
7487 msgstr ""
7488 "古いシステムでは、 B<setrlimit>()  と同様の目的を持つ関数 B<vlimit>()  が提供"
7489 "されていた。 後方互換性のため、glibc でも B<vlimit>()  を提供している。 全て"
7490 "の新しいアプリケーションでは、 B<setrlimit>()  を使用すべきである。"
7491
7492 #. type: SS
7493 #: build/C/man2/getrlimit.2:561
7494 #, no-wrap
7495 msgid "C library/ kernel ABI differences"
7496 msgstr "C ライブラリとカーネル ABI の違い"
7497
7498 #. type: Plain text
7499 #: build/C/man2/getrlimit.2:570
7500 msgid ""
7501 "Since version 2.13, the glibc B<getrlimit>()  and B<setrlimit>()  wrapper "
7502 "functions no longer invoke the corresponding system calls, but instead "
7503 "employ B<prlimit>(), for the reasons described in BUGS."
7504 msgstr ""
7505 "バージョン 2.13 以降では、 glibc の B<getrlimit>() と B<setrlimit>() のラッ"
7506 "パー関数はもはや対応するシステムコールを呼び出さず、 代わりに「バグ」の節で説"
7507 "明されている理由から B<prlimit>() を利用している。"
7508
7509 #. type: Plain text
7510 #: build/C/man2/getrlimit.2:579
7511 msgid ""
7512 "In older Linux kernels, the B<SIGXCPU> and B<SIGKILL> signals delivered when "
7513 "a process encountered the soft and hard B<RLIMIT_CPU> limits were delivered "
7514 "one (CPU) second later than they should have been.  This was fixed in kernel "
7515 "2.6.8."
7516 msgstr ""
7517 "以前の Linux カーネルでは、プロセスがソフトまたはハード B<RLIMIT_CPU> リミッ"
7518 "トに達した場合に送られる B<SIGXCPU> と B<SIGKILL> シグナルが、本来送られるべ"
7519 "き時点の 1 (CPU) 秒後に送られてしまう。 これはカーネル 2.6.8 で修正された。"
7520
7521 #.  see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
7522 #. type: Plain text
7523 #: build/C/man2/getrlimit.2:587
7524 msgid ""
7525 "In 2.6.x kernels before 2.6.17, a B<RLIMIT_CPU> limit of 0 is wrongly "
7526 "treated as \"no limit\" (like B<RLIM_INFINITY>).  Since Linux 2.6.17, "
7527 "setting a limit of 0 does have an effect, but is actually treated as a limit "
7528 "of 1 second."
7529 msgstr ""
7530 "2.6.17 より前の 2.6.x カーネルでは、 B<RLIMIT_CPU> リミットが 0 の場合、 "
7531 "(B<RLIM_INFINITY> と同じように) 「制限なし」と間違って解釈されていた。 Linux "
7532 "2.6.17 以降では、リミットを 0 に設定した場合にも 効果を持つようになっている"
7533 "が、実際にはリミットの値は 1 秒となる。"
7534
7535 #.  See https://lwn.net/Articles/145008/
7536 #. type: Plain text
7537 #: build/C/man2/getrlimit.2:592
7538 msgid ""
7539 "A kernel bug means that B<RLIMIT_RTPRIO> does not work in kernel 2.6.12; the "
7540 "problem is fixed in kernel 2.6.13."
7541 msgstr ""
7542 "カーネル 2.6.12 には、 B<RLIMIT_RTPRIO> が動作しないというバグがある。この問"
7543 "題はカーネル 2.6.13 で修正されている。"
7544
7545 #.  see http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
7546 #. type: Plain text
7547 #: build/C/man2/getrlimit.2:603
7548 msgid ""
7549 "In kernel 2.6.12, there was an off-by-one mismatch between the priority "
7550 "ranges returned by B<getpriority>(2)  and B<RLIMIT_NICE>.  This had the "
7551 "effect that the actual ceiling for the nice value was calculated as I<19\\ -"
7552 "\\ rlim_cur>.  This was fixed in kernel 2.6.13."
7553 msgstr ""
7554 "カーネル 2.6.12 では、 B<getpriority>(2)  と B<RLIMIT_NICE> が返す優先度の範"
7555 "囲が一つずれていた。このため、nice 値の実際の上限が I<19\\ -\\ rlim_cur> に"
7556 "なってしまうという影響があった。これはカーネル 2.6.13 で修正された。"
7557
7558 #.  The relevant patch, sent to LKML, seems to be
7559 #.  http://thread.gmane.org/gmane.linux.kernel/273462
7560 #.  From: Roland McGrath <roland <at> redhat.com>
7561 #.  Subject: [PATCH 7/7] make RLIMIT_CPU/SIGXCPU per-process
7562 #.  Date: 2005-01-23 23:27:46 GMT
7563 #.  Tested Solaris 10, FreeBSD 9, OpenBSD 5.0
7564 #.  FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=50951
7565 #. type: Plain text
7566 #: build/C/man2/getrlimit.2:630
7567 msgid ""
7568 "Since Linux 2.6.12, if a process reaches its soft B<RLIMIT_CPU> limit and "
7569 "has a handler installed for B<SIGXCPU>, then, in addition to invoking the "
7570 "signal handler, the kernel increases the soft limit by one second.  This "
7571 "behavior repeats if the process continues to consume CPU time, until the "
7572 "hard limit is reached, at which point the process is killed.  Other "
7573 "implementations do not change the B<RLIMIT_CPU> soft limit in this manner, "
7574 "and the Linux behavior is probably not standards conformant; portable "
7575 "applications should avoid relying on this Linux-specific behavior.  The "
7576 "Linux-specific B<RLIMIT_RTTIME> limit exhibits the same behavior when the "
7577 "soft limit is encountered."
7578 msgstr ""
7579 "Linux 2.6.12 以降では、 プロセスがその B<RLIMIT_CPU> ソフトリミットに達し、 "
7580 "B<SIGXCPU> に対してシグナルハンドラが設定されている場合、 シグナルハンドラを"
7581 "起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセス"
7582 "が CPU 時間を消費し続けている限り、 ハードリミットに達するまで、この動作が繰"
7583 "り返される。 ハードリミットに達すると、その時点でプロセスは kill される。 他"
7584 "の実装では、上記のような B<RLIMIT_CPU> ソフトリミットの変更は行われず、 おそ"
7585 "らく Linux の動作は標準に準拠していない。 移植性が必要なアプリケーションでは"
7586 "この Linux 固有の動作を前提にするのは避けるべきである。 Linux 固有の上限 "
7587 "B<RLIMIT_RTTIME> でも、 ソフトリミットに達した場合に同じ動作となる。"
7588
7589 #. type: Plain text
7590 #: build/C/man2/getrlimit.2:640
7591 msgid ""
7592 "Kernels before 2.4.22 did not diagnose the error B<EINVAL> for "
7593 "B<setrlimit>()  when I<rlim-E<gt>rlim_cur> was greater than I<rlim-"
7594 "E<gt>rlim_max>."
7595 msgstr ""
7596 "2.4.22 より前のカーネルでは、 I<rlim-E<gt>rlim_cur> が I<rlim-E<gt>rlim_max> "
7597 "より大きかった場合、 B<setrlimit>()  での B<EINVAL> エラーを検出できない。"
7598
7599 #. type: SS
7600 #: build/C/man2/getrlimit.2:640
7601 #, no-wrap
7602 msgid "Representation of \"large\" resource limit values on 32-bit platforms"
7603 msgstr "32 ビットプラットフォームにおける「大きな」リソース上限値の表現"
7604
7605 #.  https://bugzilla.kernel.org/show_bug.cgi?id=5042
7606 #.  http://sources.redhat.com/bugzilla/show_bug.cgi?id=12201
7607 #. type: Plain text
7608 #: build/C/man2/getrlimit.2:671
7609 msgid ""
7610 "The glibc B<getrlimit>()  and B<setrlimit>()  wrapper functions use a 64-bit "
7611 "I<rlim_t> data type, even on 32-bit platforms.  However, the I<rlim_t> data "
7612 "type used in the B<getrlimit>()  and B<setrlimit>()  system calls is a (32-"
7613 "bit)  I<unsigned long>.  Furthermore, in Linux versions before 2.6.36, the "
7614 "kernel represents resource limits on 32-bit platforms as I<unsigned long>.  "
7615 "However, a 32-bit data type is not wide enough.  The most pertinent limit "
7616 "here is B<RLIMIT_FSIZE>, which specifies the maximum size to which a file "
7617 "can grow: to be useful, this limit must be represented using a type that is "
7618 "as wide as the type used to represent file offsets\\(emthat is, as wide as a "
7619 "64-bit B<off_t> (assuming a program compiled with I<_FILE_OFFSET_BITS=64>)."
7620 msgstr ""
7621 "glibc の B<getrlimit>() と B<setrlimit>() ラッパー関数は、32 ビットプラット"
7622 "フォームであっても 64 ビットの I<rlim_t> データ型を使用する。 しかし、 "
7623 "B<getrlimit>() と B<setrlimit>() システムコールで使用される I<rlim_t> データ"
7624 "型は (32 ビットの) I<unsigned long> である。 さらに、 2.6.36 より前の Linux "
7625 "では、 カーネルは 32 ビットプラットフォームではリソース上限を I<unsigned "
7626 "long> として表現している。 しかしながら、 32 ビットデータ型は十分な大きさでは"
7627 "ない。 ここで最も関係がある上限値は B<RLIMIT_FSIZE> である。 この上限はファイ"
7628 "ルサイズの最大値であり、実用性の面からは、 この上限をファイルオフセットを表現"
7629 "するのに使用されている型、 つまり 64 ビットの B<off_t> "
7630 "(I<_FILE_OFFSET_BITS=64> でコンパイルしたプログラムの場合)、 と同じ幅を持つ"
7631 "型、を使って表現すべきである。"
7632
7633 #. type: Plain text
7634 #: build/C/man2/getrlimit.2:681
7635 msgid ""
7636 "To work around this kernel limitation, if a program tried to set a resource "
7637 "limit to a value larger than can be represented in a 32-bit I<unsigned "
7638 "long>, then the glibc B<setrlimit>()  wrapper function silently converted "
7639 "the limit value to B<RLIM_INFINITY>.  In other words, the requested resource "
7640 "limit setting was silently ignored."
7641 msgstr ""
7642 "カーネルのこの制限に対する対策として、 プログラムがリソース上限を 32 ビット"
7643 "の I<unsigned long> で表現できる値よりも大きな値に設定しようとした際には、 "
7644 "glibc の B<setrlimit>() ラッパー関数はこの上限値を黙って B<RLIM_INFINITY> に"
7645 "変換していた。 言い換えると、指定されたリソース上限値は黙って無視されていた。"
7646
7647 #. type: Plain text
7648 #: build/C/man2/getrlimit.2:683
7649 msgid "This problem was addressed in Linux 2.6.36 with two principal changes:"
7650 msgstr "この問題は Linux 2.6.36 での以下の主な変更により解決された。"
7651
7652 #. type: Plain text
7653 #: build/C/man2/getrlimit.2:686
7654 msgid ""
7655 "the addition of a new kernel representation of resource limits that uses 64 "
7656 "bits, even on 32-bit platforms;"
7657 msgstr ""
7658 "32 ビットプラットフォームであっても 64 ビットを使用するリソース上限の新しい"
7659 "カーネルでの表現方法の追加。"
7660
7661 #. type: Plain text
7662 #: build/C/man2/getrlimit.2:690
7663 msgid ""
7664 "the addition of the B<prlimit>()  system call, which employs 64-bit values "
7665 "for its resource limit arguments."
7666 msgstr ""
7667 "リソース上限の引き数として 64 ビット値を取る B<prlimit>() システムコールの追"
7668 "加。"
7669
7670 #.  https://www.sourceware.org/bugzilla/show_bug.cgi?id=12201
7671 #. type: Plain text
7672 #: build/C/man2/getrlimit.2:703
7673 msgid ""
7674 "Since version 2.13, glibc works around the limitations of the "
7675 "B<getrlimit>()  and B<setrlimit>()  system calls by implementing "
7676 "B<setrlimit>()  and B<getrlimit>()  as wrapper functions that call "
7677 "B<prlimit>()."
7678 msgstr ""
7679 "バージョン 2.13 以降の glibc では、 B<getrlimit>() と B<setrlimit>() システム"
7680 "コールの制限に対する回避手段として、\n"
7681 "B<setrlimit>() と B<getrlimit>() を B<prlimit>() を呼び出すラッパー関数として"
7682 "実装している。"
7683
7684 #. type: Plain text
7685 #: build/C/man2/getrlimit.2:706
7686 msgid "The program below demonstrates the use of B<prlimit>()."
7687 msgstr "以下のプログラムに B<prlimit>() の使用例を示す。"
7688
7689 #. type: Plain text
7690 #: build/C/man2/getrlimit.2:715
7691 #, no-wrap
7692 msgid ""
7693 "#define _GNU_SOURCE\n"
7694 "#define _FILE_OFFSET_BITS 64\n"
7695 "#include E<lt>stdio.hE<gt>\n"
7696 "#include E<lt>time.hE<gt>\n"
7697 "#include E<lt>stdlib.hE<gt>\n"
7698 "#include E<lt>unistd.hE<gt>\n"
7699 "#include E<lt>sys/resource.hE<gt>\n"
7700 msgstr ""
7701 "#define _GNU_SOURCE\n"
7702 "#define _FILE_OFFSET_BITS 64\n"
7703 "#include E<lt>stdio.hE<gt>\n"
7704 "#include E<lt>time.hE<gt>\n"
7705 "#include E<lt>stdlib.hE<gt>\n"
7706 "#include E<lt>unistd.hE<gt>\n"
7707 "#include E<lt>sys/resource.hE<gt>\n"
7708
7709 #. type: Plain text
7710 #: build/C/man2/getrlimit.2:718
7711 #, no-wrap
7712 msgid ""
7713 "#define errExit(msg) \tdo { perror(msg); exit(EXIT_FAILURE); \\e\n"
7714 "                        } while (0)\n"
7715 msgstr ""
7716 "#define errExit(msg) \tdo { perror(msg); exit(EXIT_FAILURE); \\e\n"
7717 "                        } while (0)\n"
7718
7719 #. type: Plain text
7720 #: build/C/man2/getrlimit.2:725
7721 #, no-wrap
7722 msgid ""
7723 "int\n"
7724 "main(int argc, char *argv[])\n"
7725 "{\n"
7726 "    struct rlimit old, new;\n"
7727 "    struct rlimit *newp;\n"
7728 "    pid_t pid;\n"
7729 msgstr ""
7730 "int\n"
7731 "main(int argc, char *argv[])\n"
7732 "{\n"
7733 "    struct rlimit old, new;\n"
7734 "    struct rlimit *newp;\n"
7735 "    pid_t pid;\n"
7736
7737 #. type: Plain text
7738 #: build/C/man2/getrlimit.2:731
7739 #, no-wrap
7740 msgid ""
7741 "    if (!(argc == 2 || argc == 4)) {\n"
7742 "        fprintf(stderr, \"Usage: %s E<lt>pidE<gt> [E<lt>new-soft-limitE<gt> \"\n"
7743 "                \"E<lt>new-hard-limitE<gt>]\\en\", argv[0]);\n"
7744 "        exit(EXIT_FAILURE);\n"
7745 "    }\n"
7746 msgstr ""
7747 "    if (!(argc == 2 || argc == 4)) {\n"
7748 "        fprintf(stderr, \"Usage: %s E<lt>pidE<gt> [E<lt>new-soft-limitE<gt> \"\n"
7749 "                \"E<lt>new-hard-limitE<gt>]\\en\", argv[0]);\n"
7750 "        exit(EXIT_FAILURE);\n"
7751 "    }\n"
7752
7753 #. type: Plain text
7754 #: build/C/man2/getrlimit.2:733
7755 #, no-wrap
7756 msgid "    pid = atoi(argv[1]);        /* PID of target process */\n"
7757 msgstr "    pid = atoi(argv[1]);        /* PID of target process */\n"
7758
7759 #. type: Plain text
7760 #: build/C/man2/getrlimit.2:740
7761 #, no-wrap
7762 msgid ""
7763 "    newp = NULL;\n"
7764 "    if (argc == 4) {\n"
7765 "        new.rlim_cur = atoi(argv[2]);\n"
7766 "        new.rlim_max = atoi(argv[3]);\n"
7767 "        newp = &new;\n"
7768 "    }\n"
7769 msgstr ""
7770 "    newp = NULL;\n"
7771 "    if (argc == 4) {\n"
7772 "        new.rlim_cur = atoi(argv[2]);\n"
7773 "        new.rlim_max = atoi(argv[3]);\n"
7774 "        newp = &new;\n"
7775 "    }\n"
7776
7777 #. type: Plain text
7778 #: build/C/man2/getrlimit.2:743
7779 #, no-wrap
7780 msgid ""
7781 "    /* Set CPU time limit of target process; retrieve and display\n"
7782 "       previous limit */\n"
7783 msgstr ""
7784 "    /* Set CPU time limit of target process; retrieve and display\n"
7785 "       previous limit */\n"
7786
7787 #. type: Plain text
7788 #: build/C/man2/getrlimit.2:748
7789 #, no-wrap
7790 msgid ""
7791 "    if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)\n"
7792 "        errExit(\"prlimit-1\");\n"
7793 "    printf(\"Previous limits: soft=%lld; hard=%lld\\en\",\n"
7794 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7795 msgstr ""
7796 "    if (prlimit(pid, RLIMIT_CPU, newp, &old) == -1)\n"
7797 "        errExit(\"prlimit-1\");\n"
7798 "    printf(\"Previous limits: soft=%lld; hard=%lld\\en\",\n"
7799 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7800
7801 #. type: Plain text
7802 #: build/C/man2/getrlimit.2:750
7803 #, no-wrap
7804 msgid "    /* Retrieve and display new CPU time limit */\n"
7805 msgstr "    /* Retrieve and display new CPU time limit */\n"
7806
7807 #. type: Plain text
7808 #: build/C/man2/getrlimit.2:755
7809 #, no-wrap
7810 msgid ""
7811 "    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)\n"
7812 "        errExit(\"prlimit-2\");\n"
7813 "    printf(\"New limits: soft=%lld; hard=%lld\\en\",\n"
7814 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7815 msgstr ""
7816 "    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == -1)\n"
7817 "        errExit(\"prlimit-2\");\n"
7818 "    printf(\"New limits: soft=%lld; hard=%lld\\en\",\n"
7819 "            (long long) old.rlim_cur, (long long) old.rlim_max);\n"
7820
7821 #. type: Plain text
7822 #: build/C/man2/getrlimit.2:758 build/C/man7/user_namespaces.7:829
7823 #, no-wrap
7824 msgid ""
7825 "    exit(EXIT_FAILURE);\n"
7826 "}\n"
7827 msgstr ""
7828 "    exit(EXIT_FAILURE);\n"
7829 "}\n"
7830
7831 #. type: Plain text
7832 #: build/C/man2/getrlimit.2:777
7833 msgid ""
7834 "B<prlimit>(1), B<dup>(2), B<fcntl>(2), B<fork>(2), B<getrusage>(2), "
7835 "B<mlock>(2), B<mmap>(2), B<open>(2), B<quotactl>(2), B<sbrk>(2), "
7836 "B<shmctl>(2), B<malloc>(3), B<sigqueue>(3), B<ulimit>(3), B<core>(5), "
7837 "B<capabilities>(7), B<signal>(7)"
7838 msgstr ""
7839 "B<prlimit>(1), B<dup>(2), B<fcntl>(2), B<fork>(2), B<getrusage>(2), "
7840 "B<mlock>(2), B<mmap>(2), B<open>(2), B<quotactl>(2), B<sbrk>(2), "
7841 "B<shmctl>(2), B<malloc>(3), B<sigqueue>(3), B<ulimit>(3), B<core>(5), "
7842 "B<capabilities>(7), B<signal>(7)"
7843
7844 #. type: TH
7845 #: build/C/man2/getrusage.2:39
7846 #, no-wrap
7847 msgid "GETRUSAGE"
7848 msgstr "GETRUSAGE"
7849
7850 #. type: TH
7851 #: build/C/man2/getrusage.2:39
7852 #, no-wrap
7853 msgid "2014-05-10"
7854 msgstr "2014-05-10"
7855
7856 #. type: Plain text
7857 #: build/C/man2/getrusage.2:42
7858 msgid "getrusage - get resource usage"
7859 msgstr "getrusage - 資源の使用量を取得する"
7860
7861 #. type: Plain text
7862 #: build/C/man2/getrusage.2:48
7863 msgid "B<int getrusage(int >I<who>B<, struct rusage *>I<usage>B<);>"
7864 msgstr "B<int getrusage(int >I<who>B<, struct rusage *>I<usage>B<);>"
7865
7866 #. type: Plain text
7867 #: build/C/man2/getrusage.2:54
7868 msgid ""
7869 "B<getrusage>()  returns resource usage measures for I<who>, which can be one "
7870 "of the following:"
7871 msgstr ""
7872 "B<getrusage>()  は I<who> の資源 (resource) の使用量を返す。 I<who> には以下"
7873 "のいずれか一つを指定できる。"
7874
7875 #. type: TP
7876 #: build/C/man2/getrusage.2:54
7877 #, no-wrap
7878 msgid "B<RUSAGE_SELF>"
7879 msgstr "B<RUSAGE_SELF>"
7880
7881 #. type: Plain text
7882 #: build/C/man2/getrusage.2:58
7883 msgid ""
7884 "Return resource usage statistics for the calling process, which is the sum "
7885 "of resources used by all threads in the process."
7886 msgstr ""
7887 "呼び出したプロセスの資源使用量、 そのプロセス内の全スレッドが使用している資源"
7888 "の合計を返す。"
7889
7890 #. type: TP
7891 #: build/C/man2/getrusage.2:58
7892 #, no-wrap
7893 msgid "B<RUSAGE_CHILDREN>"
7894 msgstr "B<RUSAGE_CHILDREN>"
7895
7896 #. type: Plain text
7897 #: build/C/man2/getrusage.2:65
7898 msgid ""
7899 "Return resource usage statistics for all children of the calling process "
7900 "that have terminated and been waited for.  These statistics will include the "
7901 "resources used by grandchildren, and further removed descendants, if all of "
7902 "the intervening descendants waited on their terminated children."
7903 msgstr ""
7904 "呼び出したプロセスの子プロセスのうち、 終了して待ち状態にある全プロセスが使用"
7905 "している資源使用量の統計を返す。 これらの統計情報には、孫プロセスやその子孫の"
7906 "プロセスのうち、 削除待ちのものが使用している資源も含まれる。"
7907
7908 #. type: TP
7909 #: build/C/man2/getrusage.2:65
7910 #, no-wrap
7911 msgid "B<RUSAGE_THREAD> (since Linux 2.6.26)"
7912 msgstr "B<RUSAGE_THREAD> (Linux 2.6.26 以降)"
7913
7914 #. type: Plain text
7915 #: build/C/man2/getrusage.2:75
7916 msgid ""
7917 "Return resource usage statistics for the calling thread.  The B<_GNU_SOURCE> "
7918 "feature test macro must be defined (before including I<any> header file)  in "
7919 "order to obtain the definition of this constant from I<E<lt>sys/resource."
7920 "hE<gt>>."
7921 msgstr ""
7922 "呼び出したスレッドに関する資源使用量の統計を返す。 I<E<lt>sys/resource."
7923 "hE<gt>> からこの定数の定義を得るためには、 ((I<どの>ヘッダファイルをインク"
7924 "ルードするよりも前に) 機能検査マクロ B<_GNU_SOURCE> を定義しなければならな"
7925 "い。"
7926
7927 #. type: Plain text
7928 #: build/C/man2/getrusage.2:79
7929 msgid ""
7930 "The resource usages are returned in the structure pointed to by I<usage>, "
7931 "which has the following form:"
7932 msgstr ""
7933 "資源使用量は I<usage> が指す構造体に格納されて返される。 構造体は以下の形式で"
7934 "ある。"
7935
7936 #. type: Plain text
7937 #: build/C/man2/getrusage.2:100
7938 #, no-wrap
7939 msgid ""
7940 "struct rusage {\n"
7941 "    struct timeval ru_utime; /* user CPU time used */\n"
7942 "    struct timeval ru_stime; /* system CPU time used */\n"
7943 "    long   ru_maxrss;        /* maximum resident set size */\n"
7944 "    long   ru_ixrss;         /* integral shared memory size */\n"
7945 "    long   ru_idrss;         /* integral unshared data size */\n"
7946 "    long   ru_isrss;         /* integral unshared stack size */\n"
7947 "    long   ru_minflt;        /* page reclaims (soft page faults) */\n"
7948 "    long   ru_majflt;        /* page faults (hard page faults) */\n"
7949 "    long   ru_nswap;         /* swaps */\n"
7950 "    long   ru_inblock;       /* block input operations */\n"
7951 "    long   ru_oublock;       /* block output operations */\n"
7952 "    long   ru_msgsnd;        /* IPC messages sent */\n"
7953 "    long   ru_msgrcv;        /* IPC messages received */\n"
7954 "    long   ru_nsignals;      /* signals received */\n"
7955 "    long   ru_nvcsw;         /* voluntary context switches */\n"
7956 "    long   ru_nivcsw;        /* involuntary context switches */\n"
7957 "};\n"
7958 msgstr ""
7959 "struct rusage {\n"
7960 "    struct timeval ru_utime; /* 使用されたユーザー CPU 時間 */\n"
7961 "    struct timeval ru_stime; /* 使用されたシステム CPU 時間 */\n"
7962 "    long   ru_maxrss;        /* RAM 上に存在する仮想ページのサイズ\n"
7963 "                               (resident set size) の最大値 */\n"
7964 "    long   ru_ixrss;         /* 共有メモリの合計サイズ */\n"
7965 "    long   ru_idrss;         /* 非共有データの合計サイズ */\n"
7966 "    long   ru_isrss;         /* 非共有スタックの合計サイズ */\n"
7967 "    long   ru_minflt;        /* ページの再利用 (ソフトページフォルト) */\n"
7968 "    long   ru_majflt;        /* ページフォールト (ハードページフォルト) */\n"
7969 "    long   ru_nswap;         /* スワップ */\n"
7970 "    long   ru_inblock;       /* ブロック入力操作 */\n"
7971 "    long   ru_oublock;       /* ブロック出力操作 */\n"
7972 "    long   ru_msgsnd;        /* 送信された IPC メッセージ */\n"
7973 "    long   ru_msgrcv;        /* 受信された IPC メッセージ */\n"
7974 "    long   ru_nsignals;      /* 受信されたシグナル */\n"
7975 "    long   ru_nvcsw;         /* 意図したコンテキスト切り替え */\n"
7976 "    long   ru_nivcsw;        /* 意図しないコンテキスト切り替え */\n"
7977 "};\n"
7978
7979 #. type: Plain text
7980 #: build/C/man2/getrusage.2:108
7981 msgid ""
7982 "Not all fields are completed; unmaintained fields are set to zero by the "
7983 "kernel.  (The unmaintained fields are provided for compatibility with other "
7984 "systems, and because they may one day be supported on Linux.)  The fields "
7985 "are interpreted as follows:"
7986 msgstr ""
7987 "すべてのフィールドがサポートされているわけではない。 メンテナンスされていない"
7988 "フィールドには、 カーネルが 0 を設定する (メンテナンスされていないフィールド"
7989 "は、 他のシステムとの互換性のために提供されており、 いつか Linux でもサポート"
7990 "されるかもしれない)。 各フィールドの詳細は以下の通りである。"
7991
7992 #. type: TP
7993 #: build/C/man2/getrusage.2:108
7994 #, no-wrap
7995 msgid "I<ru_utime>"
7996 msgstr "I<ru_utime>"
7997
7998 #. type: Plain text
7999 #: build/C/man2/getrusage.2:114
8000 msgid ""
8001 "This is the total amount of time spent executing in user mode, expressed in "
8002 "a I<timeval> structure (seconds plus microseconds)."
8003 msgstr ""
8004 "ユーザモードでの実行で消費された合計時間。 I<timeval> 構造体 (秒とミリ秒) で"
8005 "表現される。"
8006
8007 #. type: TP
8008 #: build/C/man2/getrusage.2:114
8009 #, no-wrap
8010 msgid "I<ru_stime>"
8011 msgstr "I<ru_stime>"
8012
8013 #. type: Plain text
8014 #: build/C/man2/getrusage.2:120
8015 msgid ""
8016 "This is the total amount of time spent executing in kernel mode, expressed "
8017 "in a I<timeval> structure (seconds plus microseconds)."
8018 msgstr ""
8019 "カーネルモードでの実行で消費された合計時間。 I<timeval> 構造体 (秒とミリ秒) "
8020 "で表現される。"
8021
8022 #. type: TP
8023 #: build/C/man2/getrusage.2:120
8024 #, no-wrap
8025 msgid "I<ru_maxrss> (since Linux 2.6.32)"
8026 msgstr "I<ru_maxrss> (Linux 2.6.32 以降)"
8027
8028 #. type: Plain text
8029 #: build/C/man2/getrusage.2:127
8030 msgid ""
8031 "This is the maximum resident set size used (in kilobytes).  For "
8032 "B<RUSAGE_CHILDREN>, this is the resident set size of the largest child, not "
8033 "the maximum resident set size of the process tree."
8034 msgstr ""
8035 "使用された resident set size の最大値 (キロバイト単位)。 B<RUSAGE_CHILDREN> "
8036 "の場合には、プロセスツリーの resident set size の最大値ではなく、 最も大きい"
8037 "子プロセスの resident set size となる。"
8038
8039 #. type: TP
8040 #: build/C/man2/getrusage.2:127
8041 #, no-wrap
8042 msgid "I<ru_ixrss> (unmaintained)"
8043 msgstr "I<ru_ixrss> (メンテナンスされていない)"
8044
8045 #.  On some systems, this field records the number of signals received.
8046 #. type: Plain text
8047 #: build/C/man2/getrusage.2:133 build/C/man2/getrusage.2:138
8048 #: build/C/man2/getrusage.2:143 build/C/man2/getrusage.2:155
8049 #: build/C/man2/getrusage.2:167 build/C/man2/getrusage.2:173
8050 #: build/C/man2/getrusage.2:177
8051 msgid "This field is currently unused on Linux."
8052 msgstr "このフィールドは現在のところ Linux では未使用である。"
8053
8054 #. type: TP
8055 #: build/C/man2/getrusage.2:133
8056 #, no-wrap
8057 msgid "I<ru_idrss> (unmaintained)"
8058 msgstr "I<ru_idrss> (メンテナンスされていない)"
8059
8060 #. type: TP
8061 #: build/C/man2/getrusage.2:138
8062 #, no-wrap
8063 msgid "I<ru_isrss> (unmaintained)"
8064 msgstr "I<ru_isrss> (メンテナンスされていない)"
8065
8066 #. type: TP
8067 #: build/C/man2/getrusage.2:143
8068 #, no-wrap
8069 msgid "I<ru_minflt>"
8070 msgstr "I<ru_minflt>"
8071
8072 #. type: Plain text
8073 #: build/C/man2/getrusage.2:148
8074 msgid ""
8075 "The number of page faults serviced without any I/O activity; here I/O "
8076 "activity is avoided by ``reclaiming'' a page frame from the list of pages "
8077 "awaiting reallocation."
8078 msgstr ""
8079 "I/O 動作なしで発生したページフォルトの回数。 再割り当てを待っているページリス"
8080 "トからページフレームを「回収」 (reclaim) することで、 I/O 動作を避けることが"
8081 "できる。"
8082
8083 #. type: TP
8084 #: build/C/man2/getrusage.2:148
8085 #, no-wrap
8086 msgid "I<ru_majflt>"
8087 msgstr "I<ru_majflt>"
8088
8089 #. type: Plain text
8090 #: build/C/man2/getrusage.2:151
8091 msgid "The number of page faults serviced that required I/O activity."
8092 msgstr "I/O 動作を必要とするページフォルトの回数。"
8093
8094 #. type: TP
8095 #: build/C/man2/getrusage.2:151
8096 #, no-wrap
8097 msgid "I<ru_nswap> (unmaintained)"
8098 msgstr "I<ru_nswap> (メンテナンスされていない)"
8099
8100 #. type: TP
8101 #: build/C/man2/getrusage.2:155
8102 #, no-wrap
8103 msgid "I<ru_inblock> (since Linux 2.6.22)"
8104 msgstr "I<ru_inblock> (Linux 2.6.22 以降)"
8105
8106 #. type: Plain text
8107 #: build/C/man2/getrusage.2:158
8108 msgid "The number of times the filesystem had to perform input."
8109 msgstr "ファイルシステムが入力を実行する必要があった回数。"
8110
8111 #. type: TP
8112 #: build/C/man2/getrusage.2:158
8113 #, no-wrap
8114 msgid "I<ru_oublock> (since Linux 2.6.22)"
8115 msgstr "I<ru_oublock> (Linux 2.6.22 以降)"
8116
8117 #. type: Plain text
8118 #: build/C/man2/getrusage.2:161
8119 msgid "The number of times the filesystem had to perform output."
8120 msgstr "ファイルシステムが出力を実行する必要があった回数。"
8121
8122 #. type: TP
8123 #: build/C/man2/getrusage.2:161
8124 #, no-wrap
8125 msgid "I<ru_msgsnd> (unmaintained)"
8126 msgstr "I<ru_msgsnd> (メンテナンスされていない)"
8127
8128 #. type: TP
8129 #: build/C/man2/getrusage.2:167
8130 #, no-wrap
8131 msgid "I<ru_msgrcv> (unmaintained)"
8132 msgstr "I<ru_msgrcv> (メンテナンスされていない)"
8133
8134 #. type: TP
8135 #: build/C/man2/getrusage.2:173
8136 #, no-wrap
8137 msgid "I<ru_nsignals> (unmaintained)"
8138 msgstr "I<ru_nsignals> (メンテナンスされていない)"
8139
8140 #. type: TP
8141 #: build/C/man2/getrusage.2:177
8142 #, no-wrap
8143 msgid "I<ru_nvcsw> (since Linux 2.6)"
8144 msgstr "I<ru_nvcsw> (Linux 2.6 以降)"
8145
8146 #. type: Plain text
8147 #: build/C/man2/getrusage.2:182
8148 msgid ""
8149 "The number of times a context switch resulted due to a process voluntarily "
8150 "giving up the processor before its time slice was completed (usually to "
8151 "await availability of a resource)."
8152 msgstr ""
8153 "自分のタイムスライスが完了する前にプロセスが自発的にプロセッサを解放して行わ"
8154 "れたコンテキストスイッチの回数 (通常はリソースが利用可能になるのを待つために"
8155 "行われる)。"
8156
8157 #. type: TP
8158 #: build/C/man2/getrusage.2:182
8159 #, no-wrap
8160 msgid "I<ru_nivcsw> (since Linux 2.6)"
8161 msgstr "I<memory_migrate> (Linux 2.6.16 以降)"
8162
8163 #. type: Plain text
8164 #: build/C/man2/getrusage.2:187
8165 msgid ""
8166 "The number of times a context switch resulted due to a higher priority "
8167 "process becoming runnable or because the current process exceeded its time "
8168 "slice."
8169 msgstr ""
8170 "優先度が自分より高いプロセッサが実行可能になったか、現在のプロセスが自分のタ"
8171 "イムスライスを超過したことにより行われたコンテキストスイッチの回数。"
8172
8173 #. type: Plain text
8174 #: build/C/man2/getrusage.2:198
8175 msgid "I<usage> points outside the accessible address space."
8176 msgstr "I<usage> がアクセス可能なアドレス空間の外を指している。"
8177
8178 #. type: Plain text
8179 #: build/C/man2/getrusage.2:202
8180 msgid "I<who> is invalid."
8181 msgstr "I<who> が無効である。"
8182
8183 #. type: Plain text
8184 #: build/C/man2/getrusage.2:210
8185 msgid ""
8186 "SVr4, 4.3BSD.  POSIX.1-2001 specifies B<getrusage>(), but specifies only the "
8187 "fields I<ru_utime> and I<ru_stime>."
8188 msgstr ""
8189 "SVr4, 4.3BSD.  POSIX.1-2001 は B<getrusage>()  を規定しているが、規定している"
8190 "フィールドは I<ru_utime> と I<ru_stime> だけである。"
8191
8192 #. type: Plain text
8193 #: build/C/man2/getrusage.2:213
8194 msgid "B<RUSAGE_THREAD> is Linux-specific."
8195 msgstr "B<RUSAGE_THREAD> は Linux 固有である。"
8196
8197 #. type: Plain text
8198 #: build/C/man2/getrusage.2:216
8199 msgid "Resource usage metrics are preserved across an B<execve>(2)."
8200 msgstr "B<execve>(2)  の前後でリソース使用量の指標は保持される。"
8201
8202 #. type: Plain text
8203 #: build/C/man2/getrusage.2:224
8204 msgid ""
8205 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
8206 "portability.  (Indeed, I<struct timeval> is defined in I<E<lt>sys/time."
8207 "hE<gt>>.)"
8208 msgstr ""
8209 "今日では I<E<lt>sys/time.hE<gt>> をインクルードする必要はないが、 インクルー"
8210 "ドしておけば移植性が増す。 (実際 I<struct timeval> は I<E<lt>sys/time."
8211 "hE<gt>> で定義されている。)"
8212
8213 #.  See the description of getrusage() in XSH.
8214 #.  A similar statement was also in SUSv2.
8215 #. type: Plain text
8216 #: build/C/man2/getrusage.2:236
8217 msgid ""
8218 "In Linux kernel versions before 2.6.9, if the disposition of B<SIGCHLD> is "
8219 "set to B<SIG_IGN> then the resource usages of child processes are "
8220 "automatically included in the value returned by B<RUSAGE_CHILDREN>, although "
8221 "POSIX.1-2001 explicitly prohibits this.  This nonconformance is rectified in "
8222 "Linux 2.6.9 and later."
8223 msgstr ""
8224 "2.6.9 より前のバージョンの Linux カーネルでは、 B<SIGCHLD> の処理が "
8225 "B<SIG_IGN> に設定されていると、 子プロセスのリソース使用量が "
8226 "B<RUSAGE_CHILDREN> で返される値に自動的に含められる。 しかし POSIX.1-2001 で"
8227 "は、これを明確に禁止している。 この準拠していなかった点は、Linux 2.6.9 以降で"
8228 "改正された。"
8229
8230 #. type: Plain text
8231 #: build/C/man2/getrusage.2:239
8232 msgid ""
8233 "The structure definition shown at the start of this page was taken from "
8234 "4.3BSD Reno."
8235 msgstr "このページの最初で示した構造体の定義は 4.3BSD Reno のものである。"
8236
8237 #. type: Plain text
8238 #: build/C/man2/getrusage.2:248
8239 msgid ""
8240 "Ancient systems provided a B<vtimes>()  function with a similar purpose to "
8241 "B<getrusage>().  For backward compatibility, glibc also provides "
8242 "B<vtimes>().  All new applications should be written using B<getrusage>()."
8243 msgstr ""
8244 "古いシステムでは、 B<getrusage>() と同様の目的を持つ関数 B<vtimes>() が提供\n"
8245 "されていた。後方互換性のため、glibc でも B<vtimes>() を提供している。\n"
8246 "全ての新しいアプリケーションでは B<getrusage>() を使用すべきである。"
8247
8248 #. type: Plain text
8249 #: build/C/man2/getrusage.2:253
8250 msgid "See also the description of I</proc/PID/stat> in B<proc>(5)."
8251 msgstr "B<proc>(5)  にある I</proc/PID/stat> の説明も参照のこと。"
8252
8253 #. type: Plain text
8254 #: build/C/man2/getrusage.2:260
8255 msgid ""
8256 "B<clock_gettime>(2), B<getrlimit>(2), B<times>(2), B<wait>(2), B<wait4>(2), "
8257 "B<clock>(3)"
8258 msgstr ""
8259 "B<clock_gettime>(2), B<getrlimit>(2), B<times>(2), B<wait>(2), B<wait4>(2), "
8260 "B<clock>(3)"
8261
8262 #. type: TH
8263 #: build/C/man2/getsid.2:26
8264 #, no-wrap
8265 msgid "GETSID"
8266 msgstr "GETSID"
8267
8268 #. type: TH
8269 #: build/C/man2/getsid.2:26
8270 #, no-wrap
8271 msgid "2010-09-26"
8272 msgstr "2010-09-26"
8273
8274 #. type: Plain text
8275 #: build/C/man2/getsid.2:29
8276 msgid "getsid - get session ID"
8277 msgstr "getsid - セッション ID を取得する。"
8278
8279 #. type: Plain text
8280 #: build/C/man2/getsid.2:33
8281 msgid "B<pid_t getsid(pid_t>I< pid>B<);>"
8282 msgstr "B<pid_t getsid(pid_t>I< pid>B<);>"
8283
8284 #. type: Plain text
8285 #: build/C/man2/getsid.2:42
8286 msgid "B<getsid>():"
8287 msgstr "B<getsid>():"
8288
8289 #. type: Plain text
8290 #: build/C/man2/getsid.2:45 build/C/man2/setpgid.2:79
8291 msgid ""
8292 "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
8293 msgstr ""
8294 "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
8295
8296 #. type: Plain text
8297 #: build/C/man2/getsid.2:47 build/C/man2/setpgid.2:81
8298 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
8299 msgstr "|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
8300
8301 #. type: Plain text
8302 #: build/C/man2/getsid.2:58
8303 msgid ""
8304 "I<getsid(0)> returns the session ID of the calling process.  I<getsid(p)> "
8305 "returns the session ID of the process with process ID I<p>.  (The session ID "
8306 "of a process is the process group ID of the session leader.)"
8307 msgstr ""
8308 "I<getsid(0)> は呼び出し元のプロセスのセッション ID を返す。 I<getsid(p)> はプ"
8309 "ロセス ID I<p> を持つプロセスのセッション ID を返す (プロセスのセッション ID "
8310 "は セッションリーダーのプロセスグループ ID である)。"
8311
8312 #. type: Plain text
8313 #: build/C/man2/getsid.2:63
8314 msgid ""
8315 "On success, a session ID is returned.  On error, I<(pid_t)\\ -1> will be "
8316 "returned, and I<errno> is set appropriately."
8317 msgstr ""
8318 "成功すると、セッション ID が返される。 エラーの場合、I<(pid_t) -1> が返さ"
8319 "れ、 I<errno> が適切に設定される。"
8320
8321 #. type: Plain text
8322 #: build/C/man2/getsid.2:70
8323 msgid ""
8324 "A process with process ID I<p> exists, but it is not in the same session as "
8325 "the calling process, and the implementation considers this an error."
8326 msgstr ""
8327 "プロセス ID I<p> のプロセスは存在するが、呼び出し元のプロセスと同じセッション"
8328 "ではなく、 さらに実装がこの状態をエラーと判断した場合。"
8329
8330 #. type: Plain text
8331 #: build/C/man2/getsid.2:75
8332 msgid "No process with process ID I<p> was found."
8333 msgstr "プロセス ID が I<p> のプロセスがない。"
8334
8335 #.  Linux has this system call since Linux 1.3.44.
8336 #.  There is libc support since libc 5.2.19.
8337 #. type: Plain text
8338 #: build/C/man2/getsid.2:79
8339 msgid "This system call is available on Linux since version 2.0."
8340 msgstr "このシステムコールは Linux バージョン 2.0 以降で利用可能である。"
8341
8342 #. type: Plain text
8343 #: build/C/man2/getsid.2:81 build/C/man2/setgid.2:73 build/C/man2/setsid.2:70
8344 msgid "SVr4, POSIX.1-2001."
8345 msgstr "SVr4, POSIX.1-2001."
8346
8347 #. type: Plain text
8348 #: build/C/man2/getsid.2:84
8349 msgid "Linux does not return B<EPERM>."
8350 msgstr "Linux は B<EPERM> を返さない。"
8351
8352 #. type: Plain text
8353 #: build/C/man2/getsid.2:88
8354 msgid "B<getpgid>(2), B<setsid>(2), B<credentials>(7)"
8355 msgstr "B<getpgid>(2), B<setsid>(2), B<credentials>(7)"
8356
8357 #. type: TH
8358 #: build/C/man2/getuid.2:26
8359 #, no-wrap
8360 msgid "GETUID"
8361 msgstr "GETUID"
8362
8363 #. type: Plain text
8364 #: build/C/man2/getuid.2:29
8365 msgid "getuid, geteuid - get user identity"
8366 msgstr "getuid, geteuid - ユーザー ID を得る"
8367
8368 #. type: Plain text
8369 #: build/C/man2/getuid.2:35
8370 msgid "B<uid_t getuid(void);>"
8371 msgstr "B<uid_t getuid(void);>"
8372
8373 #. type: Plain text
8374 #: build/C/man2/getuid.2:37
8375 msgid "B<uid_t geteuid(void);>"
8376 msgstr "B<uid_t geteuid(void);>"
8377
8378 #. type: Plain text
8379 #: build/C/man2/getuid.2:40
8380 msgid "B<getuid>()  returns the real user ID of the calling process."
8381 msgstr "B<getuid>()  は呼び出し元のプロセスの実ユーザー ID を返す。"
8382
8383 #. type: Plain text
8384 #: build/C/man2/getuid.2:43
8385 msgid "B<geteuid>()  returns the effective user ID of the calling process."
8386 msgstr "B<geteuid>()  は呼び出し元のプロセスの実効ユーザー ID を返す。"
8387
8388 #. type: SS
8389 #: build/C/man2/getuid.2:48
8390 #, no-wrap
8391 msgid "History"
8392 msgstr "歴史"
8393
8394 #. type: Plain text
8395 #: build/C/man2/getuid.2:57
8396 msgid ""
8397 "In UNIX\\ V6 the B<getuid>()  call returned I<(euid E<lt>E<lt> 8) + uid>.  "
8398 "UNIX\\ V7 introduced separate calls B<getuid>()  and B<geteuid>()."
8399 msgstr ""
8400 "UNIX\\ V6 では B<getuid>()  コールは I<(euid E<lt>E<lt> 8) + uid> を返してい"
8401 "た。 UNIX\\ V7 では B<getuid>()  と B<geteuid>()  という別々のコールが導入さ"
8402 "れた。"
8403
8404 #. type: Plain text
8405 #: build/C/man2/getuid.2:73
8406 msgid ""
8407 "The original Linux B<getuid>()  and B<geteuid>()  system calls supported "
8408 "only 16-bit user IDs.  Subsequently, Linux 2.4 added B<getuid32>()  and "
8409 "B<geteuid32>(), supporting 32-bit IDs.  The glibc B<getuid>()  and "
8410 "B<geteuid>()  wrapper functions transparently deal with the variations "
8411 "across kernel versions."
8412 msgstr ""
8413 "元々の Linux の B<getuid>() と B<geteuid>() システムコールは\n"
8414 "16 ビットのグループ ID だけに対応していた。\n"
8415 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
8416 "B<getuid32>() と B<geteuid32>() が追加された。\n"
8417 "glibc の B<getuid>() と B<geteuid>() のラッパー関数は\n"
8418 "カーネルバージョンによるこの違いを吸収している。"
8419
8420 #. type: Plain text
8421 #: build/C/man2/getuid.2:78
8422 msgid "B<getresuid>(2), B<setreuid>(2), B<setuid>(2), B<credentials>(7)"
8423 msgstr "B<getresuid>(2), B<setreuid>(2), B<setuid>(2), B<credentials>(7)"
8424
8425 #. type: TH
8426 #: build/C/man3/group_member.3:25
8427 #, no-wrap
8428 msgid "GROUP_MEMBER"
8429 msgstr "GROUP_MEMBER"
8430
8431 #. type: TH
8432 #: build/C/man3/group_member.3:25
8433 #, no-wrap
8434 msgid "2014-03-30"
8435 msgstr "2014-03-30"
8436
8437 #. type: TH
8438 #: build/C/man3/group_member.3:25
8439 #, no-wrap
8440 msgid "GNU"
8441 msgstr "GNU"
8442
8443 #. type: Plain text
8444 #: build/C/man3/group_member.3:28
8445 msgid "group_member - test whether a process is in a group"
8446 msgstr "group_member - プロセスがグループに属しているかを検査する"
8447
8448 #. type: Plain text
8449 #: build/C/man3/group_member.3:32
8450 msgid "B<int group_member(gid_t >I<gid>B<);>"
8451 msgstr "B<int group_member(gid_t >I<gid>B<);>"
8452
8453 #. type: Plain text
8454 #: build/C/man3/group_member.3:40
8455 msgid "B<group_member>(): _GNU_SOURCE"
8456 msgstr "B<group_member>(): _GNU_SOURCE"
8457
8458 #. type: Plain text
8459 #: build/C/man3/group_member.3:48
8460 msgid ""
8461 "The B<group_member>()  function tests whether any of the caller's "
8462 "supplementary group IDs (as returned by B<getgroups>(2))  matches I<gid>."
8463 msgstr ""
8464 "B<group_member>() 関数は、 呼び出し元の補助グループ ID (B<getgroups>(2) が返"
8465 "す値) のいずれかが I<gid> に一致するかを検索する。"
8466
8467 #. type: Plain text
8468 #: build/C/man3/group_member.3:55
8469 msgid ""
8470 "The B<group_member>()  function returns nonzero if any of the caller's "
8471 "supplementary group IDs matches I<gid>, and zero otherwise."
8472 msgstr ""
8473 "B<group_member>() 関数は、 呼び出し元の補助グループ ID のいずれかが I<gid> に"
8474 "一致すれば 0 以外の値を、そうでなければ 0 を返す。"
8475
8476 #. type: Plain text
8477 #: build/C/man3/group_member.3:57
8478 msgid "This function is a nonstandard GNU extension."
8479 msgstr "この関数は非標準の GNU 拡張である。"
8480
8481 #. type: Plain text
8482 #: build/C/man3/group_member.3:62
8483 msgid "B<getgid>(2), B<getgroups>(2), B<getgrouplist>(3), B<group>(5)"
8484 msgstr "B<getgid>(2), B<getgroups>(2), B<getgrouplist>(3), B<group>(5)"
8485
8486 #. type: TH
8487 #: build/C/man2/iopl.2:33
8488 #, no-wrap
8489 msgid "IOPL"
8490 msgstr "IOPL"
8491
8492 #. type: TH
8493 #: build/C/man2/iopl.2:33
8494 #, no-wrap
8495 msgid "2013-03-15"
8496 msgstr "2013-03-15"
8497
8498 #. type: Plain text
8499 #: build/C/man2/iopl.2:36
8500 msgid "iopl - change I/O privilege level"
8501 msgstr "iopl - I/O 特権レベルを変更する"
8502
8503 #. type: Plain text
8504 #: build/C/man2/iopl.2:38
8505 msgid "B<#include E<lt>sys/io.hE<gt>>"
8506 msgstr "B<#include E<lt>sys/io.hE<gt>>"
8507
8508 #. type: Plain text
8509 #: build/C/man2/iopl.2:40
8510 msgid "B<int iopl(int >I<level>B<);>"
8511 msgstr "B<int iopl(int >I<level>B<);>"
8512
8513 #. type: Plain text
8514 #: build/C/man2/iopl.2:45
8515 msgid ""
8516 "B<iopl>()  changes the I/O privilege level of the calling process, as "
8517 "specified by the two least significant bits in I<level>."
8518 msgstr ""
8519 "B<iopl>()  は呼び出し元のプロセスの I/O 特権レベルを I<level> の下位 2 ビット"
8520 "で指定した値に変更する。"
8521
8522 #. type: Plain text
8523 #: build/C/man2/iopl.2:51
8524 msgid ""
8525 "This call is necessary to allow 8514-compatible X servers to run under "
8526 "Linux.  Since these X servers require access to all 65536 I/O ports, the "
8527 "B<ioperm>(2)  call is not sufficient."
8528 msgstr ""
8529 "この関数は 8514 互換の X サーバを Linux で動作させるために必要である。 なぜな"
8530 "らこの X サーバは 65536 個の I/O ポート全てへのアクセスを要求するので "
8531 "B<ioperm>(2)  関数では不十分だからである。"
8532
8533 #. type: Plain text
8534 #: build/C/man2/iopl.2:55
8535 msgid ""
8536 "In addition to granting unrestricted I/O port access, running at a higher I/"
8537 "O privilege level also allows the process to disable interrupts.  This will "
8538 "probably crash the system, and is not recommended."
8539 msgstr ""
8540 "より高い I/O 特権レベルでの動作をさせることによって I/O ポートアクセスの制限"
8541 "を解除することに加えて、プロセスが割り込みを 無効にすることもできるようにな"
8542 "る。この機能は時としてシステムの破壊を もたらすので勧められない。"
8543
8544 #. type: Plain text
8545 #: build/C/man2/iopl.2:60
8546 msgid "Permissions are inherited by B<fork>(2)  and B<execve>(2)."
8547 msgstr "B<fork>(2)  や B<exec>(2)  を行った場合、特権は継承される。"
8548
8549 #. type: Plain text
8550 #: build/C/man2/iopl.2:62
8551 msgid "The I/O privilege level for a normal process is 0."
8552 msgstr "通常のプロセスの I/O 特権レベルは 0 である。"
8553
8554 #. type: Plain text
8555 #: build/C/man2/iopl.2:66
8556 msgid ""
8557 "This call is mostly for the i386 architecture.  On many other architectures "
8558 "it does not exist or will always return an error."
8559 msgstr ""
8560 "このシステムコールはほとんど i386 アーキテクチャのためだけのものである。 その"
8561 "他の多くのアーキテクチャでは存在しないか、常にエラーを返す。"
8562
8563 #. type: Plain text
8564 #: build/C/man2/iopl.2:76
8565 msgid "I<level> is greater than 3."
8566 msgstr "引き数 I<level> が 3 より大きい。"
8567
8568 #. type: Plain text
8569 #: build/C/man2/iopl.2:79
8570 msgid "This call is unimplemented."
8571 msgstr "このシステムコールは実装されていない。"
8572
8573 #. type: Plain text
8574 #: build/C/man2/iopl.2:87
8575 msgid ""
8576 "The calling process has insufficient privilege to call B<iopl>(); the "
8577 "B<CAP_SYS_RAWIO> capability is required to raise the I/O privilege level "
8578 "above its current value."
8579 msgstr ""
8580 "呼び出し元プロセスに B<iopl>()  を呼び出すのに十分な権限がなかった。 I/O 特権"
8581 "レベルを現在の値より上げるには B<CAP_SYS_RAWIO> ケーパビリティが必要である。"
8582
8583 #. type: Plain text
8584 #: build/C/man2/iopl.2:91
8585 msgid ""
8586 "B<iopl>()  is Linux-specific and should not be used in programs that are "
8587 "intended to be portable."
8588 msgstr ""
8589 "B<ipc>()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけな"
8590 "い。"
8591
8592 #. type: Plain text
8593 #: build/C/man2/iopl.2:100
8594 msgid ""
8595 "Libc5 treats it as a system call and has a prototype in I<E<lt>unistd."
8596 "hE<gt>>.  Glibc1 does not have a prototype.  Glibc2 has a prototype both in "
8597 "I<E<lt>sys/io.hE<gt>> and in I<E<lt>sys/perm.hE<gt>>.  Avoid the latter, it "
8598 "is available on i386 only."
8599 msgstr ""
8600 "libc5 ではシステムコールとして扱い I<E<lt>unistd.hE<gt>> にプロトタイプが存在"
8601 "している。 glibc1 にはプロトタイプは存在していない。 glibc2 は I<E<lt>sys/io."
8602 "hE<gt>> と I<E<lt>sys/perm.hE<gt>> の両方にプロトタイプを持っている。 後者は "
8603 "i386 のみで利用可能なので、使用すべきではない。"
8604
8605 #. type: Plain text
8606 #: build/C/man2/iopl.2:104
8607 msgid "B<ioperm>(2), B<outb>(2), B<capabilities>(7)"
8608 msgstr "B<ioperm>(2), B<outb>(2), B<capabilities>(7)"
8609
8610 #. type: TH
8611 #: build/C/man2/ioprio_set.2:24
8612 #, no-wrap
8613 msgid "IOPRIO_SET"
8614 msgstr "IOPRIO_SET"
8615
8616 #. type: TH
8617 #: build/C/man2/ioprio_set.2:24
8618 #, no-wrap
8619 msgid "2013-02-12"
8620 msgstr "2013-02-12"
8621
8622 #. type: Plain text
8623 #: build/C/man2/ioprio_set.2:27
8624 msgid "ioprio_get, ioprio_set - get/set I/O scheduling class and priority"
8625 msgstr "ioprio_get, ioprio_set - I/O スケジューリングクラスと優先度の設定/取得"
8626
8627 #. type: Plain text
8628 #: build/C/man2/ioprio_set.2:31
8629 #, no-wrap
8630 msgid ""
8631 "B<int ioprio_get(int >I<which>B<, int >I<who>B<);>\n"
8632 "B<int ioprio_set(int >I<which>B<, int >I<who>B<, int >I<ioprio>B<);>\n"
8633 msgstr ""
8634 "B<int ioprio_get(int >I<which>B<, int >I<who>B<);>\n"
8635 "B<int ioprio_set(int >I<which>B<, int >I<who>B<, int >I<ioprio>B<);>\n"
8636
8637 #. type: Plain text
8638 #: build/C/man2/ioprio_set.2:35
8639 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
8640 msgstr ""
8641 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
8642 "の節を参照。"
8643
8644 #. type: Plain text
8645 #: build/C/man2/ioprio_set.2:42
8646 msgid ""
8647 "The B<ioprio_get>()  and B<ioprio_set>()  system calls respectively get and "
8648 "set the I/O scheduling class and priority of one or more threads."
8649 msgstr ""
8650 "システムコール B<ioprio_get>()  / B<ioprio_set>()  は、(1つ以上の) スレッド"
8651 "の I/O スケジューリングクラスと 優先度の取得/設定を行う。"
8652
8653 #. type: Plain text
8654 #: build/C/man2/ioprio_set.2:54
8655 msgid ""
8656 "The I<which> and I<who> arguments identify the thread(s) on which the system "
8657 "calls operate.  The I<which> argument determines how I<who> is interpreted, "
8658 "and has one of the following values:"
8659 msgstr ""
8660 "I<which> と I<who> 引き数でシステムコールの操作対象となるスレッドを指示す"
8661 "る。 I<which> 引き数は、 I<who> をどのように解釈するかを決めるもので、以下の"
8662 "いずれか一つを指定する。"
8663
8664 #. type: TP
8665 #: build/C/man2/ioprio_set.2:54
8666 #, no-wrap
8667 msgid "B<IOPRIO_WHO_PROCESS>"
8668 msgstr "B<IOPRIO_WHO_PROCESS>"
8669
8670 #. type: Plain text
8671 #: build/C/man2/ioprio_set.2:61
8672 msgid ""
8673 "I<who> is a process ID or thread ID identifying a single process or thread.  "
8674 "If I<who> is 0, then operate on the calling thread."
8675 msgstr ""
8676 "I<who> は特定のプロセスやスレッドを特定するためのプロセス ID かスレッド ID で"
8677 "ある。 I<who> が 0 の場合、呼び出し元のスレッドに対して操作が行われる。"
8678
8679 #. type: TP
8680 #: build/C/man2/ioprio_set.2:61
8681 #, no-wrap
8682 msgid "B<IOPRIO_WHO_PGRP>"
8683 msgstr "B<IOPRIO_WHO_PGRP>"
8684
8685 #. type: Plain text
8686 #: build/C/man2/ioprio_set.2:68
8687 msgid ""
8688 "I<who> is a process group ID identifying all the members of a process "
8689 "group.  If I<who> is 0, then operate on the process group of which the "
8690 "caller is a member."
8691 msgstr ""
8692 "I<who> はプロセスグループ ID であり、プロセスグループの全メンバが対象とな"
8693 "る。 I<who> が 0 の場合、 呼び出し元がメンバーとなっているプロセスグループに"
8694 "対して操作が行われる。"
8695
8696 #. type: TP
8697 #: build/C/man2/ioprio_set.2:68
8698 #, no-wrap
8699 msgid "B<IOPRIO_WHO_USER>"
8700 msgstr "B<IOPRIO_WHO_USER>"
8701
8702 #.  FIXME . Need to document the behavior when 'who" is specified as 0
8703 #.  See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652443
8704 #. type: Plain text
8705 #: build/C/man2/ioprio_set.2:75
8706 msgid ""
8707 "I<who> is a user ID identifying all of the processes that have a matching "
8708 "real UID."
8709 msgstr "I<who> はユーザID であり、実 UID に一致する全プロセスが対象となる。"
8710
8711 #. type: Plain text
8712 #: build/C/man2/ioprio_set.2:98
8713 msgid ""
8714 "If I<which> is specified as B<IOPRIO_WHO_PGRP> or B<IOPRIO_WHO_USER> when "
8715 "calling B<ioprio_get>(), and more than one process matches I<who>, then the "
8716 "returned priority will be the highest one found among all of the matching "
8717 "processes.  One priority is said to be higher than another one if it belongs "
8718 "to a higher priority class (B<IOPRIO_CLASS_RT> is the highest priority "
8719 "class; B<IOPRIO_CLASS_IDLE> is the lowest)  or if it belongs to the same "
8720 "priority class as the other process but has a higher priority level (a lower "
8721 "priority number means a higher priority level)."
8722 msgstr ""
8723 "B<ioprio_get>()  の呼び出し時に I<which> に B<IOPRIO_WHO_PGRP> か "
8724 "B<IOPRIO_WHO_USER> が指定され、 I<who> に一致するプロセスが複数あった場合、 "
8725 "一致するプロセス全体の中で最も高い優先度が返される。 優先度が高いとは、より高"
8726 "い優先度クラスに属している (B<IOPRIO_CLASS_RT> が最も高い優先度クラスで、 "
8727 "B<IOPRIO_CLASS_IDLE> が最も低い)、もしくは 同じ優先度クラスに属しているが優先"
8728 "度レベルが高い (優先度番号が小さい方が優先度レベルが高いことを意味する)、 と"
8729 "いうことである。"
8730
8731 #. type: Plain text
8732 #: build/C/man2/ioprio_set.2:108
8733 msgid ""
8734 "The I<ioprio> argument given to B<ioprio_set>()  is a bit mask that "
8735 "specifies both the scheduling class and the priority to be assigned to the "
8736 "target process(es).  The following macros are used for assembling and "
8737 "dissecting I<ioprio> values:"
8738 msgstr ""
8739 "B<ioprio_set>()  に渡す I<ioprio> 引き数は、対象となるプロセスに割り当てるス"
8740 "ケジューリングクラスと 優先度の両方を指定するビットマスクである。 I<ioprio> "
8741 "の値を組み立てたり解釈するのに、以下のマクロが利用できる。"
8742
8743 #. type: TP
8744 #: build/C/man2/ioprio_set.2:108
8745 #, no-wrap
8746 msgid "B<IOPRIO_PRIO_VALUE(>I<class>B<, >I<data>B<)>"
8747 msgstr "B<IOPRIO_PRIO_VALUE(>I<class>B<, >I<data>B<)>"
8748
8749 #. type: Plain text
8750 #: build/C/man2/ioprio_set.2:117
8751 msgid ""
8752 "Given a scheduling I<class> and priority (I<data>), this macro combines the "
8753 "two values to produce an I<ioprio> value, which is returned as the result of "
8754 "the macro."
8755 msgstr ""
8756 "スケジューリングクラス I<class> と優先度 (I<data>)  を与えると、このマクロは "
8757 "2つの値を組み合わせて、 I<ioprio> 値を生成し、マクロの結果として返す。"
8758
8759 #. type: TP
8760 #: build/C/man2/ioprio_set.2:117
8761 #, no-wrap
8762 msgid "B<IOPRIO_PRIO_CLASS(>I<mask>B<)>"
8763 msgstr "B<IOPRIO_PRIO_CLASS(>I<mask>B<)>"
8764
8765 #. type: Plain text
8766 #: build/C/man2/ioprio_set.2:129
8767 msgid ""
8768 "Given I<mask> (an I<ioprio> value), this macro returns its I/O class "
8769 "component, that is, one of the values B<IOPRIO_CLASS_RT>, "
8770 "B<IOPRIO_CLASS_BE>, or B<IOPRIO_CLASS_IDLE>."
8771 msgstr ""
8772 "I<mask> (I<ioprio> 値) を与えると、このマクロは I/O クラス要素、つまり "
8773 "B<IOPRIO_CLASS_RT>, B<IOPRIO_CLASS_BE>, B<IOPRIO_CLASS_IDLE> のいずれか一つの"
8774 "値を返す。"
8775
8776 #. type: TP
8777 #: build/C/man2/ioprio_set.2:129
8778 #, no-wrap
8779 msgid "B<IOPRIO_PRIO_DATA(>I<mask>B<)>"
8780 msgstr "B<IOPRIO_PRIO_DATA(>I<mask>B<)>"
8781
8782 #. type: Plain text
8783 #: build/C/man2/ioprio_set.2:138
8784 msgid ""
8785 "Given I<mask> (an I<ioprio> value), this macro returns its priority "
8786 "(I<data>)  component."
8787 msgstr ""
8788 "I<mask> (I<ioprio> 値) を与えると、このマクロは優先度 (I<data>)  要素を返す。"
8789
8790 #. type: Plain text
8791 #: build/C/man2/ioprio_set.2:141
8792 msgid ""
8793 "See the NOTES section for more information on scheduling classes and "
8794 "priorities."
8795 msgstr ""
8796 "スケジューリングクラスと優先度に関する詳しい情報は、 「備考」の節を参照のこ"
8797 "と。"
8798
8799 #. type: Plain text
8800 #: build/C/man2/ioprio_set.2:149
8801 msgid ""
8802 "I/O priorities are supported for reads and for synchronous (B<O_DIRECT>, "
8803 "B<O_SYNC>)  writes.  I/O priorities are not supported for asynchronous "
8804 "writes because they are issued outside the context of the program dirtying "
8805 "the memory, and thus program-specific priorities do not apply."
8806 msgstr ""
8807 "I/O 優先度は読み出しと同期書き込み (B<O_DIRECT>, B<O_SYNC>)  に対応してい"
8808 "る。 I/O 優先度は非同期書き込みには対応していない。なぜなら、 非同期書き込み"
8809 "はメモリ書き換えを行うプログラムの動作 (context) とは 関係なく発行され、その"
8810 "ためプログラム単位の優先度は適用されないから である。"
8811
8812 #. type: Plain text
8813 #: build/C/man2/ioprio_set.2:162
8814 msgid ""
8815 "On success, B<ioprio_get>()  returns the I<ioprio> value of the process with "
8816 "highest I/O priority of any of the processes that match the criteria "
8817 "specified in I<which> and I<who>.  On error, -1 is returned, and I<errno> is "
8818 "set to indicate the error."
8819 msgstr ""
8820 "成功すると、 B<ioprio_get>()  は、 I<which> と I<who> で指定された基準に合致"
8821 "した全プロセスで最も高い I/O 優先度を持つプロセスの I<ioprio> 値を返す。 エ"
8822 "ラーの場合、-1 を返し、 I<errno> にエラーを示す値を設定する。"
8823
8824 #. type: Plain text
8825 #: build/C/man2/ioprio_set.2:169
8826 msgid ""
8827 "On success, B<ioprio_set>()  returns 0.  On error, -1 is returned, and "
8828 "I<errno> is set to indicate the error."
8829 msgstr ""
8830 "成功すると、 B<ioprio_set>()  は 0 を返す。 エラーの場合、-1 を返し、 "
8831 "I<errno> にエラーを示す値を設定する。"
8832
8833 #. type: Plain text
8834 #: build/C/man2/ioprio_set.2:179
8835 msgid ""
8836 "Invalid value for I<which> or I<ioprio>.  Refer to the NOTES section for "
8837 "available scheduler classes and priority levels for I<ioprio>."
8838 msgstr ""
8839 "I<which> か I<ioprio> の値が不正である。 I<ioprio> 用に指定可能なスケジューラ"
8840 "クラスと優先度レベルについては 「備考」を参照のこと。"
8841
8842 #. type: Plain text
8843 #: build/C/man2/ioprio_set.2:187
8844 msgid ""
8845 "The calling process does not have the privilege needed to assign this "
8846 "I<ioprio> to the specified process(es).  See the NOTES section for more "
8847 "information on required privileges for B<ioprio_set>()."
8848 msgstr ""
8849 "呼び出し元プロセスが、指定されたプロセスに I<ioprio> を割り当てるのに必要な権"
8850 "限を持っていない。 B<ioprio_set>()  に必要な権限についての詳しい情報は「備"
8851 "考」の節を参照のこと。"
8852
8853 #. type: Plain text
8854 #: build/C/man2/ioprio_set.2:193
8855 msgid ""
8856 "No process(es) could be found that matched the specification in I<which> and "
8857 "I<who>."
8858 msgstr ""
8859 "I<which> と I<who> で指定された基準に合致するプロセスが見つからなかった。"
8860
8861 #. type: Plain text
8862 #: build/C/man2/ioprio_set.2:196
8863 msgid "These system calls have been available on Linux since kernel 2.6.13."
8864 msgstr ""
8865 "これらのシステムコールはカーネル 2.6.13 以降の Linux で利用可能である。"
8866
8867 #. type: Plain text
8868 #: build/C/man2/ioprio_set.2:201
8869 msgid ""
8870 "Glibc does not provide a wrapper for these system calls; call them using "
8871 "B<syscall>(2)."
8872 msgstr ""
8873 "glibc はこれらのシステムコールに対するラッパー関数を提供していない。 "
8874 "B<syscall>(2)  を使って呼び出すこと。"
8875
8876 #. type: Plain text
8877 #: build/C/man2/ioprio_set.2:220
8878 msgid ""
8879 "Two or more processes or threads can share an I/O context.  This will be the "
8880 "case when B<clone>(2)  was called with the B<CLONE_IO> flag.  However, by "
8881 "default, the distinct threads of a process will B<not> share the same I/O "
8882 "context.  This means that if you want to change the I/O priority of all "
8883 "threads in a process, you may need to call B<ioprio_set>()  on each of the "
8884 "threads.  The thread ID that you would need for this operation is the one "
8885 "that is returned by B<gettid>(2)  or B<clone>(2)."
8886 msgstr ""
8887 "複数のプロセスやスレッドが一つの I/O コンテキストを共有する場合がある。 "
8888 "B<clone>(2) を B<CLONE_IO> フラグ付きで呼び出した場合にはこの状況となる。 し"
8889 "かしながら、デフォルトでは、一つのプロセスの個々のスレッドは I/O コンテキスト"
8890 "を共有「しない」。 したがって、 プロセス内のすべてのスレッドの I/O 優先度を変"
8891 "更したい場合には、 それぞれのスレッドに対して B<ioprio_set>() を呼び出す必要"
8892 "がある。 この操作を行うのに必要となるスレッド ID には B<gettid>(2) か "
8893 "B<clone>(2) が返す値を指定する。"
8894
8895 #. type: Plain text
8896 #: build/C/man2/ioprio_set.2:225
8897 msgid ""
8898 "These system calls have an effect only when used in conjunction with an I/O "
8899 "scheduler that supports I/O priorities.  As at kernel 2.6.17 the only such "
8900 "scheduler is the Completely Fair Queuing (CFQ) I/O scheduler."
8901 msgstr ""
8902 "これらのシステムコールは、I/O 優先度に対応した I/O スケジューラと 組み合わせ"
8903 "て使用された場合にのみ効果を持つ。 カーネル 2.6.17 では、この条件を満たすスケ"
8904 "ジューラは Completely Fair Queuing (CFQ) I/O スケジューラだけである。"
8905
8906 #. type: SS
8907 #: build/C/man2/ioprio_set.2:225
8908 #, no-wrap
8909 msgid "Selecting an I/O scheduler"
8910 msgstr "I/O スケジューラの選択"
8911
8912 #. type: Plain text
8913 #: build/C/man2/ioprio_set.2:229
8914 msgid ""
8915 "I/O Schedulers are selected on a per-device basis via the special file I</"
8916 "sys/block/E<lt>deviceE<gt>/queue/scheduler>."
8917 msgstr ""
8918 "I/O スケジューラの選択はデバイス単位に行われ、その選択は スペシャルファイル "
8919 "I</sys/block/E<lt>deviceE<gt>/queue/scheduler> 経由で行われる。"
8920
8921 #. type: Plain text
8922 #: build/C/man2/ioprio_set.2:235
8923 msgid ""
8924 "One can view the current I/O scheduler via the I</sys> filesystem.  For "
8925 "example, the following command displays a list of all schedulers currently "
8926 "loaded in the kernel:"
8927 msgstr ""
8928 "現在の I/O スケジューラは I</sys> ファイルシステム経由で参照できる。例えば、"
8929 "以下のコマンドを実行すると、 現在カーネルでロードされているスケジューラの全リ"
8930 "ストが表示される。"
8931
8932 #. type: Plain text
8933 #: build/C/man2/ioprio_set.2:240
8934 #, no-wrap
8935 msgid ""
8936 "$B< cat /sys/block/hda/queue/scheduler>\n"
8937 "noop anticipatory deadline [cfq]\n"
8938 msgstr ""
8939 "$B< cat /sys/block/hda/queue/scheduler>\n"
8940 "noop anticipatory deadline [cfq]\n"
8941
8942 #. type: Plain text
8943 #: build/C/man2/ioprio_set.2:254
8944 msgid ""
8945 "The scheduler surrounded by brackets is the one actually in use for the "
8946 "device (I<hda> in the example).  Setting another scheduler is done by "
8947 "writing the name of the new scheduler to this file.  For example, the "
8948 "following command will set the scheduler for the I<hda> device to I<cfq>:"
8949 msgstr ""
8950 "括弧で囲まれたスケジューラがそのデバイス (上の例では I<hda>)  について実際に"
8951 "使用されているスケジューラである。 別のスケジューラを設定するには、このファイ"
8952 "ルに新しいスケジューラ名を 書き込めばよい。例えば、以下のコマンドを実行する"
8953 "と、デバイス I<hda> のスケジューラとして I<cfq> が設定される。"
8954
8955 #. type: Plain text
8956 #: build/C/man2/ioprio_set.2:260
8957 #, no-wrap
8958 msgid ""
8959 "$B< su>\n"
8960 "Password:\n"
8961 "#B< echo cfq E<gt> /sys/block/hda/queue/scheduler>\n"
8962 msgstr ""
8963 "$B< su>\n"
8964 "Password:\n"
8965 "#B< echo cfq E<gt> /sys/block/hda/queue/scheduler>\n"
8966
8967 #. type: SS
8968 #: build/C/man2/ioprio_set.2:262
8969 #, no-wrap
8970 msgid "The Completely Fair Queuing (CFQ) I/O scheduler"
8971 msgstr "Completely Fair Queuing (CFQ) I/O スケジューラ"
8972
8973 #. type: Plain text
8974 #: build/C/man2/ioprio_set.2:268
8975 msgid ""
8976 "Since v3 (aka CFQ Time Sliced) CFQ implements I/O nice levels similar to "
8977 "those of CPU scheduling.  These nice levels are grouped in three scheduling "
8978 "classes each one containing one or more priority levels:"
8979 msgstr ""
8980 "バージョン 3 (別名 CFQ Time Sliced) 以降、 CPU スケジューリングと同様の I/O "
8981 "nice レベルが CFQ に実装されている。 これらの nice レベルは 3つのスケジューリ"
8982 "ングクラスに分類でき、 各スケジューリングクラスにつき 1つ以上の優先度レベルが"
8983 "定義されている。"
8984
8985 #. type: TP
8986 #: build/C/man2/ioprio_set.2:268
8987 #, no-wrap
8988 msgid "B<IOPRIO_CLASS_RT> (1)"
8989 msgstr "B<IOPRIO_CLASS_RT> (1)"
8990
8991 #. type: Plain text
8992 #: build/C/man2/ioprio_set.2:283
8993 msgid ""
8994 "This is the real-time I/O class.  This scheduling class is given higher "
8995 "priority than any other class: processes from this class are given first "
8996 "access to the disk every time.  Thus this I/O class needs to be used with "
8997 "some care: one I/O real-time process can starve the entire system.  Within "
8998 "the real-time class, there are 8 levels of class data (priority) that "
8999 "determine exactly how much time this process needs the disk for on each "
9000 "service.  The highest real-time priority level is 0; the lowest is 7.  In "
9001 "the future this might change to be more directly mappable to performance, by "
9002 "passing in a desired data rate instead."
9003 msgstr ""
9004 "これはリアルタイム I/O クラスである。 このスケジューリングクラスには他のクラ"
9005 "スよりも高い優先度が与えられる。 このクラスのプロセスには、常にディスクへのア"
9006 "クセスが優先して 割り当てられる。そのため、この I/O クラスを使う際には、 たっ"
9007 "た一つの リアルタイム I/O クラスのプロセスにより システム全体のディスクアクセ"
9008 "スができなくなってしまうことがある という点に、注意を払う必要がある。 このク"
9009 "ラスには、8 段階の class data (優先度レベル) がある。 この値は、そのプロセス"
9010 "が 1回のディスクアクセスにどれだけの 時間が必要かを正確に決めるためのものであ"
9011 "る。 最高のリアルタイム優先度レベルは 0 で、最低は 7 である。 将来的には、優"
9012 "先度レベルは、希望するデータレートを渡すなど、 より直接的に性能条件を反映でき"
9013 "るように変更されるかもしれない。"
9014
9015 #. type: TP
9016 #: build/C/man2/ioprio_set.2:283
9017 #, no-wrap
9018 msgid "B<IOPRIO_CLASS_BE> (2)"
9019 msgstr "B<IOPRIO_CLASS_BE> (2)"
9020
9021 #. type: Plain text
9022 #: build/C/man2/ioprio_set.2:296
9023 msgid ""
9024 "This is the best-effort scheduling class, which is the default for any "
9025 "process that hasn't set a specific I/O priority.  The class data (priority) "
9026 "determines how much I/O bandwidth the process will get.  Best-effort "
9027 "priority levels are analogous to CPU nice values (see B<getpriority>(2)).  "
9028 "The priority level determines a priority relative to other processes in the "
9029 "best-effort scheduling class.  Priority levels range from 0 (highest) to 7 "
9030 "(lowest)."
9031 msgstr ""
9032 "これは ベストエフォート・スケジューリングクラスである。 このクラスは、特定の "
9033 "I/O 優先度を設定していないプロセスの デフォルト値である。 class data (優先度"
9034 "レベル) により、そのプロセスがどの程度の I/O 帯域を得られるかが決定される。 "
9035 "ベストエフォート・優先度レベルは、CPU の nice 値 (B<getpriority>(2)  参照) と"
9036 "同様のものである。 優先度レベルは、ベストエフォート・スケジューリングクラスの"
9037 "中で 他のプロセスとの相対的な優先度を決定する。 優先度レベルの値の範囲は 0 "
9038 "(最高) から 7 (最低) である。"
9039
9040 #. type: TP
9041 #: build/C/man2/ioprio_set.2:296
9042 #, no-wrap
9043 msgid "B<IOPRIO_CLASS_IDLE> (3)"
9044 msgstr "B<IOPRIO_CLASS_IDLE> (3)"
9045
9046 #. type: Plain text
9047 #: build/C/man2/ioprio_set.2:305
9048 msgid ""
9049 "This is the idle scheduling class.  Processes running at this level only get "
9050 "I/O time when no-one else needs the disk.  The idle class has no class "
9051 "data.  Attention is required when assigning this priority class to a "
9052 "process, since it may become starved if higher priority processes are "
9053 "constantly accessing the disk."
9054 msgstr ""
9055 "これは idle スケジューリングクラスである。 このレベルで動作するプロセスは他に"
9056 "ディスクアクセスをしようとする プロセスがない場合にのみ I/O 時間を取得する。 "
9057 "idle クラスには class data (優先度) は用意されていない。 プロセスにこの優先度"
9058 "を割り当てる際には注意が必要である。 なぜなら、優先度の高いプロセスが常にディ"
9059 "スクにアクセスしている場合には ディスクにアクセスできなくなる可能性があるから"
9060 "だ。"
9061
9062 #. type: Plain text
9063 #: build/C/man2/ioprio_set.2:309
9064 msgid ""
9065 "Refer to I<Documentation/block/ioprio.txt> for more information on the CFQ I/"
9066 "O Scheduler and an example program."
9067 msgstr ""
9068 "CFQ I/O スケジューラの更なる情報とサンプルプログラムについては "
9069 "I<Documentation/block/ioprio.txt> を参照のこと。"
9070
9071 #. type: SS
9072 #: build/C/man2/ioprio_set.2:309
9073 #, no-wrap
9074 msgid "Required permissions to set I/O priorities"
9075 msgstr "I/O 優先度の設定に必要な許可"
9076
9077 #. type: Plain text
9078 #: build/C/man2/ioprio_set.2:312
9079 msgid ""
9080 "Permission to change a process's priority is granted or denied based on two "
9081 "assertions:"
9082 msgstr ""
9083 "プロセスの優先度を変更する許可が得られるかどうかは 以下の 2つの条件に基いて決"
9084 "定される。"
9085
9086 #. type: TP
9087 #: build/C/man2/ioprio_set.2:312
9088 #, no-wrap
9089 msgid "B<Process ownership>"
9090 msgstr "B<プロセスの所有権>"
9091
9092 #. type: Plain text
9093 #: build/C/man2/ioprio_set.2:320
9094 msgid ""
9095 "An unprivileged process may set only the I/O priority of a process whose "
9096 "real UID matches the real or effective UID of the calling process.  A "
9097 "process which has the B<CAP_SYS_NICE> capability can change the priority of "
9098 "any process."
9099 msgstr ""
9100 "非特権プロセスは、プロセスの実 UID が呼び出し元プロセスの実 UID もしくは 実"
9101 "効 UID と一致するプロセスの I/O 優先度のみを設定できる。 B<CAP_SYS_NICE> ケー"
9102 "パビリティを持つプロセスは、どのプロセスの優先度でも変更できる。"
9103
9104 #. type: TP
9105 #: build/C/man2/ioprio_set.2:320
9106 #, no-wrap
9107 msgid "B<What is the desired priority>"
9108 msgstr "B<どの優先度に設定しようとしているか>"
9109
9110 #. type: Plain text
9111 #: build/C/man2/ioprio_set.2:332
9112 msgid ""
9113 "Attempts to set very high priorities (B<IOPRIO_CLASS_RT>)  require the "
9114 "B<CAP_SYS_ADMIN> capability.  Kernel versions up to 2.6.24 also required "
9115 "B<CAP_SYS_ADMIN> to set a very low priority (B<IOPRIO_CLASS_IDLE>), but "
9116 "since Linux 2.6.25, this is no longer required."
9117 msgstr ""
9118 "非常に高い優先度 (B<IOPRIO_CLASS_RT>)  を設定しようとする場合、 "
9119 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。 カーネル 2.6.24 以前では、非常"
9120 "に低い優先度 (B<IOPRIO_CLASS_IDLE>)  を設定するためにも B<CAP_SYS_ADMIN> ケー"
9121 "パビリティが必要であったが、 Linux 2.6.25 以降ではもはや必要なくなった。"
9122
9123 #. type: Plain text
9124 #: build/C/man2/ioprio_set.2:337
9125 msgid ""
9126 "A call to B<ioprio_set>()  must follow both rules, or the call will fail "
9127 "with the error B<EPERM>."
9128 msgstr ""
9129 "B<ioprio_set>()  はこの両方のルールに従い、条件を満たさない場合、エラー "
9130 "B<EPERM> で失敗する。"
9131
9132 #.  6 May 07: Bug report raised:
9133 #.  http://sources.redhat.com/bugzilla/show_bug.cgi?id=4464
9134 #.  Ulrich Drepper replied that he wasn't going to add these
9135 #.  to glibc.
9136 #. type: Plain text
9137 #: build/C/man2/ioprio_set.2:346
9138 msgid ""
9139 "Glibc does not yet provide a suitable header file defining the function "
9140 "prototypes and macros described on this page.  Suitable definitions can be "
9141 "found in I<linux/ioprio.h>."
9142 msgstr ""
9143 "glibc は、このページに記載された関数プロトタイプやマクロを定義する 適切なヘッ"
9144 "ダファイルをまだ提供していない。 必要な定義については I<linux/ioprio.h> を見"
9145 "ればよい。"
9146
9147 #. type: Plain text
9148 #: build/C/man2/ioprio_set.2:351
9149 msgid "B<ionice>(1), B<getpriority>(2), B<open>(2), B<capabilities>(7)"
9150 msgstr "B<ionice>(1), B<getpriority>(2), B<open>(2), B<capabilities>(7)"
9151
9152 #. type: Plain text
9153 #: build/C/man2/ioprio_set.2:354
9154 msgid "I<Documentation/block/ioprio.txt> in the Linux kernel source tree"
9155 msgstr "Linux カーネルソース内の I<Documentation/block/ioprio.txt>"
9156
9157 #. type: TH
9158 #: build/C/man2/ipc.2:25
9159 #, no-wrap
9160 msgid "IPC"
9161 msgstr "IPC"
9162
9163 #. type: TH
9164 #: build/C/man2/ipc.2:25
9165 #, no-wrap
9166 msgid "2012-10-16"
9167 msgstr "2012-10-16"
9168
9169 #. type: Plain text
9170 #: build/C/man2/ipc.2:28
9171 msgid "ipc - System V IPC system calls"
9172 msgstr "ipc - System V IPC システムコール"
9173
9174 #. type: Plain text
9175 #: build/C/man2/ipc.2:33
9176 #, no-wrap
9177 msgid ""
9178 "B<int ipc(unsigned int >I<call>B<, int >I<first>B<, int >I<second>B<, int >I<third>B<,>\n"
9179 "B<        void *>I<ptr>B<, long >I<fifth>B<);>\n"
9180 msgstr ""
9181 "B<int ipc(unsigned int >I<call>B<, int >I<first>B<, int >I<second>B<, int >I<third>B<,>\n"
9182 "B<        void *>I<ptr>B<, long >I<fifth>B<);>\n"
9183
9184 #. type: Plain text
9185 #: build/C/man2/ipc.2:41
9186 msgid ""
9187 "B<ipc>()  is a common kernel entry point for the System\\ V IPC calls for "
9188 "messages, semaphores, and shared memory.  I<call> determines which IPC "
9189 "function to invoke; the other arguments are passed through to the "
9190 "appropriate call."
9191 msgstr ""
9192 "B<ipc>()  は メッセージ、セマフォー、共有メモリに関する System\\ V IPC コール"
9193 "の 共通のカーネルへのエントリポイントである。 I<call> はどの IPC 関数を呼び出"
9194 "すかを決め; 他の引き数は適切なコールへと渡される。"
9195
9196 #. type: Plain text
9197 #: build/C/man2/ipc.2:45
9198 msgid ""
9199 "User programs should call the appropriate functions by their usual names.  "
9200 "Only standard library implementors and kernel hackers need to know about "
9201 "B<ipc>()."
9202 msgstr ""
9203 "ユーザープログラムは通常の名前で適切な関数を呼び出すべきである。 標準ライブラ"
9204 "リの実装者やカーネルハッカーのみが B<ipc>()  について知る必要がある。"
9205
9206 #. type: Plain text
9207 #: build/C/man2/ipc.2:49
9208 msgid ""
9209 "B<ipc>()  is Linux-specific, and should not be used in programs intended to "
9210 "be portable."
9211 msgstr ""
9212 "B<ipc>()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけな"
9213 "い。"
9214
9215 #. type: Plain text
9216 #: build/C/man2/ipc.2:57
9217 msgid ""
9218 "On some architectures\\(emfor example x86-64 and ARM\\(emthere is no "
9219 "B<ipc>()  system call; instead B<msgctl>(2), B<semctl>(2), B<shmctl>(2), and "
9220 "so on really are implemented as separate system calls."
9221 msgstr ""
9222 "いくつかのアーキテクチャ\\(emfor 例えば x86-64 や ARM\\(emでは、システムコー"
9223 "ル B<ipc>()  が存在しない。実際には、その代わりに B<msgctl>(2), "
9224 "B<semctl>(2), B<shmctl>(2)  などが独立したシステムコールとして実装されてい"
9225 "る。"
9226
9227 #. type: Plain text
9228 #: build/C/man2/ipc.2:70
9229 msgid ""
9230 "B<msgctl>(2), B<msgget>(2), B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), "
9231 "B<semget>(2), B<semop>(2), B<semtimedop>(2), B<shmat>(2), B<shmctl>(2), "
9232 "B<shmdt>(2), B<shmget>(2)"
9233 msgstr ""
9234 "B<msgctl>(2), B<msgget>(2), B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), "
9235 "B<semget>(2), B<semop>(2), B<shmat>(2), B<shmctl>(2), B<shmdt>(2), "
9236 "B<shmget>(2)"
9237
9238 #. type: TH
9239 #: build/C/man7/namespaces.7:27
9240 #, no-wrap
9241 msgid "NAMESPACES"
9242 msgstr "NAMESPACES"
9243
9244 #. type: Plain text
9245 #: build/C/man7/namespaces.7:30
9246 msgid "namespaces - overview of Linux namespaces"
9247 msgstr "namespaces - Linux 名前空間の概要"
9248
9249 #. type: Plain text
9250 #: build/C/man7/namespaces.7:37
9251 msgid ""
9252 "A namespace wraps a global system resource in an abstraction that makes it "
9253 "appear to the processes within the namespace that they have their own "
9254 "isolated instance of the global resource.  Changes to the global resource "
9255 "are visible to other processes that are members of the namespace, but are "
9256 "invisible to other processes.  One use of namespaces is to implement "
9257 "containers."
9258 msgstr ""
9259 "名前空間は、 グローバルシステムリソースを抽象化層で覆うことで、 名前空間内の"
9260 "プロセスに対して、 自分たちが専用の分離されたグローバルリソースを持っているか"
9261 "のように見せる仕組みである。 グローバルリソースへの変更は、 名前空間のメン"
9262 "バーである他のプロセスには見えるが、 それ以外のプロセスには見えない。 名前空"
9263 "間の一つの利用方法はコンテナーの実装である。"
9264
9265 #. type: Plain text
9266 #: build/C/man7/namespaces.7:39
9267 msgid "Linux provides the following namespaces:"
9268 msgstr "Linux では以下の名前空間が提供される。"
9269
9270 #. type: tbl table
9271 #: build/C/man7/namespaces.7:42
9272 #, no-wrap
9273 msgid "Namespace\tConstant\tIsolates\n"
9274 msgstr "名前空間\t定数\t分離対象\n"
9275
9276 #. type: tbl table
9277 #: build/C/man7/namespaces.7:43
9278 #, no-wrap
9279 msgid "IPC\tCLONE_NEWIPC\tSystem V IPC, POSIX message queues\n"
9280 msgstr "IPC\tCLONE_NEWIPC\tSystem V IPC, POSIX メッセージキュー\n"
9281
9282 #. type: tbl table
9283 #: build/C/man7/namespaces.7:44
9284 #, no-wrap
9285 msgid "Network\tCLONE_NEWNET\tNetwork devices, stacks, ports, etc.\n"
9286 msgstr "Network\tCLONE_NEWNET\tネットワークデバイス、スタック、ポートなど\n"
9287
9288 #. type: tbl table
9289 #: build/C/man7/namespaces.7:45
9290 #, no-wrap
9291 msgid "Mount\tCLONE_NEWNS\tMount points\n"
9292 msgstr "Mount\tCLONE_NEWNS\tマウントポイント\n"
9293
9294 #. type: tbl table
9295 #: build/C/man7/namespaces.7:46
9296 #, no-wrap
9297 msgid "PID\tCLONE_NEWPID\tProcess IDs\n"
9298 msgstr "PID\tCLONE_NEWPID\tプロセス ID\n"
9299
9300 #. type: tbl table
9301 #: build/C/man7/namespaces.7:47
9302 #, no-wrap
9303 msgid "User\tCLONE_NEWUSER\tUser and group IDs\n"
9304 msgstr "User\tCLONE_NEWUSER\tユーザー ID とグループ ID\n"
9305
9306 #. type: tbl table
9307 #: build/C/man7/namespaces.7:48
9308 #, no-wrap
9309 msgid "UTS\tCLONE_NEWUTS\tHostname and NIS domain name\n"
9310 msgstr "UTS\tCLONE_NEWUTS\tホスト名と NIS ドメイン名\n"
9311
9312 #
9313 #.  ==================== The namespaces API ====================
9314 #. type: Plain text
9315 #: build/C/man7/namespaces.7:57
9316 msgid ""
9317 "This page describes the various namespaces and the associated I</proc> "
9318 "files, and summarizes the APIs for working with namespaces."
9319 msgstr ""
9320 "このページでは、各種の名前空間と関連する I</proc> ファイルの説明と、名前空間"
9321 "とともに動作する API の概要を紹介する。"
9322
9323 #. type: SS
9324 #: build/C/man7/namespaces.7:57
9325 #, no-wrap
9326 msgid "The namespaces API"
9327 msgstr "名前空間 API"
9328
9329 #. type: Plain text
9330 #: build/C/man7/namespaces.7:62
9331 msgid ""
9332 "As well as various I</proc> files described below, the namespaces API "
9333 "includes the following system calls:"
9334 msgstr ""
9335 "後で説明する種々の I</proc> ファイル以外に、名前空間 API として以下のシステム"
9336 "コールがある。"
9337
9338 #. type: TP
9339 #: build/C/man7/namespaces.7:62
9340 #, no-wrap
9341 msgid "B<clone>(2)"
9342 msgstr "B<clone>(2)"
9343
9344 #. type: Plain text
9345 #: build/C/man7/namespaces.7:75
9346 msgid ""
9347 "The B<clone>(2)  system call creates a new process.  If the I<flags> "
9348 "argument of the call specifies one or more of the B<CLONE_NEW*> flags listed "
9349 "below, then new namespaces are created for each flag, and the child process "
9350 "is made a member of those namespaces.  (This system call also implements a "
9351 "number of features unrelated to namespaces.)"
9352 msgstr ""
9353 "B<clone>(2) システムコールは新しいプロセスを作成する。 呼び出し時に I<flags> "
9354 "引き数で以下のリストにある B<CLONE_NEW*> のフラグを一つ以上指定すると、 各フ"
9355 "ラグに対応する新しい名前空間が作成され、 子プロセスはこれらの名前空間のメン"
9356 "バーになる。 (このシステムコールは名前空間とは関係のない機能も多数実装してい"
9357 "る。)"
9358
9359 #. type: TP
9360 #: build/C/man7/namespaces.7:75
9361 #, no-wrap
9362 msgid "B<setns>(2)"
9363 msgstr "B<setns>(2)"
9364
9365 #. type: Plain text
9366 #: build/C/man7/namespaces.7:84
9367 msgid ""
9368 "The B<setns>(2)  system call allows the calling process to join an existing "
9369 "namespace.  The namespace to join is specified via a file descriptor that "
9370 "refers to one of the I</proc/[pid]/ns> files described below."
9371 msgstr ""
9372 "B<setns>(2) システムコールを使うと、呼び出したプロセスを既存の名前空間に参加"
9373 "させることができる。 参加する名前空間は、 以下で説明する I</proc/[pid]/ns> "
9374 "ファイルのいずれか一つを参照するファイルディスクリプタを使って指定する。"
9375
9376 #. type: TP
9377 #: build/C/man7/namespaces.7:84
9378 #, no-wrap
9379 msgid "B<unshare>(2)"
9380 msgstr "B<unshare>(2)"
9381
9382 #. type: Plain text
9383 #: build/C/man7/namespaces.7:97
9384 msgid ""
9385 "The B<unshare>(2)  system call moves the calling process to a new "
9386 "namespace.  If the I<flags> argument of the call specifies one or more of "
9387 "the B<CLONE_NEW*> flags listed below, then new namespaces are created for "
9388 "each flag, and the calling process is made a member of those namespaces.  "
9389 "(This system call also implements a number of features unrelated to "
9390 "namespaces.)"
9391 msgstr ""
9392 "B<unshare>(2) システムコールは、 呼び出したプロセスを新しい名前空間に移動す"
9393 "る。 呼び出し時の I<flags> 引き数に以下のリストにある B<CLONE_NEW*> フラグを"
9394 "一つ以上指定すると、 各フラグに対応する新しい名前空間が作成され、 呼び出した"
9395 "プロセスがこれらの名前空間のメンバーになる。 (このシステムコールは名前空間と"
9396 "は関係のない機能も多数実装している。)"
9397
9398 #
9399 #.  ==================== The /proc/[pid]/ns/ directory ====================
9400 #. type: Plain text
9401 #: build/C/man7/namespaces.7:110
9402 msgid ""
9403 "Creation of new namespaces using B<clone>(2)  and B<unshare>(2)  in most "
9404 "cases requires the B<CAP_SYS_ADMIN> capability.  User namespaces are the "
9405 "exception: since Linux 3.8, no privilege is required to create a user "
9406 "namespace."
9407 msgstr ""
9408 "B<clone>(2) と B<unshare>(2) を使った新しい名前空間の作成のほとんどの場合で "
9409 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。 ユーザー名前空間は例外で、 "
9410 "Linux 3.8 以降ではユーザー名前空間を作成するのに特権が不要である。"
9411
9412 #. type: SS
9413 #: build/C/man7/namespaces.7:110
9414 #, no-wrap
9415 msgid "The /proc/[pid]/ns/ directory"
9416 msgstr "/proc/[pid]/ns/ ディレクトリ"
9417
9418 #.  See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
9419 #. type: Plain text
9420 #: build/C/man7/namespaces.7:117
9421 msgid ""
9422 "Each process has a I</proc/[pid]/ns/> subdirectory containing one entry for "
9423 "each namespace that supports being manipulated by B<setns>(2):"
9424 msgstr ""
9425 "各プロセスには I</proc/[pid]/ns/> サブディレクトリがあり、 このサブディレクト"
9426 "リには B<setns>(2) での操作がサポートされている名前空間単位にエントリが存在す"
9427 "る。"
9428
9429 #. type: Plain text
9430 #: build/C/man7/namespaces.7:128
9431 #, no-wrap
9432 msgid ""
9433 "$ B<ls -l /proc/$$/ns>\n"
9434 "total 0\n"
9435 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -E<gt> ipc:[4026531839]\n"
9436 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -E<gt> mnt:[4026531840]\n"
9437 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -E<gt> net:[4026531956]\n"
9438 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -E<gt> pid:[4026531836]\n"
9439 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -E<gt> user:[4026531837]\n"
9440 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -E<gt> uts:[4026531838]\n"
9441 msgstr ""
9442 "$ B<ls -l /proc/$$/ns>\n"
9443 "total 0\n"
9444 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -E<gt> ipc:[4026531839]\n"
9445 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -E<gt> mnt:[4026531840]\n"
9446 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -E<gt> net:[4026531956]\n"
9447 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -E<gt> pid:[4026531836]\n"
9448 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -E<gt> user:[4026531837]\n"
9449 "lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -E<gt> uts:[4026531838]\n"
9450
9451 #. type: Plain text
9452 #: build/C/man7/namespaces.7:138
9453 msgid ""
9454 "Bind mounting (see B<mount>(2))  one of the files in this directory to "
9455 "somewhere else in the filesystem keeps the corresponding namespace of the "
9456 "process specified by I<pid> alive even if all processes currently in the "
9457 "namespace terminate."
9458 msgstr ""
9459 "このディレクトリ内のファイルのいずれかをファイルシステムの他のどこかにバイン"
9460 "ドマウント (B<mount>(2) 参照) することで、 その名前空間のすべてのプロセスが終"
9461 "了した場合でも、 I<pid> で指定したプロセスの対応する名前空間を保持することが"
9462 "できる。"
9463
9464 #. type: Plain text
9465 #: build/C/man7/namespaces.7:149
9466 msgid ""
9467 "Opening one of the files in this directory (or a file that is bind mounted "
9468 "to one of these files)  returns a file handle for the corresponding "
9469 "namespace of the process specified by I<pid>.  As long as this file "
9470 "descriptor remains open, the namespace will remain alive, even if all "
9471 "processes in the namespace terminate.  The file descriptor can be passed to "
9472 "B<setns>(2)."
9473 msgstr ""
9474 "このディレクトリ内のファイルのいずれか (またはこれらのファイルのいずれかにバ"
9475 "インドマウントされたファイル) をオープンすると、 I<pid> で指定されたプロセス"
9476 "の対応する名前空間に対するファイルハンドルが返される。 このファイルディスクリ"
9477 "プタがオープンされている限り、 その名前空間のすべてのプロセスが終了した場合で"
9478 "あっても、 その名前空間は存在し続ける。 このファイルディスクリプタは "
9479 "B<setns>(2) に渡すことができる。"
9480
9481 #. type: Plain text
9482 #: build/C/man7/namespaces.7:160
9483 msgid ""
9484 "In Linux 3.7 and earlier, these files were visible as hard links.  Since "
9485 "Linux 3.8, they appear as symbolic links.  If two processes are in the same "
9486 "namespace, then the inode numbers of their I</proc/[pid]/ns/xxx> symbolic "
9487 "links will be the same; an application can check this using the I<stat."
9488 "st_ino> field returned by B<stat>(2).  The content of this symbolic link is "
9489 "a string containing the namespace type and inode number as in the following "
9490 "example:"
9491 msgstr ""
9492 "Linux 3.7 以前では、これらのファイルはハードリンクとして見えていた。 Linux "
9493 "3.8 以降では、これらはシンボリックリンクとして見える。 2 つのプロセスが同じ名"
9494 "前空間に所属している場合、 これらのプロセスの I</proc/[pid]/ns/xxx> シンボ"
9495 "リックリンクの inode 番号は同じになる。 アプリケーションは、 B<stat>(2) が返"
9496 "す I<stat.st_ino> フィールドを使ってこれを確認することができる。 シンボリック"
9497 "リンクの内容は、 以下の例にあるように、名前空間種別と inode 番号を含む文字列"
9498 "である。"
9499
9500 #. type: Plain text
9501 #: build/C/man7/namespaces.7:165
9502 #, no-wrap
9503 msgid ""
9504 "$ B<readlink /proc/$$/ns/uts>\n"
9505 "uts:[4026531838]\n"
9506 msgstr ""
9507 "$ B<readlink /proc/$$/ns/uts>\n"
9508 "uts:[4026531838]\n"
9509
9510 #. type: Plain text
9511 #: build/C/man7/namespaces.7:169
9512 msgid "The files in this subdirectory are as follows:"
9513 msgstr "このサブディレクトリのファイルは以下のとおりである。"
9514
9515 #. type: TP
9516 #: build/C/man7/namespaces.7:169
9517 #, no-wrap
9518 msgid "I</proc/[pid]/ns/ipc> (since Linux 3.0)"
9519 msgstr "I</proc/[pid]/ns/ipc> (Linux 3.0 以降)"
9520
9521 #. type: Plain text
9522 #: build/C/man7/namespaces.7:172
9523 msgid "This file is a handle for the IPC namespace of the process."
9524 msgstr "このファイルはそのプロセスの IPC 名前空間の操作用である。"
9525
9526 #. type: TP
9527 #: build/C/man7/namespaces.7:172
9528 #, no-wrap
9529 msgid "I</proc/[pid]/ns/mnt> (since Linux 3.8)"
9530 msgstr "I</proc/[pid]/ns/mnt> (Linux 3.8 以降)"
9531
9532 #. type: Plain text
9533 #: build/C/man7/namespaces.7:175
9534 msgid "This file is a handle for the mount namespace of the process."
9535 msgstr "このファイルはそのプロセスのマウント名前空間の操作用である。"
9536
9537 #. type: TP
9538 #: build/C/man7/namespaces.7:175
9539 #, no-wrap
9540 msgid "I</proc/[pid]/ns/net> (since Linux 3.0)"
9541 msgstr "I</proc/[pid]/ns/net> (Linux 3.0 以降)"
9542
9543 #. type: Plain text
9544 #: build/C/man7/namespaces.7:178
9545 msgid "This file is a handle for the network namespace of the process."
9546 msgstr "このファイルはそのプロセスのネットワーク名前空間の操作用である。"
9547
9548 #. type: TP
9549 #: build/C/man7/namespaces.7:178
9550 #, no-wrap
9551 msgid "I</proc/[pid]/ns/pid> (since Linux 3.8)"
9552 msgstr "I</proc/[pid]/ns/pid> (Linux 3.8 以降)"
9553
9554 #. type: Plain text
9555 #: build/C/man7/namespaces.7:181
9556 msgid "This file is a handle for the PID namespace of the process."
9557 msgstr "このファイルはそのプロセスの PID 名前空間の操作用である。"
9558
9559 #. type: TP
9560 #: build/C/man7/namespaces.7:181
9561 #, no-wrap
9562 msgid "I</proc/[pid]/ns/user> (since Linux 3.8)"
9563 msgstr "I</proc/[pid]/ns/user> (Linux 3.8 以降)"
9564
9565 #. type: Plain text
9566 #: build/C/man7/namespaces.7:184
9567 msgid "This file is a handle for the user namespace of the process."
9568 msgstr "このファイルはそのプロセスのユーザー名前空間の操作用である。"
9569
9570 #. type: TP
9571 #: build/C/man7/namespaces.7:184
9572 #, no-wrap
9573 msgid "I</proc/[pid]/ns/uts> (since Linux 3.0)"
9574 msgstr "I</proc/[pid]/ns/uts> (Linux 3.0 以降)"
9575
9576 #
9577 #.  ==================== IPC namespaces ====================
9578 #. type: Plain text
9579 #: build/C/man7/namespaces.7:190
9580 msgid "This file is a handle for the UTS namespace of the process."
9581 msgstr "このファイルはそのプロセスの UTS 名前空間の操作用である。"
9582
9583 #. type: SS
9584 #: build/C/man7/namespaces.7:190
9585 #, no-wrap
9586 msgid "IPC namespaces (CLONE_NEWIPC)"
9587 msgstr "IPC 名前空間 (CLONE_NEWIPC)"
9588
9589 #.  commit 7eafd7c74c3f2e67c27621b987b28397110d643f
9590 #.  https://lwn.net/Articles/312232/
9591 #. type: Plain text
9592 #: build/C/man7/namespaces.7:202
9593 msgid ""
9594 "IPC namespaces isolate certain IPC resources, namely, System V IPC objects "
9595 "(see B<svipc>(7))  and (since Linux 2.6.30)  POSIX message queues (see "
9596 "B<mq_overview>(7)).  The common characteristic of these IPC mechanisms is "
9597 "that IPC objects are identified by mechanisms other than filesystem "
9598 "pathnames."
9599 msgstr ""
9600 "IPC 名前空間は、 特定の IPC リソース、すなわち、System V IPC オブジェクト "
9601 "(B<svipc>(7) 参照)、(Linux 2.6.30 以降では) POSIX メッセージキュー "
9602 "(B<mq_overview>(7) 参照) を分離する。 これらの IPC 機構に共通の特徴は、 IPC "
9603 "オブジェクトがファイルシステムのパス名以外の方法で識別されるという点である。"
9604
9605 #. type: Plain text
9606 #: build/C/man7/namespaces.7:208
9607 msgid ""
9608 "Each IPC namespace has its own set of System V IPC identifiers and its own "
9609 "POSIX message queue filesystem.  Objects created in an IPC namespace are "
9610 "visible to all other processes that are members of that namespace, but are "
9611 "not visible to processes in other IPC namespaces."
9612 msgstr ""
9613 "各 IPC 名前空間はそれぞれ、 独自の System V IPC 識別子の集合と独自の POSIX "
9614 "メッセージキューファイルシステムを持つ。 IPC 名前空間に作成されたオブジェクト"
9615 "は、 その名前空間のメンバーの他のすべてのプロセスにも見えるが、 他の IPC 名前"
9616 "空間のプロセスには見えない。"
9617
9618 #. type: Plain text
9619 #: build/C/man7/namespaces.7:212
9620 msgid "The following I</proc> interfaces are distinct in each IPC namespace:"
9621 msgstr "以下の I</proc> インタフェースは各 IPC 名前空間で別のものとなる。"
9622
9623 #. type: Plain text
9624 #: build/C/man7/namespaces.7:215
9625 msgid "The POSIX message queue interfaces in I</proc/sys/fs/mqueue>."
9626 msgstr "I</proc/sys/fs/mqueue> の POSIX メッセージキューインタフェース。"
9627
9628 #. type: Plain text
9629 #: build/C/man7/namespaces.7:228
9630 msgid ""
9631 "The System V IPC interfaces in I</proc/sys/kernel>, namely: I<msgmax>, "
9632 "I<msgmnb>, I<msgmni>, I<sem>, I<shmall>, I<shmmax>, I<shmmni>, and "
9633 "I<shm_rmid_forced>."
9634 msgstr ""
9635 "I</proc/sys/kernel> の System V IPC インタフェース。 すなわち、 I<msgmax>, "
9636 "I<msgmnb>, I<msgmni>, I<sem>, I<shmall>, I<shmmax>, I<shmmni>, "
9637 "I<shm_rmid_forced>。"
9638
9639 #. type: Plain text
9640 #: build/C/man7/namespaces.7:231
9641 msgid "The System V IPC interfaces in I</proc/sysvipc>."
9642 msgstr "I</proc/sysvipc> の System V IPC インタフェース。"
9643
9644 #. type: Plain text
9645 #: build/C/man7/namespaces.7:235
9646 msgid ""
9647 "When an IPC namespace is destroyed (i.e., when the last process that is a "
9648 "member of the namespace terminates), all IPC objects in the namespace are "
9649 "automatically destroyed."
9650 msgstr ""
9651 "IPC 名前空間が破棄されたときに (すなわち、その名前空間のメンバーの最後のプロ"
9652 "セスが終了したときに)、 その名前空間内のすべての IPC オブジェクトが自動的に破"
9653 "棄される。"
9654
9655 #
9656 #.  ==================== Network namespaces ====================
9657 #. type: Plain text
9658 #: build/C/man7/namespaces.7:242
9659 msgid ""
9660 "Use of IPC namespaces requires a kernel that is configured with the "
9661 "B<CONFIG_IPC_NS> option."
9662 msgstr ""
9663 "IPC 名前空間を使用するには、設定 B<CONFIG_IPC_NS> が有効になったカーネルが必"
9664 "要である。"
9665
9666 #. type: SS
9667 #: build/C/man7/namespaces.7:242
9668 #, no-wrap
9669 msgid "Network namespaces (CLONE_NEWNET)"
9670 msgstr "ネットワーク名前空間 (CLONE_NEWNET)"
9671
9672 #.  FIXME Add pointer to veth(4) page when it is eventually completed
9673 #. type: Plain text
9674 #: build/C/man7/namespaces.7:257
9675 msgid ""
9676 "Network namespaces provide isolation of the system resources associated with "
9677 "networking: network devices, IPv4 and IPv6 protocol stacks, IP routing "
9678 "tables, firewalls, the I</proc/net> directory, the I</sys/class/net> "
9679 "directory, port numbers (sockets), and so on.  A physical network device can "
9680 "live in exactly one network namespace.  A virtual network device (\"veth\") "
9681 "pair provides a pipe-like abstraction that can be used to create tunnels "
9682 "between network namespaces, and can be used to create a bridge to a physical "
9683 "network device in another namespace."
9684 msgstr ""
9685 "ネットワーク名前空間は、 ネットワークに関連するシステムリソースの分離を提供す"
9686 "る。 分離されるリソースは、 ネットワークデバイス、 IPv4 と IPv6 のプロトコル"
9687 "スタック、 IP ルーティングテーブル、 ファイアウォール、 I</proc/net> ディレク"
9688 "トリ、 I</sys/class/net> ディレクトリ、 (ソケットの) ポート番号などである。 "
9689 "物理ネットワークデバイスは 1 つのネットワーク名前空間にのみ属すことができ"
9690 "る。 仮想ネットワークデバイス (\"veth\") ペアは、 ネットワーク名前空間間のト"
9691 "ンネルを作成するのに使うことができるパイプ風の抽象概念で、 別の名前空間に属す"
9692 "物理ネットワークデバイスへのブリッジを作成するのに使用できる。"
9693
9694 #. type: Plain text
9695 #: build/C/man7/namespaces.7:262
9696 msgid ""
9697 "When a network namespace is freed (i.e., when the last process in the "
9698 "namespace terminates), its physical network devices are moved back to the "
9699 "initial network namespace (not to the parent of the process)."
9700 msgstr ""
9701 "ネットワーク名前空間が解放されたときに (すなわち、その名前空間の最後のプロセ"
9702 "スがしゅうりょうしたときに)、 その名前空間に属していた物理ネットワークデバイ"
9703 "スは初期ネットワーク名前空間に戻される (プロセスの親プロセスに戻されるわけで"
9704 "はない)。"
9705
9706 #
9707 #.  ==================== Mount namespaces ====================
9708 #. type: Plain text
9709 #: build/C/man7/namespaces.7:269
9710 msgid ""
9711 "Use of network namespaces requires a kernel that is configured with the "
9712 "B<CONFIG_NET_NS> option."
9713 msgstr ""
9714 "ネットワーク名前空間を使用するには、設定 B<CONFIG_NET_NS> が有効になったカー"
9715 "ネルが必要である。"
9716
9717 #. type: SS
9718 #: build/C/man7/namespaces.7:269
9719 #, no-wrap
9720 msgid "Mount namespaces (CLONE_NEWNS)"
9721 msgstr "マウント名前空間 (CLONE_NEWNS)"
9722
9723 #. type: Plain text
9724 #: build/C/man7/namespaces.7:277
9725 msgid ""
9726 "Mount namespaces isolate the set of filesystem mount points, meaning that "
9727 "processes in different mount namespaces can have different views of the "
9728 "filesystem hierarchy.  The set of mounts in a mount namespace is modified "
9729 "using B<mount>(2)  and B<umount>(2)."
9730 msgstr ""
9731 "マウント名前空間はファイルシステムのマウントポイントの集合を分離する。 つま"
9732 "り、別のマウント名前空間のプロセスには別のファイルシステム階層が見えるという"
9733 "ことである。 マウント名前空間内のマウントの集合は B<mount>(2) と "
9734 "B<umount>(2) で変更される。"
9735
9736 #. type: Plain text
9737 #: build/C/man7/namespaces.7:294
9738 msgid ""
9739 "The I</proc/[pid]/mounts> file (present since Linux 2.4.19)  lists all the "
9740 "filesystems currently mounted in the process's mount namespace.  The format "
9741 "of this file is documented in B<fstab>(5).  Since kernel version 2.6.15, "
9742 "this file is pollable: after opening the file for reading, a change in this "
9743 "file (i.e., a filesystem mount or unmount) causes B<select>(2)  to mark the "
9744 "file descriptor as readable, and B<poll>(2)  and B<epoll_wait>(2)  mark the "
9745 "file as having an error condition."
9746 msgstr ""
9747 "I</proc/[pid]/mounts> ファイル (Linux 2.4.19 以降に存在) は、 そのプロセスの"
9748 "マウント名前空間で現在マウントされている全ファイルシステムの一覧を表示する。 "
9749 "このファイルのフォーマットは B<fstab>(5) に記載されている。 カーネルバージョ"
9750 "ン 2.6.15 以降では、このファイルをポーリングすることができる。 すなわち、この"
9751 "ファイルを読み出し用にオープンした後、 このファイルの変化 (ファイルシステムの"
9752 "マウントやアンマウント) が発生すると、 B<select>(2) はファイルディスクリプタ"
9753 "が読み出し可能になったと印を付け、 B<poll>(2) や B<epoll_wait>(2) はファイル"
9754 "がエラー状態になったかのように印を付ける。"
9755
9756 #. type: Plain text
9757 #: build/C/man7/namespaces.7:302
9758 msgid ""
9759 "The I</proc/[pid]/mountstats> file (present since Linux 2.6.17)  exports "
9760 "information (statistics, configuration information)  about the mount points "
9761 "in the process's mount namespace.  This file is only readable by the owner "
9762 "of the process.  Lines in this file have the form:"
9763 msgstr ""
9764 "I</proc/[pid]/mountstats> ファイル (Linux 2.6.17 以降に存在) は、 そのプロセ"
9765 "スのマウントポイントに関する情報 (統計情報、設定情報) を公開する。 このファイ"
9766 "ルはプロセスの所有者だけが読み出し可能である。 このファイルの各行は以下の形式"
9767 "である。"
9768
9769 #. type: Plain text
9770 #: build/C/man7/namespaces.7:308
9771 #, no-wrap
9772 msgid ""
9773 "device /dev/sda7 mounted on /home with fstype ext3 [statistics]\n"
9774 "(       1      )            ( 2 )             (3 ) (4)\n"
9775 msgstr ""
9776 "device /dev/sda7 mounted on /home with fstype ext3 [statistics]\n"
9777 "(       1      )            ( 2 )             (3 ) (4)\n"
9778
9779 #. type: Plain text
9780 #: build/C/man7/namespaces.7:312
9781 msgid "The fields in each line are:"
9782 msgstr "各行のフィールドは以下のとおりである。"
9783
9784 #. type: IP
9785 #: build/C/man7/namespaces.7:312 build/C/man7/user_namespaces.7:371
9786 #, no-wrap
9787 msgid "(1)"
9788 msgstr "(1)"
9789
9790 #. type: Plain text
9791 #: build/C/man7/namespaces.7:316
9792 msgid ""
9793 "The name of the mounted device (or \"nodevice\" if there is no corresponding "
9794 "device)."
9795 msgstr ""
9796 "マウントされているデバイス名 (もしくは、対応するデバイスがない場合は "
9797 "\"nodevice\")。"
9798
9799 #. type: IP
9800 #: build/C/man7/namespaces.7:316 build/C/man7/user_namespaces.7:375
9801 #, no-wrap
9802 msgid "(2)"
9803 msgstr "(2)"
9804
9805 #. type: Plain text
9806 #: build/C/man7/namespaces.7:319
9807 msgid "The mount point within the filesystem tree."
9808 msgstr "ファイルシステムツリー内のマウントポイント。"
9809
9810 #. type: IP
9811 #: build/C/man7/namespaces.7:319 build/C/man7/user_namespaces.7:401
9812 #, no-wrap
9813 msgid "(3)"
9814 msgstr "(3)"
9815
9816 #. type: Plain text
9817 #: build/C/man7/namespaces.7:322
9818 msgid "The filesystem type."
9819 msgstr "ファイルシステム種別"
9820
9821 #. type: TP
9822 #: build/C/man7/namespaces.7:322
9823 #, no-wrap
9824 msgid "(4)"
9825 msgstr "(4)"
9826
9827 #. type: Plain text
9828 #: build/C/man7/namespaces.7:327
9829 msgid ""
9830 "Optional statistics and configuration information.  Currently (as at Linux "
9831 "2.6.26), only NFS filesystems export information via this field."
9832 msgstr ""
9833 "統計情報と設定情報。 オプションフィールドである。 現在のところ (Linux 2.6.26 "
9834 "時点)、NFS ファイルシステムだけがこのフィールドで情報を公開している。"
9835
9836 #
9837 #.  ==================== PID namespaces ====================
9838 #. type: SS
9839 #: build/C/man7/namespaces.7:331
9840 #, no-wrap
9841 msgid "PID namespaces (CLONE_NEWPID)"
9842 msgstr "PID 名前空間 (CLONE_NEWPID)"
9843
9844 #
9845 #.  ==================== User namespaces ====================
9846 #. type: Plain text
9847 #: build/C/man7/namespaces.7:337
9848 msgid "See B<pid_namespaces>(7)."
9849 msgstr "B<pid_namespaces>(7) 参照。"
9850
9851 #. type: SS
9852 #: build/C/man7/namespaces.7:337
9853 #, no-wrap
9854 msgid "User namespaces (CLONE_NEWUSER)"
9855 msgstr "ユーザー名前空間 (CLONE_NEWUSER)"
9856
9857 #. type: Plain text
9858 #: build/C/man7/namespaces.7:343 build/C/man7/namespaces.7:364
9859 #: build/C/man7/pid_namespaces.7:356
9860 msgid "See B<user_namespaces>(7)."
9861 msgstr "B<user_namespaces>(7) 参照。"
9862
9863 #. type: SS
9864 #: build/C/man7/namespaces.7:343
9865 #, no-wrap
9866 msgid "UTS namespaces (CLONE_NEWUTS)"
9867 msgstr "UTS 名前空間 (CLONE_NEWUTS)"
9868
9869 #. type: Plain text
9870 #: build/C/man7/namespaces.7:355
9871 msgid ""
9872 "UTS namespaces provide isolation of two system identifiers: the hostname and "
9873 "the NIS domain name.  These identifiers are set using B<sethostname>(2)  and "
9874 "B<setdomainname>(2), and can be retrieved using B<uname>(2), "
9875 "B<gethostname>(2), and B<getdomainname>(2)."
9876 msgstr ""
9877 "UTS 名前空間は、 ホスト名と NIS ドメイン名の 2 つのシステム識別子を分離す"
9878 "る。 これらの識別子は B<sethostname>(2) と B<setdomainname>(2) を使って設定で"
9879 "き、 B<uname>(2), B<gethostname>(2), B<getdomainname>(2) を使って取得できる。"
9880
9881 #. type: Plain text
9882 #: build/C/man7/namespaces.7:359
9883 msgid ""
9884 "Use of UTS namespaces requires a kernel that is configured with the "
9885 "B<CONFIG_UTS_NS> option."
9886 msgstr ""
9887 "UTS 名前空間を使用するには、設定 B<CONFIG_UTS_NS> が有効になったカーネルが必"
9888 "要である。"
9889
9890 #. type: Plain text
9891 #: build/C/man7/namespaces.7:361 build/C/man7/pid_namespaces.7:353
9892 #: build/C/man7/user_namespaces.7:648
9893 msgid "Namespaces are a Linux-specific feature."
9894 msgstr "名前空間は Linux 独自の機能である。"
9895
9896 #. type: Plain text
9897 #: build/C/man7/namespaces.7:377
9898 msgid ""
9899 "B<nsenter>(1), B<readlink>(1), B<unshare>(1), B<clone>(2), B<setns>(2), "
9900 "B<unshare>(2), B<proc>(5), B<credentials>(7), B<capabilities>(7), "
9901 "B<pid_namespaces>(7), B<user_namespaces>(7), B<switch_root>(8)"
9902 msgstr ""
9903 "B<nsenter>(1), B<readlink>(1), B<unshare>(1), B<clone>(2), B<setns>(2), "
9904 "B<unshare>(2), B<proc>(5), B<credentials>(7), B<capabilities>(7), "
9905 "B<pid_namespaces>(7), B<user_namespaces>(7), B<switch_root>(8)"
9906
9907 #. type: TH
9908 #: build/C/man7/pid_namespaces.7:27
9909 #, no-wrap
9910 msgid "PID_NAMESPACES"
9911 msgstr "PID_NAMESPACES"
9912
9913 #. type: TH
9914 #: build/C/man7/pid_namespaces.7:27 build/C/man2/seccomp.2:27
9915 #, no-wrap
9916 msgid "2015-01-10"
9917 msgstr "2015-01-10"
9918
9919 #. type: Plain text
9920 #: build/C/man7/pid_namespaces.7:30
9921 msgid "pid_namespaces - overview of Linux PID namespaces"
9922 msgstr "pid_namespaces - Linux PID 名前空間の概要"
9923
9924 #. type: Plain text
9925 #: build/C/man7/pid_namespaces.7:33 build/C/man7/user_namespaces.7:33
9926 msgid "For an overview of namespaces, see B<namespaces>(7)."
9927 msgstr "名前空間の概要については B<namespaces>(7) を参照。"
9928
9929 #. type: Plain text
9930 #: build/C/man7/pid_namespaces.7:40
9931 msgid ""
9932 "PID namespaces isolate the process ID number space, meaning that processes "
9933 "in different PID namespaces can have the same PID.  PID namespaces allow "
9934 "containers to provide functionality such as suspending/resuming the set of "
9935 "processes in the container and migrating the container to a new host while "
9936 "the processes inside the container maintain the same PIDs."
9937 msgstr ""
9938 "PID 名前空間はプロセス ID 番号空間を分離する。 これは、異なる PID 名前空間の"
9939 "プロセスは同じ PID を持つことができることを意味する。 PID 名前空間を使うこと"
9940 "で、コンテナー内のプロセス群を中断、再開したり、 コンテナー内のプロセスの "
9941 "PID を保持したままコンテナーを新しいホストに移行したりするといった機能をコン"
9942 "テナーが提供することが可能になる。"
9943
9944 #. type: Plain text
9945 #: build/C/man7/pid_namespaces.7:48
9946 msgid ""
9947 "PIDs in a new PID namespace start at 1, somewhat like a standalone system, "
9948 "and calls to B<fork>(2), B<vfork>(2), or B<clone>(2)  will produce processes "
9949 "with PIDs that are unique within the namespace."
9950 msgstr ""
9951 "新しい PID 名前空間の PID は、 独立したシステムであるかのように、 1 から始ま"
9952 "る。 B<fork>(2), B<vfork>(2), B<clone>(2) を呼び出すと、 その名前空間内で一意"
9953 "な PID でプロセスが生成される。"
9954
9955 #
9956 #.  ============================================================
9957 #. type: Plain text
9958 #: build/C/man7/pid_namespaces.7:55
9959 msgid ""
9960 "Use of PID namespaces requires a kernel that is configured with the "
9961 "B<CONFIG_PID_NS> option."
9962 msgstr ""
9963 "PID 名前空間を使用するには、設定 B<CONFIG_PID_NS> が有効になったカーネルが必"
9964 "要である。"
9965
9966 #. type: SS
9967 #: build/C/man7/pid_namespaces.7:55
9968 #, no-wrap
9969 msgid "The namespace init process"
9970 msgstr "名前空間の init プロセス"
9971
9972 #. type: Plain text
9973 #: build/C/man7/pid_namespaces.7:75
9974 msgid ""
9975 "The first process created in a new namespace (i.e., the process created "
9976 "using B<clone>(2)  with the B<CLONE_NEWPID> flag, or the first child created "
9977 "by a process after a call to B<unshare>(2)  using the B<CLONE_NEWPID> flag) "
9978 "has the PID 1, and is the \"init\" process for the namespace (see "
9979 "B<init>(1)).  A child process that is orphaned within the namespace will be "
9980 "reparented to this process rather than B<init>(1)  (unless one of the "
9981 "ancestors of the child in the same PID namespace employed the B<prctl>(2)  "
9982 "B<PR_SET_CHILD_SUBREAPER> command to mark itself as the reaper of orphaned "
9983 "descendant processes)."
9984 msgstr ""
9985 "新しい名前空間で作成される最初のプロセス (すなわち、B<CLONE_NEWPID> フラグで "
9986 "B<clone>(2) を使って作成されたプロセスや、 B<CLONE_NEWPID> フラグで "
9987 "B<unshare>(2) を呼び出した後のプロセスによって作成された最初のプロセス) は "
9988 "PID 1 を持ち、 そのプロセスはその名前空間の \"init\" プロセスとなる "
9989 "(B<init>(1) 参照)。 名前空間内でみなしごになった (親プロセスがいなくなった) "
9990 "子プロセスは、 B<init>(1) ではなくこのプロセスが親プロセスになる (ただし、 同"
9991 "じ PID 名前空間内のその子プロセスの先祖が、 B<prctl>(2) の "
9992 "B<PR_SET_CHILD_SUBREAPER> コマンドを使って、 自分自身をみなしごとなった子孫の"
9993 "プロセスの引き取り手になっている場合はこの限りではなく)。"
9994
9995 #. type: Plain text
9996 #: build/C/man7/pid_namespaces.7:102
9997 msgid ""
9998 "If the \"init\" process of a PID namespace terminates, the kernel terminates "
9999 "all of the processes in the namespace via a B<SIGKILL> signal.  This "
10000 "behavior reflects the fact that the \"init\" process is essential for the "
10001 "correct operation of a PID namespace.  In this case, a subsequent "
10002 "B<fork>(2)  into this PID namespace will fail with the error B<ENOMEM>; it "
10003 "is not possible to create a new processes in a PID namespace whose \"init\" "
10004 "process has terminated.  Such scenarios can occur when, for example, a "
10005 "process uses an open file descriptor for a I</proc/[pid]/ns/pid> file "
10006 "corresponding to a process that was in a namespace to B<setns>(2)  into that "
10007 "namespace after the \"init\" process has terminated.  Another possible "
10008 "scenario can occur after a call to B<unshare>(2): if the first child "
10009 "subsequently created by a B<fork>(2)  terminates, then subsequent calls to "
10010 "B<fork>(2)  will fail with B<ENOMEM>."
10011 msgstr ""
10012 "PID 名前空間の \"init\" プロセスが終了すると、 カーネルはその名前空間の全プロ"
10013 "セスを B<SIGKILL> シグナルで終了する。 この動作は、 PID 名前空間の正しい操作"
10014 "のためには \"init\" プロセスは不可欠であるという事実を反映したものである。 こ"
10015 "の場合、 その PID 名前空間へのそれ以降の B<fork>(2) はエラー B<ENOMEM> で失敗"
10016 "する。 \"init\" プロセスが終了している PID 名前空間に新しいプロセスを作成する"
10017 "ことはできない。 このような状況は、 例えば、 名前空間にいたプロセスに対応す"
10018 "る I</proc/[pid]/ns/pid> ファイルに対してオープンしたファイルディスクリプタを"
10019 "使って、 \"init\" プロセスが終了した後にその名前空間に B<setns>(2) を行った場"
10020 "合に起こり得る。 B<unshare>(2) を呼び出した後にも、この状況は起こり得る。 そ"
10021 "れ以降に B<fork>(2) で作成された最初の子プロセスが終了すると、 それ以降の "
10022 "B<fork>(2) の呼び出しは B<NOMEM> で失敗する。"
10023
10024 #. type: Plain text
10025 #: build/C/man7/pid_namespaces.7:108
10026 msgid ""
10027 "Only signals for which the \"init\" process has established a signal handler "
10028 "can be sent to the \"init\" process by other members of the PID namespace.  "
10029 "This restriction applies even to privileged processes, and prevents other "
10030 "members of the PID namespace from accidentally killing the \"init\" process."
10031 msgstr ""
10032 "PID 名前空間の他のメンバーは、 \"init\" プロセスがシグナルハンドラーを設定し"
10033 "たシグナルだけを、 \"init\" プロセスに送信することができる。 この制限は特権プ"
10034 "ロセスに対しても適用される。 この制限により、 PID 名前空間の他のメンバーが"
10035 "うっかり \"init\" プロセスを殺してしまうのを防ぐことができる。"
10036
10037 #. type: Plain text
10038 #: build/C/man7/pid_namespaces.7:128
10039 msgid ""
10040 "Likewise, a process in an ancestor namespace can\\(emsubject to the usual "
10041 "permission checks described in B<kill>(2)\\(emsend signals to the \"init\" "
10042 "process of a child PID namespace only if the \"init\" process has "
10043 "established a handler for that signal.  (Within the handler, the "
10044 "I<siginfo_t> I<si_pid> field described in B<sigaction>(2)  will be zero.)  "
10045 "B<SIGKILL> or B<SIGSTOP> are treated exceptionally: these signals are "
10046 "forcibly delivered when sent from an ancestor PID namespace.  Neither of "
10047 "these signals can be caught by the \"init\" process, and so will result in "
10048 "the usual actions associated with those signals (respectively, terminating "
10049 "and stopping the process)."
10050 msgstr ""
10051 "同様に、 先祖の名前空間のプロセスは、 \"init\" プロセスがそのシグナルに対する"
10052 "ハンドラーを設定している場合にのみ、 B<kill>(2) で説明されている通常のアクセ"
10053 "ス許可のチェックを経た上で、 子供の PID 名前空間の \"init\" プロセスにシグナ"
10054 "ルを送信できる。 (ハンドラー内では、 I<sigaction>(2) に説明がある "
10055 "I<siginfo_t> の I<si_pid> フィールドは 0 になる。) B<SIGKILL> と B<SIGSTOP> "
10056 "は例外として扱われ、 これらのシグナルが先祖の PID 名前空間から送信された場合"
10057 "には強制的に配送される。 これらのシグナルはどちらも \"init\" プロセルが捕捉す"
10058 "ることはできない。 そのため、これらのシグナルに関連付けられた通常のアクショ"
10059 "ン (それぞれ、プロセスの終了とプロセスの強制停止) が実行される。"
10060
10061 #
10062 #.  ============================================================
10063 #. type: Plain text
10064 #: build/C/man7/pid_namespaces.7:138
10065 msgid ""
10066 "Starting with Linux 3.4, the B<reboot>(2)  system call causes a signal to be "
10067 "sent to the namespace \"init\" process.  See B<reboot>(2)  for more details."
10068 msgstr ""
10069 "Linux 3.4 以降では、 B<reboot>(2) システムコールを呼び出すと、 シグナルがその"
10070 "名前空間の \"init\" プロセスに送信される。 詳細は B<reboot>(2) を参照。"
10071
10072 #. type: SS
10073 #: build/C/man7/pid_namespaces.7:138
10074 #, no-wrap
10075 msgid "Nesting PID namespaces"
10076 msgstr "ネストされた PID 名前空間"
10077
10078 #. type: Plain text
10079 #: build/C/man7/pid_namespaces.7:149
10080 msgid ""
10081 "PID namespaces can be nested: each PID namespace has a parent, except for "
10082 "the initial (\"root\") PID namespace.  The parent of a PID namespace is the "
10083 "PID namespace of the process that created the namespace using B<clone>(2)  "
10084 "or B<unshare>(2).  PID namespaces thus form a tree, with all namespaces "
10085 "ultimately tracing their ancestry to the root namespace."
10086 msgstr ""
10087 "PID 名前空間は入れ子にすることができる。 最初の (\"root\") PID 名前空間以外の"
10088 "各 PID 名前空間は親を持つ。 PID 名前空間の親は B<clone>(2) や B<unshare>(2) "
10089 "を使ってその名前空間を作成したプロセスの PID 名前空間である。 したがって、 "
10090 "PID 名前空間は木構造を構成し、 すべての名前空間は親を辿って行くと、最終的に"
10091 "は root 名前空間に辿り着く。"
10092
10093 #. type: Plain text
10094 #: build/C/man7/pid_namespaces.7:164
10095 msgid ""
10096 "A process is visible to other processes in its PID namespace, and to the "
10097 "processes in each direct ancestor PID namespace going back to the root PID "
10098 "namespace.  In this context, \"visible\" means that one process can be the "
10099 "target of operations by another process using system calls that specify a "
10100 "process ID.  Conversely, the processes in a child PID namespace can't see "
10101 "processes in the parent and further removed ancestor namespaces.  More "
10102 "succinctly: a process can see (e.g., send signals with B<kill>(2), set nice "
10103 "values with B<setpriority>(2), etc.) only processes contained in its own PID "
10104 "namespace and in descendants of that namespace."
10105 msgstr ""
10106 "プロセスは、所属する PID 名前空間の他のプロセスから見える。また、 root PID 名"
10107 "前空間に向かう直径の先祖の各 PID 名前空間のプロセスからも見える。 この場合、"
10108 "「見える」とは、 あるプロセスが、 他のプロセスがプロセス ID を指定するシステ"
10109 "ムコールを使う際に操作の対象にできることを意味する。 逆に、子供 PID 名前空間"
10110 "のプロセスから親や先祖の名前空間のプロセスは見えない。 あるプロセスは自分自身"
10111 "の PID 名前空間とその子孫の名前空間のプロセスだけが見える (例えば、"
10112 "B<kill>(2) でシグナルを送信したり、 B<setpriority>(2) で nice 値を設定した"
10113 "り、など)。"
10114
10115 #. type: Plain text
10116 #: build/C/man7/pid_namespaces.7:176
10117 msgid ""
10118 "A process has one process ID in each of the layers of the PID namespace "
10119 "hierarchy in which is visible, and walking back though each direct ancestor "
10120 "namespace through to the root PID namespace.  System calls that operate on "
10121 "process IDs always operate using the process ID that is visible in the PID "
10122 "namespace of the caller.  A call to B<getpid>(2)  always returns the PID "
10123 "associated with the namespace in which the process was created."
10124 msgstr ""
10125 "プロセスは、そのプロセスが見える PID 名前空間の階層の各層においてプロセス ID "
10126 "を一つ持ち、 直接の先祖の名前空間を辿ることで通って root PID 名前空間に至るこ"
10127 "とができる。 プロセス ID に対して操作を行うシステムコールは、常に、呼び出し元"
10128 "プロセスの PID 名前空間で見えるプロセス ID を使って操作を行う。 B<getpid>(2) "
10129 "の呼び出しでは、 常に、 プロセスが作成された名前空間に関連付けられた PID を返"
10130 "す。"
10131
10132 #
10133 #. type: Plain text
10134 #: build/C/man7/pid_namespaces.7:191
10135 msgid ""
10136 "Some processes in a PID namespace may have parents that are outside of the "
10137 "namespace.  For example, the parent of the initial process in the namespace "
10138 "(i.e., the B<init>(1)  process with PID 1) is necessarily in another "
10139 "namespace.  Likewise, the direct children of a process that uses "
10140 "B<setns>(2)  to cause its children to join a PID namespace are in a "
10141 "different PID namespace from the caller of B<setns>(2).  Calls to "
10142 "B<getppid>(2)  for such processes return 0."
10143 msgstr ""
10144 "PID 名前空間内のプロセスは名前空間の外部に親プロセスを持つことができる。 例え"
10145 "ば、その名前空間の初期プロセス (すなわち PID 1 を持つ B<init>(1) プロセス) の"
10146 "親プロセスは必然的に別の名前空間に属すことになる。 同様に、 あるプロセスが "
10147 "B<setns>(2) を使って子プロセスを PID 名前空間に参加させた場合、 子プロセスは "
10148 "B<setns>(2) の呼び出し元とは異なる PID 名前空間に属す。 子プロセスで "
10149 "B<getppid>(2) を呼び出すと 0 が返される。"
10150
10151 #
10152 #.  ============================================================
10153 #. type: Plain text
10154 #: build/C/man7/pid_namespaces.7:204
10155 msgid ""
10156 "While processes may freely descend into child PID namespaces (e.g., using "
10157 "B<setns>(2)  with B<CLONE_NEWPID>), they may not move in the other "
10158 "direction.  That is to say, processes may not enter any ancestor namespaces "
10159 "(parent, grandparent, etc.).  Changing PID namespaces is a one way operation."
10160 msgstr "プロセスは (B<setns>(2) を B<CLONE_NEWPID> で使うなどで) 子供の PID 名前空間に自由に入ることができるが、 逆の方向には移動できない。 つまり、 プロセスは先祖の名前空間 (親、親の親など) に入ることはできない。 PID 名前空間の変更は一方向の操作である。"
10161
10162 #. type: SS
10163 #: build/C/man7/pid_namespaces.7:204
10164 #, no-wrap
10165 msgid "setns(2) and unshare(2) semantics"
10166 msgstr "setns(2) と unshare(2) の動作"
10167
10168 #. type: Plain text
10169 #: build/C/man7/pid_namespaces.7:220
10170 msgid ""
10171 "Calls to B<setns>(2)  that specify a PID namespace file descriptor and calls "
10172 "to B<unshare>(2)  with the B<CLONE_NEWPID> flag cause children subsequently "
10173 "created by the caller to be placed in a different PID namespace from the "
10174 "caller.  These calls do not, however, change the PID namespace of the "
10175 "calling process, because doing so would change the caller's idea of its own "
10176 "PID (as reported by B<getpid>()), which would break many applications and "
10177 "libraries."
10178 msgstr ""
10179 "PID 名前空間のファイルディスクリプタを指定して B<setns>(2) を呼び出したり、 "
10180 "B<CLONE_NEWPID> フラグ付きで B<unshare>(2) を呼び出したりすると、 その結果作"
10181 "成された子プロセスは呼び出し元とは異なる PID 名前空間に置かれる。 しかし、こ"
10182 "れらの呼び出しでは呼び出し元プロセスの PID 名前空間は変更されない。 なぜな"
10183 "ら、PID 名前空間を変更してしまうと、 呼び出し元が認識する (B<getpid>() が返"
10184 "す) 自分の PID が変わってしまい、 多くのアプリケーションやライブラリが正しく"
10185 "動作しなくなるからである。"
10186
10187 #. type: Plain text
10188 #: build/C/man7/pid_namespaces.7:228
10189 msgid ""
10190 "To put things another way: a process's PID namespace membership is "
10191 "determined when the process is created and cannot be changed thereafter.  "
10192 "Among other things, this means that the parental relationship between "
10193 "processes mirrors the parental relationship between PID namespaces: the "
10194 "parent of a process is either in the same namespace or resides in the "
10195 "immediate parent PID namespace."
10196 msgstr ""
10197 "別の言い方をすると、 あるプロセスがどの PID 名前空間に所属するかは、 そのプロ"
10198 "セスが作成されたときに決定され、 それ以降は変更されることはない。 いろいろあ"
10199 "るが、プロセス間の親子関係には、PID 名前空間の親子関係がそのまま反映されると"
10200 "いうことだ。 プロセスの親プロセスは、同じ名前空間にいるか、もしくは直接の親 "
10201 "PID 名前空間にいるかのいずれかである。"
10202
10203 #. type: SS
10204 #: build/C/man7/pid_namespaces.7:228
10205 #, no-wrap
10206 msgid "Compatibility of CLONE_NEWPID with other CLONE_* flags"
10207 msgstr "CLONE_NEWPID の他の CLONE_* フラグとの互換性"
10208
10209 #. type: Plain text
10210 #: build/C/man7/pid_namespaces.7:233
10211 msgid "B<CLONE_NEWPID> can't be combined with some other B<CLONE_*> flags:"
10212 msgstr ""
10213 "B<CLONE_NEWPID> はいくつかの他の B<CLONE_*> フラグと組み合わせることができな"
10214 "い。"
10215
10216 #. type: Plain text
10217 #: build/C/man7/pid_namespaces.7:241
10218 msgid ""
10219 "B<CLONE_THREAD> requires being in the same PID namespace in order that the "
10220 "threads in a process can send signals to each other.  Similarly, it must be "
10221 "possible to see all of the threads of a processes in the B<proc>(5)  "
10222 "filesystem."
10223 msgstr ""
10224 "B<CLONE_THREAD> は、 プロセス内のスレッド間で互いにシグナルを送信できるように"
10225 "するため、 同じ PID 名前空間に属している必要がある。 同様に、 プロセス内の全"
10226 "スレッドが B<proc>(5) ファイルシステムで見える必要がある。"
10227
10228 #. type: Plain text
10229 #: build/C/man7/pid_namespaces.7:252
10230 msgid ""
10231 "B<CLONE_SIGHAND> requires being in the same PID namespace; otherwise the "
10232 "process ID of the process sending a signal could not be meaningfully encoded "
10233 "when a signal is sent (see the description of the I<siginfo_t> type in "
10234 "B<sigaction>(2)).  A signal queue shared by processes in multiple PID "
10235 "namespaces will defeat that."
10236 msgstr ""
10237 "B<CLONE_SIGHAND> は、同じ PID 名前空間である必要がある。 さもなければ、 シグ"
10238 "ナルが送信された際に、シグナルを送信したプロセスのプロセス ID を意味のある形"
10239 "でエンコードすることができない (B<sigaction>(2) の I<siginfo_t> 型の説明を参"
10240 "照)。 複数の PID 名前空間に属するプロセス間で一つのシグナルキューを共有する"
10241 "と、うまく動かなくなる。"
10242
10243 #. type: Plain text
10244 #: build/C/man7/pid_namespaces.7:262
10245 msgid ""
10246 "B<CLONE_VM> requires all of the threads to be in the same PID namespace, "
10247 "because, from the point of view of a core dump, if two processes share the "
10248 "same address space then they are threads and will be core dumped together.  "
10249 "When a core dump is written, the PID of each thread is written into the core "
10250 "dump.  Writing the process IDs could not meaningfully succeed if some of the "
10251 "process IDs were in a parent PID namespace."
10252 msgstr ""
10253 "B<CLONE_VM> は、全スレッドが同じ PID 名前空間に属している必要がある。 なぜな"
10254 "ら、 コアダンプの観点から見ると、 2 つのプロセスが同じアドレス空間を共有して"
10255 "いれば、 これらはスレッドであり、コアダンプが一緒に行われるからである。 コア"
10256 "ダンプが書き込まれる際に、 各スレッドの PID がコアダンプに書き込まれる。 もし"
10257 "プロセス ID のいくつかが親 PID 名前空間に属していたとすると、 プロセス ID の"
10258 "書き込みは意味を持たなくなってしまう。"
10259
10260 #. type: Plain text
10261 #: build/C/man7/pid_namespaces.7:280
10262 msgid ""
10263 "To summarize: there is a technical requirement for each of B<CLONE_THREAD>, "
10264 "B<CLONE_SIGHAND>, and B<CLONE_VM> to share a PID namespace.  (Note "
10265 "furthermore that in B<clone>(2)  requires B<CLONE_VM> to be specified if "
10266 "B<CLONE_THREAD> or B<CLONE_SIGHAND> is specified.)  Thus, call sequences "
10267 "such as the following will fail (with the error B<EINVAL>):"
10268 msgstr ""
10269 "まとめると、 B<CLONE_THREAD>, B<CLONE_SIGHAND>, B<CLONE_VM> では技術的な要件"
10270 "として PID 名前空間が共有されている点がある。 (さらに B<clone>(2) では "
10271 "B<CLONE_THREAD> か B<CLONE_SIGHAND> が指定された際には B<CLONE_VM> が指定され"
10272 "ている必要がある点にも注意。) したがって、以下のような順序で呼び出しを行うと "
10273 "(エラー B<EINVAL> で) 失敗する。"
10274
10275 #. type: Plain text
10276 #: build/C/man7/pid_namespaces.7:284
10277 #, no-wrap
10278 msgid ""
10279 "    unshare(CLONE_NEWPID);\n"
10280 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10281 msgstr ""
10282 "    unshare(CLONE_NEWPID);\n"
10283 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10284
10285 #. type: Plain text
10286 #: build/C/man7/pid_namespaces.7:287
10287 #, no-wrap
10288 msgid ""
10289 "    setns(fd, CLONE_NEWPID);\n"
10290 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10291 msgstr ""
10292 "    setns(fd, CLONE_NEWPID);\n"
10293 "    clone(..., CLONE_VM, ...);    /* Fails */\n"
10294
10295 #. type: Plain text
10296 #: build/C/man7/pid_namespaces.7:290
10297 #, no-wrap
10298 msgid ""
10299 "    clone(..., CLONE_VM, ...);\n"
10300 "    setns(fd, CLONE_NEWPID);      /* Fails */\n"
10301 msgstr ""
10302 "    clone(..., CLONE_VM, ...);\n"
10303 "    setns(fd, CLONE_NEWPID);      /* Fails */\n"
10304
10305 #. type: Plain text
10306 #: build/C/man7/pid_namespaces.7:293
10307 #, no-wrap
10308 msgid ""
10309 "    clone(..., CLONE_VM, ...);\n"
10310 "    unshare(CLONE_NEWPID);        /* Fails */\n"
10311 msgstr ""
10312 "    clone(..., CLONE_VM, ...);\n"
10313 "    unshare(CLONE_NEWPID);        /* Fails */\n"
10314
10315 #
10316 #.  ============================================================
10317 #. type: SS
10318 #: build/C/man7/pid_namespaces.7:297
10319 #, no-wrap
10320 msgid "/proc and PID namespaces"
10321 msgstr "/proc と PID 名前空間"
10322
10323 #. type: Plain text
10324 #: build/C/man7/pid_namespaces.7:306
10325 msgid ""
10326 "A I</proc> filesystem shows (in the I</proc/PID> directories) only processes "
10327 "visible in the PID namespace of the process that performed the mount, even "
10328 "if the I</proc> filesystem is viewed from processes in other namespaces."
10329 msgstr ""
10330 "I</proc> ファイルシステムは、I</proc> のマウントを行ったプロセスの PID 名前空"
10331 "間で見えるプロセスだけを表示する。 たとえ、 その I</proc> ファイルシステムが"
10332 "他の名前空間のプロセスから参照されたとしても、そうである。"
10333
10334 #. type: Plain text
10335 #: build/C/man7/pid_namespaces.7:325
10336 msgid ""
10337 "After creating a new PID namespace, it is useful for the child to change its "
10338 "root directory and mount a new procfs instance at I</proc> so that tools "
10339 "such as B<ps>(1)  work correctly.  If a new mount namespace is "
10340 "simultaneously created by including B<CLONE_NEWNS> in the I<flags> argument "
10341 "of B<clone>(2)  or B<unshare>(2), then it isn't necessary to change the root "
10342 "directory: a new procfs instance can be mounted directly over I</proc>."
10343 msgstr ""
10344 "新しい PID 名前空間を作成した後、 子プロセスが、自身の root ディレクトリを変"
10345 "更し、新しい procfs インスタンスを I</proc> にマウントするのは B<ps>(1) など"
10346 "のツールが正しく動作するためにも有用である。 B<clone>(2) の I<flags> 引き数"
10347 "に B<CLONE_NEWNS> も指定されて新しいマウント名前空間が同時に作成された場合"
10348 "は、 root ディレクトリを変更する必要はない。 新しい procfs インスタンスを I</"
10349 "proc> にそのままマウントすることができる。"
10350
10351 #. type: Plain text
10352 #: build/C/man7/pid_namespaces.7:329
10353 msgid "From a shell, the command to mount I</proc> is:"
10354 msgstr "シェルから、コマンドで I</proc> のマウントを行うには次のようにする。"
10355
10356 #. type: Plain text
10357 #: build/C/man7/pid_namespaces.7:331
10358 #, no-wrap
10359 msgid "    $ mount -t proc proc /proc\n"
10360 msgstr "    $ mount -t proc proc /proc\n"
10361
10362 #
10363 #.  ============================================================
10364 #. type: Plain text
10365 #: build/C/man7/pid_namespaces.7:343
10366 msgid ""
10367 "Calling B<readlink>(2)  on the path I</proc/self> yields the process ID of "
10368 "the caller in the PID namespace of the procfs mount (i.e., the PID namespace "
10369 "of the process that mounted the procfs).  This can be useful for "
10370 "introspection purposes, when a process wants to discover its PID in other "
10371 "namespaces."
10372 msgstr ""
10373 "パス I</proc/self> に対して B<readlink>(2) を呼び出すと、 procfs のマウントを"
10374 "行ったプロセスの PID 名前空間におけるプロセス ID が得られる。 これは調査目的"
10375 "でプロセスが他の名前空間で自身の PID を知りたい場合などに役立つ。"
10376
10377 #. type: SS
10378 #: build/C/man7/pid_namespaces.7:343 build/C/man7/user_namespaces.7:635
10379 #, no-wrap
10380 msgid "Miscellaneous"
10381 msgstr "その他"
10382
10383 #. type: Plain text
10384 #: build/C/man7/pid_namespaces.7:351
10385 msgid ""
10386 "When a process ID is passed over a UNIX domain socket to a process in a "
10387 "different PID namespace (see the description of B<SCM_CREDENTIALS> in "
10388 "B<unix>(7)), it is translated into the corresponding PID value in the "
10389 "receiving process's PID namespace."
10390 msgstr ""
10391 "プロセス ID が UNIX ドメインソケット経由で別の PID 名前空間のプロセスに渡され"
10392 "る場合 (B<unix>(7) の B<SCM_CREDENTIALS> の説明を参照)、 プロセス ID は受信プ"
10393 "ロセスの PID 名前空間での対応する PID 値に翻訳される。"
10394
10395 #. type: Plain text
10396 #: build/C/man7/pid_namespaces.7:365
10397 msgid ""
10398 "B<clone>(2), B<setns>(2), B<unshare>(2), B<proc>(5), B<credentials>(7), "
10399 "B<capabilities>(7), B<user_namespaces>(7), B<switch_root>(8)"
10400 msgstr ""
10401 "B<clone>(2), B<setns>(2), B<unshare>(2), B<proc>(5), B<credentials>(7), "
10402 "B<capabilities>(7), B<user_namespaces>(7), B<switch_root>(8)"
10403
10404 #. type: TH
10405 #: build/C/man2/seteuid.2:29
10406 #, no-wrap
10407 msgid "SETEUID"
10408 msgstr "SETEUID"
10409
10410 #. type: Plain text
10411 #: build/C/man2/seteuid.2:32
10412 msgid "seteuid, setegid - set effective user or group ID"
10413 msgstr "seteuid, setegid - 実効ユーザー ID や 実効グループ ID を設定する"
10414
10415 #. type: Plain text
10416 #: build/C/man2/seteuid.2:38
10417 msgid "B<int seteuid(uid_t >I<euid>B<);>"
10418 msgstr "B<int seteuid(uid_t >I<euid>B<);>"
10419
10420 #. type: Plain text
10421 #: build/C/man2/seteuid.2:40
10422 msgid "B<int setegid(gid_t >I<egid>B<);>"
10423 msgstr "B<int setegid(gid_t >I<egid>B<);>"
10424
10425 #. type: Plain text
10426 #: build/C/man2/seteuid.2:49
10427 msgid "B<seteuid>(), B<setegid>():"
10428 msgstr "B<seteuid>(), B<setegid>():"
10429
10430 #. type: Plain text
10431 #: build/C/man2/seteuid.2:51
10432 msgid ""
10433 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>="
10434 "\\ 600"
10435 msgstr ""
10436 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>="
10437 "\\ 600"
10438
10439 #. type: Plain text
10440 #: build/C/man2/seteuid.2:58
10441 msgid ""
10442 "B<seteuid>()  sets the effective user ID of the calling process.  "
10443 "Unprivileged user processes may only set the effective user ID to the real "
10444 "user ID, the effective user ID or the saved set-user-ID."
10445 msgstr ""
10446 "B<seteuid>()  は呼び出し元のプロセスの実効ユーザー ID を設定する。 非特権ユー"
10447 "ザーのプロセスの場合、実効ユーザー ID に設定できるのは、 実ユーザー ID・実効"
10448 "ユーザー ID・保存 set-user-ID のいずれかだけである。"
10449
10450 #.  When
10451 #.  .I euid
10452 #.  equals \-1, nothing is changed.
10453 #.  (This is an artifact of the implementation in glibc of seteuid()
10454 #.  using setresuid(2).)
10455 #. type: Plain text
10456 #: build/C/man2/seteuid.2:67
10457 msgid ""
10458 "Precisely the same holds for B<setegid>()  with \"group\" instead of \"user"
10459 "\"."
10460 msgstr ""
10461 "B<setegid>()  は「ユーザー」ではなく「グループ」に対して全く同じことを行う。"
10462
10463 #. type: Plain text
10464 #: build/C/man2/seteuid.2:79
10465 msgid ""
10466 "I<Note>: there are cases where B<seteuid>()  can fail even when the caller "
10467 "is UID 0; it is a grave security error to omit checking for a failure return "
10468 "from B<seteuid>()."
10469 msgstr ""
10470 "I<注意>: 呼び出し元が UID 0 であっても B<seteuid>() が失敗する場合がある。 "
10471 "B<seteuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュリ"
10472 "ティ上のエラーとなる。"
10473
10474 #. type: Plain text
10475 #: build/C/man2/seteuid.2:83
10476 msgid "The target user or group ID is not valid in this user namespace."
10477 msgstr ""
10478 "対象のユーザー ID かグループ ID がこのユーザー名前空間では有効ではない。"
10479
10480 #. type: Plain text
10481 #: build/C/man2/seteuid.2:99
10482 msgid ""
10483 "The calling process is not privileged (Linux: does not have the "
10484 "B<CAP_SETUID> capability in the case of B<seteuid>(), or the B<CAP_SETGID> "
10485 "capability in the case of B<setegid>())  and I<euid> (respectively, "
10486 "I<egid>)  is not the real user (group) ID, the effective user (group) ID, or "
10487 "the saved set-user-ID (saved set-group-ID)."
10488 msgstr ""
10489 "呼び出し元のプロセスに特権がなく、 I<euid> (I<egid>)  が実ユーザー (グルー"
10490 "プ) ID、または実効ユーザー (グループ) ID、 保存 set-user-ID (保存 set-group-"
10491 "ID) のいずれでもではない (Linux においては、 B<seteuid>()  では "
10492 "B<CAP_SETUID> ケーパビリティ (capability) が、 B<setegid>()  では "
10493 "B<CAP_SETGID> ケーパビリティがない場合に、特権がないと判断される)。"
10494
10495 #. type: Plain text
10496 #: build/C/man2/seteuid.2:101
10497 msgid "4.3BSD, POSIX.1-2001."
10498 msgstr "4.3BSD, POSIX.1-2001."
10499
10500 #. type: Plain text
10501 #: build/C/man2/seteuid.2:107
10502 msgid ""
10503 "Setting the effective user (group) ID to the saved set-user-ID (saved set-"
10504 "group-ID) is possible since Linux 1.1.37 (1.1.38).  On an arbitrary system "
10505 "one should check B<_POSIX_SAVED_IDS>."
10506 msgstr ""
10507 "実効ユーザー (グループ) ID を保存 set-user-ID (保存 set-group-ID) に 設定でき"
10508 "るのは、Linux 1.1.37 (1.1.38) 以降である。 全てのシステムにおいて "
10509 "B<_POSIX_SAVED_IDS> をチェックすべきである。"
10510
10511 #. type: Plain text
10512 #: build/C/man2/seteuid.2:123
10513 msgid ""
10514 "Under glibc 2.0 B<seteuid(>I<euid>B<)> is equivalent to B<setreuid(-1,>I< "
10515 "euid>B<)> and hence may change the saved set-user-ID.  Under glibc 2.1 and "
10516 "later it is equivalent to B<setresuid(-1,>I< euid>B<, -1)> and hence does "
10517 "not change the saved set-user-ID.  Analogous remarks hold for B<setegid>(), "
10518 "with the difference that the change in implementation from B<setregid(-1,>I< "
10519 "egid>B<)> to B<setresgid(-1,>I< egid>B<, -1)> occurred in glibc 2.2 or 2.3 "
10520 "(depending on the hardware architecture)."
10521 msgstr ""
10522 "glibc 2.0 では、 B<seteuid(>I<euid>B<)> は B<setreuid(-1,>I< euid>B<)> と等価"
10523 "であり、保存 set-user-ID を変更するかもしれない。 glibc 2.1 では、 "
10524 "B<setresuid(-1,>I< euid>B<, -1)> と等価であり、保存 set-user-ID 変更しない。 "
10525 "同様のことが B<setegid>() にも言えるが、 glibc 2.2 か 2.3 で、 実装が "
10526 "B<setregid(-1,>I< egid>B<)> から B<setresgid(-1,>I< egid>B<, -1)> へ変更され"
10527 "た点だけが違う (どの glibc バージョンで変更が行われたかは、ハードウェアアーキ"
10528 "テクチャによって異なる)。"
10529
10530 #. type: Plain text
10531 #: build/C/man2/seteuid.2:132
10532 msgid ""
10533 "According to POSIX.1, B<seteuid>()  (B<setegid>())  need not permit I<euid> "
10534 "(I<egid>)  to be the same value as the current effective user (group) ID, "
10535 "and some implementations do not permit this."
10536 msgstr ""
10537 "POSIX.1 では、 B<seteuid>()  (B<setegid>())  で、 I<euid> (I<egid>)  として現"
10538 "在の実効ユーザ (グループ) ID と同じ値を指定可能である 必要はないとされてお"
10539 "り、いくつかの実装では I<euid> (I<egid>)  として現在の実効ユーザ (グループ) "
10540 "ID と同じ値を 指定することができない。"
10541
10542 #. type: Plain text
10543 #: build/C/man2/seteuid.2:141
10544 msgid ""
10545 "On Linux, B<seteuid>()  and B<setegid>()  are implemented as library "
10546 "functions that call, respectively, B<setreuid>(2)  and B<setresgid>(2)."
10547 msgstr ""
10548 "Linux では、 B<seteuid>() と B<setegid>() は、それぞれ B<setreuid>(2) と "
10549 "B<setresgid>(2) を呼び出すライブラリ関数として実装されている。"
10550
10551 #. type: Plain text
10552 #: build/C/man2/seteuid.2:149
10553 msgid ""
10554 "B<geteuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
10555 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
10556 msgstr ""
10557 "B<geteuid>(2), B<setresuid>(2), B<setreuid>(2), B<setuid>(2), "
10558 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
10559
10560 #. type: TH
10561 #: build/C/man2/setfsgid.2:31
10562 #, no-wrap
10563 msgid "SETFSGID"
10564 msgstr "SETFSGID"
10565
10566 #. type: TH
10567 #: build/C/man2/setfsgid.2:31 build/C/man2/setfsuid.2:31
10568 #, no-wrap
10569 msgid "2013-08-08"
10570 msgstr "2013-08-08"
10571
10572 #. type: Plain text
10573 #: build/C/man2/setfsgid.2:34
10574 msgid "setfsgid - set group identity used for filesystem checks"
10575 msgstr ""
10576 "setfsgid - ファイルシステムのチェックに用いられるグループ ID を設定する"
10577
10578 #. type: Plain text
10579 #: build/C/man2/setfsgid.2:36 build/C/man2/setfsuid.2:36
10580 msgid "B<#include E<lt>sys/fsuid.hE<gt>>"
10581 msgstr "B<#include E<lt>sys/fsuid.hE<gt>>"
10582
10583 #. type: Plain text
10584 #: build/C/man2/setfsgid.2:38
10585 msgid "B<int setfsgid(uid_t >I<fsgid>B<);>"
10586 msgstr "B<int setfsgid(uid_t >I<fsgid>B<);>"
10587
10588 #. type: Plain text
10589 #: build/C/man2/setfsgid.2:51
10590 msgid ""
10591 "The system call B<setfsgid>()  changes the value of the caller's filesystem "
10592 "group ID\\(emthe group ID that the Linux kernel uses to check for all "
10593 "accesses to the filesystem.  Normally, the value of the filesystem group ID "
10594 "will shadow the value of the effective group ID.  In fact, whenever the "
10595 "effective group ID is changed, the filesystem group ID will also be changed "
10596 "to the new value of the effective group ID."
10597 msgstr ""
10598 "システムコール B<setfsgid>() は、 呼び出し元のファイルシステムグループ ID "
10599 "\\(em ファイルシステムへの全てのアクセスのチェックにおいて Linux カーネルが使"
10600 "用するグループ ID \\(em の値を変更する。通常はファイルシステムグループ ID の"
10601 "値は実効 (effective) グループ ID と同じになる。実際、 実効グループ ID が変更"
10602 "される度にファイルシステムグループ ID もまた新しい実効グループ ID の値に変更"
10603 "される。"
10604
10605 #. type: Plain text
10606 #: build/C/man2/setfsgid.2:62
10607 msgid ""
10608 "Explicit calls to B<setfsuid>(2)  and B<setfsgid>()  are usually used only "
10609 "by programs such as the Linux NFS server that need to change what user and "
10610 "group ID is used for file access without a corresponding change in the real "
10611 "and effective user and group IDs.  A change in the normal user IDs for a "
10612 "program such as the NFS server is a security hole that can expose it to "
10613 "unwanted signals.  (But see below.)"
10614 msgstr ""
10615 "通常、 B<setfsuid>()  や B<setfsgid>() を明示的に呼び出すのは、Linux NFS サー"
10616 "バー のように、 ファイルアクセスに用いるユーザID / グループID を変更しなけれ"
10617 "ばならないが、 対応する実(real)/実効(effective) ユーザID / グループID は変更"
10618 "したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通"
10619 "常のユーザID を変更すると、 プロセスを望まないシグナルにさらす可能性があり、 "
10620 "セキュリティホールになる。(下記参照)"
10621
10622 #. type: Plain text
10623 #: build/C/man2/setfsgid.2:68
10624 msgid ""
10625 "B<setfsgid>()  will succeed only if the caller is the superuser or if "
10626 "I<fsgid> matches either the caller's real group ID, effective group ID, "
10627 "saved set-group-ID, or current the filesystem user ID."
10628 msgstr ""
10629 "B<setfsgid>()  は、スーパーユーザによって呼び出された場合か、 I<fsgid> が呼び"
10630 "出し元の実グループID、実効グループID、 保存セットグループID (saved set-group-"
10631 "ID)、現在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功"
10632 "する。"
10633
10634 #. type: Plain text
10635 #: build/C/man2/setfsgid.2:71
10636 msgid ""
10637 "On both success and failure, this call returns the previous filesystem group "
10638 "ID of the caller."
10639 msgstr ""
10640 "成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムグループ "
10641 "ID の値を返す。"
10642
10643 #.  This system call is present since Linux 1.1.44
10644 #.  and in libc since libc 4.7.6.
10645 #. type: Plain text
10646 #: build/C/man2/setfsgid.2:75 build/C/man2/setfsuid.2:75
10647 msgid "This system call is present in Linux since version 1.2."
10648 msgstr "このシステムコールはバージョン 1.2 以降の Linux に存在する。"
10649
10650 #. type: Plain text
10651 #: build/C/man2/setfsgid.2:79
10652 msgid ""
10653 "B<setfsgid>()  is Linux-specific and should not be used in programs intended "
10654 "to be portable."
10655 msgstr ""
10656 "B<setfsgid>()  は Linux 特有であり、移植を想定したプログラムで使用してはいけ"
10657 "ない。"
10658
10659 #. type: Plain text
10660 #: build/C/man2/setfsgid.2:85
10661 msgid ""
10662 "When glibc determines that the argument is not a valid group ID, it will "
10663 "return -1 and set I<errno> to B<EINVAL> without attempting the system call."
10664 msgstr ""
10665 "glibc が引き数がグループID として不正だと判断した場合は、 システムコールを行"
10666 "わず I<errno> に B<EINVAL> を設定して -1 が返される。"
10667
10668 #. type: Plain text
10669 #: build/C/man2/setfsgid.2:96
10670 msgid ""
10671 "Note that at the time this system call was introduced, a process could send "
10672 "a signal to a process with the same effective user ID.  Today signal "
10673 "permission handling is slightly different.  See B<setfsuid>(2)  for a "
10674 "discussion of why the use of both B<setfsuid>(2)  and B<setfsgid>()  is "
10675 "nowadays unneeded."
10676 msgstr ""
10677 "このシステムコールが導入された当時、プロセスは 同じ実効ユーザIDのプロセスへシ"
10678 "グナルを送ることができた。 今日では、シグナル送信権限の扱いはかなり違うものに"
10679 "なっている。 なぜ今日では B<setfsuid>(2) と B<setfsgid>() の両者が不要なのか"
10680 "の議論については B<setfsuid>(2) を参照のこと。"
10681
10682 #. type: Plain text
10683 #: build/C/man2/setfsgid.2:106
10684 msgid ""
10685 "The original Linux B<setfsgid>()  system call supported only 16-bit group "
10686 "IDs.  Subsequently, Linux 2.4 added B<setfsgid32>()  supporting 32-bit IDs.  "
10687 "The glibc B<setfsgid>()  wrapper function transparently deals with the "
10688 "variation across kernel versions."
10689 msgstr ""
10690 "元々の Linux の B<setfsgid>() システムコールは\n"
10691 "16 ビットのグループ ID だけに対応していた。\n"
10692 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10693 "B<setfsgid32>() が追加された。\n"
10694 "glibc の B<setfsgid>() のラッパー関数は\n"
10695 "カーネルバージョンによるこの違いを吸収している。"
10696
10697 #. type: Plain text
10698 #: build/C/man2/setfsgid.2:123
10699 msgid ""
10700 "No error indications of any kind are returned to the caller, and the fact "
10701 "that both successful and unsuccessful calls return the same value makes it "
10702 "impossible to directly determine whether the call succeeded or failed.  "
10703 "Instead, the caller must resort to looking at the return value from a "
10704 "further call such as I<setfsgid(-1)> (which will always fail), in order to "
10705 "determine if a preceding call to B<setfsgid>()  changed the filesystem group "
10706 "ID.  At the very least, B<EPERM> should be returned when the call fails "
10707 "(because the caller lacks the B<CAP_SETGID> capability)."
10708 msgstr ""
10709 "いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出し"
10710 "は同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできな"
10711 "い。 その代わり、 直前の B<setfsgid>() の呼び出しがファイルシステムグループ "
10712 "ID を変更したかどうかを判定するために、 呼び出し元はこの後に I<setfsgid(-1)> "
10713 "などを呼び出して返り値を見なければならない (I<setfsgid(-1)> は常に失敗す"
10714 "る)。 最低でも、失敗した場合は B<EPERM> くらいは返すべきである (呼び出し元に"
10715 "は B<CAP_SETGID> ケーパビリティがなかったのだから)。"
10716
10717 #. type: Plain text
10718 #: build/C/man2/setfsgid.2:128
10719 msgid "B<kill>(2), B<setfsuid>(2), B<capabilities>(7), B<credentials>(7)"
10720 msgstr "B<kill>(2), B<setfsuid>(2), B<capabilities>(7), B<credentials>(7)"
10721
10722 #. type: TH
10723 #: build/C/man2/setfsuid.2:31
10724 #, no-wrap
10725 msgid "SETFSUID"
10726 msgstr "SETFSUID"
10727
10728 #. type: Plain text
10729 #: build/C/man2/setfsuid.2:34
10730 msgid "setfsuid - set user identity used for filesystem checks"
10731 msgstr "setfsuid - ファイルシステムのチェックに用いられるユーザ ID を設定する"
10732
10733 #. type: Plain text
10734 #: build/C/man2/setfsuid.2:38
10735 msgid "B<int setfsuid(uid_t >I<fsuid>B<);>"
10736 msgstr "B<int setfsuid(uid_t >I<fsuid>B<);>"
10737
10738 #. type: Plain text
10739 #: build/C/man2/setfsuid.2:51
10740 msgid ""
10741 "The system call B<setfsuid>()  changes the value of the caller's filesystem "
10742 "user ID\\(emthe user ID that the Linux kernel uses to check for all accesses "
10743 "to the filesystem.  Normally, the value of the filesystem user ID will "
10744 "shadow the value of the effective user ID.  In fact, whenever the effective "
10745 "user ID is changed, the filesystem user ID will also be changed to the new "
10746 "value of the effective user ID."
10747 msgstr ""
10748 "B<setfsuid>()  は、 呼び出し元のファイルシステムユーザー ID \\(em ファイルシ"
10749 "ステムへの全てのアクセスのチェックにおいて Linux カーネルが使用するユーザ ID "
10750 "\\(em の値を変更する。通常はファイルシステムユーザー ID の値は実効 "
10751 "(effective) ユーザID と同じになる。実際、 実効ユーザID が変更される度にファイ"
10752 "ルシステムユーザー ID もまた新しい実効ユーザ ID の値に変更される。"
10753
10754 #. type: Plain text
10755 #: build/C/man2/setfsuid.2:62
10756 msgid ""
10757 "Explicit calls to B<setfsuid>()  and B<setfsgid>(2)  are usually used only "
10758 "by programs such as the Linux NFS server that need to change what user and "
10759 "group ID is used for file access without a corresponding change in the real "
10760 "and effective user and group IDs.  A change in the normal user IDs for a "
10761 "program such as the NFS server is a security hole that can expose it to "
10762 "unwanted signals.  (But see below.)"
10763 msgstr ""
10764 "通常、 B<setfsuid>()  や B<setfsgid>() を明示的に呼び出すのは、Linux NFS サー"
10765 "バー のように、 ファイルアクセスに用いるユーザID / グループID を変更しなけれ"
10766 "ばならないが、 対応する実(real)/実効(effective) ユーザID / グループID は変更"
10767 "したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通"
10768 "常のユーザID を変更すると、 プロセスを望まないシグナルにさらす可能性があり、 "
10769 "セキュリティホールになる。(下記参照)"
10770
10771 #. type: Plain text
10772 #: build/C/man2/setfsuid.2:68
10773 msgid ""
10774 "B<setfsuid>()  will succeed only if the caller is the superuser or if "
10775 "I<fsuid> matches either the caller's real user ID, effective user ID, saved "
10776 "set-user-ID, or current filesystem user ID."
10777 msgstr ""
10778 "B<setfsuid>()  は、スーパーユーザによって呼び出された場合か、 I<fsuid> が呼び"
10779 "出し元の実ユーザID、実効ユーザID、 保存セットユーザID (saved set-user-ID)、現"
10780 "在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功する。"
10781
10782 #. type: Plain text
10783 #: build/C/man2/setfsuid.2:71
10784 msgid ""
10785 "On both success and failure, this call returns the previous filesystem user "
10786 "ID of the caller."
10787 msgstr ""
10788 "成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムユーザー "
10789 "ID の値を返す。"
10790
10791 #. type: Plain text
10792 #: build/C/man2/setfsuid.2:79
10793 msgid ""
10794 "B<setfsuid>()  is Linux-specific and should not be used in programs intended "
10795 "to be portable."
10796 msgstr ""
10797 "B<setfsuid>()  は Linux 特有であり、移植を想定したプログラムで使用してはいけ"
10798 "ない。"
10799
10800 #. type: Plain text
10801 #: build/C/man2/setfsuid.2:85
10802 msgid ""
10803 "When glibc determines that the argument is not a valid user ID, it will "
10804 "return -1 and set I<errno> to B<EINVAL> without attempting the system call."
10805 msgstr ""
10806 "glibc が引き数がユーザID として不正だと判断した場合は、 システムコールを行わ"
10807 "ず I<errno> に B<EINVAL> を設定して -1 が返される。"
10808
10809 #. type: Plain text
10810 #: build/C/man2/setfsuid.2:104
10811 msgid ""
10812 "At the time when this system call was introduced, one process could send a "
10813 "signal to another process with the same effective user ID.  This meant that "
10814 "if a privileged process changed its effective user ID for the purpose of "
10815 "file permission checking, then it could become vulnerable to receiving "
10816 "signals sent by another (unprivileged) process with the same user ID.  The "
10817 "filesystem user ID attribute was thus added to allow a process to change its "
10818 "user ID for the purposes of file permission checking without at the same "
10819 "time becoming vulnerable to receiving unwanted signals.  Since Linux 2.0, "
10820 "signal permission handling is different (see B<kill>(2)), with the result "
10821 "that a process change can change its effective user ID without being "
10822 "vulnerable to receiving signals from unwanted processes.  Thus, "
10823 "B<setfsuid>()  is nowadays unneeded and should be avoided in new "
10824 "applications (likewise for B<setfsgid>(2))."
10825 msgstr ""
10826 "このシステムコールが導入された当時、 あるプロセスは同じ実効ユーザー ID を持つ"
10827 "別のプロセスにシグナルを送信できた。 これは、 特権プロセスがファイルのアクセ"
10828 "ス許可をチェックするために自身の実効ユーザー ID を変更すると、 同じユーザー "
10829 "ID を持つ別の (非特権) プロセスが送信したシグナルを受け取るようになってしまう"
10830 "ことを意味する。そのため、 プロセスが、 受け取りたくないシグナルを受信する状"
10831 "態にならずに、 ファイルのアクセス許可をチェックするために自身のユーザー ID を"
10832 "変更できるように、 ファイルシステムユーザー ID 属性が追加された。 Linux 2.0 "
10833 "以降では、 シグナルの送信許可の扱いは異なり (B<kill>(2) 参照)、 プロセスは、 "
10834 "望まないプロセスからシグナルを受信してしまう状態にならずに、 自身の実効ユー"
10835 "ザー ID を変更することができる。 したがって、 B<setfsuid>() は今日では不要で"
10836 "あり、 新規のアプリケーションでは使用すべきではない (B<setfsgid>(2) も同様)。"
10837
10838 #. type: Plain text
10839 #: build/C/man2/setfsuid.2:114
10840 msgid ""
10841 "The original Linux B<setfsuid>()  system call supported only 16-bit user "
10842 "IDs.  Subsequently, Linux 2.4 added B<setfsuid32>()  supporting 32-bit IDs.  "
10843 "The glibc B<setfsuid>()  wrapper function transparently deals with the "
10844 "variation across kernel versions."
10845 msgstr ""
10846 "元々の Linux の B<setfsuid>() システムコールは\n"
10847 "16 ビットのグループ ID だけに対応していた。\n"
10848 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10849 "B<setfsuid32>() が追加された。\n"
10850 "glibc の B<setfsuid>() のラッパー関数は\n"
10851 "カーネルバージョンによるこの違いを吸収している。"
10852
10853 #. type: Plain text
10854 #: build/C/man2/setfsuid.2:131
10855 msgid ""
10856 "No error indications of any kind are returned to the caller, and the fact "
10857 "that both successful and unsuccessful calls return the same value makes it "
10858 "impossible to directly determine whether the call succeeded or failed.  "
10859 "Instead, the caller must resort to looking at the return value from a "
10860 "further call such as I<setfsuid(-1)> (which will always fail), in order to "
10861 "determine if a preceding call to B<setfsuid>()  changed the filesystem user "
10862 "ID.  At the very least, B<EPERM> should be returned when the call fails "
10863 "(because the caller lacks the B<CAP_SETUID> capability)."
10864 msgstr ""
10865 "いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出し"
10866 "は同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできな"
10867 "い。 その代わり、 直前の B<setfsuid>() の呼び出しがファイルシステムグループ "
10868 "ID を変更したかどうかを判定するために、 呼び出し元はこの後に I<setfsuid(-1)> "
10869 "などを呼び出して返り値を見なければならない (I<setfsuid(-1)> は常に失敗す"
10870 "る)。 最低でも、失敗した場合は B<EPERM> くらいは返すべきである (呼び出し元に"
10871 "は B<CAP_SETUID> ケーパビリティがなかったのだから)。"
10872
10873 #. type: Plain text
10874 #: build/C/man2/setfsuid.2:136
10875 msgid "B<kill>(2), B<setfsgid>(2), B<capabilities>(7), B<credentials>(7)"
10876 msgstr "B<kill>(2), B<setfsgid>(2), B<capabilities>(7), B<credentials>(7)"
10877
10878 #. type: TH
10879 #: build/C/man2/setgid.2:29
10880 #, no-wrap
10881 msgid "SETGID"
10882 msgstr "SETGID"
10883
10884 #. type: Plain text
10885 #: build/C/man2/setgid.2:32
10886 msgid "setgid - set group identity"
10887 msgstr "setgid - グループ識別(identity)を設定する"
10888
10889 #. type: Plain text
10890 #: build/C/man2/setgid.2:38
10891 msgid "B<int setgid(gid_t >I<gid>B<);>"
10892 msgstr "B<int setgid(gid_t >I<gid>B<);>"
10893
10894 #. type: Plain text
10895 #: build/C/man2/setgid.2:43
10896 msgid ""
10897 "B<setgid>()  sets the effective group ID of the calling process.  If the "
10898 "caller is the superuser, the real GID and saved set-group-ID are also set."
10899 msgstr ""
10900 "B<setgid>()  は呼び出し元のプロセスの実効 (effective) グループID を設定す"
10901 "る。 もしスーパーユーザーによって呼び出された場合は、 実 (real) グループID と"
10902 "保存 (saved) set-group-ID も設定される。"
10903
10904 #. type: Plain text
10905 #: build/C/man2/setgid.2:53
10906 msgid ""
10907 "Under Linux, B<setgid>()  is implemented like the POSIX version with the "
10908 "B<_POSIX_SAVED_IDS> feature.  This allows a set-group-ID program that is not "
10909 "set-user-ID-root to drop all of its group privileges, do some un-privileged "
10910 "work, and then reengage the original effective group ID in a secure manner."
10911 msgstr ""
10912 "Linux において、 B<setgid>()  は B<_POSIX_SAVED_IDS> をもった POSIX 版のよう"
10913 "に実装されている。 これは set-user-ID-root でない set-group-ID プログラムにそ"
10914 "のグループの 特権の全て落とし、特権の必要ない仕事をし、本来の実効グループID "
10915 "に 安全な方法で再び戻すことを許す。"
10916
10917 #. type: Plain text
10918 #: build/C/man2/setgid.2:64
10919 msgid "The group ID specified in I<gid> is not valid in this user namespace."
10920 msgstr ""
10921 "I<gid> で指定されたグループ ID がこのユーザー名前空間では有効ではない。"
10922
10923 #. type: Plain text
10924 #: build/C/man2/setgid.2:71
10925 msgid ""
10926 "The calling process is not privileged (does not have the B<CAP_SETGID> "
10927 "capability), and I<gid> does not match the real group ID or saved set-group-"
10928 "ID of the calling process."
10929 msgstr ""
10930 "呼び出し元のプロセスに権限がなく (B<CAP_SETGID> ケーパビリティがなく)、かつ "
10931 "I<gid> が呼び出し元のプロセスの実グループID と保存セットグループID のどちらと"
10932 "も一致しない。"
10933
10934 #. type: Plain text
10935 #: build/C/man2/setgid.2:83
10936 msgid ""
10937 "The original Linux B<setgid>()  system call supported only 16-bit group "
10938 "IDs.  Subsequently, Linux 2.4 added B<setgid32>()  supporting 32-bit IDs.  "
10939 "The glibc B<setgid>()  wrapper function transparently deals with the "
10940 "variation across kernel versions."
10941 msgstr ""
10942 "元々の Linux の B<setgid>() システムコールは\n"
10943 "16 ビットのグループ ID だけに対応していた。\n"
10944 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
10945 "B<setgid32>() が追加された。\n"
10946 "glibc の B<setgid>() のラッパー関数は\n"
10947 "カーネルバージョンによるこの違いを吸収している。"
10948
10949 #. type: Plain text
10950 #: build/C/man2/setgid.2:90
10951 msgid ""
10952 "B<getgid>(2), B<setegid>(2), B<setregid>(2), B<capabilities>(7), "
10953 "B<credentials>(7), B<user_namespaces>(7)"
10954 msgstr ""
10955 "B<getgid>(2), B<setegid>(2), B<setregid>(2), B<capabilities>(7), "
10956 "B<credentials>(7), B<user_namespaces>(7)"
10957
10958 #. type: TH
10959 #: build/C/man2/setpgid.2:48
10960 #, no-wrap
10961 msgid "SETPGID"
10962 msgstr "SETPGID"
10963
10964 #. type: TH
10965 #: build/C/man2/setpgid.2:48
10966 #, no-wrap
10967 msgid "2014-01-07"
10968 msgstr "2014-01-07"
10969
10970 #. type: Plain text
10971 #: build/C/man2/setpgid.2:51
10972 msgid "setpgid, getpgid, setpgrp, getpgrp - set/get process group"
10973 msgstr "setpgid, getpgid, setpgrp, getpgrp - プロセスグループの設定/取得を行う"
10974
10975 #. type: Plain text
10976 #: build/C/man2/setpgid.2:55
10977 msgid "B<int setpgid(pid_t >I<pid>B<, pid_t >I<pgid>B<);>"
10978 msgstr "B<int setpgid(pid_t >I<pid>B<, pid_t >I<pgid>B<);>"
10979
10980 #. type: Plain text
10981 #: build/C/man2/setpgid.2:57
10982 msgid "B<pid_t getpgid(pid_t >I<pid>B<);>"
10983 msgstr "B<pid_t getpgid(pid_t >I<pid>B<);>"
10984
10985 #. type: Plain text
10986 #: build/C/man2/setpgid.2:59
10987 msgid "B<pid_t getpgrp(void);> /* POSIX.1 version */"
10988 msgstr "B<pid_t getpgrp(void);> /* POSIX.1 version */"
10989
10990 #. type: Plain text
10991 #: build/C/man2/setpgid.2:62
10992 msgid ""
10993 "B<pid_t getpgrp(pid_t >I<pid>B<);\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ > /* BSD "
10994 "version */"
10995 msgstr ""
10996 "B<pid_t getpgrp(pid_t >I<pid>B<);\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ > /* BSD "
10997 "version */"
10998
10999 #. type: Plain text
11000 #: build/C/man2/setpgid.2:64
11001 msgid "B<int setpgrp(void);> /* System V version */"
11002 msgstr "B<int setpgrp(void);> /* System V version */"
11003
11004 #. type: Plain text
11005 #: build/C/man2/setpgid.2:67
11006 msgid "B<int setpgrp(pid_t >I<pid>B<, pid_t >I<pgid>B<);\\ > /* BSD version */"
11007 msgstr ""
11008 "B<int setpgrp(pid_t >I<pid>B<, pid_t >I<pgid>B<);\\ > /* BSD version */"
11009
11010 #. type: Plain text
11011 #: build/C/man2/setpgid.2:76
11012 msgid "B<getpgid>():"
11013 msgstr "B<getpgid>():"
11014
11015 #. type: Plain text
11016 #: build/C/man2/setpgid.2:84
11017 msgid "B<setpgrp>() (POSIX.1):"
11018 msgstr "B<setpgrp>() (POSIX.1):"
11019
11020 #. type: Plain text
11021 #: build/C/man2/setpgid.2:87
11022 #, no-wrap
11023 msgid ""
11024 "    _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
11025 "    _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED\n"
11026 msgstr ""
11027 "    _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
11028 "    _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED\n"
11029
11030 #. type: Plain text
11031 #: build/C/man2/setpgid.2:89
11032 #, no-wrap
11033 msgid "    || /* Since glibc 2.19: */ _BSD_SOURCE\n"
11034 msgstr "    || /* glibc 2.19 以降: */ _BSD_SOURCE\n"
11035
11036 #. type: Plain text
11037 #: build/C/man2/setpgid.2:93
11038 msgid "B<setpgrp>()\\ (BSD), B<getpgrp>()\\ (BSD) [before glibc 2.19]:"
11039 msgstr "B<setpgrp>()\\ (BSD), B<getpgrp>()\\ (BSD) [glibc 2.19 より前]:"
11040
11041 #. type: Plain text
11042 #: build/C/man2/setpgid.2:97
11043 #, no-wrap
11044 msgid ""
11045 "    _BSD_SOURCE &&\n"
11046 "        !\\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||\n"
11047 "           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)\n"
11048 msgstr ""
11049 "    _BSD_SOURCE &&\n"
11050 "        !\\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||\n"
11051 "           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)\n"
11052
11053 #. type: Plain text
11054 #: build/C/man2/setpgid.2:109
11055 msgid ""
11056 "All of these interfaces are available on Linux, and are used for getting and "
11057 "setting the process group ID (PGID) of a process.  The preferred, POSIX.1-"
11058 "specified ways of doing this are: B<getpgrp>(void), for retrieving the "
11059 "calling process's PGID; and B<setpgid>(), for setting a process's PGID."
11060 msgstr ""
11061 "これらのインタフェースすべてが Linux で利用可能で、 これらを使ってプロセスの"
11062 "プロセスグループ ID (PGID) の 取得や設定ができる。 推奨の、POSIX.1 で規定され"
11063 "た方法では、 B<getpgrp>(void)  で呼び出し元プロセスの PGID を取得し、 "
11064 "B<setpgid>()  で設定する。"
11065
11066 #. type: Plain text
11067 #: build/C/man2/setpgid.2:134
11068 msgid ""
11069 "B<setpgid>()  sets the PGID of the process specified by I<pid> to I<pgid>.  "
11070 "If I<pid> is zero, then the process ID of the calling process is used.  If "
11071 "I<pgid> is zero, then the PGID of the process specified by I<pid> is made "
11072 "the same as its process ID.  If B<setpgid>()  is used to move a process from "
11073 "one process group to another (as is done by some shells when creating "
11074 "pipelines), both process groups must be part of the same session (see "
11075 "B<setsid>(2)  and B<credentials>(7)).  In this case, the I<pgid> specifies "
11076 "an existing process group to be joined and the session ID of that group must "
11077 "match the session ID of the joining process."
11078 msgstr ""
11079 "B<setpgid>()  は I<pid> で指定したプロセスの PGID に I<pgid> を設定する。 "
11080 "I<pid> がゼロならば、呼び出し元プロセスのプロセス ID が pid として使用され"
11081 "る。 I<pgid> がゼロならば、 I<pid> で指定されたプロセスの PGID がそのプロセス"
11082 "のプロセス ID と 同じに設定される。 B<setpgid>()  をプロセスをあるプロセスグ"
11083 "ループから別のグループへ 移動するために使用する場合は (一部のシェルはパイプラ"
11084 "インを生成 する時にこれを行う)、両方のプロセスグループは同じセッションの 一部"
11085 "でなければならない (B<setsid>(2)  と B<credentials>(7)  参照)。この場合は "
11086 "I<pgid> は参加すべき既存の プロセスグループを指定し、そのセッション ID は参加"
11087 "するプロセスの セッション ID に一致しなければならない。"
11088
11089 #. type: Plain text
11090 #: build/C/man2/setpgid.2:139
11091 msgid ""
11092 "The POSIX.1 version of B<getpgrp>(), which takes no arguments, returns the "
11093 "PGID of the calling process."
11094 msgstr ""
11095 "POSIX.1 バージョンの B<getpgrp>()  は引き数を一つもとらず、 呼び出し元プロセ"
11096 "スの PGID を返す。"
11097
11098 #. type: Plain text
11099 #: build/C/man2/setpgid.2:150
11100 msgid ""
11101 "B<getpgid>()  returns the PGID of the process specified by I<pid>.  If "
11102 "I<pid> is zero, the process ID of the calling process is used.  (Retrieving "
11103 "the PGID of a process other than the caller is rarely necessary, and the "
11104 "POSIX.1 B<getpgrp>()  is preferred for that task.)"
11105 msgstr ""
11106 "B<getpgid>()  は I<pid> で指定されたプロセスの PGID を返す。 I<pid> がゼロな"
11107 "らば、呼び出し元プロセスのプロセス ID が pid として使用される。 (呼び出し元プ"
11108 "ロセス以外のプロセスの PGID の取得が必要になることは めったになく、呼び出し元"
11109 "プロセスの PGID を取得するには POSIX.1 バージョンの B<getpgrp>()  を使うのが"
11110 "望ましい。)"
11111
11112 #. type: Plain text
11113 #: build/C/man2/setpgid.2:155
11114 msgid ""
11115 "The System\\ V-style B<setpgrp>(), which takes no arguments, is equivalent "
11116 "to I<setpgid(0,\\ 0)>."
11117 msgstr ""
11118 "System\\ V バージョンの B<setpgrp>()  は引き数を一つもとらず、 I<setpgid(0,"
11119 "\\ 0)> と等価である。"
11120
11121 #. type: Plain text
11122 #: build/C/man2/setpgid.2:163
11123 msgid ""
11124 "The BSD-specific B<setpgrp>()  call, which takes arguments I<pid> and "
11125 "I<pgid>, is is a wrapper function that calls"
11126 msgstr ""
11127 "BSD 仕様の B<setpgrp>()  は I<pid> と I<pgid> を引き数にとり、 以下を呼び出す"
11128 "ラッパー関数である。"
11129
11130 #. type: Plain text
11131 #: build/C/man2/setpgid.2:165
11132 #, no-wrap
11133 msgid "    setpgid(pid, pgid)\n"
11134 msgstr "    setpgid(pid, pgid)\n"
11135
11136 #.  The true BSD setpgrp() system call differs in allowing the PGID
11137 #.  to be set to arbitrary values, rather than being restricted to
11138 #.  PGIDs in the same session.
11139 #. type: Plain text
11140 #: build/C/man2/setpgid.2:176
11141 msgid ""
11142 "Since glibc 2.19, the BSD-specific B<setpgrp>()  function is no longer "
11143 "exposed by I<E<lt>unistd.hE<gt>>; calls should be replaced with the "
11144 "B<setpgid>()  call shown above."
11145 msgstr ""
11146 "glibc 2.19 以降、 BSD 固有の B<setpgrp>() 関数はもはや I<E<lt>unistd.hE<gt>> "
11147 "では公開されない。 この関数の呼び出しは上記の B<setpgid>() の呼び出しで置き換"
11148 "えるべきである。"
11149
11150 #. type: Plain text
11151 #: build/C/man2/setpgid.2:182
11152 msgid ""
11153 "The BSD-specific B<getpgrp>()  call, which takes a single I<pid> argument, "
11154 "is a wrapper function that calls"
11155 msgstr ""
11156 "BSD 仕様の B<getpgrp>()  は I<pid> だけを引き数にとり、 以下を呼び出すラッ"
11157 "パー関数である。"
11158
11159 #. type: Plain text
11160 #: build/C/man2/setpgid.2:184
11161 #, no-wrap
11162 msgid "    getpgid(pid)\n"
11163 msgstr "    getpgid(pid)\n"
11164
11165 #. type: Plain text
11166 #: build/C/man2/setpgid.2:195
11167 msgid ""
11168 "Since glibc 2.19, the BSD-specific B<getpgrp>()  function is no longer "
11169 "exposed by I<E<lt>unistd.hE<gt>>; calls should be replaced with calls to the "
11170 "POSIX.1 B<getpgrp>()  which takes no arguments (if the intent is to obtain "
11171 "the caller's PGID), or with the B<getpgid>()  call shown above."
11172 msgstr ""
11173 "glibc 2.19 以降、 BSD 固有の B<getpgrp>() 関数はもはや I<E<lt>unistd.hE<gt>> "
11174 "では公開されない。 この関数の呼び出しは、引き数を取らない POSIX.1 の "
11175 "B<getpgrp>() の呼び出し (呼び出し元の PGID を取得する目的の場合)、もしくは上"
11176 "記の B<getpgid>() の呼び出しで置き換えるべきである。"
11177
11178 #. type: Plain text
11179 #: build/C/man2/setpgid.2:204
11180 msgid ""
11181 "On success, B<setpgid>()  and B<setpgrp>()  return zero.  On error, -1 is "
11182 "returned, and I<errno> is set appropriately."
11183 msgstr ""
11184 "B<setpgid>()  と B<setpgrp>()  は成功した場合、ゼロを返す。エラーの場合は -1 "
11185 "を返し、 I<errno> が適切に設定される。"
11186
11187 #. type: Plain text
11188 #: build/C/man2/setpgid.2:208
11189 msgid "The POSIX.1 B<getpgrp>()  always returns the PGID of the caller."
11190 msgstr ""
11191 "POSIX.1 バージョンの B<getpgrp>()  は常に呼び出しプロセスの PGID を返す。"
11192
11193 #. type: Plain text
11194 #: build/C/man2/setpgid.2:216
11195 msgid ""
11196 "B<getpgid>(), and the BSD-specific B<getpgrp>()  return a process group on "
11197 "success.  On error, -1 is returned, and I<errno> is set appropriately."
11198 msgstr ""
11199 "B<getpgid>()  と BSD 仕様の B<getpgrp>()  は成功した場合プロセスグループを返"
11200 "す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。"
11201
11202 #. type: Plain text
11203 #: build/C/man2/setpgid.2:225
11204 msgid ""
11205 "An attempt was made to change the process group ID of one of the children of "
11206 "the calling process and the child had already performed an B<execve>(2)  "
11207 "(B<setpgid>(), B<setpgrp>())."
11208 msgstr ""
11209 "呼び出し元プロセスの子プロセスのプロセスグループ ID を変更しようとしたが、 す"
11210 "でにその子プロセスは B<execve>(2)  を実行していた。 (B<setpgid>(), "
11211 "B<setpgrp>())"
11212
11213 #. type: Plain text
11214 #: build/C/man2/setpgid.2:231
11215 msgid "I<pgid> is less than 0 (B<setpgid>(), B<setpgrp>())."
11216 msgstr "I<pgid> が 0 より小さい。 (B<setpgid>(), B<setpgrp>())"
11217
11218 #. type: Plain text
11219 #: build/C/man2/setpgid.2:240
11220 msgid ""
11221 "An attempt was made to move a process into a process group in a different "
11222 "session, or to change the process group ID of one of the children of the "
11223 "calling process and the child was in a different session, or to change the "
11224 "process group ID of a session leader (B<setpgid>(), B<setpgrp>())."
11225 msgstr ""
11226 "プロセスを異なるセッションのプロセスグループに移動させようとした。 または呼び"
11227 "出し元プロセスの子プロセスのプロセスグループ ID を変更しようと したが、その子"
11228 "プロセスは別のセッションだった。 またはセッションリーダーのプロセスグループ "
11229 "ID を変更しようとした。 (B<setpgid>(), B<setpgrp>())"
11230
11231 #. type: Plain text
11232 #: build/C/man2/setpgid.2:250
11233 msgid ""
11234 "For B<getpgid>(): I<pid> does not match any process.  For B<setpgid>(): "
11235 "I<pid> is not the calling process and not a child of the calling process."
11236 msgstr ""
11237 "B<getpgid>()  の場合: I<pid> がどのプロセスにも一致しない。 B<setpgid>()  の"
11238 "場合: I<pid> が呼び出し元のプロセスではなく、呼び出し元のプロセスの子プロセス"
11239 "でもない。"
11240
11241 #. type: Plain text
11242 #: build/C/man2/setpgid.2:256
11243 msgid ""
11244 "B<setpgid>()  and the version of B<getpgrp>()  with no arguments conform to "
11245 "POSIX.1-2001."
11246 msgstr ""
11247 "B<setpgid>()  と、引き数なしバージョンの B<getpgrp>()  は POSIX.1-2001 に準拠"
11248 "している。"
11249
11250 #. type: Plain text
11251 #: build/C/man2/setpgid.2:265
11252 msgid ""
11253 "POSIX.1-2001 also specifies B<getpgid>()  and the version of B<setpgrp>()  "
11254 "that takes no arguments.  (POSIX.1-2008 marks this B<setpgrp>()  "
11255 "specification as obsolete.)"
11256 msgstr ""
11257 "POSIX.1-2001 は、 B<getpgid>()  と、引き数なしバージョンの B<setpgrp>()  も規"
11258 "定している。 POSIX.1-2008 は、この B<setpgrp>()  の仕様を廃止予定としている。"
11259
11260 #. type: Plain text
11261 #: build/C/man2/setpgid.2:272
11262 msgid ""
11263 "The version of B<getpgrp>()  with one argument and the version of "
11264 "B<setpgrp>()  that takes two arguments derive from 4.2BSD, and are not "
11265 "specified by POSIX.1."
11266 msgstr ""
11267 "引き数 1 個バージョンの B<getpgrp>()  と引き数 2 個バージョンの "
11268 "B<setpgrp>()  は 4.2BSD に由来し、 POSIX.1 では規定されていない。"
11269
11270 #. type: Plain text
11271 #: build/C/man2/setpgid.2:278
11272 msgid ""
11273 "A child created via B<fork>(2)  inherits its parent's process group ID.  The "
11274 "PGID is preserved across an B<execve>(2)."
11275 msgstr ""
11276 "B<fork>(2)  で作成された子プロセスは、親プロセスの PGID を継承する。 "
11277 "B<execve>(2)  の前後で PGID は保存される。"
11278
11279 #. type: Plain text
11280 #: build/C/man2/setpgid.2:281
11281 msgid ""
11282 "Each process group is a member of a session and each process is a member of "
11283 "the session of which its process group is a member."
11284 msgstr ""
11285 "各プロセスグループはセッションのメンバーであり、各プロセスは そのプロセスグ"
11286 "ループが所属しているセッションのメンバーである。"
11287
11288 #. type: Plain text
11289 #: build/C/man2/setpgid.2:308
11290 msgid ""
11291 "A session can have a controlling terminal.  At any time, one (and only one) "
11292 "of the process groups in the session can be the foreground process group for "
11293 "the terminal; the remaining process groups are in the background.  If a "
11294 "signal is generated from the terminal (e.g., typing the interrupt key to "
11295 "generate B<SIGINT>), that signal is sent to the foreground process group.  "
11296 "(See B<termios>(3)  for a description of the characters that generate "
11297 "signals.)  Only the foreground process group may B<read>(2)  from the "
11298 "terminal; if a background process group tries to B<read>(2)  from the "
11299 "terminal, then the group is sent a B<SIGTTIN> signal, which suspends it.  "
11300 "The B<tcgetpgrp>(3)  and B<tcsetpgrp>(3)  functions are used to get/set the "
11301 "foreground process group of the controlling terminal."
11302 msgstr ""
11303 "セッションは制御端末 (controlling terminal) を持つことができる。 いつでも、"
11304 "セッションに所属するプロセスグループの一つ (だけ) が 端末のフォアグランドのプ"
11305 "ロセスグループになることができ、 残りのプロセスグループはバックグラウンドにな"
11306 "る。 端末からシグナルが生成された場合 (例えば、中断キーを叩いて B<SIGINT> が"
11307 "生成されるなど)、そのシグナルはフォアグラウンドのプロセスグループ に送られる "
11308 "(シグナルを生成する文字の説明は B<termios>(3)  を参照)。 フォアグラウンドのプ"
11309 "ロセスグループだけが端末からの B<read>(2)  ができる。 バックグラウンドのプロ"
11310 "セスグループが端末からの B<read>(2)  を行おうとした場合、そのプロセスグループ"
11311 "にはシグナル B<SIGTTIN> が送られ、そのプロセスグループは一時停止 (suspend) す"
11312 "る。 関数 B<tcgetpgrp>(3)  と B<tcsetpgrp>(3)  を使うと、制御端末のフォアグラ"
11313 "ウンドのプロセスグループを 取得/設定できる。"
11314
11315 #. type: Plain text
11316 #: build/C/man2/setpgid.2:316
11317 msgid ""
11318 "The B<setpgid>()  and B<getpgrp>()  calls are used by programs such as "
11319 "B<bash>(1)  to create process groups in order to implement shell job control."
11320 msgstr ""
11321 "B<setpgid>()  と B<getpgrp>()  は、 B<bash>(1)  のようなプログラムで、シェル"
11322 "のジョブ制御 (job control) の実装のための プロセスグループを作成するのに使わ"
11323 "れる。"
11324
11325 #. type: Plain text
11326 #: build/C/man2/setpgid.2:326
11327 msgid ""
11328 "If a session has a controlling terminal, and the B<CLOCAL> flag for that "
11329 "terminal is not set, and a terminal hangup occurs, then the session leader "
11330 "is sent a B<SIGHUP>.  If the session leader exits, then a B<SIGHUP> signal "
11331 "will also be sent to each process in the foreground process group of the "
11332 "controlling terminal."
11333 msgstr ""
11334 "セッションが制御端末を持っていて、その端末に対して B<CLOCAL> フラグが設定され"
11335 "ておらず、端末のハングアップが起きた場合、 セッション・リーダーに B<SIGHUP> "
11336 "が送られる。 セッション・リーダーが終了した場合には、その制御端末の フォアグ"
11337 "ランドのプロセスグループに所属する各プロセスにも B<SIGHUP> シグナルが送られ"
11338 "る。"
11339
11340 #.  exit.3 refers to the following text:
11341 #. type: Plain text
11342 #: build/C/man2/setpgid.2:340
11343 msgid ""
11344 "If the exit of the process causes a process group to become orphaned, and if "
11345 "any member of the newly orphaned process group is stopped, then a B<SIGHUP> "
11346 "signal followed by a B<SIGCONT> signal will be sent to each process in the "
11347 "newly orphaned process group.  An orphaned process group is one in which the "
11348 "parent of every member of process group is either itself also a member of "
11349 "the process group or is a member of a process group in a different session "
11350 "(see also B<credentials>(7))."
11351 msgstr ""
11352 "プロセスの終了によってプロセスグループが孤児 (orphaned) になった際に、 その新"
11353 "たに孤児になったプロセスグループに停止しているメンバーがいれば、 その孤児に"
11354 "なったプロセスグループに属す全てのプロセスに B<SIGHUP> シグナルに続けて "
11355 "B<SIGCONT> シグナルが送られる。 孤児になった (orphaned) プロセスグループと"
11356 "は、 そのプロセスグループの全てのメンバーについて、メンバーの親プロセスが、 "
11357 "親プロセス自身もそのプロセスグループのメンバーか、 別のセッションに属すプロセ"
11358 "スグループのメンバーのいずれかであるような、 プロセスグループのことである。"
11359
11360 #. type: Plain text
11361 #: build/C/man2/setpgid.2:347
11362 msgid ""
11363 "B<getuid>(2), B<setsid>(2), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<termios>(3), "
11364 "B<credentials>(7)"
11365 msgstr ""
11366 "B<getuid>(2), B<setsid>(2), B<tcgetpgrp>(3), B<tcsetpgrp>(3), B<termios>(3), "
11367 "B<credentials>(7)"
11368
11369 #. type: TH
11370 #: build/C/man2/setresuid.2:26
11371 #, no-wrap
11372 msgid "SETRESUID"
11373 msgstr "SETRESUID"
11374
11375 #. type: Plain text
11376 #: build/C/man2/setresuid.2:29
11377 msgid "setresuid, setresgid - set real, effective and saved user or group ID"
11378 msgstr "setresuid, setresgid - ユーザやグループの 実、実効、保存 ID を設定する"
11379
11380 #. type: Plain text
11381 #: build/C/man2/setresuid.2:35
11382 msgid "B<int setresuid(uid_t >I<ruid>B<, uid_t >I<euid>B<, uid_t >I<suid>B<);>"
11383 msgstr ""
11384 "B<int setresuid(uid_t >I<ruid>B<, uid_t >I<euid>B<, uid_t >I<suid>B<);>"
11385
11386 #. type: Plain text
11387 #: build/C/man2/setresuid.2:37
11388 msgid "B<int setresgid(gid_t >I<rgid>B<, gid_t >I<egid>B<, gid_t >I<sgid>B<);>"
11389 msgstr ""
11390 "B<int setresgid(gid_t >I<rgid>B<, gid_t >I<egid>B<, gid_t >I<sgid>B<);>"
11391
11392 #. type: Plain text
11393 #: build/C/man2/setresuid.2:41
11394 msgid ""
11395 "B<setresuid>()  sets the real user ID, the effective user ID, and the saved "
11396 "set-user-ID of the calling process."
11397 msgstr ""
11398 "B<setresuid>()  は呼び出し元のプロセスの実 (real) ユーザーID、実効 "
11399 "(effective) ユーザーID、 保存 set-user-ID を設定する。"
11400
11401 #. type: Plain text
11402 #: build/C/man2/setresuid.2:47
11403 msgid ""
11404 "Unprivileged user processes may change the real UID, effective UID, and "
11405 "saved set-user-ID, each to one of: the current real UID, the current "
11406 "effective UID or the current saved set-user-ID."
11407 msgstr ""
11408 "非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set-user-ID を、 現在"
11409 "の実 UID、現在の実効 UID、現在の保存 set-user-ID のどれかに変更することができ"
11410 "る:"
11411
11412 #. type: Plain text
11413 #: build/C/man2/setresuid.2:51
11414 msgid ""
11415 "Privileged processes (on Linux, those having the B<CAP_SETUID> capability)  "
11416 "may set the real UID, effective UID, and saved set-user-ID to arbitrary "
11417 "values."
11418 msgstr ""
11419 "特権プロセス (Linux では B<CAP_SETUID> ケーパビリティ (capability) を持つ プ"
11420 "ロセス) は、実 UID、実効 UID、保存 set-user-ID を任意の値に設定できる。"
11421
11422 #. type: Plain text
11423 #: build/C/man2/setresuid.2:53
11424 msgid ""
11425 "If one of the arguments equals -1, the corresponding value is not changed."
11426 msgstr "引き数のどれかが -1 の場合はその値は変更されずに残される。"
11427
11428 #. type: Plain text
11429 #: build/C/man2/setresuid.2:57
11430 msgid ""
11431 "Regardless of what changes are made to the real UID, effective UID, and "
11432 "saved set-user-ID, the filesystem UID is always set to the same value as the "
11433 "(possibly new) effective UID."
11434 msgstr ""
11435 "実 UID、実効 UID、保存 set-user-ID にどんな変更が行われたかに関わらず、 ファ"
11436 "イルシステム UID は常に実効 UID (可能であれば変更後の新しい実効 UID)  と同じ"
11437 "値に設定される。"
11438
11439 #. type: Plain text
11440 #: build/C/man2/setresuid.2:64
11441 msgid ""
11442 "Completely analogously, B<setresgid>()  sets the real GID, effective GID, "
11443 "and saved set-group-ID of the calling process (and always modifies the "
11444 "filesystem GID to be the same as the effective GID), with the same "
11445 "restrictions for unprivileged processes."
11446 msgstr ""
11447 "全く同じように、 B<setresgid>()  は呼び出し元のプロセスの実 GID、実効 GID、保"
11448 "存 set-group-ID を設定する (さらにファイルシステム GID を実効 GID と同じ値に"
11449 "修正する)。 非特権プロセスは同様の制限を受ける。"
11450
11451 #. type: Plain text
11452 #: build/C/man2/setresuid.2:76
11453 msgid ""
11454 "I<Note>: there are cases where B<setresuid>()  can fail even when the caller "
11455 "is UID 0; it is a grave security error to omit checking for a failure return "
11456 "from B<setresuid>()."
11457 msgstr ""
11458 "I<注意>: 呼び出し元が UID 0 であっても B<setresuid>() が失敗する場合がある。 "
11459 "B<setresuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュ"
11460 "リティ上のエラーとなる。"
11461
11462 #. type: TP
11463 #: build/C/man2/setresuid.2:77 build/C/man2/setresuid.2:84
11464 #: build/C/man2/setreuid.2:106 build/C/man2/setreuid.2:113
11465 #: build/C/man2/setuid.2:83 build/C/man2/setuid.2:90
11466 #, no-wrap
11467 msgid "B<EAGAIN>"
11468 msgstr "B<EAGAIN>"
11469
11470 #. type: Plain text
11471 #: build/C/man2/setresuid.2:84 build/C/man2/setreuid.2:113
11472 msgid ""
11473 "The call would change the caller's real UID (i.e., I<ruid> does not match "
11474 "the caller's real UID), but there was a temporary failure allocating the "
11475 "necessary kernel data structures."
11476 msgstr ""
11477 "この呼び出しで呼び出し元の実 UID が変更されるはずだったが (つまり、 I<ruid> "
11478 "が呼び出し元の実 UID と一致していない)、 必要なカーネルのデータ構造体の割り当"
11479 "てで一時的な失敗があった。"
11480
11481 #. type: Plain text
11482 #: build/C/man2/setresuid.2:99 build/C/man2/setreuid.2:128
11483 msgid ""
11484 "I<ruid> does not match the caller's real UID and this call would bring the "
11485 "number of processes belonging to the real user ID I<ruid> over the caller's "
11486 "B<RLIMIT_NPROC> resource limit.  Since Linux 3.1, this error case no longer "
11487 "occurs (but robust applications should check for this error); see the "
11488 "description of B<EAGAIN> in B<execve>(2)."
11489 msgstr ""
11490 "I<ruid> は呼び出し元の実 UID と一致しておらず、 この呼び出しで実ユーザー ID "
11491 "I<ruid> に属するプロセス数が呼び出し元の B<RLIMIT_NPROC> リソース上限を超過す"
11492 "るところであった。 Linux 3.1 以降では、このエラーはもはや発生することはない "
11493 "(しかし、堅牢性が求められるアプリケーションではこのエラーを確認すべきであ"
11494 "る)。 B<execve>(2) の B<EAGAIN> の説明を参照。"
11495
11496 #. type: Plain text
11497 #: build/C/man2/setresuid.2:103 build/C/man2/setreuid.2:132
11498 msgid ""
11499 "One or more of the target user or group IDs is not valid in this user "
11500 "namespace."
11501 msgstr ""
11502 "対象のユーザー ID やグループ ID のうち 1 つ以上がこのユーザー名前空間で有効で"
11503 "はない。"
11504
11505 #. type: Plain text
11506 #: build/C/man2/setresuid.2:107
11507 msgid ""
11508 "The calling process is not privileged (did not have the B<CAP_SETUID> "
11509 "capability) and tried to change the IDs to values that are not permitted."
11510 msgstr ""
11511 "呼び出したプロセスが特権を持たないのに (B<CAP_SETUID> ケーパビリティを持たな"
11512 "いのに)、 ID を許されていない値に変更しようとした。"
11513
11514 #. type: Plain text
11515 #: build/C/man2/setresuid.2:109
11516 msgid "These calls are available under Linux since Linux 2.1.44."
11517 msgstr "Linux ではバージョン 2.1.44 より利用可能になった。"
11518
11519 #. type: Plain text
11520 #: build/C/man2/setresuid.2:116
11521 msgid ""
11522 "Under HP-UX and FreeBSD, the prototype is found in I<E<lt>unistd.hE<gt>>.  "
11523 "Under Linux, the prototype is provided by glibc since version 2.3.2."
11524 msgstr ""
11525 "HP-UX や FreeBSD では I<E<lt>unistd.hE<gt>> にプロトタイプが存在する。 \n"
11526 "Linux では、glibc 2.3.2 以降で プロトタイプが提供されている。"
11527
11528 #. type: Plain text
11529 #: build/C/man2/setresuid.2:132
11530 msgid ""
11531 "The original Linux B<setresuid>()  and B<setresgid>()  system calls "
11532 "supported only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
11533 "B<setresuid32>()  and B<setresgid32>(), supporting 32-bit IDs.  The glibc "
11534 "B<setresuid>()  and B<setresgid>()  wrapper functions transparently deal "
11535 "with the variations across kernel versions."
11536 msgstr ""
11537 "元々の Linux の B<setresuid>() と B<setresgid>() システムコールは\n"
11538 "16 ビットのグループ ID だけに対応していた。\n"
11539 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11540 "B<setresuid32>() と B<setresgid32>() が追加された。\n"
11541 "glibc の B<setresuid>() と B<setresgid>() のラッパー関数は\n"
11542 "カーネルバージョンによるこの違いを吸収している。"
11543
11544 #. type: Plain text
11545 #: build/C/man2/setresuid.2:142
11546 msgid ""
11547 "B<getresuid>(2), B<getuid>(2), B<setfsgid>(2), B<setfsuid>(2), "
11548 "B<setreuid>(2), B<setuid>(2), B<capabilities>(7), B<credentials>(7), "
11549 "B<user_namespaces>(7)"
11550 msgstr ""
11551 "B<getresuid>(2), B<getuid>(2), B<setfsgid>(2), B<setfsuid>(2), "
11552 "B<setreuid>(2), B<setuid>(2), B<capabilities>(7), B<credentials>(7), "
11553 "B<user_namespaces>(7)"
11554
11555 #. type: TH
11556 #: build/C/man2/setreuid.2:45
11557 #, no-wrap
11558 msgid "SETREUID"
11559 msgstr "SETREUID"
11560
11561 #. type: Plain text
11562 #: build/C/man2/setreuid.2:48
11563 msgid "setreuid, setregid - set real and/or effective user or group ID"
11564 msgstr ""
11565 "setreuid, setregid - 実 (real) と実効 (effective) ユーザー (グループ) ID を設"
11566 "定する"
11567
11568 #. type: Plain text
11569 #: build/C/man2/setreuid.2:54
11570 msgid "B<int setreuid(uid_t >I<ruid>B<, uid_t >I<euid>B<);>"
11571 msgstr "B<int setreuid(uid_t >I<ruid>B<, uid_t >I<euid>B<);>"
11572
11573 #. type: Plain text
11574 #: build/C/man2/setreuid.2:56
11575 msgid "B<int setregid(gid_t >I<rgid>B<, gid_t >I<egid>B<);>"
11576 msgstr "B<int setregid(gid_t >I<rgid>B<, gid_t >I<egid>B<);>"
11577
11578 #. type: Plain text
11579 #: build/C/man2/setreuid.2:64
11580 msgid "B<setreuid>(), B<setregid>():"
11581 msgstr "B<setreuid>(), B<setregid>():"
11582
11583 #. type: Plain text
11584 #: build/C/man2/setreuid.2:68
11585 msgid ""
11586 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
11587 "_XOPEN_SOURCE_EXTENDED"
11588 msgstr ""
11589 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
11590 "_XOPEN_SOURCE_EXTENDED"
11591
11592 #. type: Plain text
11593 #: build/C/man2/setreuid.2:73
11594 msgid "B<setreuid>()  sets real and effective user IDs of the calling process."
11595 msgstr ""
11596 "B<setreuid>()  は呼び出し元のプロセスの実 (real) ユーザー ID と 実効 "
11597 "(effective) ユーザー ID を設定する。"
11598
11599 #. type: Plain text
11600 #: build/C/man2/setreuid.2:76
11601 msgid ""
11602 "Supplying a value of -1 for either the real or effective user ID forces the "
11603 "system to leave that ID unchanged."
11604 msgstr ""
11605 "実ユーザー ID や実効ユーザー ID に -1 を与えた場合、 システムはその ID を変更"
11606 "しない。"
11607
11608 #. type: Plain text
11609 #: build/C/man2/setreuid.2:79
11610 msgid ""
11611 "Unprivileged processes may only set the effective user ID to the real user "
11612 "ID, the effective user ID, or the saved set-user-ID."
11613 msgstr ""
11614 "非特権プロセスは実効ユーザー ID を実ユーザー ID または実効ユーザー ID または "
11615 "保存 set-user-ID にしか設定できない。"
11616
11617 #. type: Plain text
11618 #: build/C/man2/setreuid.2:82
11619 msgid ""
11620 "Unprivileged users may only set the real user ID to the real user ID or the "
11621 "effective user ID."
11622 msgstr ""
11623 "非特権ユーザーは、実ユーザー ID を実ユーザー ID または 実効ユーザー ID にしか"
11624 "設定できない。"
11625
11626 #. type: Plain text
11627 #: build/C/man2/setreuid.2:88
11628 msgid ""
11629 "If the real user ID is set (i.e., I<ruid> is not -1) or the effective user "
11630 "ID is set to a value not equal to the previous real user ID, the saved set-"
11631 "user-ID will be set to the new effective user ID."
11632 msgstr ""
11633 "実ユーザーID が設定されたり (I<ruid> が -1 ではない)、実効ユーザーID が前の実"
11634 "ユーザーID と 異った値に設定された場合、保存 set-user-ID には新しい実効ユー"
11635 "ザーID の値が設定される。"
11636
11637 #. type: Plain text
11638 #: build/C/man2/setreuid.2:93
11639 msgid ""
11640 "Completely analogously, B<setregid>()  sets real and effective group ID's of "
11641 "the calling process, and all of the above holds with \"group\" instead of "
11642 "\"user\"."
11643 msgstr ""
11644 "これと全く同様に、 B<setregid>()  は呼び出し元のプロセスの実グループ ID と実"
11645 "効グループ ID を設定し、 上記の説明で「ユーザー」を「グループ」に読み替えたこ"
11646 "とが成り立つ。"
11647
11648 #. type: Plain text
11649 #: build/C/man2/setreuid.2:105
11650 msgid ""
11651 "I<Note>: there are cases where B<setreuid>()  can fail even when the caller "
11652 "is UID 0; it is a grave security error to omit checking for a failure return "
11653 "from B<setreuid>()."
11654 msgstr ""
11655 "I<注意>: 呼び出し元が UID 0 であっても B<setreuid>() が失敗する場合がある。 "
11656 "B<setreuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュ"
11657 "リティ上のエラーとなる。"
11658
11659 #. type: Plain text
11660 #: build/C/man2/setreuid.2:148
11661 msgid ""
11662 "The calling process is not privileged (Linux: does not have the "
11663 "B<CAP_SETUID> capability in the case of B<setreuid>(), or the B<CAP_SETGID> "
11664 "capability in the case of B<setregid>())  and a change other than (i)  "
11665 "swapping the effective user (group) ID with the real user (group) ID, or "
11666 "(ii) setting one to the value of the other or (iii) setting the effective "
11667 "user (group) ID to the value of the saved set-user-ID (saved set-group-ID) "
11668 "was specified."
11669 msgstr ""
11670 "呼び出し元のプロセスに特権がなく (Linux では B<setreuid>()  の場合に "
11671 "B<CAP_SETUID> ケーパビリティ (capability) がなく、 B<setregid>()  の場合に "
11672 "B<CAP_SETGID> ケーパビリティがない)、 以下のいずれでもない変更が指定された: "
11673 "(i) 実効ユーザー (グループ) ID と実ユーザー (グループ) ID を入れ換える。 "
11674 "(ii) 片方の値を他方に設定する。 (iii) 実効ユーザー (グループ) ID に保存 set-"
11675 "user-ID (保存 set-group-ID)  の値を設定する。"
11676
11677 #. type: Plain text
11678 #: build/C/man2/setreuid.2:154
11679 msgid ""
11680 "POSIX.1-2001, 4.3BSD (the B<setreuid>()  and B<setregid>()  function calls "
11681 "first appeared in 4.2BSD)."
11682 msgstr ""
11683 "POSIX.1-2001, 4.3BSD (B<setreuid>()  と B<setregid>()  関数コールは 4.2BSD で"
11684 "登場した)。"
11685
11686 #. type: Plain text
11687 #: build/C/man2/setreuid.2:158
11688 msgid ""
11689 "Setting the effective user (group) ID to the saved set-user-ID (saved set-"
11690 "group-ID) is possible since Linux 1.1.37 (1.1.38)."
11691 msgstr ""
11692 "実効ユーザー (グループ) ID を保存ユーザー (グループ) ID に 設定することが、"
11693 "Linux 1.1.37 (1.1.38) から可能になった。"
11694
11695 #. type: Plain text
11696 #: build/C/man2/setreuid.2:175
11697 msgid ""
11698 "POSIX.1 does not specify all of possible ID changes that are permitted on "
11699 "Linux for an unprivileged process.  For B<setreuid>(), the effective user ID "
11700 "can be made the same as the real user ID or the save set-user-ID, and it is "
11701 "unspecified whether unprivileged processes may set the real user ID to the "
11702 "real user ID, the effective user ID, or the saved set-user-ID.  For "
11703 "B<setregid>(), the real group ID can be changed to the value of the saved "
11704 "set-group-ID, and the effective group ID can be changed to the value of the "
11705 "real group ID or the saved set-group-ID.  The precise details of what ID "
11706 "changes are permitted vary across implementations."
11707 msgstr ""
11708 "POSIX.1 では、非特権プロセスに対して Linux 上で認められている ID の変更の 全"
11709 "パターンを規定しているわけではない。 B<setreuid>()  では、実効ユーザ ID を実"
11710 "ユーザ ID もしくは保存 set-user-ID と 同じ値にすることができるが、 非特権プロ"
11711 "セスが実ユーザ ID を実ユーザ ID、実効ユーザ ID、 保存 set-user-ID のどの値に"
11712 "も設定できるかは規定されていない。 B<setregid>()  では、実グループ ID を保存 "
11713 "set-group-ID と同じ値に変更でき、 実効グループ ID を実グループ ID や保存 set-"
11714 "group-ID と同じ値に変更できる。 どのような ID の変更が認められているかの正確"
11715 "な詳細は 実装ごとに異なる。"
11716
11717 #. type: Plain text
11718 #: build/C/man2/setreuid.2:178
11719 msgid ""
11720 "POSIX.1 makes no specification about the effect of these calls on the saved "
11721 "set-user-ID and saved set-group-ID."
11722 msgstr ""
11723 "POSIX.1 では、これらのシステムコールが保存 set-user-ID や 保存 set-group-ID "
11724 "に与える影響については規定していない。"
11725
11726 #. type: Plain text
11727 #: build/C/man2/setreuid.2:194
11728 msgid ""
11729 "The original Linux B<setreuid>()  and B<setregid>()  system calls supported "
11730 "only 16-bit user and group IDs.  Subsequently, Linux 2.4 added "
11731 "B<setreuid32>()  and B<setregid32>(), supporting 32-bit IDs.  The glibc "
11732 "B<setreuid>()  and B<setregid>()  wrapper functions transparently deal with "
11733 "the variations across kernel versions."
11734 msgstr ""
11735 "元々の Linux の B<setreuid>() と B<setregid>() システムコールは\n"
11736 "16 ビットのグループ ID だけに対応していた。\n"
11737 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
11738 "B<setreuid32>() と B<setregid32>() が追加された。\n"
11739 "glibc の B<setreuid>() と B<setregid>() のラッパー関数は\n"
11740 "カーネルバージョンによるこの違いを吸収している。"
11741
11742 #. type: Plain text
11743 #: build/C/man2/setreuid.2:203
11744 msgid ""
11745 "B<getgid>(2), B<getuid>(2), B<seteuid>(2), B<setgid>(2), B<setresuid>(2), "
11746 "B<setuid>(2), B<capabilities>(7), B<user_namespaces>(7)"
11747 msgstr ""
11748 "B<getgid>(2), B<getuid>(2), B<seteuid>(2), B<setgid>(2), B<setresuid>(2), "
11749 "B<setuid>(2), B<capabilities>(7), B<user_namespaces>(7)"
11750
11751 #. type: TH
11752 #: build/C/man2/setsid.2:31
11753 #, no-wrap
11754 msgid "SETSID"
11755 msgstr "SETSID"
11756
11757 #. type: Plain text
11758 #: build/C/man2/setsid.2:34
11759 msgid "setsid - creates a session and sets the process group ID"
11760 msgstr "setsid - セッション (session) を作成し、プロセスグループ ID を設定する"
11761
11762 #. type: Plain text
11763 #: build/C/man2/setsid.2:39
11764 msgid "B<pid_t setsid(void);>"
11765 msgstr "B<pid_t setsid(void);>"
11766
11767 #. type: Plain text
11768 #: build/C/man2/setsid.2:50
11769 msgid ""
11770 "B<setsid>()  creates a new session if the calling process is not a process "
11771 "group leader.  The calling process is the leader of the new session (i.e., "
11772 "its session ID is made the same as it process ID).  The calling process also "
11773 "becomes the process group leader of a new process group in the session (i."
11774 "e., its process group ID is made the same as it process ID)."
11775 msgstr ""
11776 "B<setsid>() は、 呼び出したプロセスがプロセスグループ・リーダー (process "
11777 "group leader) でなければ、 新しいセッションを作成する。 呼び出したプロセス"
11778 "は、 新しいセッションのリーダーとなる (すなわち、そのセッション ID がプロセ"
11779 "ス ID と同じ値になる)。 また、呼び出したプロセスは、 そのセッションの新しいプ"
11780 "ロセスグループのプロセスグループ・リーダーにもなる (すなわち、プロセスグルー"
11781 "プ ID がプロセス ID と同じ値になる)。"
11782
11783 #. type: Plain text
11784 #: build/C/man2/setsid.2:54
11785 msgid ""
11786 "The calling process will be the only process in the new process group and in "
11787 "the new session.  The new session has no controlling terminal."
11788 msgstr ""
11789 "呼び出したプロセスは、 新しいプロセスグループと新しいセッションの唯一のプロセ"
11790 "スとなる。 新しいセッションは制御端末を持たない。"
11791
11792 #. type: Plain text
11793 #: build/C/man2/setsid.2:61
11794 msgid ""
11795 "On success, the (new) session ID of the calling process is returned.  On "
11796 "error, I<(pid_t)\\ -1> is returned, and I<errno> is set to indicate the "
11797 "error."
11798 msgstr ""
11799 "成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの"
11800 "場合は、 I<(pid_t)\\ -1> が返され、 I<errno> にエラーを示す値が設定される。"
11801
11802 #. type: Plain text
11803 #: build/C/man2/setsid.2:68
11804 msgid ""
11805 "The process group ID of any process equals the PID of the calling process.  "
11806 "Thus, in particular, B<setsid>()  fails if the calling process is already a "
11807 "process group leader."
11808 msgstr ""
11809 "いずれかのプロセスのプロセスグループ ID が、 呼び出したプロセスの PID と等し"
11810 "い。 これは、呼び出したプロセスが既にプロセスリーダーの場合には B<setsid>()  "
11811 "は失敗することを意味する。"
11812
11813 #. type: Plain text
11814 #: build/C/man2/setsid.2:76
11815 msgid ""
11816 "A child created via B<fork>(2)  inherits its parent's session ID.  The "
11817 "session ID is preserved across an B<execve>(2)."
11818 msgstr ""
11819 "B<fork>(2)  で作成された子プロセスは、親プロセスのセッション ID を継承する。 "
11820 "B<execve>(2)  の前後でセッション ID は保存される。"
11821
11822 #. type: Plain text
11823 #: build/C/man2/setsid.2:93
11824 msgid ""
11825 "A process group leader is a process whose process group ID equals its PID.  "
11826 "Disallowing a process group leader from calling B<setsid>()  prevents the "
11827 "possibility that a process group leader places itself in a new session while "
11828 "other processes in the process group remain in the original session; such a "
11829 "scenario would break the strict two-level hierarchy of sessions and process "
11830 "groups.  In order to be sure that B<setsid>()  will succeed, B<fork>(2)  and "
11831 "B<_exit>(2), and have the child do B<setsid>()."
11832 msgstr ""
11833 "プロセスグループ・リーダーは、 プロセスグループ ID がその PID と同じ値のプロ"
11834 "セスである。 プロセスグループ・リーダーが B<setsid>() を呼び出すことを許可し"
11835 "ないと、 そのプロセスグループ内の他のプロセスを元のセッションに残したまま、 "
11836 "プロセスグループ・リーダーが自分自身を新しいセッションに入れるということがで"
11837 "きなくなる。 このようなシナリオは、 セッションとプロセスグループという厳密な "
11838 "2 階層モデルを壊すことになる。 B<setsid>() が成功することを保証するには、 "
11839 "B<fork>(2) と B<_exit>(2) を行い、 その子プロセスに B<setsid>() をさせればよ"
11840 "い。"
11841
11842 #. type: Plain text
11843 #: build/C/man2/setsid.2:100
11844 msgid ""
11845 "B<setsid>(1), B<getsid>(2), B<setpgid>(2), B<setpgrp>(2), B<tcgetsid>(3), "
11846 "B<credentials>(7)"
11847 msgstr ""
11848 "B<setsid>(1), B<getsid>(2), B<setpgid>(2), B<setpgrp>(2), B<tcgetsid>(3), "
11849 "B<credentials>(7)"
11850
11851 #. type: TH
11852 #: build/C/man2/setuid.2:30
11853 #, no-wrap
11854 msgid "SETUID"
11855 msgstr "SETUID"
11856
11857 #. type: Plain text
11858 #: build/C/man2/setuid.2:33
11859 msgid "setuid - set user identity"
11860 msgstr "setuid - ユーザー識別 (identity) を設定する"
11861
11862 #. type: Plain text
11863 #: build/C/man2/setuid.2:39
11864 msgid "B<int setuid(uid_t >I<uid>B<);>"
11865 msgstr "B<int setuid(uid_t >I<uid>B<);>"
11866
11867 #. type: Plain text
11868 #: build/C/man2/setuid.2:44
11869 msgid ""
11870 "B<setuid>()  sets the effective user ID of the calling process.  If the "
11871 "effective UID of the caller is root, the real UID and saved set-user-ID are "
11872 "also set."
11873 msgstr ""
11874 "B<setuid>()  は呼び出し元のプロセスの実効 (effective) ユーザー ID を設定す"
11875 "る。 もし呼び出し元プロセスの実効 UID が root ならば、 実 (real) UID と保存 "
11876 "(saved) set-user-ID も設定される。"
11877
11878 #. type: Plain text
11879 #: build/C/man2/setuid.2:53
11880 msgid ""
11881 "Under Linux, B<setuid>()  is implemented like the POSIX version with the "
11882 "B<_POSIX_SAVED_IDS> feature.  This allows a set-user-ID (other than root) "
11883 "program to drop all of its user privileges, do some un-privileged work, and "
11884 "then reengage the original effective user ID in a secure manner."
11885 msgstr ""
11886 "Linux では、 B<setuid>()  は B<_POSIX_SAVED_IDS> をもった POSIX 版のように実"
11887 "装されている。 これは (ルート以外の) set-user-ID プログラムにそのユーザーの特"
11888 "権を 全て与え、特権の必要ない仕事をし、本来の実効ユーザー ID に 安全な方法で"
11889 "再び戻すことを許す。"
11890
11891 #. type: Plain text
11892 #: build/C/man2/setuid.2:63
11893 msgid ""
11894 "If the user is root or the program is set-user-ID-root, special care must be "
11895 "taken.  The B<setuid>()  function checks the effective user ID of the caller "
11896 "and if it is the superuser, all process-related user ID's are set to "
11897 "I<uid>.  After this has occurred, it is impossible for the program to regain "
11898 "root privileges."
11899 msgstr ""
11900 "ユーザーが root またはプログラムが root に set-user-ID されているならば、 特"
11901 "別の注意が払われる。 B<setuid>()  関数は呼び出し者の実効ユーザー ID をチェッ"
11902 "クし、 それがスーパーユーザーならば、 プロセスに関連する全てのユーザー ID に "
11903 "I<uid> を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得る"
11904 "ことはできない。"
11905
11906 #. type: Plain text
11907 #: build/C/man2/setuid.2:70
11908 msgid ""
11909 "Thus, a set-user-ID-root program wishing to temporarily drop root "
11910 "privileges, assume the identity of an unprivileged user, and then regain "
11911 "root privileges afterward cannot use B<setuid>().  You can accomplish this "
11912 "with B<seteuid>(2)."
11913 msgstr ""
11914 "したがって、set-user-ID-root プログラムで、一時的にルート特権を解除し、 非特"
11915 "権ユーザであるかのように振舞い、後でルート権限をもう一度得ようと する場合に"
11916 "は、 B<setuid>()  を使うことができない。その場合には、 B<seteuid>(2)  を使う"
11917 "必要がある。"
11918
11919 #. type: Plain text
11920 #: build/C/man2/setuid.2:82
11921 msgid ""
11922 "I<Note>: there are cases where B<setuid>()  can fail even when the caller is "
11923 "UID 0; it is a grave security error to omit checking for a failure return "
11924 "from B<setuid>()."
11925 msgstr ""
11926 "I<注意>: 呼び出し元が UID 0 であっても B<setuid>() が失敗する場合がある。 "
11927 "B<setuid>() からのリターンが失敗かどうかの確認を省略することは重大なセキュリ"
11928 "ティ上のエラーとなる。"
11929
11930 #. type: Plain text
11931 #: build/C/man2/setuid.2:90
11932 msgid ""
11933 "The call would change the caller's real UID (i.e., I<uid> does not match the "
11934 "caller's real UID), but there was a temporary failure allocating the "
11935 "necessary kernel data structures."
11936 msgstr ""
11937 "この呼び出しで呼び出し元の実 UID が変更されるはずだったが (つまり、 I<uid> が"
11938 "呼び出し元の実 UID と一致していない)、 必要なカーネルのデータ構造体の割り当て"
11939 "で一時的な失敗があった。"
11940
11941 #. type: Plain text
11942 #: build/C/man2/setuid.2:105
11943 msgid ""
11944 "I<uid> does not match the real user ID of the caller and this call would "
11945 "bring the number of processes belonging to the real user ID I<uid> over the "
11946 "caller's B<RLIMIT_NPROC> resource limit.  Since Linux 3.1, this error case "
11947 "no longer occurs (but robust applications should check for this error); see "
11948 "the description of B<EAGAIN> in B<execve>(2)."
11949 msgstr ""
11950 "I<uid> は呼び出し元の実 UID と一致しておらず、 この呼び出しで実ユーザー ID "
11951 "I<ruid> に属するプロセス数が呼び出し元の B<RLIMIT_NPROC> リソース上限を超過す"
11952 "るところであった。 Linux 3.1 以降では、このエラーはもはや発生することはない "
11953 "(しかし、堅牢性が求められるアプリケーションではこのエラーを確認すべきであ"
11954 "る)。 B<execve>(2) の B<EAGAIN> の説明を参照。"
11955
11956 #. type: Plain text
11957 #: build/C/man2/setuid.2:110
11958 msgid "The user ID specified in I<uid> is not valid in this user namespace."
11959 msgstr ""
11960 "I<uid> で指定されたユーザー ID がこのユーザー名前空間では有効ではない。"
11961
11962 #. type: Plain text
11963 #: build/C/man2/setuid.2:117
11964 msgid ""
11965 "The user is not privileged (Linux: does not have the B<CAP_SETUID> "
11966 "capability) and I<uid> does not match the real UID or saved set-user-ID of "
11967 "the calling process."
11968 msgstr ""
11969 "ユーザーが特権を持たず (Linux では B<CAP_SETUID> ケーパビリティ (capability) "
11970 "を持たず)、 I<uid> が呼び出し元プロセスの実 UID または保存 set-user-ID と一致"
11971 "しない。"
11972
11973 #.  SVr4 documents an additional EINVAL error condition.
11974 #. type: Plain text
11975 #: build/C/man2/setuid.2:122
11976 msgid ""
11977 "SVr4, POSIX.1-2001.  Not quite compatible with the 4.4BSD call, which sets "
11978 "all of the real, saved, and effective user IDs."
11979 msgstr ""
11980 "SVr4, POSIX.1-2001.  4.4BSD のコールとは完全な互換性はない、 BSD のコールは"
11981 "実 (real)、保存 (saved)、実効 (effective) ID の全てを設定する。"
11982
11983 #. type: Plain text
11984 #: build/C/man2/setuid.2:130
11985 msgid ""
11986 "Linux has the concept of the filesystem user ID, normally equal to the "
11987 "effective user ID.  The B<setuid>()  call also sets the filesystem user ID "
11988 "of the calling process.  See B<setfsuid>(2)."
11989 msgstr ""
11990 "Linux はファイルシステム・ユーザー ID の概念を持つ。\n"
11991 "通常、これは実効ユーザー ID に等しい。 \n"
11992 "B<setuid>()  コールは呼び出し元のプロセスの\n"
11993 "ファイルシステム・ユーザー ID も設定する。 \n"
11994 "B<setfsuid>(2) も参照すること。"
11995
11996 #. type: Plain text
11997 #: build/C/man2/setuid.2:135
11998 msgid ""
11999 "If I<uid> is different from the old effective UID, the process will be "
12000 "forbidden from leaving core dumps."
12001 msgstr ""
12002 "I<uid> が前の実効 UID と異っていた場合、\n"
12003 "プロセスはコアダンプすることを禁止される。"
12004
12005 #. type: Plain text
12006 #: build/C/man2/setuid.2:145
12007 msgid ""
12008 "The original Linux B<setuid>()  system call supported only 16-bit user IDs.  "
12009 "Subsequently, Linux 2.4 added B<setuid32>()  supporting 32-bit IDs.  The "
12010 "glibc B<setuid>()  wrapper function transparently deals with the variation "
12011 "across kernel versions."
12012 msgstr ""
12013 "元々の Linux の B<setuid>() システムコールは\n"
12014 "16 ビットのグループ ID だけに対応していた。\n"
12015 "その後、Linux 2.4 で、32 ビットの ID に対応した\n"
12016 "B<setuid32>() が追加された。\n"
12017 "glibc の B<setuid>() のラッパー関数は\n"
12018 "カーネルバージョンによるこの違いを吸収している。"
12019
12020 #. type: Plain text
12021 #: build/C/man2/setuid.2:153
12022 msgid ""
12023 "B<getuid>(2), B<seteuid>(2), B<setfsuid>(2), B<setreuid>(2), "
12024 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
12025 msgstr ""
12026 "B<getuid>(2), B<seteuid>(2), B<setfsuid>(2), B<setreuid>(2), "
12027 "B<capabilities>(7), B<credentials>(7), B<user_namespaces>(7)"
12028
12029 #. type: TH
12030 #: build/C/man7/svipc.7:40
12031 #, no-wrap
12032 msgid "SVIPC"
12033 msgstr "SVIPC"
12034
12035 #. type: Plain text
12036 #: build/C/man7/svipc.7:43
12037 msgid "svipc - System V interprocess communication mechanisms"
12038 msgstr "svipc - System V プロセス間通信機構"
12039
12040 #. type: Plain text
12041 #: build/C/man7/svipc.7:48
12042 #, no-wrap
12043 msgid ""
12044 "B<#include E<lt>sys/msg.hE<gt>>\n"
12045 "B<#include E<lt>sys/sem.hE<gt>>\n"
12046 "B<#include E<lt>sys/shm.hE<gt>>\n"
12047 msgstr ""
12048 "B<#include E<lt>sys/msg.hE<gt>>\n"
12049 "B<#include E<lt>sys/sem.hE<gt>>\n"
12050 "B<#include E<lt>sys/shm.hE<gt>>\n"
12051
12052 #. type: Plain text
12053 #: build/C/man7/svipc.7:56
12054 msgid ""
12055 "This manual page refers to the Linux implementation of the System V "
12056 "interprocess communication (IPC) mechanisms: message queues, semaphore sets, "
12057 "and shared memory segments.  In the following, the word I<resource> means an "
12058 "instantiation of one among such mechanisms."
12059 msgstr ""
12060 "このマニュアルページは System V プロセス間通信 (interprocess communication; "
12061 "IPC) 機構の Linux に おける実装を説明する。 このプロセス間通信機構には、 メッ"
12062 "セージキュー (message queue)、セマフォー集合 (semaphore set)、 共有メモリセグ"
12063 "メント (shared memory segment) などがある。以下で I<資源 (resource)> という用"
12064 "語を使用した場合にはこれらの機構のどれかを意味する。"
12065
12066 #. type: SS
12067 #: build/C/man7/svipc.7:56
12068 #, no-wrap
12069 msgid "Resource access permissions"
12070 msgstr "資源へのアクセス許可"
12071
12072 #. type: Plain text
12073 #: build/C/man7/svipc.7:64
12074 msgid ""
12075 "For each resource, the system uses a common structure of type I<struct "
12076 "ipc_perm> to store information needed in determining permissions to perform "
12077 "an IPC operation.  The I<ipc_perm> structure includes the following members:"
12078 msgstr ""
12079 "システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する ための情"
12080 "報を共通の構造体 I<struct ipc_perm> に格納して使用する。 I<ipc_perm> 構造体に"
12081 "は以下のメンバーが定義されている:"
12082
12083 #. type: Plain text
12084 #: build/C/man7/svipc.7:74
12085 #, no-wrap
12086 msgid ""
12087 "struct ipc_perm {\n"
12088 "    uid_t          cuid;   /* creator user ID */\n"
12089 "    gid_t          cgid;   /* creator group ID */\n"
12090 "    uid_t          uid;    /* owner user ID */\n"
12091 "    gid_t          gid;    /* owner group ID */\n"
12092 "    unsigned short mode;   /* r/w permissions */\n"
12093 "};\n"
12094 msgstr ""
12095 "struct ipc_perm {\n"
12096 "    uid_t          cuid;   /* 作成者のユーザーID */\n"
12097 "    gid_t          cgid;   /* 作成者のグループID */\n"
12098 "    uid_t          uid;    /* 所有者のユーザーID */\n"
12099 "    gid_t          gid;    /* 所有者のグループID */\n"
12100 "    unsigned short mode;   /* 読み書きの許可 */\n"
12101 "};\n"
12102
12103 #. type: Plain text
12104 #: build/C/man7/svipc.7:84
12105 msgid ""
12106 "The I<mode> member of the I<ipc_perm> structure defines, with its lower 9 "
12107 "bits, the access permissions to the resource for a process executing an IPC "
12108 "system call.  The permissions are interpreted as follows:"
12109 msgstr ""
12110 "I<ipc_perm> 構造体の I<mode> メンバーは以下の 9 ビットで、プロセスの IPC シス"
12111 "テムコール による資源へのアクセス許可を定義する。 許可は以下のように解釈され"
12112 "る:"
12113
12114 #. type: Plain text
12115 #: build/C/man7/svipc.7:88
12116 #, no-wrap
12117 msgid ""
12118 "    0400    Read by user.\n"
12119 "    0200    Write by user.\n"
12120 msgstr ""
12121 "    0400    ユーザーによる読み込み。\n"
12122 "    0200    ユーザーによる書き込み。\n"
12123
12124 #. type: Plain text
12125 #: build/C/man7/svipc.7:91
12126 #, no-wrap
12127 msgid ""
12128 "    0040    Read by group.\n"
12129 "    0020    Write by group.\n"
12130 msgstr ""
12131 "    0040    グループによる読み込み。\n"
12132 "    0020    グループによる書き込み。\n"
12133
12134 #. type: Plain text
12135 #: build/C/man7/svipc.7:94
12136 #, no-wrap
12137 msgid ""
12138 "    0004    Read by others.\n"
12139 "    0002    Write by others.\n"
12140 msgstr ""
12141 "    0004    他人による読み込み。\n"
12142 "    0002    他人による書き込み。\n"
12143
12144 #. type: Plain text
12145 #: build/C/man7/svipc.7:102
12146 msgid ""
12147 "Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.  "
12148 "Furthermore, \"write\" effectively means \"alter\" for a semaphore set."
12149 msgstr ""
12150 "システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマ"
12151 "フォーの場合には \"書き込み(write)\" は実際には \"変更(alter)\" を意味する。"
12152
12153 #. type: Plain text
12154 #: build/C/man7/svipc.7:105
12155 msgid ""
12156 "The same system header file also defines the following symbolic constants:"
12157 msgstr "同じヘッダーファイルには以下のシンボルの定義が含まれている:"
12158
12159 #. type: TP
12160 #: build/C/man7/svipc.7:105
12161 #, no-wrap
12162 msgid "B<IPC_CREAT>"
12163 msgstr "B<IPC_CREAT>"
12164
12165 #. type: Plain text
12166 #: build/C/man7/svipc.7:108
12167 msgid "Create entry if key doesn't exist."
12168 msgstr "キー(key)が存在しない場合には新たなエントリを作成する。"
12169
12170 #. type: TP
12171 #: build/C/man7/svipc.7:108
12172 #, no-wrap
12173 msgid "B<IPC_EXCL>"
12174 msgstr "B<IPC_EXCL>"
12175
12176 #. type: Plain text
12177 #: build/C/man7/svipc.7:111
12178 msgid "Fail if key exists."
12179 msgstr "キー(key)が存在する場合には失敗する。"
12180
12181 #. type: TP
12182 #: build/C/man7/svipc.7:111
12183 #, no-wrap
12184 msgid "B<IPC_NOWAIT>"
12185 msgstr "B<IPC_NOWAIT>"
12186
12187 #. type: Plain text
12188 #: build/C/man7/svipc.7:114
12189 msgid "Error if request must wait."
12190 msgstr "要求が待たされる場合にはエラーになる。"
12191
12192 #. type: TP
12193 #: build/C/man7/svipc.7:114
12194 #, no-wrap
12195 msgid "B<IPC_PRIVATE>"
12196 msgstr "B<IPC_PRIVATE>"
12197
12198 #. type: Plain text
12199 #: build/C/man7/svipc.7:117
12200 msgid "Private key."
12201 msgstr "プライベートキー。"
12202
12203 #. type: TP
12204 #: build/C/man7/svipc.7:117
12205 #, no-wrap
12206 msgid "B<IPC_RMID>"
12207 msgstr "B<IPC_RMID>"
12208
12209 #. type: Plain text
12210 #: build/C/man7/svipc.7:120
12211 msgid "Remove resource."
12212 msgstr "資源を削除する。"
12213
12214 #. type: TP
12215 #: build/C/man7/svipc.7:120
12216 #, no-wrap
12217 msgid "B<IPC_SET>"
12218 msgstr "B<IPC_SET>"
12219
12220 #. type: Plain text
12221 #: build/C/man7/svipc.7:123
12222 msgid "Set resource options."
12223 msgstr "資源にオプションを設定する。"
12224
12225 #. type: TP
12226 #: build/C/man7/svipc.7:123
12227 #, no-wrap
12228 msgid "B<IPC_STAT>"
12229 msgstr "B<IPC_STAT>"
12230
12231 #. type: Plain text
12232 #: build/C/man7/svipc.7:126
12233 msgid "Get resource options."
12234 msgstr "資源のオプションを取得する。"
12235
12236 #. type: Plain text
12237 #: build/C/man7/svipc.7:135
12238 msgid ""
12239 "Note that B<IPC_PRIVATE> is a I<key_t> type, while all the other symbolic "
12240 "constants are flag fields and can be OR'ed into an I<int> type variable."
12241 msgstr ""
12242 "B<IPC_PRIVATE> は I<key_t> 型である。その他の全てのシンボルはフラグフィールド"
12243 "として I<int> 変数に OR 演算で格納することができる。"
12244
12245 #. type: SS
12246 #: build/C/man7/svipc.7:135
12247 #, no-wrap
12248 msgid "Message queues"
12249 msgstr "メッセージキュー"
12250
12251 #. type: Plain text
12252 #: build/C/man7/svipc.7:143
12253 msgid ""
12254 "A message queue is uniquely identified by a positive integer (its I<msqid>)  "
12255 "and has an associated data structure of type I<struct msqid_ds>, defined in "
12256 "I<E<lt>sys/msg.hE<gt>>, containing the following members:"
12257 msgstr ""
12258 "メッセージキューは正の整数 (I<msqid>)  によって識別され、 I<E<lt>sys/msg."
12259 "hE<gt>> に定義されている構造体 I<struct msqid_ds> に結びつけられている。 この"
12260 "構造体は以下のメンバーを含んでいる:"
12261
12262 #. type: Plain text
12263 #: build/C/man7/svipc.7:156
12264 #, no-wrap
12265 msgid ""
12266 "struct msqid_ds {\n"
12267 "    struct ipc_perm msg_perm;\n"
12268 "    msgqnum_t       msg_qnum;    /* no of messages on queue */\n"
12269 "    msglen_t        msg_qbytes;  /* bytes max on a queue */\n"
12270 "    pid_t           msg_lspid;   /* PID of last msgsnd(2) call */\n"
12271 "    pid_t           msg_lrpid;   /* PID of last msgrcv(2) call */\n"
12272 "    time_t          msg_stime;   /* last msgsnd(2) time */\n"
12273 "    time_t          msg_rtime;   /* last msgrcv(2) time */\n"
12274 "    time_t          msg_ctime;   /* last change time */\n"
12275 "};\n"
12276 msgstr ""
12277 "struct msqid_ds {\n"
12278 "    struct ipc_perm msg_perm;\n"
12279 "    msgqnum_t       msg_qnum;    /* キューにあるメッセージの数 */\n"
12280 "    msglen_t        msg_qbytes;  /* キューの最大バイト数 */\n"
12281 "    pid_t           msg_lspid;   /* 最後に msgsnd(2) をした PID */\n"
12282 "    pid_t           msg_lrpid;   /* 最後に msgrcv(2) をした PID */\n"
12283 "    time_t          msg_stime;   /* 最後に msgsnd(2) をした時間 */\n"
12284 "    time_t          msg_rtime;   /* 最後に msgrcv(2) をした時間 */\n"
12285 "    time_t          msg_ctime;   /* 最後に変更された時間 */\n"
12286 "};\n"
12287
12288 #. type: TP
12289 #: build/C/man7/svipc.7:158
12290 #, no-wrap
12291 msgid "I<msg_perm>"
12292 msgstr "I<msg_perm>"
12293
12294 #. type: Plain text
12295 #: build/C/man7/svipc.7:163
12296 msgid ""
12297 "I<ipc_perm> structure that specifies the access permissions on the message "
12298 "queue."
12299 msgstr "メッセージキューへのアクセス許可を指定する I<ipc_perm> 構造体。"
12300
12301 #. type: TP
12302 #: build/C/man7/svipc.7:163
12303 #, no-wrap
12304 msgid "I<msg_qnum>"
12305 msgstr "I<msg_qnum>"
12306
12307 #. type: Plain text
12308 #: build/C/man7/svipc.7:166
12309 msgid "Number of messages currently on the message queue."
12310 msgstr "現在、このメッセージキューにあるメッセージの数。"
12311
12312 #. type: TP
12313 #: build/C/man7/svipc.7:166
12314 #, no-wrap
12315 msgid "I<msg_qbytes>"
12316 msgstr "I<msg_qbytes>"
12317
12318 #. type: Plain text
12319 #: build/C/man7/svipc.7:170
12320 msgid "Maximum number of bytes of message text allowed on the message queue."
12321 msgstr "メッセージキューに入れることができるメッセージの最大バイト数。"
12322
12323 #. type: TP
12324 #: build/C/man7/svipc.7:170
12325 #, no-wrap
12326 msgid "I<msg_lspid>"
12327 msgstr "I<msg_lspid>"
12328
12329 #. type: Plain text
12330 #: build/C/man7/svipc.7:175
12331 msgid "ID of the process that performed the last B<msgsnd>(2)  system call."
12332 msgstr "最後に B<msgsnd>(2)  システムコールを行なったプロセスの ID。"
12333
12334 #. type: TP
12335 #: build/C/man7/svipc.7:175
12336 #, no-wrap
12337 msgid "I<msg_lrpid>"
12338 msgstr "I<msg_lrpid>"
12339
12340 #. type: Plain text
12341 #: build/C/man7/svipc.7:180
12342 msgid "ID of the process that performed the last B<msgrcv>(2)  system call."
12343 msgstr "最後に B<msgrcv>(2)  システムコールを行なったプロセスの ID。"
12344
12345 #. type: TP
12346 #: build/C/man7/svipc.7:180
12347 #, no-wrap
12348 msgid "I<msg_stime>"
12349 msgstr "I<msg_stime>"
12350
12351 #. type: Plain text
12352 #: build/C/man7/svipc.7:185
12353 msgid "Time of the last B<msgsnd>(2)  system call."
12354 msgstr "最後に B<msgsnd>(2)  システムコールを行なった時間。"
12355
12356 #. type: TP
12357 #: build/C/man7/svipc.7:185
12358 #, no-wrap
12359 msgid "I<msg_rtime>"
12360 msgstr "I<msg_rtime>"
12361
12362 #. type: Plain text
12363 #: build/C/man7/svipc.7:190
12364 msgid "Time of the last B<msgrcv>(2)  system call."
12365 msgstr "最後に B<msgrcv>(2)  を行なった時間。"
12366
12367 #. type: TP
12368 #: build/C/man7/svipc.7:190
12369 #, no-wrap
12370 msgid "I<msg_ctime>"
12371 msgstr "I<msg_ctime>"
12372
12373 #. type: Plain text
12374 #: build/C/man7/svipc.7:196
12375 msgid ""
12376 "Time of the last system call that changed a member of the I<msqid_ds> "
12377 "structure."
12378 msgstr "最後に I<msqid_ds> 構造体のメンバーが変更された時間。"
12379
12380 #. type: SS
12381 #: build/C/man7/svipc.7:196
12382 #, no-wrap
12383 msgid "Semaphore sets"
12384 msgstr "セマフォー集合"
12385
12386 #. type: Plain text
12387 #: build/C/man7/svipc.7:204
12388 msgid ""
12389 "A semaphore set is uniquely identified by a positive integer (its I<semid>)  "
12390 "and has an associated data structure of type I<struct semid_ds>, defined in "
12391 "I<E<lt>sys/sem.hE<gt>>, containing the following members:"
12392 msgstr ""
12393 "セマフォー集合は正の整数 (I<semid>)  によって識別され、 I<E<lt>sys/sem."
12394 "hE<gt>> に定義されている構造体 I<struct semid_ds> に結びつけられている。 この"
12395 "構造体は以下のメンバーを含んでいる:"
12396
12397 #. type: Plain text
12398 #: build/C/man7/svipc.7:213
12399 #, no-wrap
12400 msgid ""
12401 "struct semid_ds {\n"
12402 "    struct ipc_perm sem_perm;\n"
12403 "    time_t          sem_otime;   /* last operation time */\n"
12404 "    time_t          sem_ctime;   /* last change time */\n"
12405 "    unsigned long   sem_nsems;   /* count of sems in set */\n"
12406 "};\n"
12407 msgstr ""
12408 "struct semid_ds {\n"
12409 "    struct ipc_perm sem_perm;\n"
12410 "    time_t          sem_otime;   /* 最後に操作した時間 */\n"
12411 "    time_t          sem_ctime;   /* 最後に変更した時間 */\n"
12412 "    unsigned long   sem_nsems;   /* 集合の中にあるセマフォー数 */\n"
12413 "};\n"
12414
12415 #. type: TP
12416 #: build/C/man7/svipc.7:215
12417 #, no-wrap
12418 msgid "I<sem_perm>"
12419 msgstr "I<sem_perm>"
12420
12421 #. type: Plain text
12422 #: build/C/man7/svipc.7:220
12423 msgid ""
12424 "I<ipc_perm> structure that specifies the access permissions on the semaphore "
12425 "set."
12426 msgstr "セマフォー集合へのアクセス許可を指定する I<ipc_perm> 構造体。"
12427
12428 #. type: TP
12429 #: build/C/man7/svipc.7:220
12430 #, no-wrap
12431 msgid "I<sem_otime>"
12432 msgstr "I<sem_otime>"
12433
12434 #. type: Plain text
12435 #: build/C/man7/svipc.7:225
12436 msgid "Time of last B<semop>(2)  system call."
12437 msgstr "最後に B<semop>(2)  システムコールを行なった時間。"
12438
12439 #. type: TP
12440 #: build/C/man7/svipc.7:225
12441 #, no-wrap
12442 msgid "I<sem_ctime>"
12443 msgstr "I<sem_ctime>"
12444
12445 #. type: Plain text
12446 #: build/C/man7/svipc.7:231
12447 msgid ""
12448 "Time of last B<semctl>(2)  system call that changed a member of the above "
12449 "structure or of one semaphore belonging to the set."
12450 msgstr ""
12451 "最後に B<semctl>(2)  を行なって上記の構造体のメンバーを変更するか、セマフォー"
12452 "集合に属する セマフォーを変更した時間。"
12453
12454 #. type: TP
12455 #: build/C/man7/svipc.7:231
12456 #, no-wrap
12457 msgid "I<sem_nsems>"
12458 msgstr "I<sem_nsems>"
12459
12460 #. type: Plain text
12461 #: build/C/man7/svipc.7:239
12462 msgid ""
12463 "Number of semaphores in the set.  Each semaphore of the set is referenced by "
12464 "a nonnegative integer ranging from B<0> to I<sem_nsems-1>."
12465 msgstr ""
12466 "セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは"
12467 "負でない整数によって参照され、 B<0> から I<sem_nsems-1> までの番号を持つ。"
12468
12469 #. type: Plain text
12470 #: build/C/man7/svipc.7:243
12471 msgid ""
12472 "A semaphore is a data structure of type I<struct sem> containing the "
12473 "following members:"
12474 msgstr ""
12475 "セマフォーは I<struct sem> 型のデータ構造体であり、以下のメンバーを含んでい"
12476 "る:"
12477
12478 #.     unsigned short semncnt; /* nr awaiting semval to increase */
12479 #.     unsigned short semzcnt; /* nr awaiting semval = 0 */
12480 #. type: Plain text
12481 #: build/C/man7/svipc.7:252
12482 #, no-wrap
12483 msgid ""
12484 "struct sem {\n"
12485 "    int semval;  /* semaphore value */\n"
12486 "    int sempid;  /* PID for last operation */\n"
12487 "};\n"
12488 msgstr ""
12489 "struct sem {\n"
12490 "    int semval;  /* セマフォーの値 */\n"
12491 "    int sempid;  /* 最後に操作したプロセス ID */\n"
12492 "};\n"
12493
12494 #. type: TP
12495 #: build/C/man7/svipc.7:254
12496 #, no-wrap
12497 msgid "I<semval>"
12498 msgstr "I<semval>"
12499
12500 #. type: Plain text
12501 #: build/C/man7/svipc.7:257
12502 msgid "Semaphore value: a nonnegative integer."
12503 msgstr "セマフォー値: 負でない整数。"
12504
12505 #. type: TP
12506 #: build/C/man7/svipc.7:257
12507 #, no-wrap
12508 msgid "I<sempid>"
12509 msgstr "I<sempid>"
12510
12511 #. .TP
12512 #. .I semncnt
12513 #. Number of processes suspended awaiting for
12514 #. .I semval
12515 #. to increase.
12516 #. .TP
12517 #. .I semznt
12518 #. Number of processes suspended awaiting for
12519 #. .I semval
12520 #. to become zero.
12521 #. type: Plain text
12522 #: build/C/man7/svipc.7:271
12523 msgid ""
12524 "ID of the last process that performed a semaphore operation on this "
12525 "semaphore."
12526 msgstr "このセマフォーを最後に操作したプロセスの ID。"
12527
12528 #. type: SS
12529 #: build/C/man7/svipc.7:271
12530 #, no-wrap
12531 msgid "Shared memory segments"
12532 msgstr "共有メモリセグメント"
12533
12534 #. type: Plain text
12535 #: build/C/man7/svipc.7:279
12536 msgid ""
12537 "A shared memory segment is uniquely identified by a positive integer (its "
12538 "I<shmid>)  and has an associated data structure of type I<struct shmid_ds>, "
12539 "defined in I<E<lt>sys/shm.hE<gt>>, containing the following members:"
12540 msgstr ""
12541 "共有メモリセグメントは正の整数 (I<shmid>)  によって識別され、 I<E<lt>sys/shm."
12542 "hE<gt>> に定義されている I<struct shmid_ds> 構造体に結びつけられている。 この"
12543 "構造体は以下のメンバーを含んでいる:"
12544
12545 #. type: Plain text
12546 #: build/C/man7/svipc.7:292
12547 #, no-wrap
12548 msgid ""
12549 "struct shmid_ds {\n"
12550 "    struct ipc_perm shm_perm;\n"
12551 "    size_t          shm_segsz;   /* size of segment */\n"
12552 "    pid_t           shm_cpid;    /* PID of creator */\n"
12553 "    pid_t           shm_lpid;    /* PID, last operation */\n"
12554 "    shmatt_t        shm_nattch;  /* no. of current attaches */\n"
12555 "    time_t          shm_atime;   /* time of last attach */\n"
12556 "    time_t          shm_dtime;   /* time of last detach */\n"
12557 "    time_t          shm_ctime;   /* time of last change */\n"
12558 "};\n"
12559 msgstr ""
12560 "struct shmid_ds {\n"
12561 "    struct ipc_perm shm_perm;\n"
12562 "    size_t          shm_segsz;   /* セグメントのサイズ */\n"
12563 "    pid_t           shm_cpid;    /* 作成者のプロセス ID */\n"
12564 "    pid_t           shm_lpid;    /* 最後に操作したプロセス ID */\n"
12565 "    shmatt_t        shm_nattch;  /* 現在、付加している数 */\n"
12566 "    time_t          shm_atime;   /* 最後に付加した時間 */\n"
12567 "    time_t          shm_dtime;   /* 最後に分離した時間 */\n"
12568 "    time_t          shm_ctime;   /* 最後に変更した時間 */\n"
12569 "};\n"
12570
12571 #. type: TP
12572 #: build/C/man7/svipc.7:294
12573 #, no-wrap
12574 msgid "I<shm_perm>"
12575 msgstr "I<shm_perm>"
12576
12577 #. type: Plain text
12578 #: build/C/man7/svipc.7:299
12579 msgid ""
12580 "I<ipc_perm> structure that specifies the access permissions on the shared "
12581 "memory segment."
12582 msgstr "共有メモリセグメントへのアクセス許可を指定した I<ipc_perm> 構造体。"
12583
12584 #. type: TP
12585 #: build/C/man7/svipc.7:299
12586 #, no-wrap
12587 msgid "I<shm_segsz>"
12588 msgstr "I<shm_segsz>"
12589
12590 #. type: Plain text
12591 #: build/C/man7/svipc.7:302
12592 msgid "Size in bytes of the shared memory segment."
12593 msgstr "共有メモリセグメントのバイト数。"
12594
12595 #. type: TP
12596 #: build/C/man7/svipc.7:302
12597 #, no-wrap
12598 msgid "I<shm_cpid>"
12599 msgstr "I<shm_cpid>"
12600
12601 #. type: Plain text
12602 #: build/C/man7/svipc.7:305
12603 msgid "ID of the process that created the shared memory segment."
12604 msgstr "共有メモリセグメントを作成したプロセスの ID。"
12605
12606 #. type: TP
12607 #: build/C/man7/svipc.7:305
12608 #, no-wrap
12609 msgid "I<shm_lpid>"
12610 msgstr "I<shm_lpid>"
12611
12612 #. type: Plain text
12613 #: build/C/man7/svipc.7:312
12614 msgid ""
12615 "ID of the last process that executed a B<shmat>(2)  or B<shmdt>(2)  system "
12616 "call."
12617 msgstr ""
12618 "最後に B<shmat>(2)  または B<shmdt>(2)  システムコールを実行したプロセスの "
12619 "ID。"
12620
12621 #. type: TP
12622 #: build/C/man7/svipc.7:312
12623 #, no-wrap
12624 msgid "I<shm_nattch>"
12625 msgstr "I<shm_nattch>"
12626
12627 #. type: Plain text
12628 #: build/C/man7/svipc.7:315
12629 msgid "Number of current alive attaches for this shared memory segment."
12630 msgstr "この共有メモリセグメントをメモリに付加 (attach) しているプロセスの数。"
12631
12632 #. type: TP
12633 #: build/C/man7/svipc.7:315
12634 #, no-wrap
12635 msgid "I<shm_atime>"
12636 msgstr "I<shm_atime>"
12637
12638 #. type: Plain text
12639 #: build/C/man7/svipc.7:320
12640 msgid "Time of the last B<shmat>(2)  system call."
12641 msgstr "最後に B<shmat>(2)  システムコールを行なった時間。"
12642
12643 #. type: TP
12644 #: build/C/man7/svipc.7:320
12645 #, no-wrap
12646 msgid "I<shm_dtime>"
12647 msgstr "I<shm_dtime>"
12648
12649 #. type: Plain text
12650 #: build/C/man7/svipc.7:325
12651 msgid "Time of the last B<shmdt>(2)  system call."
12652 msgstr "最後に B<shmdt>(2)  システムコールを行なった時間。"
12653
12654 #. type: TP
12655 #: build/C/man7/svipc.7:325
12656 #, no-wrap
12657 msgid "I<shm_ctime>"
12658 msgstr "I<shm_ctime>"
12659
12660 #. type: Plain text
12661 #: build/C/man7/svipc.7:331
12662 msgid "Time of the last B<shmctl>(2)  system call that changed I<shmid_ds>."
12663 msgstr ""
12664 "最後に B<shmctl>(2)  システムコールを行なって、 I<shmid_ds> 構造体を変更した"
12665 "時間。"
12666
12667 #. type: SS
12668 #: build/C/man7/svipc.7:331
12669 #, no-wrap
12670 msgid "IPC namespaces"
12671 msgstr "IPC 名前空間"
12672
12673 #. type: Plain text
12674 #: build/C/man7/svipc.7:335
12675 msgid ""
12676 "For a discussion of the interaction of System V IPC objects and IPC "
12677 "namespaces, see B<namespaces>(7)."
12678 msgstr ""
12679 "System V IPC オブジェクトと IPC 名前空間の相互の影響に関する議論は "
12680 "B<namespaces>(7) を参照。"
12681
12682 #. type: Plain text
12683 #: build/C/man7/svipc.7:353
12684 msgid ""
12685 "B<ipcmk>(1), B<ipcrm>(1), B<ipcs>(1), B<ipc>(2), B<msgctl>(2), B<msgget>(2), "
12686 "B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), B<semget>(2), B<semop>(2), "
12687 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<shmget>(2), B<ftok>(3), "
12688 "B<namespaces>(7)"
12689 msgstr ""
12690 "B<ipcmk>(1), B<ipcrm>(1), B<ipcs>(1), B<ipc>(2), B<msgctl>(2), B<msgget>(2), "
12691 "B<msgrcv>(2), B<msgsnd>(2), B<semctl>(2), B<semget>(2), B<semop>(2), "
12692 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<shmget>(2), B<ftok>(3), "
12693 "B<namespaces>(7)"
12694
12695 #. type: TH
12696 #: build/C/man3/ulimit.3:27
12697 #, no-wrap
12698 msgid "ULIMIT"
12699 msgstr "ULIMIT"
12700
12701 #. type: TH
12702 #: build/C/man3/ulimit.3:27
12703 #, no-wrap
12704 msgid "2008-08-06"
12705 msgstr "2008-08-06"
12706
12707 #. type: Plain text
12708 #: build/C/man3/ulimit.3:30
12709 msgid "ulimit - get and set user limits"
12710 msgstr "ulimit - ユーザー制限を取得・設定する"
12711
12712 #. type: Plain text
12713 #: build/C/man3/ulimit.3:32
12714 msgid "B<#include E<lt>ulimit.hE<gt>>"
12715 msgstr "B<#include E<lt>ulimit.hE<gt>>"
12716
12717 #. type: Plain text
12718 #: build/C/man3/ulimit.3:34
12719 msgid "B<long ulimit(int >I<cmd>B<, long >I<newlimit>B<);>"
12720 msgstr "B<long ulimit(int >I<cmd>B<, long >I<newlimit>B<);>"
12721
12722 #. type: Plain text
12723 #: build/C/man3/ulimit.3:46
12724 msgid ""
12725 "Warning: This routine is obsolete.  Use B<getrlimit>(2), B<setrlimit>(2), "
12726 "and B<sysconf>(3)  instead.  For the shell command B<ulimit>(), see "
12727 "B<bash>(1)."
12728 msgstr ""
12729 "注意: このルーチンは古い。 代わりに B<getrlimit>(2), B<setrlimit>(2), "
12730 "B<sysconf>(3)  などを用いること。 シェルコマンドとしての B<ulimit>()  につい"
12731 "ては、 B<bash>(1)  を見ること。"
12732
12733 #. type: Plain text
12734 #: build/C/man3/ulimit.3:53
12735 msgid ""
12736 "The B<ulimit>()  call will get or set some limit for the calling process.  "
12737 "The I<cmd> argument can have one of the following values."
12738 msgstr ""
12739 "B<ulimit>()  は呼び出し元のプロセスに関する制限のいくつかを取得・設定する。 "
12740 "I<cmd> 引き数には、以下の値のうちのどれか一つを与えることができる。"
12741
12742 #. type: TP
12743 #: build/C/man3/ulimit.3:53
12744 #, no-wrap
12745 msgid "B<UL_GETFSIZE>"
12746 msgstr "B<UL_GETFSIZE>"
12747
12748 #. type: Plain text
12749 #: build/C/man3/ulimit.3:56
12750 msgid "Return the limit on the size of a file, in units of 512 bytes."
12751 msgstr "ファイルサイズに関する制限を返す。単位は 512 バイト。"
12752
12753 #. type: TP
12754 #: build/C/man3/ulimit.3:56
12755 #, no-wrap
12756 msgid "B<UL_SETFSIZE>"
12757 msgstr "B<UL_SETFSIZE>"
12758
12759 #. type: Plain text
12760 #: build/C/man3/ulimit.3:59
12761 msgid "Set the limit on the size of a file."
12762 msgstr "ファイルサイズに関する制限を設定する。"
12763
12764 #. type: TP
12765 #: build/C/man3/ulimit.3:59
12766 #, no-wrap
12767 msgid "B<3>"
12768 msgstr "B<3>"
12769
12770 #. type: Plain text
12771 #: build/C/man3/ulimit.3:63
12772 msgid ""
12773 "(Not implemented for Linux.)  Return the maximum possible address of the "
12774 "data segment."
12775 msgstr ""
12776 "(Linux では実装されていない)  データセグメントで指定できるアドレスの最大値を"
12777 "返す。"
12778
12779 #. type: TP
12780 #: build/C/man3/ulimit.3:63
12781 #, no-wrap
12782 msgid "B<4>"
12783 msgstr "B<4>"
12784
12785 #. type: Plain text
12786 #: build/C/man3/ulimit.3:67
12787 msgid ""
12788 "(Implemented but no symbolic constant provided.)  Return the maximum number "
12789 "of files that the calling process can open."
12790 msgstr ""
12791 "(実装されているが、対応するシンボリックな定数は存在しない)  プロセスがオープ"
12792 "ンできるファイル数の最大値を返す。"
12793
12794 #. type: Plain text
12795 #: build/C/man3/ulimit.3:74
12796 msgid ""
12797 "On success, B<ulimit>()  returns a nonnegative value.  On error, -1 is "
12798 "returned, and I<errno> is set appropriately."
12799 msgstr ""
12800 "成功すると B<ulimit>()  は 0 または正の値を返す。 エラーが生じると -1 を返"
12801 "し、 I<errno> を適切な値に設定する。"
12802
12803 #. type: Plain text
12804 #: build/C/man3/ulimit.3:78
12805 msgid "A unprivileged process tried to increase a limit."
12806 msgstr "非特権プロセスが制限値を増加させようとした。"
12807
12808 #. type: Plain text
12809 #: build/C/man3/ulimit.3:83
12810 msgid "SVr4, POSIX.1-2001.  POSIX.1-2008 marks B<ulimit>()  as obsolete."
12811 msgstr ""
12812 "SVr4, POSIX.1-2001.  POSIX.1-2008 は B<ulimit>()  を廃止予定としている。"
12813
12814 #. type: Plain text
12815 #: build/C/man3/ulimit.3:88
12816 msgid "B<bash>(1), B<getrlimit>(2), B<setrlimit>(2), B<sysconf>(3)"
12817 msgstr "B<bash>(1), B<getrlimit>(2), B<setrlimit>(2), B<sysconf>(3)"
12818
12819 #. type: TH
12820 #: build/C/man7/user_namespaces.7:27
12821 #, no-wrap
12822 msgid "USER_NAMESPACES"
12823 msgstr "USER_NAMESPACES"
12824
12825 #. type: Plain text
12826 #: build/C/man7/user_namespaces.7:30
12827 msgid "user_namespaces - overview of Linux user namespaces"
12828 msgstr "user_namespaces - Linux ユーザー名前空間の概要"
12829
12830 #
12831 #.  FIXME: This page says very little about the interaction
12832 #.  of user namespaces and keys. Add something on this topic.
12833 #.  ============================================================
12834 #. type: Plain text
12835 #: build/C/man7/user_namespaces.7:56
12836 msgid ""
12837 "User namespaces isolate security-related identifiers and attributes, in "
12838 "particular, user IDs and group IDs (see B<credentials>(7)), the root "
12839 "directory, keys (see B<keyctl>(2)), and capabilities (see "
12840 "B<capabilities>(7)).  A process's user and group IDs can be different inside "
12841 "and outside a user namespace.  In particular, a process can have a normal "
12842 "unprivileged user ID outside a user namespace while at the same time having "
12843 "a user ID of 0 inside the namespace; in other words, the process has full "
12844 "privileges for operations inside the user namespace, but is unprivileged for "
12845 "operations outside the namespace."
12846 msgstr ""
12847
12848 #. type: SS
12849 #: build/C/man7/user_namespaces.7:56
12850 #, no-wrap
12851 msgid "Nested namespaces, namespace membership"
12852 msgstr ""
12853
12854 #. type: Plain text
12855 #: build/C/man7/user_namespaces.7:69
12856 msgid ""
12857 "User namespaces can be nested; that is, each user namespace\\(emexcept the "
12858 "initial (\"root\")  namespace\\(emhas a parent user namespace, and can have "
12859 "zero or more child user namespaces.  The parent user namespace is the user "
12860 "namespace of the process that creates the user namespace via a call to "
12861 "B<unshare>(2)  or B<clone>(2)  with the B<CLONE_NEWUSER> flag."
12862 msgstr ""
12863
12864 #.  commit 8742f229b635bf1c1c84a3dfe5e47c814c20b5c8
12865 #.  FIXME Explain the rationale for this limit. (What is the rationale?)
12866 #. type: Plain text
12867 #: build/C/man7/user_namespaces.7:80
12868 msgid ""
12869 "The kernel imposes (since version 3.11) a limit of 32 nested levels of user "
12870 "namespaces.  Calls to B<unshare>(2)  or B<clone>(2)  that would cause this "
12871 "limit to be exceeded fail with the error B<EUSERS>."
12872 msgstr ""
12873
12874 #. type: Plain text
12875 #: build/C/man7/user_namespaces.7:95
12876 msgid ""
12877 "Each process is a member of exactly one user namespace.  A process created "
12878 "via B<fork>(2)  or B<clone>(2)  without the B<CLONE_NEWUSER> flag is a "
12879 "member of the same user namespace as its parent.  A single-threaded process "
12880 "can join another user namespace with B<setns>(2)  if it has the "
12881 "B<CAP_SYS_ADMIN> in that namespace; upon doing so, it gains a full set of "
12882 "capabilities in that namespace."
12883 msgstr ""
12884
12885 #
12886 #.  ============================================================
12887 #. type: Plain text
12888 #: build/C/man7/user_namespaces.7:110
12889 msgid ""
12890 "A call to B<clone>(2)  or B<unshare>(2)  with the B<CLONE_NEWUSER> flag "
12891 "makes the new child process (for B<clone>(2))  or the caller (for "
12892 "B<unshare>(2))  a member of the new user namespace created by the call."
12893 msgstr ""
12894
12895 #. type: SS
12896 #: build/C/man7/user_namespaces.7:110
12897 #, no-wrap
12898 msgid "Capabilities"
12899 msgstr "ケーパビリティ"
12900
12901 #. type: Plain text
12902 #: build/C/man7/user_namespaces.7:132
12903 msgid ""
12904 "The child process created by B<clone>(2)  with the B<CLONE_NEWUSER> flag "
12905 "starts out with a complete set of capabilities in the new user namespace.  "
12906 "Likewise, a process that creates a new user namespace using B<unshare>(2)  "
12907 "or joins an existing user namespace using B<setns>(2)  gains a full set of "
12908 "capabilities in that namespace.  On the other hand, that process has no "
12909 "capabilities in the parent (in the case of B<clone>(2))  or previous (in the "
12910 "case of B<unshare>(2)  and B<setns>(2))  user namespace, even if the new "
12911 "namespace is created or joined by the root user (i.e., a process with user "
12912 "ID 0 in the root namespace)."
12913 msgstr ""
12914
12915 #. type: Plain text
12916 #: build/C/man7/user_namespaces.7:142
12917 msgid ""
12918 "Note that a call to B<execve>(2)  will cause a process's capabilities to be "
12919 "recalculated in the usual way (see B<capabilities>(7)), so that usually, "
12920 "unless it has a user ID of 0 within the namespace or the executable file has "
12921 "a nonempty inheritable capabilities mask, it will lose all capabilities.  "
12922 "See the discussion of user and group ID mappings, below."
12923 msgstr ""
12924
12925 #. type: Plain text
12926 #: build/C/man7/user_namespaces.7:167
12927 msgid ""
12928 "A call to B<clone>(2), B<unshare>(2), or B<setns>(2)  using the "
12929 "B<CLONE_NEWUSER> flag sets the \"securebits\" flags (see "
12930 "B<capabilities>(7))  to their default values (all flags disabled) in the "
12931 "child (for B<clone>(2))  or caller (for B<unshare>(2), or B<setns>(2)).  "
12932 "Note that because the caller no longer has capabilities in its original user "
12933 "namespace after a call to B<setns>(2), it is not possible for a process to "
12934 "reset its \"securebits\" flags while retaining its user namespace membership "
12935 "by using a pair of B<setns>(2)  calls to move to another user namespace and "
12936 "then return to its original user namespace."
12937 msgstr ""
12938
12939 #. type: Plain text
12940 #: build/C/man7/user_namespaces.7:173
12941 msgid ""
12942 "Having a capability inside a user namespace permits a process to perform "
12943 "operations (that require privilege)  only on resources governed by that "
12944 "namespace.  The rules for determining whether or not a process has a "
12945 "capability in a particular user namespace are as follows:"
12946 msgstr ""
12947
12948 #.  In the 3.8 sources, see security/commoncap.c::cap_capable():
12949 #. type: Plain text
12950 #: build/C/man7/user_namespaces.7:189
12951 msgid ""
12952 "A process has a capability inside a user namespace if it is a member of that "
12953 "namespace and it has the capability in its effective capability set.  A "
12954 "process can gain capabilities in its effective capability set in various "
12955 "ways.  For example, it may execute a set-user-ID program or an executable "
12956 "with associated file capabilities.  In addition, a process may gain "
12957 "capabilities via the effect of B<clone>(2), B<unshare>(2), or B<setns>(2), "
12958 "as already described."
12959 msgstr ""
12960
12961 #. type: Plain text
12962 #: build/C/man7/user_namespaces.7:193
12963 msgid ""
12964 "If a process has a capability in a user namespace, then it has that "
12965 "capability in all child (and further removed descendant)  namespaces as well."
12966 msgstr ""
12967
12968 #
12969 #.  * The owner of the user namespace in the parent of the
12970 #.  * user namespace has all caps.
12971 #.  (and likewise associates the effective group ID of the creating process
12972 #.  with the namespace).
12973 #.  See kernel commit 520d9eabce18edfef76a60b7b839d54facafe1f9 for a fix
12974 #.  on this point
12975 #.      This includes the case where the process executes a set-user-ID
12976 #.      program that confers the effective UID of the creator of the namespace.
12977 #.  ============================================================
12978 #. type: Plain text
12979 #: build/C/man7/user_namespaces.7:214
12980 msgid ""
12981 "When a user namespace is created, the kernel records the effective user ID "
12982 "of the creating process as being the \"owner\" of the namespace.  A process "
12983 "that resides in the parent of the user namespace and whose effective user ID "
12984 "matches the owner of the namespace has all capabilities in the namespace.  "
12985 "By virtue of the previous rule, this means that the process has all "
12986 "capabilities in all further removed descendant user namespaces as well."
12987 msgstr ""
12988
12989 #. type: SS
12990 #: build/C/man7/user_namespaces.7:214
12991 #, no-wrap
12992 msgid "Interaction of user namespaces and other types of namespaces"
12993 msgstr ""
12994
12995 #. type: Plain text
12996 #: build/C/man7/user_namespaces.7:219
12997 msgid ""
12998 "Starting in Linux 3.8, unprivileged processes can create user namespaces, "
12999 "and mount, PID, IPC, network, and UTS namespaces can be created with just "
13000 "the B<CAP_SYS_ADMIN> capability in the caller's user namespace."
13001 msgstr ""
13002
13003 #. type: Plain text
13004 #: build/C/man7/user_namespaces.7:225
13005 msgid ""
13006 "When a non-user-namespace is created, it is owned by the user namespace in "
13007 "which the creating process was a member at the time of the creation of the "
13008 "namespace.  Actions on the non-user-namespace require capabilities in the "
13009 "corresponding user namespace."
13010 msgstr ""
13011
13012 #. type: Plain text
13013 #: build/C/man7/user_namespaces.7:242
13014 msgid ""
13015 "If B<CLONE_NEWUSER> is specified along with other B<CLONE_NEW*> flags in a "
13016 "single B<clone>(2)  or B<unshare>(2)  call, the user namespace is guaranteed "
13017 "to be created first, giving the child (B<clone>(2))  or caller "
13018 "(B<unshare>(2))  privileges over the remaining namespaces created by the "
13019 "call.  Thus, it is possible for an unprivileged caller to specify this "
13020 "combination of flags."
13021 msgstr ""
13022
13023 #
13024 #.  ============================================================
13025 #. type: Plain text
13026 #: build/C/man7/user_namespaces.7:258
13027 msgid ""
13028 "When a new IPC, mount, network, PID, or UTS namespace is created via "
13029 "B<clone>(2)  or B<unshare>(2), the kernel records the user namespace of the "
13030 "creating process against the new namespace.  (This association can't be "
13031 "changed.)  When a process in the new namespace subsequently performs "
13032 "privileged operations that operate on global resources isolated by the "
13033 "namespace, the permission checks are performed according to the process's "
13034 "capabilities in the user namespace that the kernel associated with the new "
13035 "namespace."
13036 msgstr ""
13037
13038 #. type: SS
13039 #: build/C/man7/user_namespaces.7:258
13040 #, no-wrap
13041 msgid "Restrictions on mount namespaces"
13042 msgstr ""
13043
13044 #. type: Plain text
13045 #: build/C/man7/user_namespaces.7:261
13046 msgid "Note the following points with respect to mount namespaces:"
13047 msgstr ""
13048
13049 #. type: Plain text
13050 #: build/C/man7/user_namespaces.7:266
13051 msgid ""
13052 "A mount namespace has an owner user namespace.  A mount namespace whose "
13053 "owner user namespace is different from the owner user namespace of its "
13054 "parent mount namespace is considered a less privileged mount namespace."
13055 msgstr ""
13056
13057 #. type: Plain text
13058 #: build/C/man7/user_namespaces.7:272
13059 msgid ""
13060 "When creating a less privileged mount namespace, shared mounts are reduced "
13061 "to slave mounts.  This ensures that mappings performed in less privileged "
13062 "mount namespaces will not propagate to more privileged mount namespaces."
13063 msgstr ""
13064
13065 #.  FIXME .
13066 #.      What does "come as a single unit from more privileged mount" mean?
13067 #. type: Plain text
13068 #: build/C/man7/user_namespaces.7:285
13069 msgid ""
13070 "Mounts that come as a single unit from more privileged mount are locked "
13071 "together and may not be separated in a less privileged mount namespace.  "
13072 "(The B<unshare>(2)  B<CLONE_NEWNS> operation brings across all of the mounts "
13073 "from the original mount namespace as a single unit, and recursive mounts "
13074 "that propagate between mount namespaces propagate as a single unit.)"
13075 msgstr ""
13076
13077 #
13078 #.  commit 9566d6742852c527bf5af38af5cbb878dad75705
13079 #.  Author: Eric W. Biederman <ebiederm@xmission.com>
13080 #.  Date:   Mon Jul 28 17:26:07 2014 -0700
13081 #.       mnt: Correct permission checks in do_remount
13082 #. type: Plain text
13083 #: build/C/man7/user_namespaces.7:306
13084 msgid ""
13085 "The B<mount>(2)  flags B<MS_RDONLY>, B<MS_NOSUID>, B<MS_NOEXEC>, and the "
13086 "\"atime\" flags (B<MS_NOATIME>, B<MS_NODIRATIME>, B<MS_RELATIME)> settings "
13087 "become locked when propagated from a more privileged to a less privileged "
13088 "mount namespace, and may not be changed in the less privileged mount "
13089 "namespace."
13090 msgstr ""
13091
13092 #.  (As of 3.18-rc1 (in Al Viro's 2014-08-30 vfs.git#for-next tree))
13093 #. type: Plain text
13094 #: build/C/man7/user_namespaces.7:313
13095 msgid ""
13096 "A file or directory that is a mount point in one namespace that is not a "
13097 "mount point in another namespace, may be renamed, unlinked, or removed "
13098 "(B<rmdir>(2))  in the mount namespace in which it is not a mount point "
13099 "(subject to the usual permission checks)."
13100 msgstr ""
13101
13102 #
13103 #.  ============================================================
13104 #. type: Plain text
13105 #: build/C/man7/user_namespaces.7:324
13106 msgid ""
13107 "Previously, attempting to unlink, rename, or remove a file or directory that "
13108 "was a mount point in another mount namespace would result in the error "
13109 "B<EBUSY>.  That behavior had technical problems of enforcement (e.g., for "
13110 "NFS)  and permitted denial-of-service attacks against more privileged "
13111 "users.  (i.e., preventing individual files from being updated by bind "
13112 "mounting on top of them)."
13113 msgstr ""
13114
13115 #. type: SS
13116 #: build/C/man7/user_namespaces.7:324
13117 #, no-wrap
13118 msgid "User and group ID mappings: uid_map and gid_map"
13119 msgstr ""
13120
13121 #.  commit 22d917d80e842829d0ca0a561967d728eb1d6303
13122 #. type: Plain text
13123 #: build/C/man7/user_namespaces.7:339
13124 msgid ""
13125 "When a user namespace is created, it starts out without a mapping of user "
13126 "IDs (group IDs)  to the parent user namespace.  The I</proc/[pid]/uid_map> "
13127 "and I</proc/[pid]/gid_map> files (available since Linux 3.5)  expose the "
13128 "mappings for user and group IDs inside the user namespace for the process "
13129 "I<pid>.  These files can be read to view the mappings in a user namespace "
13130 "and written to (once) to define the mappings."
13131 msgstr ""
13132
13133 #. type: Plain text
13134 #: build/C/man7/user_namespaces.7:345
13135 msgid ""
13136 "The description in the following paragraphs explains the details for "
13137 "I<uid_map>; I<gid_map> is exactly the same, but each instance of \"user ID\" "
13138 "is replaced by \"group ID\"."
13139 msgstr ""
13140
13141 #. type: Plain text
13142 #: build/C/man7/user_namespaces.7:359
13143 msgid ""
13144 "The I<uid_map> file exposes the mapping of user IDs from the user namespace "
13145 "of the process I<pid> to the user namespace of the process that opened "
13146 "I<uid_map> (but see a qualification to this point below).  In other words, "
13147 "processes that are in different user namespaces will potentially see "
13148 "different values when reading from a particular I<uid_map> file, depending "
13149 "on the user ID mappings for the user namespaces of the reading processes."
13150 msgstr ""
13151
13152 #. type: Plain text
13153 #: build/C/man7/user_namespaces.7:371
13154 msgid ""
13155 "Each line in the I<uid_map> file specifies a 1-to-1 mapping of a range of "
13156 "contiguous user IDs between two user namespaces.  (When a user namespace is "
13157 "first created, this file is empty.)  The specification in each line takes "
13158 "the form of three numbers delimited by white space.  The first two numbers "
13159 "specify the starting user ID in each of the two user namespaces.  The third "
13160 "number specifies the length of the mapped range.  In detail, the fields are "
13161 "interpreted as follows:"
13162 msgstr ""
13163
13164 #. type: Plain text
13165 #: build/C/man7/user_namespaces.7:375
13166 msgid ""
13167 "The start of the range of user IDs in the user namespace of the process "
13168 "I<pid>."
13169 msgstr ""
13170
13171 #. type: Plain text
13172 #: build/C/man7/user_namespaces.7:383
13173 msgid ""
13174 "The start of the range of user IDs to which the user IDs specified by field "
13175 "one map.  How field two is interpreted depends on whether the process that "
13176 "opened I<uid_map> and the process I<pid> are in the same user namespace, as "
13177 "follows:"
13178 msgstr ""
13179
13180 #. type: Plain text
13181 #: build/C/man7/user_namespaces.7:389
13182 msgid ""
13183 "If the two processes are in different user namespaces: field two is the "
13184 "start of a range of user IDs in the user namespace of the process that "
13185 "opened I<uid_map>."
13186 msgstr ""
13187
13188 #. type: Plain text
13189 #: build/C/man7/user_namespaces.7:400
13190 msgid ""
13191 "If the two processes are in the same user namespace: field two is the start "
13192 "of the range of user IDs in the parent user namespace of the process "
13193 "I<pid>.  This case enables the opener of I<uid_map> (the common case here is "
13194 "opening I</proc/self/uid_map>)  to see the mapping of user IDs into the user "
13195 "namespace of the process that created this user namespace."
13196 msgstr ""
13197
13198 #. type: Plain text
13199 #: build/C/man7/user_namespaces.7:404
13200 msgid ""
13201 "The length of the range of user IDs that is mapped between the two user "
13202 "namespaces."
13203 msgstr ""
13204
13205 #. type: Plain text
13206 #: build/C/man7/user_namespaces.7:411
13207 msgid ""
13208 "System calls that return user IDs (group IDs)\\(emfor example, B<getuid>(2), "
13209 "B<getgid>(2), and the credential fields in the structure returned by "
13210 "B<stat>(2)\\(emreturn the user ID (group ID) mapped into the caller's user "
13211 "namespace."
13212 msgstr ""
13213
13214 #. type: Plain text
13215 #: build/C/man7/user_namespaces.7:419
13216 msgid ""
13217 "When a process accesses a file, its user and group IDs are mapped into the "
13218 "initial user namespace for the purpose of permission checking and assigning "
13219 "IDs when creating a file.  When a process retrieves file user and group IDs "
13220 "via B<stat>(2), the IDs are mapped in the opposite direction, to produce "
13221 "values relative to the process user and group ID mappings."
13222 msgstr ""
13223
13224 #. type: Plain text
13225 #: build/C/man7/user_namespaces.7:428
13226 msgid ""
13227 "The initial user namespace has no parent namespace, but, for consistency, "
13228 "the kernel provides dummy user and group ID mapping files for this "
13229 "namespace.  Looking at the I<uid_map> file (I<gid_map> is the same) from a "
13230 "shell in the initial namespace shows:"
13231 msgstr ""
13232
13233 #. type: Plain text
13234 #: build/C/man7/user_namespaces.7:433
13235 #, no-wrap
13236 msgid ""
13237 "$ B<cat /proc/$$/uid_map>\n"
13238 "         0          0 4294967295\n"
13239 msgstr ""
13240 "$ B<cat /proc/$$/uid_map>\n"
13241 "         0          0 4294967295\n"
13242
13243 #
13244 #.  ============================================================
13245 #. type: Plain text
13246 #: build/C/man7/user_namespaces.7:453
13247 msgid ""
13248 "This mapping tells us that the range starting at user ID 0 in this namespace "
13249 "maps to a range starting at 0 in the (nonexistent) parent namespace, and the "
13250 "length of the range is the largest 32-bit unsigned integer.  (This "
13251 "deliberately leaves 4294967295 (the 32-bit signed -1 value) unmapped.  This "
13252 "is deliberate: I<(uid_t)\\ -\\1> is used in several interfaces (e.g., "
13253 "B<setreuid>(2))  as a way to specify \"no user ID\".  Leaving I<(uid_t)\\ -"
13254 "\\1> unmapped and unusable guarantees that there will be no confusion when "
13255 "using these interfaces."
13256 msgstr ""
13257
13258 #. type: SS
13259 #: build/C/man7/user_namespaces.7:453
13260 #, no-wrap
13261 msgid "Defining user and group ID mappings: writing to uid_map and gid_map"
13262 msgstr ""
13263
13264 #. type: Plain text
13265 #: build/C/man7/user_namespaces.7:469
13266 msgid ""
13267 "After the creation of a new user namespace, the I<uid_map> file of I<one> of "
13268 "the processes in the namespace may be written to I<once> to define the "
13269 "mapping of user IDs in the new user namespace.  An attempt to write more "
13270 "than once to a I<uid_map> file in a user namespace fails with the error "
13271 "B<EPERM>.  Similar rules apply for I<gid_map> files."
13272 msgstr ""
13273
13274 #. type: Plain text
13275 #: build/C/man7/user_namespaces.7:474
13276 msgid ""
13277 "The lines written to I<uid_map> (I<gid_map>)  must conform to the following "
13278 "rules:"
13279 msgstr ""
13280
13281 #. type: Plain text
13282 #: build/C/man7/user_namespaces.7:477
13283 msgid ""
13284 "The three fields must be valid numbers, and the last field must be greater "
13285 "than 0."
13286 msgstr ""
13287
13288 #. type: Plain text
13289 #: build/C/man7/user_namespaces.7:479
13290 msgid "Lines are terminated by newline characters."
13291 msgstr ""
13292
13293 #.  FIXME(Eric): the restriction "less than" rather than "less than or equal"
13294 #.  seems strangely arbitrary. Furthermore, the comment does not agree
13295 #.  with the code in kernel/user_namespace.c. Which is correct?
13296 #. type: Plain text
13297 #: build/C/man7/user_namespaces.7:492
13298 msgid ""
13299 "There is an (arbitrary) limit on the number of lines in the file.  As at "
13300 "Linux 3.8, the limit is five lines.  In addition, the number of bytes "
13301 "written to the file must be less than the system page size, and the write "
13302 "must be performed at the start of the file (i.e., B<lseek>(2)  and "
13303 "B<pwrite>(2)  can't be used to write to nonzero offsets in the file)."
13304 msgstr ""
13305
13306 #.  commit 0bd14b4fd72afd5df41e9fd59f356740f22fceba
13307 #. type: Plain text
13308 #: build/C/man7/user_namespaces.7:505
13309 msgid ""
13310 "The range of user IDs (group IDs)  specified in each line cannot overlap "
13311 "with the ranges in any other lines.  In the initial implementation (Linux "
13312 "3.8), this requirement was satisfied by a simplistic implementation that "
13313 "imposed the further requirement that the values in both field 1 and field 2 "
13314 "of successive lines must be in ascending numerical order, which prevented "
13315 "some otherwise valid maps from being created.  Linux 3.9 and later fix this "
13316 "limitation, allowing any valid set of nonoverlapping maps."
13317 msgstr ""
13318
13319 #. type: Plain text
13320 #: build/C/man7/user_namespaces.7:507
13321 msgid "At least one line must be written to the file."
13322 msgstr ""
13323
13324 #. type: Plain text
13325 #: build/C/man7/user_namespaces.7:510
13326 msgid "Writes that violate the above rules fail with the error B<EINVAL>."
13327 msgstr ""
13328
13329 #. type: Plain text
13330 #: build/C/man7/user_namespaces.7:515
13331 msgid ""
13332 "In order for a process to write to the I</proc/[pid]/uid_map> (I</proc/[pid]/"
13333 "gid_map>)  file, all of the following requirements must be met:"
13334 msgstr ""
13335
13336 #. type: Plain text
13337 #: build/C/man7/user_namespaces.7:521
13338 msgid ""
13339 "The writing process must have the B<CAP_SETUID> (B<CAP_SETGID>)  capability "
13340 "in the user namespace of the process I<pid>."
13341 msgstr ""
13342
13343 #. type: Plain text
13344 #: build/C/man7/user_namespaces.7:526
13345 msgid ""
13346 "The writing process must be in either the user namespace of the process "
13347 "I<pid> or inside the parent user namespace of the process I<pid>."
13348 msgstr ""
13349
13350 #. type: Plain text
13351 #: build/C/man7/user_namespaces.7:529
13352 msgid ""
13353 "The mapped user IDs (group IDs) must in turn have a mapping in the parent "
13354 "user namespace."
13355 msgstr ""
13356
13357 #. type: Plain text
13358 #: build/C/man7/user_namespaces.7:531
13359 msgid "One of the following is true:"
13360 msgstr ""
13361
13362 #. type: Plain text
13363 #: build/C/man7/user_namespaces.7:541
13364 msgid ""
13365 "The data written to I<uid_map> (I<gid_map>)  consists of a single line that "
13366 "maps the writing process's filesystem user ID (group ID) in the parent user "
13367 "namespace to a user ID (group ID)  in the user namespace.  The usual case "
13368 "here is that this single line provides a mapping for user ID of the process "
13369 "that created the namespace."
13370 msgstr ""
13371
13372 #. type: Plain text
13373 #: build/C/man7/user_namespaces.7:548
13374 msgid ""
13375 "The opening process has the B<CAP_SETUID> (B<CAP_SETGID>)  capability in the "
13376 "parent user namespace.  Thus, a privileged process can make mappings to "
13377 "arbitrary user IDs (group IDs)  in the parent user namespace."
13378 msgstr ""
13379
13380 #
13381 #.  ============================================================
13382 #. type: Plain text
13383 #: build/C/man7/user_namespaces.7:555
13384 msgid "Writes that violate the above rules fail with the error B<EPERM>."
13385 msgstr ""
13386
13387 #. type: SS
13388 #: build/C/man7/user_namespaces.7:555
13389 #, no-wrap
13390 msgid "Unmapped user and group IDs"
13391 msgstr ""
13392
13393 #.  from_kuid_munged(), from_kgid_munged()
13394 #. type: Plain text
13395 #: build/C/man7/user_namespaces.7:572
13396 msgid ""
13397 "There are various places where an unmapped user ID (group ID)  may be "
13398 "exposed to user space.  For example, the first process in a new user "
13399 "namespace may call B<getuid>()  before a user ID mapping has been defined "
13400 "for the namespace.  In most such cases, an unmapped user ID is converted to "
13401 "the overflow user ID (group ID); the default value for the overflow user ID "
13402 "(group ID) is 65534.  See the descriptions of I</proc/sys/kernel/"
13403 "overflowuid> and I</proc/sys/kernel/overflowgid> in B<proc>(5)."
13404 msgstr ""
13405
13406 #.  also SO_PEERCRED
13407 #. type: Plain text
13408 #: build/C/man7/user_namespaces.7:600
13409 msgid ""
13410 "The cases where unmapped IDs are mapped in this fashion include system calls "
13411 "that return user IDs (B<getuid>(2), B<getgid>(2), and similar), credentials "
13412 "passed over a UNIX domain socket, credentials returned by B<stat>(2), "
13413 "B<waitid>(2), and the System V IPC \"ctl\" B<IPC_STAT> operations, "
13414 "credentials exposed by I</proc/PID/status> and the files in I</proc/sysvipc/"
13415 "*>, credentials returned via the I<si_uid> field in the I<siginfo_t> "
13416 "received with a signal (see B<sigaction>(2)), credentials written to the "
13417 "process accounting file (see B<acct>(5)), and credentials returned with "
13418 "POSIX message queue notifications (see B<mq_notify>(3))."
13419 msgstr ""
13420
13421 #
13422 #.  from_kuid(), from_kgid()
13423 #.  Also F_GETOWNER_UIDS is an exception
13424 #.  ============================================================
13425 #. type: Plain text
13426 #: build/C/man7/user_namespaces.7:615
13427 msgid ""
13428 "There is one notable case where unmapped user and group IDs are I<not> "
13429 "converted to the corresponding overflow ID value.  When viewing a I<uid_map> "
13430 "or I<gid_map> file in which there is no mapping for the second field, that "
13431 "field is displayed as 4294967295 (-1 as an unsigned integer);"
13432 msgstr ""
13433
13434 #. type: SS
13435 #: build/C/man7/user_namespaces.7:615
13436 #, no-wrap
13437 msgid "Set-user-ID and set-group-ID programs"
13438 msgstr ""
13439
13440 #
13441 #.  ============================================================
13442 #. type: Plain text
13443 #: build/C/man7/user_namespaces.7:635
13444 msgid ""
13445 "When a process inside a user namespace executes a set-user-ID (set-group-ID) "
13446 "program, the process's effective user (group) ID inside the namespace is "
13447 "changed to whatever value is mapped for the user (group) ID of the file.  "
13448 "However, if either the user I<or> the group ID of the file has no mapping "
13449 "inside the namespace, the set-user-ID (set-group-ID) bit is silently "
13450 "ignored: the new program is executed, but the process's effective user "
13451 "(group) ID is left unchanged.  (This mirrors the semantics of executing a "
13452 "set-user-ID or set-group-ID program that resides on a filesystem that was "
13453 "mounted with the B<MS_NOSUID> flag, as described in B<mount>(2).)"
13454 msgstr ""
13455
13456 #. type: Plain text
13457 #: build/C/man7/user_namespaces.7:645
13458 msgid ""
13459 "When a process's user and group IDs are passed over a UNIX domain socket to "
13460 "a process in a different user namespace (see the description of "
13461 "B<SCM_CREDENTIALS> in B<unix>(7)), they are translated into the "
13462 "corresponding values as per the receiving process's user and group ID "
13463 "mappings."
13464 msgstr ""
13465
13466 #
13467 #.  ============================================================
13468 #. type: Plain text
13469 #: build/C/man7/user_namespaces.7:658
13470 msgid ""
13471 "Over the years, there have been a lot of features that have been added to "
13472 "the Linux kernel that have been made available only to privileged users "
13473 "because of their potential to confuse set-user-ID-root applications.  In "
13474 "general, it becomes safe to allow the root user in a user namespace to use "
13475 "those features because it is impossible, while in a user namespace, to gain "
13476 "more privilege than the root user of a user namespace has."
13477 msgstr ""
13478
13479 #. type: SS
13480 #: build/C/man7/user_namespaces.7:658
13481 #, no-wrap
13482 msgid "Availability"
13483 msgstr ""
13484
13485 #. type: Plain text
13486 #: build/C/man7/user_namespaces.7:666
13487 msgid ""
13488 "Use of user namespaces requires a kernel that is configured with the "
13489 "B<CONFIG_USER_NS> option.  User namespaces require support in a range of "
13490 "subsystems across the kernel.  When an unsupported subsystem is configured "
13491 "into the kernel, it is not possible to configure user namespaces support."
13492 msgstr ""
13493
13494 #.  commit d6970d4b726cea6d7a9bc4120814f95c09571fc3
13495 #. type: Plain text
13496 #: build/C/man7/user_namespaces.7:677
13497 msgid ""
13498 "As at Linux 3.8, most relevant subsystems supported user namespaces, but a "
13499 "number of filesystems did not have the infrastructure needed to map user and "
13500 "group IDs between user namespaces.  Linux 3.9 added the required "
13501 "infrastructure support for many of the remaining unsupported filesystems "
13502 "(Plan 9 (9P), Andrew File System (AFS), Ceph, CIFS, CODA, NFS, and OCFS2).  "
13503 "Linux 3.11 added support the last of the unsupported major filesystems, XFS."
13504 msgstr ""
13505
13506 #. type: Plain text
13507 #: build/C/man7/user_namespaces.7:686
13508 msgid ""
13509 "The program below is designed to allow experimenting with user namespaces, "
13510 "as well as other types of namespaces.  It creates namespaces as specified by "
13511 "command-line options and then executes a command inside those namespaces.  "
13512 "The comments and I<usage()> function inside the program provide a full "
13513 "explanation of the program.  The following shell session demonstrates its "
13514 "use."
13515 msgstr ""
13516 "以下のプログラムは、ユーザー名前空間で実験を行えるように設計されている。 他の"
13517 "種類の名前空間も扱える。 このプログラムはコマンドライン引き数で指定された名前"
13518 "空間を作成し、作成した名前空間内でコマンドを実行する。 コメントとプログラム内"
13519 "の I<usage()> 関数に、プログラムの詳しい説明が書かれている。 以下のシェルセッ"
13520 "ションに実行例を示す。"
13521
13522 #. type: Plain text
13523 #: build/C/man7/user_namespaces.7:688
13524 msgid "First, we look at the run-time environment:"
13525 msgstr "まず最初に、実行環境を確認しておく。"
13526
13527 #. type: Plain text
13528 #: build/C/man7/user_namespaces.7:697
13529 #, no-wrap
13530 msgid ""
13531 "$ B<uname -rs>     # Need Linux 3.8 or later\n"
13532 "Linux 3.8.0\n"
13533 "$ B<id -u>         # Running as unprivileged user\n"
13534 "1000\n"
13535 "$ B<id -g>\n"
13536 "1000\n"
13537 msgstr ""
13538 "$ B<uname -rs>     # Linux 3.8 以降が必要\n"
13539 "Linux 3.8.0\n"
13540 "$ B<id -u>         # 非特権ユーザーで実行する\n"
13541 "1000\n"
13542 "$ B<id -g>\n"
13543 "1000\n"
13544
13545 #. type: Plain text
13546 #: build/C/man7/user_namespaces.7:711
13547 msgid ""
13548 "Now start a new shell in new user (I<-U>), mount (I<-m>), and PID (I<-p>)  "
13549 "namespaces, with user ID (I<-M>)  and group ID (I<-G>)  1000 mapped to 0 "
13550 "inside the user namespace:"
13551 msgstr ""
13552 "新しいユーザー名前空間 (I<-U>), マウント名前空間 (I<-m>), PID 名前空間 (I<-"
13553 "p>) で新しいシェルを開始する。ユーザー ID (I<-M>) 1000 とグループ ID (I<-G>) "
13554 "1000 をユーザー名前空間内で 0 にマッピングしている。"
13555
13556 #. type: Plain text
13557 #: build/C/man7/user_namespaces.7:715
13558 #, no-wrap
13559 msgid "$ B<./userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash>\n"
13560 msgstr "$ B<./userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash>\n"
13561
13562 #. type: Plain text
13563 #: build/C/man7/user_namespaces.7:720
13564 msgid ""
13565 "The shell has PID 1, because it is the first process in the new PID "
13566 "namespace:"
13567 msgstr ""
13568 "シェルは PID 1 を持つ。このシェルは新しい PID 名前空間の最初のプロセスだから"
13569 "である。"
13570
13571 #. type: Plain text
13572 #: build/C/man7/user_namespaces.7:725
13573 #, no-wrap
13574 msgid ""
13575 "bash$ B<echo $$>\n"
13576 "1\n"
13577 msgstr ""
13578 "bash$ B<echo $$>\n"
13579 "1\n"
13580
13581 #. type: Plain text
13582 #: build/C/man7/user_namespaces.7:730
13583 msgid ""
13584 "Inside the user namespace, the shell has user and group ID 0, and a full set "
13585 "of permitted and effective capabilities:"
13586 msgstr ""
13587 "ユーザー名前空間内では、シェルのユーザー ID とグループ ID ともに 0 で、すべて"
13588 "の許可ケーパビリティと実効ケーパビリティが有効になっている。"
13589
13590 #. type: Plain text
13591 #: build/C/man7/user_namespaces.7:740
13592 #, no-wrap
13593 msgid ""
13594 "bash$ B<cat /proc/$$/status | egrep '^[UG]id'>\n"
13595 "Uid:\t0\t0\t0\t0\n"
13596 "Gid:\t0\t0\t0\t0\n"
13597 "bash$ B<cat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'>\n"
13598 "CapInh:\t0000000000000000\n"
13599 "CapPrm:\t0000001fffffffff\n"
13600 "CapEff:\t0000001fffffffff\n"
13601 msgstr ""
13602 "bash$ B<cat /proc/$$/status | egrep '^[UG]id'>\n"
13603 "Uid:\t0\t0\t0\t0\n"
13604 "Gid:\t0\t0\t0\t0\n"
13605 "bash$ B<cat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'>\n"
13606 "CapInh:\t0000000000000000\n"
13607 "CapPrm:\t0000001fffffffff\n"
13608 "CapEff:\t0000001fffffffff\n"
13609
13610 #. type: Plain text
13611 #: build/C/man7/user_namespaces.7:748
13612 msgid ""
13613 "Mounting a new I</proc> filesystem and listing all of the processes visible "
13614 "in the new PID namespace shows that the shell can't see any processes "
13615 "outside the PID namespace:"
13616 msgstr ""
13617 "I</proc> ファイルシステムをマウントし、新しい PID 名前空間で見えるプロセス一"
13618 "覧を表示すると、 シェルからは PID 名前空間外のプロセスが見えないことが分か"
13619 "る。"
13620
13621 #. type: Plain text
13622 #: build/C/man7/user_namespaces.7:756
13623 #, no-wrap
13624 msgid ""
13625 "bash$ B<mount -t proc proc /proc>\n"
13626 "bash$ B<ps ax>\n"
13627 "  PID TTY      STAT   TIME COMMAND\n"
13628 "    1 pts/3    S      0:00 bash\n"
13629 "   22 pts/3    R+     0:00 ps ax\n"
13630 msgstr ""
13631 "bash$ B<mount -t proc proc /proc>\n"
13632 "bash$ B<ps ax>\n"
13633 "  PID TTY      STAT   TIME COMMAND\n"
13634 "    1 pts/3    S      0:00 bash\n"
13635 "   22 pts/3    R+     0:00 ps ax\n"
13636
13637 #. type: SS
13638 #: build/C/man7/user_namespaces.7:758 build/C/man2/seccomp.2:574
13639 #, no-wrap
13640 msgid "Program source"
13641 msgstr "プログラムのソース"
13642
13643 #. type: Plain text
13644 #: build/C/man7/user_namespaces.7:762
13645 #, no-wrap
13646 msgid "/* userns_child_exec.c\n"
13647 msgstr "/* userns_child_exec.c\n"
13648
13649 #. type: Plain text
13650 #: build/C/man7/user_namespaces.7:764
13651 #, no-wrap
13652 msgid "   Licensed under GNU General Public License v2 or later\n"
13653 msgstr "   GNU General Public License v2 以降の元でライセンスされる\n"
13654
13655 #. type: Plain text
13656 #: build/C/man7/user_namespaces.7:780
13657 #, no-wrap
13658 msgid ""
13659 "   Create a child process that executes a shell command in new\n"
13660 "   namespace(s); allow UID and GID mappings to be specified when\n"
13661 "   creating a user namespace.\n"
13662 "*/\n"
13663 "#define _GNU_SOURCE\n"
13664 "#include E<lt>sched.hE<gt>\n"
13665 "#include E<lt>unistd.hE<gt>\n"
13666 "#include E<lt>stdlib.hE<gt>\n"
13667 "#include E<lt>sys/wait.hE<gt>\n"
13668 "#include E<lt>signal.hE<gt>\n"
13669 "#include E<lt>fcntl.hE<gt>\n"
13670 "#include E<lt>stdio.hE<gt>\n"
13671 "#include E<lt>string.hE<gt>\n"
13672 "#include E<lt>limits.hE<gt>\n"
13673 "#include E<lt>errno.hE<gt>\n"
13674 msgstr ""
13675 "   新しい名前空間でシェルコマンドを実行する子プロセスを作成する。\n"
13676 "   ユーザー名前空間を作成する際に UID と GID のマッピングを\n"
13677 "   指定することができる。\n"
13678 "*/\n"
13679 "#define _GNU_SOURCE\n"
13680 "#include E<lt>sched.hE<gt>\n"
13681 "#include E<lt>unistd.hE<gt>\n"
13682 "#include E<lt>stdlib.hE<gt>\n"
13683 "#include E<lt>sys/wait.hE<gt>\n"
13684 "#include E<lt>signal.hE<gt>\n"
13685 "#include E<lt>fcntl.hE<gt>\n"
13686 "#include E<lt>stdio.hE<gt>\n"
13687 "#include E<lt>string.hE<gt>\n"
13688 "#include E<lt>limits.hE<gt>\n"
13689 "#include E<lt>errno.hE<gt>\n"
13690
13691 #. type: Plain text
13692 #: build/C/man7/user_namespaces.7:783
13693 #, no-wrap
13694 msgid ""
13695 "/* A simple error-handling function: print an error message based\n"
13696 "   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
13697 msgstr ""
13698 "/* 簡単なエラー処理関数: \\\\(aqerrno\\\\(aq の値に基づいて\n"
13699 "   エラーメッセージを出力し、呼び出し元プロセスを終了する。 */\n"
13700
13701 #. type: Plain text
13702 #: build/C/man7/user_namespaces.7:786
13703 #, no-wrap
13704 msgid ""
13705 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
13706 "                        } while (0)\n"
13707 msgstr ""
13708 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
13709 "                        } while (0)\n"
13710
13711 #. type: Plain text
13712 #: build/C/man7/user_namespaces.7:791
13713 #, no-wrap
13714 msgid ""
13715 "struct child_args {\n"
13716 "    char **argv;        /* Command to be executed by child, with args */\n"
13717 "    int    pipe_fd[2];  /* Pipe used to synchronize parent and child */\n"
13718 "};\n"
13719 msgstr ""
13720 "struct child_args {\n"
13721 "    char **argv;        /* 子プロセスが実行するコマンドと引き数 */\n"
13722 "    int    pipe_fd[2];  /* 親プロセスと子プロセスを同期するためのパイプ */\n"
13723 "};\n"
13724
13725 #. type: Plain text
13726 #: build/C/man7/user_namespaces.7:793
13727 #, no-wrap
13728 msgid "static int verbose;\n"
13729 msgstr "static int verbose;\n"
13730
13731 #. type: Plain text
13732 #: build/C/man7/user_namespaces.7:826
13733 #, no-wrap
13734 msgid ""
13735 "static void\n"
13736 "usage(char *pname)\n"
13737 "{\n"
13738 "    fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n"
13739 "    fprintf(stderr, \"Create a child process that executes a shell \"\n"
13740 "            \"command in a new user namespace,\\en\"\n"
13741 "            \"and possibly also other new namespace(s).\\en\\en\");\n"
13742 "    fprintf(stderr, \"Options can be:\\en\\en\");\n"
13743 "#define fpe(str) fprintf(stderr, \"    %s\", str);\n"
13744 "    fpe(\"-i          New IPC namespace\\en\");\n"
13745 "    fpe(\"-m          New mount namespace\\en\");\n"
13746 "    fpe(\"-n          New network namespace\\en\");\n"
13747 "    fpe(\"-p          New PID namespace\\en\");\n"
13748 "    fpe(\"-u          New UTS namespace\\en\");\n"
13749 "    fpe(\"-U          New user namespace\\en\");\n"
13750 "    fpe(\"-M uid_map  Specify UID map for user namespace\\en\");\n"
13751 "    fpe(\"-G gid_map  Specify GID map for user namespace\\en\");\n"
13752 "    fpe(\"-z          Map user\\(aqs UID and GID to 0 in user namespace\\en\");\n"
13753 "    fpe(\"            (equivalent to: -M \\(aq0 E<lt>uidE<gt> 1\\(aq -G \\(aq0 E<lt>gidE<gt> 1\\(aq)\\en\");\n"
13754 "    fpe(\"-v          Display verbose messages\\en\");\n"
13755 "    fpe(\"\\en\");\n"
13756 "    fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n"
13757 "    fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n"
13758 "    fpe(\"\\en\");\n"
13759 "    fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n"
13760 "    fpe(\"\\en\");\n"
13761 "    fpe(\"    ID-inside-ns   ID-outside-ns   len\\en\");\n"
13762 "    fpe(\"\\en\");\n"
13763 "    fpe(\"A map string can contain multiple records, separated\"\n"
13764 "        \" by commas;\\en\");\n"
13765 "    fpe(\"the commas are replaced by newlines before writing\"\n"
13766 "        \" to map files.\\en\");\n"
13767 msgstr ""
13768 "static void\n"
13769 "usage(char *pname)\n"
13770 "{\n"
13771 "    fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n"
13772 "    fprintf(stderr, \"Create a child process that executes a shell \"\n"
13773 "            \"command in a new user namespace,\\en\"\n"
13774 "            \"and possibly also other new namespace(s).\\en\\en\");\n"
13775 "    fprintf(stderr, \"Options can be:\\en\\en\");\n"
13776 "#define fpe(str) fprintf(stderr, \"    %s\", str);\n"
13777 "    fpe(\"-i          New IPC namespace\\en\");\n"
13778 "    fpe(\"-m          New mount namespace\\en\");\n"
13779 "    fpe(\"-n          New network namespace\\en\");\n"
13780 "    fpe(\"-p          New PID namespace\\en\");\n"
13781 "    fpe(\"-u          New UTS namespace\\en\");\n"
13782 "    fpe(\"-U          New user namespace\\en\");\n"
13783 "    fpe(\"-M uid_map  Specify UID map for user namespace\\en\");\n"
13784 "    fpe(\"-G gid_map  Specify GID map for user namespace\\en\");\n"
13785 "    fpe(\"-z          Map user\\(aqs UID and GID to 0 in user namespace\\en\");\n"
13786 "    fpe(\"            (equivalent to: -M \\(aq0 E<lt>uidE<gt> 1\\(aq -G \\(aq0 E<lt>gidE<gt> 1\\(aq)\\en\");\n"
13787 "    fpe(\"-v          Display verbose messages\\en\");\n"
13788 "    fpe(\"\\en\");\n"
13789 "    fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n"
13790 "    fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n"
13791 "    fpe(\"\\en\");\n"
13792 "    fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n"
13793 "    fpe(\"\\en\");\n"
13794 "    fpe(\"    ID-inside-ns   ID-outside-ns   len\\en\");\n"
13795 "    fpe(\"\\en\");\n"
13796 "    fpe(\"A map string can contain multiple records, separated\"\n"
13797 "        \" by commas;\\en\");\n"
13798 "    fpe(\"the commas are replaced by newlines before writing\"\n"
13799 "        \" to map files.\\en\");\n"
13800
13801 #. type: Plain text
13802 #: build/C/man7/user_namespaces.7:834
13803 #, no-wrap
13804 msgid ""
13805 "/* Update the mapping file \\(aqmap_file\\(aq, with the value provided in\n"
13806 "   \\(aqmapping\\(aq, a string that defines a UID or GID mapping. A UID or\n"
13807 "   GID mapping consists of one or more newline-delimited records\n"
13808 "   of the form:\n"
13809 msgstr ""
13810
13811 #. type: Plain text
13812 #: build/C/man7/user_namespaces.7:836
13813 #, no-wrap
13814 msgid "       ID_inside-ns    ID-outside-ns   length\n"
13815 msgstr ""
13816
13817 #. type: Plain text
13818 #: build/C/man7/user_namespaces.7:841
13819 #, no-wrap
13820 msgid ""
13821 "   Requiring the user to supply a string that contains newlines is\n"
13822 "   of course inconvenient for command-line use. Thus, we permit the\n"
13823 "   use of commas to delimit records in this string, and replace them\n"
13824 "   with newlines before writing the string to the file. */\n"
13825 msgstr ""
13826
13827 #. type: Plain text
13828 #: build/C/man7/user_namespaces.7:847
13829 #, no-wrap
13830 msgid ""
13831 "static void\n"
13832 "update_map(char *mapping, char *map_file)\n"
13833 "{\n"
13834 "    int fd, j;\n"
13835 "    size_t map_len;     /* Length of \\(aqmapping\\(aq */\n"
13836 msgstr ""
13837 "static void\n"
13838 "update_map(char *mapping, char *map_file)\n"
13839 "{\n"
13840 "    int fd, j;\n"
13841 "    size_t map_len;     /* Length of \\(aqmapping\\(aq */\n"
13842
13843 #. type: Plain text
13844 #: build/C/man7/user_namespaces.7:849
13845 #, no-wrap
13846 msgid "    /* Replace commas in mapping string with newlines */\n"
13847 msgstr "    /* Replace commas in mapping string with newlines */\n"
13848
13849 #. type: Plain text
13850 #: build/C/man7/user_namespaces.7:854
13851 #, no-wrap
13852 msgid ""
13853 "    map_len = strlen(mapping);\n"
13854 "    for (j = 0; j E<lt> map_len; j++)\n"
13855 "        if (mapping[j] == \\(aq,\\(aq)\n"
13856 "            mapping[j] = \\(aq\\en\\(aq;\n"
13857 msgstr ""
13858 "    map_len = strlen(mapping);\n"
13859 "    for (j = 0; j E<lt> map_len; j++)\n"
13860 "        if (mapping[j] == \\(aq,\\(aq)\n"
13861 "            mapping[j] = \\(aq\\en\\(aq;\n"
13862
13863 #. type: Plain text
13864 #: build/C/man7/user_namespaces.7:861
13865 #, no-wrap
13866 msgid ""
13867 "    fd = open(map_file, O_RDWR);\n"
13868 "    if (fd == -1) {\n"
13869 "        fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n"
13870 "                strerror(errno));\n"
13871 "        exit(EXIT_FAILURE);\n"
13872 "    }\n"
13873 msgstr ""
13874 "    fd = open(map_file, O_RDWR);\n"
13875 "    if (fd == -1) {\n"
13876 "        fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n"
13877 "                strerror(errno));\n"
13878 "        exit(EXIT_FAILURE);\n"
13879 "    }\n"
13880
13881 #. type: Plain text
13882 #: build/C/man7/user_namespaces.7:867
13883 #, no-wrap
13884 msgid ""
13885 "    if (write(fd, mapping, map_len) != map_len) {\n"
13886 "        fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n"
13887 "                strerror(errno));\n"
13888 "        exit(EXIT_FAILURE);\n"
13889 "    }\n"
13890 msgstr ""
13891 "    if (write(fd, mapping, map_len) != map_len) {\n"
13892 "        fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n"
13893 "                strerror(errno));\n"
13894 "        exit(EXIT_FAILURE);\n"
13895 "    }\n"
13896
13897 #. type: Plain text
13898 #: build/C/man7/user_namespaces.7:870
13899 #, no-wrap
13900 msgid ""
13901 "    close(fd);\n"
13902 "}\n"
13903 msgstr ""
13904 "    close(fd);\n"
13905 "}\n"
13906
13907 #. type: Plain text
13908 #: build/C/man7/user_namespaces.7:876
13909 #, no-wrap
13910 msgid ""
13911 "static int              /* Start function for cloned child */\n"
13912 "childFunc(void *arg)\n"
13913 "{\n"
13914 "    struct child_args *args = (struct child_args *) arg;\n"
13915 "    char ch;\n"
13916 msgstr ""
13917 "static int              /* Start function for cloned child */\n"
13918 "childFunc(void *arg)\n"
13919 "{\n"
13920 "    struct child_args *args = (struct child_args *) arg;\n"
13921 "    char ch;\n"
13922
13923 #. type: Plain text
13924 #: build/C/man7/user_namespaces.7:881
13925 #, no-wrap
13926 msgid ""
13927 "    /* Wait until the parent has updated the UID and GID mappings.\n"
13928 "       See the comment in main(). We wait for end of file on a\n"
13929 "       pipe that will be closed by the parent process once it has\n"
13930 "       updated the mappings. */\n"
13931 msgstr ""
13932
13933 #. type: Plain text
13934 #: build/C/man7/user_namespaces.7:890
13935 #, no-wrap
13936 msgid ""
13937 "    close(args-E<gt>pipe_fd[1]);    /* Close our descriptor for the write\n"
13938 "                                   end of the pipe so that we see EOF\n"
13939 "                                   when parent closes its descriptor */\n"
13940 "    if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n"
13941 "        fprintf(stderr,\n"
13942 "                \"Failure in child: read from pipe returned != 0\\en\");\n"
13943 "        exit(EXIT_FAILURE);\n"
13944 "    }\n"
13945 msgstr ""
13946
13947 #. type: Plain text
13948 #: build/C/man7/user_namespaces.7:892
13949 #, no-wrap
13950 msgid "    /* Execute a shell command */\n"
13951 msgstr "    /* シェルコマンドを実行する */\n"
13952
13953 #. type: Plain text
13954 #: build/C/man7/user_namespaces.7:897
13955 #, no-wrap
13956 msgid ""
13957 "    printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n"
13958 "    execvp(args-E<gt>argv[0], args-E<gt>argv);\n"
13959 "    errExit(\"execvp\");\n"
13960 "}\n"
13961 msgstr ""
13962 "    printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n"
13963 "    execvp(args-E<gt>argv[0], args-E<gt>argv);\n"
13964 "    errExit(\"execvp\");\n"
13965 "}\n"
13966
13967 #. type: Plain text
13968 #: build/C/man7/user_namespaces.7:899
13969 #, no-wrap
13970 msgid "#define STACK_SIZE (1024 * 1024)\n"
13971 msgstr "#define STACK_SIZE (1024 * 1024)\n"
13972
13973 #. type: Plain text
13974 #: build/C/man7/user_namespaces.7:901
13975 #, no-wrap
13976 msgid "static char child_stack[STACK_SIZE];    /* Space for child\\(aqs stack */\n"
13977 msgstr "static char child_stack[STACK_SIZE];    /* 子プロセスのスタック空間 */\n"
13978
13979 #. type: Plain text
13980 #: build/C/man7/user_namespaces.7:912
13981 #, no-wrap
13982 msgid ""
13983 "int\n"
13984 "main(int argc, char *argv[])\n"
13985 "{\n"
13986 "    int flags, opt, map_zero;\n"
13987 "    pid_t child_pid;\n"
13988 "    struct child_args args;\n"
13989 "    char *uid_map, *gid_map;\n"
13990 "    const int MAP_BUF_SIZE = 100;\n"
13991 "    char map_buf[MAP_BUF_SIZE];\n"
13992 "    char map_path[PATH_MAX];\n"
13993 msgstr ""
13994 "int\n"
13995 "main(int argc, char *argv[])\n"
13996 "{\n"
13997 "    int flags, opt, map_zero;\n"
13998 "    pid_t child_pid;\n"
13999 "    struct child_args args;\n"
14000 "    char *uid_map, *gid_map;\n"
14001 "    const int MAP_BUF_SIZE = 100;\n"
14002 "    char map_buf[MAP_BUF_SIZE];\n"
14003 "    char map_path[PATH_MAX];\n"
14004
14005 #. type: Plain text
14006 #: build/C/man7/user_namespaces.7:919
14007 #, no-wrap
14008 msgid ""
14009 "    /* Parse command-line options. The initial \\(aq+\\(aq character in\n"
14010 "       the final getopt() argument prevents GNU-style permutation\n"
14011 "       of command-line options. That\\(aqs useful, since sometimes\n"
14012 "       the \\(aqcommand\\(aq to be executed by this program itself\n"
14013 "       has command-line options. We don\\(aqt want getopt() to treat\n"
14014 "       those as options to this program. */\n"
14015 msgstr ""
14016
14017 #. type: Plain text
14018 #: build/C/man7/user_namespaces.7:940
14019 #, no-wrap
14020 msgid ""
14021 "    flags = 0;\n"
14022 "    verbose = 0;\n"
14023 "    gid_map = NULL;\n"
14024 "    uid_map = NULL;\n"
14025 "    map_zero = 0;\n"
14026 "    while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n"
14027 "        switch (opt) {\n"
14028 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
14029 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
14030 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
14031 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
14032 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
14033 "        case \\(aqv\\(aq: verbose = 1;                  break;\n"
14034 "        case \\(aqz\\(aq: map_zero = 1;                 break;\n"
14035 "        case \\(aqM\\(aq: uid_map = optarg;             break;\n"
14036 "        case \\(aqG\\(aq: gid_map = optarg;             break;\n"
14037 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
14038 "        default:  usage(argv[0]);\n"
14039 "        }\n"
14040 "    }\n"
14041 msgstr ""
14042 "    flags = 0;\n"
14043 "    verbose = 0;\n"
14044 "    gid_map = NULL;\n"
14045 "    uid_map = NULL;\n"
14046 "    map_zero = 0;\n"
14047 "    while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n"
14048 "        switch (opt) {\n"
14049 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
14050 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
14051 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
14052 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
14053 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
14054 "        case \\(aqv\\(aq: verbose = 1;                  break;\n"
14055 "        case \\(aqz\\(aq: map_zero = 1;                 break;\n"
14056 "        case \\(aqM\\(aq: uid_map = optarg;             break;\n"
14057 "        case \\(aqG\\(aq: gid_map = optarg;             break;\n"
14058 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
14059 "        default:  usage(argv[0]);\n"
14060 "        }\n"
14061 "    }\n"
14062
14063 #. type: Plain text
14064 #: build/C/man7/user_namespaces.7:942
14065 #, no-wrap
14066 msgid "    /* -M or -G without -U is nonsensical */\n"
14067 msgstr "    /* -U なしの -M や -G の指定は意味がない */\n"
14068
14069 #. type: Plain text
14070 #: build/C/man7/user_namespaces.7:947
14071 #, no-wrap
14072 msgid ""
14073 "    if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n"
14074 "                !(flags & CLONE_NEWUSER)) ||\n"
14075 "            (map_zero && (uid_map != NULL || gid_map != NULL)))\n"
14076 "        usage(argv[0]);\n"
14077 msgstr ""
14078 "    if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n"
14079 "                !(flags & CLONE_NEWUSER)) ||\n"
14080 "            (map_zero && (uid_map != NULL || gid_map != NULL)))\n"
14081 "        usage(argv[0]);\n"
14082
14083 #. type: Plain text
14084 #: build/C/man7/user_namespaces.7:949
14085 #, no-wrap
14086 msgid "    args.argv = &argv[optind];\n"
14087 msgstr "    args.argv = &argv[optind];\n"
14088
14089 #. type: Plain text
14090 #: build/C/man7/user_namespaces.7:959
14091 #, no-wrap
14092 msgid ""
14093 "    /* We use a pipe to synchronize the parent and child, in order to\n"
14094 "       ensure that the parent sets the UID and GID maps before the child\n"
14095 "       calls execve(). This ensures that the child maintains its\n"
14096 "       capabilities during the execve() in the common case where we\n"
14097 "       want to map the child\\(aqs effective user ID to 0 in the new user\n"
14098 "       namespace. Without this synchronization, the child would lose\n"
14099 "       its capabilities if it performed an execve() with nonzero\n"
14100 "       user IDs (see the capabilities(7) man page for details of the\n"
14101 "       transformation of a process\\(aqs capabilities during execve()). */\n"
14102 msgstr ""
14103
14104 #. type: Plain text
14105 #: build/C/man7/user_namespaces.7:962
14106 #, no-wrap
14107 msgid ""
14108 "    if (pipe(args.pipe_fd) == -1)\n"
14109 "        errExit(\"pipe\");\n"
14110 msgstr ""
14111 "    if (pipe(args.pipe_fd) == -1)\n"
14112 "        errExit(\"pipe\");\n"
14113
14114 #. type: Plain text
14115 #: build/C/man7/user_namespaces.7:964
14116 #, no-wrap
14117 msgid "    /* Create the child in new namespace(s) */\n"
14118 msgstr "    /* 新しい名前空間で子プロセスを作成する */\n"
14119
14120 #. type: Plain text
14121 #: build/C/man7/user_namespaces.7:969
14122 #, no-wrap
14123 msgid ""
14124 "    child_pid = clone(childFunc, child_stack + STACK_SIZE,\n"
14125 "                      flags | SIGCHLD, &args);\n"
14126 "    if (child_pid == -1)\n"
14127 "        errExit(\"clone\");\n"
14128 msgstr ""
14129 "    child_pid = clone(childFunc, child_stack + STACK_SIZE,\n"
14130 "                      flags | SIGCHLD, &args);\n"
14131 "    if (child_pid == -1)\n"
14132 "        errExit(\"clone\");\n"
14133
14134 #. type: Plain text
14135 #: build/C/man7/user_namespaces.7:971
14136 #, no-wrap
14137 msgid "    /* Parent falls through to here */\n"
14138 msgstr "    /* 親プロセスはここを実行する */\n"
14139
14140 #. type: Plain text
14141 #: build/C/man7/user_namespaces.7:975
14142 #, no-wrap
14143 msgid ""
14144 "    if (verbose)\n"
14145 "        printf(\"%s: PID of child created by clone() is %ld\\en\",\n"
14146 "                argv[0], (long) child_pid);\n"
14147 msgstr ""
14148 "    if (verbose)\n"
14149 "        printf(\"%s: PID of child created by clone() is %ld\\en\",\n"
14150 "                argv[0], (long) child_pid);\n"
14151
14152 #. type: Plain text
14153 #: build/C/man7/user_namespaces.7:977
14154 #, no-wrap
14155 msgid "    /* Update the UID and GID maps in the child */\n"
14156 msgstr "    /* 子プロセスの UID と GID のマッピングを更新する */\n"
14157
14158 #. type: Plain text
14159 #: build/C/man7/user_namespaces.7:996
14160 #, no-wrap
14161 msgid ""
14162 "    if (uid_map != NULL || map_zero) {\n"
14163 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/uid_map\",\n"
14164 "                (long) child_pid);\n"
14165 "        if (map_zero) {\n"
14166 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getuid());\n"
14167 "            uid_map = map_buf;\n"
14168 "        }\n"
14169 "        update_map(uid_map, map_path);\n"
14170 "    }\n"
14171 "    if (gid_map != NULL || map_zero) {\n"
14172 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/gid_map\",\n"
14173 "                (long) child_pid);\n"
14174 "        if (map_zero) {\n"
14175 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getgid());\n"
14176 "            gid_map = map_buf;\n"
14177 "        }\n"
14178 "        update_map(gid_map, map_path);\n"
14179 "    }\n"
14180 msgstr ""
14181 "    if (uid_map != NULL || map_zero) {\n"
14182 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/uid_map\",\n"
14183 "                (long) child_pid);\n"
14184 "        if (map_zero) {\n"
14185 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getuid());\n"
14186 "            uid_map = map_buf;\n"
14187 "        }\n"
14188 "        update_map(uid_map, map_path);\n"
14189 "    }\n"
14190 "    if (gid_map != NULL || map_zero) {\n"
14191 "        snprintf(map_path, PATH_MAX, \"/proc/%ld/gid_map\",\n"
14192 "                (long) child_pid);\n"
14193 "        if (map_zero) {\n"
14194 "            snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\", (long) getgid());\n"
14195 "            gid_map = map_buf;\n"
14196 "        }\n"
14197 "        update_map(gid_map, map_path);\n"
14198 "    }\n"
14199
14200 #. type: Plain text
14201 #: build/C/man7/user_namespaces.7:999
14202 #, no-wrap
14203 msgid ""
14204 "    /* Close the write end of the pipe, to signal to the child that we\n"
14205 "       have updated the UID and GID maps */\n"
14206 msgstr ""
14207 "    /* パイプの書き込み端をクローズし、子プロセスに UID と GID の\n"
14208 "       マッピングが更新されたことを知らせる */\n"
14209
14210 #. type: Plain text
14211 #: build/C/man7/user_namespaces.7:1001
14212 #, no-wrap
14213 msgid "    close(args.pipe_fd[1]);\n"
14214 msgstr "    close(args.pipe_fd[1]);\n"
14215
14216 #. type: Plain text
14217 #: build/C/man7/user_namespaces.7:1004
14218 #, no-wrap
14219 msgid ""
14220 "    if (waitpid(child_pid, NULL, 0) == -1)      /* Wait for child */\n"
14221 "        errExit(\"waitpid\");\n"
14222 msgstr ""
14223 "    if (waitpid(child_pid, NULL, 0) == -1)      /* 子プロセスを待つ */\n"
14224 "        errExit(\"waitpid\");\n"
14225
14226 #. type: Plain text
14227 #: build/C/man7/user_namespaces.7:1007
14228 #, no-wrap
14229 msgid ""
14230 "    if (verbose)\n"
14231 "        printf(\"%s: terminating\\en\", argv[0]);\n"
14232 msgstr ""
14233 "    if (verbose)\n"
14234 "        printf(\"%s: terminating\\en\", argv[0]);\n"
14235
14236 #. type: Plain text
14237 #: build/C/man7/user_namespaces.7:1010
14238 #, no-wrap
14239 msgid ""
14240 "    exit(EXIT_SUCCESS);\n"
14241 "}\n"
14242 msgstr ""
14243 "    exit(EXIT_SUCCESS);\n"
14244 "}\n"
14245
14246 #.  From the shadow package
14247 #.  From the shadow package
14248 #.  From the shadow package
14249 #.  From the shadow package
14250 #. type: Plain text
14251 #: build/C/man7/user_namespaces.7:1024
14252 msgid ""
14253 "B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<setns>(2), B<unshare>(2), "
14254 "B<proc>(5), B<subgid>(5), B<subuid>(5), B<credentials>(7), "
14255 "B<capabilities>(7), B<namespaces>(7), B<pid_namespaces>(7)"
14256 msgstr ""
14257 "B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<setns>(2), B<unshare>(2), "
14258 "B<proc>(5), B<subgid>(5), B<subuid>(5), B<credentials>(7), "
14259 "B<capabilities>(7), B<namespaces>(7), B<pid_namespaces>(7)"
14260
14261 #. type: Plain text
14262 #: build/C/man7/user_namespaces.7:1027
14263 msgid ""
14264 "The kernel source file I<Documentation/namespaces/resource-control.txt>."
14265 msgstr "カーネルのソースファイル I<Documentation/namespaces/resource-control.txt>"
14266
14267 #. type: TH
14268 #: build/C/man2/seccomp.2:27
14269 #, no-wrap
14270 msgid "SECCOMP"
14271 msgstr ""
14272
14273 #. type: Plain text
14274 #: build/C/man2/seccomp.2:30
14275 msgid "seccomp - operate on Secure Computing state of the process"
14276 msgstr ""
14277
14278 #.  Kees Cook noted: Anything that uses SECCOMP_RET_TRACE returns will
14279 #.                   need <sys/ptrace.h>
14280 #. type: Plain text
14281 #: build/C/man2/seccomp.2:39
14282 #, no-wrap
14283 msgid ""
14284 "B<#include E<lt>linux/seccomp.hE<gt>>\n"
14285 "B<#include E<lt>linux/filter.hE<gt>>\n"
14286 "B<#include E<lt>linux/audit.hE<gt>>\n"
14287 "B<#include E<lt>linux/signal.hE<gt>>\n"
14288 "B<#include E<lt>sys/ptrace.hE<gt>>\n"
14289 msgstr ""
14290 "B<#include E<lt>linux/seccomp.hE<gt>>\n"
14291 "B<#include E<lt>linux/filter.hE<gt>>\n"
14292 "B<#include E<lt>linux/audit.hE<gt>>\n"
14293 "B<#include E<lt>linux/signal.hE<gt>>\n"
14294 "B<#include E<lt>sys/ptrace.hE<gt>>\n"
14295
14296 #. type: Plain text
14297 #: build/C/man2/seccomp.2:42
14298 #, no-wrap
14299 msgid "B<int seccomp(unsigned int >I<operation>B<, unsigned int >I<flags>B<, void *>I<args>B<);>\n"
14300 msgstr "B<int seccomp(unsigned int >I<operation>B<, unsigned int >I<flags>B<, void *>I<args>B<);>\n"
14301
14302 #. type: Plain text
14303 #: build/C/man2/seccomp.2:48
14304 msgid ""
14305 "The B<seccomp>()  system call operates on the Secure Computing (seccomp) "
14306 "state of the calling process."
14307 msgstr ""
14308
14309 #. type: Plain text
14310 #: build/C/man2/seccomp.2:52
14311 msgid "Currently, Linux supports the following I<operation> values:"
14312 msgstr ""
14313
14314 #. type: TP
14315 #: build/C/man2/seccomp.2:52
14316 #, no-wrap
14317 msgid "B<SECCOMP_SET_MODE_STRICT>"
14318 msgstr ""
14319
14320 #. type: Plain text
14321 #: build/C/man2/seccomp.2:66
14322 msgid ""
14323 "The only system calls that the calling thread is permitted to make are "
14324 "B<read>(2), B<write>(2), B<_exit>(2), and B<sigreturn>(2).  Other system "
14325 "calls result in the delivery of a B<SIGKILL> signal.  Strict secure "
14326 "computing mode is useful for number-crunching applications that may need to "
14327 "execute untrusted byte code, perhaps obtained by reading from a pipe or "
14328 "socket."
14329 msgstr ""
14330
14331 #. type: Plain text
14332 #: build/C/man2/seccomp.2:70
14333 msgid ""
14334 "This operation is available only if the kernel is configured with "
14335 "B<CONFIG_SECCOMP> enabled."
14336 msgstr ""
14337
14338 #. type: Plain text
14339 #: build/C/man2/seccomp.2:76
14340 msgid "The value of I<flags> must be 0, and I<args> must be NULL."
14341 msgstr ""
14342
14343 #. type: Plain text
14344 #: build/C/man2/seccomp.2:78
14345 msgid "This operation is functionally identical to the call:"
14346 msgstr ""
14347
14348 #. type: Plain text
14349 #: build/C/man2/seccomp.2:80
14350 #, no-wrap
14351 msgid "    prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);\n"
14352 msgstr ""
14353
14354 #. type: TP
14355 #: build/C/man2/seccomp.2:80
14356 #, no-wrap
14357 msgid "B<SECCOMP_SET_MODE_FILTER>"
14358 msgstr "B<SECCOMP_SET_MODE_FILTER>"
14359
14360 #. type: Plain text
14361 #: build/C/man2/seccomp.2:95
14362 msgid ""
14363 "The system calls allowed are defined by a pointer to a Berkeley Packet "
14364 "Filter (BPF) passed via I<args>.  This argument is a pointer to a I<struct\\ "
14365 "sock_fprog>; it can be designed to filter arbitrary system calls and system "
14366 "call arguments.  If the filter is invalid, B<seccomp>()  fails, returning "
14367 "B<EINVAL> in I<errno>."
14368 msgstr ""
14369
14370 #. type: Plain text
14371 #: build/C/man2/seccomp.2:107
14372 msgid ""
14373 "If B<fork>(2)  or B<clone>(2)  is allowed by the filter, any child processes "
14374 "will be constrained to the same system call filters as the parent.  If "
14375 "B<execve>(2)  is allowed, the existing filters will be preserved across a "
14376 "call to B<execve>(2)."
14377 msgstr ""
14378
14379 #. type: Plain text
14380 #: build/C/man2/seccomp.2:117
14381 msgid ""
14382 "In order to use the B<SECCOMP_SET_MODE_FILTER> operation, either the caller "
14383 "must have the B<CAP_SYS_ADMIN> capability, or the thread must already have "
14384 "the I<no_new_privs> bit set.  If that bit was not already set by an ancestor "
14385 "of this thread, the thread must make the following call:"
14386 msgstr ""
14387
14388 #. type: Plain text
14389 #: build/C/man2/seccomp.2:119
14390 #, no-wrap
14391 msgid "    prctl(PR_SET_NO_NEW_PRIVS, 1);\n"
14392 msgstr ""
14393
14394 #. type: Plain text
14395 #: build/C/man2/seccomp.2:138
14396 msgid ""
14397 "Otherwise, the B<SECCOMP_SET_MODE_FILTER> operation will fail and return "
14398 "B<EACCES> in I<errno>.  This requirement ensures that an unprivileged "
14399 "process cannot apply a malicious filter and then invoke a set-user-ID or "
14400 "other privileged program using B<execve>(2), thus potentially compromising "
14401 "that program.  (Such a malicious filter might, for example, cause an attempt "
14402 "to use B<setuid>(2)  to set the caller's user IDs to non-zero values to "
14403 "instead return 0 without actually making the system call.  Thus, the program "
14404 "might be tricked into retaining superuser privileges in circumstances where "
14405 "it is possible to influence it to do dangerous things because it did not "
14406 "actually drop privileges.)"
14407 msgstr ""
14408
14409 #. type: Plain text
14410 #: build/C/man2/seccomp.2:146
14411 msgid ""
14412 "If B<prctl>(2)  or B<seccomp>(2)  is allowed by the attached filter, further "
14413 "filters may be added.  This will increase evaluation time, but allows for "
14414 "further reduction of the attack surface during execution of a thread."
14415 msgstr ""
14416
14417 #. type: Plain text
14418 #: build/C/man2/seccomp.2:152
14419 msgid ""
14420 "The B<SECCOMP_SET_MODE_FILTER> operation is available only if the kernel is "
14421 "configured with B<CONFIG_SECCOMP_FILTER> enabled."
14422 msgstr ""
14423
14424 #. type: Plain text
14425 #: build/C/man2/seccomp.2:156
14426 msgid ""
14427 "When I<flags> is 0, this operation is functionally identical to the call:"
14428 msgstr ""
14429
14430 #. type: Plain text
14431 #: build/C/man2/seccomp.2:158
14432 #, no-wrap
14433 msgid "    prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, args);\n"
14434 msgstr ""
14435
14436 #. type: Plain text
14437 #: build/C/man2/seccomp.2:162
14438 msgid "The recognized I<flags> are:"
14439 msgstr ""
14440
14441 #. type: TP
14442 #: build/C/man2/seccomp.2:163
14443 #, no-wrap
14444 msgid "B<SECCOMP_FILTER_FLAG_TSYNC>"
14445 msgstr ""
14446
14447 #. type: Plain text
14448 #: build/C/man2/seccomp.2:171
14449 msgid ""
14450 "When adding a new filter, synchronize all other threads of the calling "
14451 "process to the same seccomp filter tree.  A \"filter tree\" is the ordered "
14452 "list of filters attached to a thread.  (Attaching identical filters in "
14453 "separate B<seccomp>()  calls results in different filters from this "
14454 "perspective.)"
14455 msgstr ""
14456
14457 #. type: Plain text
14458 #: build/C/man2/seccomp.2:179
14459 msgid ""
14460 "If any thread cannot synchronize to the same filter tree, the call will not "
14461 "attach the new seccomp filter, and will fail, returning the first thread ID "
14462 "found that cannot synchronize.  Synchronization will fail if another thread "
14463 "in the same process is in B<SECCOMP_MODE_STRICT> or if it has attached new "
14464 "seccomp filters to itself, diverging from the calling thread's filter tree."
14465 msgstr ""
14466
14467 #. type: SS
14468 #: build/C/man2/seccomp.2:180
14469 #, no-wrap
14470 msgid "Filters"
14471 msgstr ""
14472
14473 #. type: Plain text
14474 #: build/C/man2/seccomp.2:185
14475 msgid ""
14476 "When adding filters via B<SECCOMP_SET_MODE_FILTER>, I<args> points to a "
14477 "filter program:"
14478 msgstr ""
14479
14480 #. type: Plain text
14481 #: build/C/man2/seccomp.2:193
14482 #, no-wrap
14483 msgid ""
14484 "struct sock_fprog {\n"
14485 "    unsigned short      len;    /* Number of BPF instructions */\n"
14486 "    struct sock_filter *filter; /* Pointer to array of\n"
14487 "                                   BPF instructions */\n"
14488 "};\n"
14489 msgstr ""
14490
14491 #. type: Plain text
14492 #: build/C/man2/seccomp.2:197
14493 msgid "Each program must contain one or more BPF instructions:"
14494 msgstr ""
14495
14496 #. type: Plain text
14497 #: build/C/man2/seccomp.2:206
14498 #, no-wrap
14499 msgid ""
14500 "struct sock_filter {            /* Filter block */\n"
14501 "    __u16 code;                 /* Actual filter code */\n"
14502 "    __u8  jt;                   /* Jump true */\n"
14503 "    __u8  jf;                   /* Jump false */\n"
14504 "    __u32 k;                    /* Generic multiuse field */\n"
14505 "};\n"
14506 msgstr ""
14507
14508 #. type: Plain text
14509 #: build/C/man2/seccomp.2:213
14510 msgid ""
14511 "When executing the instructions, the BPF program operates on the system call "
14512 "information made available (i.e., use the B<BPF_ABS> addressing mode) as a "
14513 "buffer of the following form:"
14514 msgstr ""
14515
14516 #. type: Plain text
14517 #: build/C/man2/seccomp.2:223
14518 #, no-wrap
14519 msgid ""
14520 "struct seccomp_data {\n"
14521 "    int   nr;                   /* System call number */\n"
14522 "    __u32 arch;                 /* AUDIT_ARCH_* value\n"
14523 "                                   (see E<lt>linux/audit.hE<gt>) */\n"
14524 "    __u64 instruction_pointer;  /* CPU instruction pointer */\n"
14525 "    __u64 args[6];              /* Up to 6 system call arguments */\n"
14526 "};\n"
14527 msgstr ""
14528
14529 #. type: Plain text
14530 #: build/C/man2/seccomp.2:234
14531 msgid ""
14532 "A seccomp filter returns a 32-bit value consisting of two parts: the most "
14533 "significant 16 bits (corresponding to the mask defined by the constant "
14534 "B<SECCOMP_RET_ACTION>)  contain one of the \"action\" values listed below; "
14535 "the least significant 16-bits (defined by the constant B<SECCOMP_RET_DATA>)  "
14536 "are \"data\" to be associated with this return value."
14537 msgstr ""
14538
14539 #. type: Plain text
14540 #: build/C/man2/seccomp.2:242
14541 msgid ""
14542 "If multiple filters exist, they are all executed, in reverse order of their "
14543 "addition to the filter tree (i.e., the most recently installed filter is "
14544 "executed first).  The return value for the evaluation of a given system call "
14545 "is the first-seen B<SECCOMP_RET_ACTION> value of highest precedence (along "
14546 "with its accompanying data)  returned by execution of all of the filters."
14547 msgstr ""
14548
14549 #. type: Plain text
14550 #: build/C/man2/seccomp.2:245
14551 msgid ""
14552 "In decreasing order of precedence, the values that may be returned by a "
14553 "seccomp filter are:"
14554 msgstr ""
14555
14556 #. type: TP
14557 #: build/C/man2/seccomp.2:245
14558 #, no-wrap
14559 msgid "B<SECCOMP_RET_KILL>"
14560 msgstr "B<SECCOMP_RET_KILL>"
14561
14562 #. type: Plain text
14563 #: build/C/man2/seccomp.2:254
14564 msgid ""
14565 "This value results in the process exiting immediately without executing the "
14566 "system call.  The process terminates as though killed by a B<SIGSYS> signal "
14567 "(I<not> B<SIGKILL>)."
14568 msgstr ""
14569
14570 #. type: TP
14571 #: build/C/man2/seccomp.2:254
14572 #, no-wrap
14573 msgid "B<SECCOMP_RET_TRAP>"
14574 msgstr ""
14575
14576 #. type: Plain text
14577 #: build/C/man2/seccomp.2:264
14578 msgid ""
14579 "This value results in the kernel sending a B<SIGSYS> signal to the "
14580 "triggering process without executing the system call.  Various fields will "
14581 "be set in the I<siginfo_t> structure (see B<sigaction>(2))  associated with "
14582 "signal:"
14583 msgstr ""
14584
14585 #. type: Plain text
14586 #: build/C/man2/seccomp.2:269
14587 msgid "I<si_signo> will contain B<SIGSYS>."
14588 msgstr ""
14589
14590 #. type: Plain text
14591 #: build/C/man2/seccomp.2:272
14592 msgid "I<si_call_addr> will show the address of the system call instruction."
14593 msgstr ""
14594
14595 #. type: Plain text
14596 #: build/C/man2/seccomp.2:277
14597 msgid ""
14598 "I<si_syscall> and I<si_arch> will indicate which system call was attempted."
14599 msgstr ""
14600
14601 #. type: Plain text
14602 #: build/C/man2/seccomp.2:281
14603 msgid "I<si_code> will contain B<SYS_SECCOMP>."
14604 msgstr ""
14605
14606 #. type: Plain text
14607 #: build/C/man2/seccomp.2:286
14608 msgid ""
14609 "I<si_errno> will contain the B<SECCOMP_RET_DATA> portion of the filter "
14610 "return value."
14611 msgstr ""
14612
14613 #. type: Plain text
14614 #: build/C/man2/seccomp.2:295
14615 msgid ""
14616 "The program counter will be as though the system call happened (i.e., it "
14617 "will not point to the system call instruction).  The return value register "
14618 "will contain an architecture-dependent value; if resuming execution, set it "
14619 "to something appropriate for the system call.  (The architecture dependency "
14620 "is because replacing it with B<ENOSYS> could overwrite some useful "
14621 "information.)"
14622 msgstr ""
14623
14624 #. type: TP
14625 #: build/C/man2/seccomp.2:295
14626 #, no-wrap
14627 msgid "B<SECCOMP_RET_ERRNO>"
14628 msgstr ""
14629
14630 #. type: Plain text
14631 #: build/C/man2/seccomp.2:302
14632 msgid ""
14633 "This value results in the B<SECCOMP_RET_DATA> portion of the filter's return "
14634 "value being passed to user space as the I<errno> value without executing the "
14635 "system call."
14636 msgstr ""
14637
14638 #. type: TP
14639 #: build/C/man2/seccomp.2:302
14640 #, no-wrap
14641 msgid "B<SECCOMP_RET_TRACE>"
14642 msgstr "B<SECCOMP_RET_TRACE>"
14643
14644 #. type: Plain text
14645 #: build/C/man2/seccomp.2:312
14646 msgid ""
14647 "When returned, this value will cause the kernel to attempt to notify a "
14648 "B<ptrace>(2)-based tracer prior to executing the system call.  If there is "
14649 "no tracer present, the system call is not executed and returns a failure "
14650 "status with I<errno> set to B<ENOSYS>."
14651 msgstr ""
14652
14653 #. type: Plain text
14654 #: build/C/man2/seccomp.2:323
14655 msgid ""
14656 "A tracer will be notified if it requests B<PTRACE_O_TRACESECCOMP> using "
14657 "I<ptrace(PTRACE_SETOPTIONS)>.  The tracer will be notified of a "
14658 "B<PTRACE_EVENT_SECCOMP> and the B<SECCOMP_RET_DATA> portion of the filter's "
14659 "return value will be available to the tracer via B<PTRACE_GETEVENTMSG>."
14660 msgstr ""
14661
14662 #. type: Plain text
14663 #: build/C/man2/seccomp.2:330
14664 msgid ""
14665 "The tracer can skip the system call by changing the system call number to "
14666 "-1.  Alternatively, the tracer can change the system call requested by "
14667 "changing the system call to a valid system call number.  If the tracer asks "
14668 "to skip the system call, then the system call will appear to return the "
14669 "value that the tracer puts in the return value register."
14670 msgstr ""
14671
14672 #. type: Plain text
14673 #: build/C/man2/seccomp.2:339
14674 msgid ""
14675 "The seccomp check will not be run again after the tracer is notified.  (This "
14676 "means that seccomp-based sandboxes B<must not> allow use of "
14677 "B<ptrace>(2)\\(emeven of other sandboxed processes\\(emwithout extreme care; "
14678 "ptracers can use this mechanism to escape from the seccomp sandbox.)"
14679 msgstr ""
14680
14681 #. type: TP
14682 #: build/C/man2/seccomp.2:339
14683 #, no-wrap
14684 msgid "B<SECCOMP_RET_ALLOW>"
14685 msgstr ""
14686
14687 #. type: Plain text
14688 #: build/C/man2/seccomp.2:342
14689 msgid "This value results in the system call being executed."
14690 msgstr ""
14691
14692 #. type: Plain text
14693 #: build/C/man2/seccomp.2:358
14694 msgid ""
14695 "On success, B<seccomp>()  returns 0.  On error, if "
14696 "B<SECCOMP_FILTER_FLAG_TSYNC> was used, the return value is the ID of the "
14697 "thread that caused the synchronization failure.  (This ID is a kernel thread "
14698 "ID of the type returned by B<clone>(2)  and B<gettid>(2).)  On other errors, "
14699 "-1 is returned, and I<errno> is set to indicate the cause of the error."
14700 msgstr ""
14701
14702 #. type: Plain text
14703 #: build/C/man2/seccomp.2:361
14704 msgid "B<seccomp>()  can fail for the following reasons:"
14705 msgstr "B<seccomp>()  は以下のエラーで失敗する。"
14706
14707 #. type: TP
14708 #: build/C/man2/seccomp.2:361
14709 #, no-wrap
14710 msgid "B<EACCESS>"
14711 msgstr "B<EACCESS>"
14712
14713 #. type: Plain text
14714 #: build/C/man2/seccomp.2:369
14715 msgid ""
14716 "The caller did not have the B<CAP_SYS_ADMIN> capability, or had not set "
14717 "I<no_new_privs> before using B<SECCOMP_SET_MODE_FILTER>."
14718 msgstr ""
14719
14720 #. type: Plain text
14721 #: build/C/man2/seccomp.2:373
14722 msgid "I<args> was not a valid address."
14723 msgstr ""
14724
14725 #. type: Plain text
14726 #: build/C/man2/seccomp.2:380
14727 msgid ""
14728 "I<operation> is unknown; or I<flags> are invalid for the given I<operation>."
14729 msgstr ""
14730
14731 #. type: Plain text
14732 #: build/C/man2/seccomp.2:387
14733 msgid ""
14734 "I<operation> included B<BPF_ABS>, but the specified offset was not aligned "
14735 "to a 32-bit boundary or exceeded I<sizeof(struct\\ seccomp_data)>."
14736 msgstr ""
14737
14738 #.  See kernel/seccomp.c::seccomp_may_assign_mode() in 3.18 sources
14739 #. type: Plain text
14740 #: build/C/man2/seccomp.2:393
14741 msgid ""
14742 "A secure computing mode has already been set, and I<operation> differs from "
14743 "the existing setting."
14744 msgstr ""
14745
14746 #.  See stub kernel/seccomp.c::seccomp_set_mode_filter() in 3.18 sources
14747 #. type: Plain text
14748 #: build/C/man2/seccomp.2:402
14749 msgid ""
14750 "I<operation> specified B<SECCOMP_SET_MODE_FILTER>, but the kernel was not "
14751 "built with B<CONFIG_SECCOMP_FILTER> enabled."
14752 msgstr ""
14753
14754 #. type: Plain text
14755 #: build/C/man2/seccomp.2:413
14756 msgid ""
14757 "I<operation> specified B<SECCOMP_SET_MODE_FILTER>, but the filter program "
14758 "pointed to by I<args> was not valid or the length of the filter program was "
14759 "zero or exceeded B<BPF_MAXINSNS> (4096) instructions.  B<EINVAL>"
14760 msgstr ""
14761
14762 #.  ENOMEM in kernel/seccomp.c::seccomp_attach_filter() in 3.18 sources
14763 #. type: Plain text
14764 #: build/C/man2/seccomp.2:426
14765 msgid ""
14766 "The total length of all filter programs attached to the calling thread would "
14767 "exceed B<MAX_INSNS_PER_PATH> (32768) instructions.  Note that for the "
14768 "purposes of calculating this limit, each already existing filter program "
14769 "incurs an overhead penalty of 4 instructions."
14770 msgstr ""
14771
14772 #. type: Plain text
14773 #: build/C/man2/seccomp.2:430
14774 msgid ""
14775 "Another thread caused a failure during thread sync, but its ID could not be "
14776 "determined."
14777 msgstr ""
14778
14779 #.  FIXME . Add glibc version
14780 #. type: Plain text
14781 #: build/C/man2/seccomp.2:435
14782 msgid "The B<seccomp()> system call first appeared in Linux 3.17."
14783 msgstr ""
14784
14785 #. type: Plain text
14786 #: build/C/man2/seccomp.2:439
14787 msgid "The B<seccomp()> system call is a nonstandard Linux extension."
14788 msgstr ""
14789
14790 #. type: Plain text
14791 #: build/C/man2/seccomp.2:446
14792 msgid ""
14793 "The I<Seccomp> field of the I</proc/[pid]/status> file provides a method of "
14794 "viewing the seccomp mode of a process; see B<proc>(5)."
14795 msgstr ""
14796
14797 #. type: Plain text
14798 #: build/C/man2/seccomp.2:453
14799 msgid ""
14800 "B<seccomp>()  provides a superset of the functionality provided by the "
14801 "B<prctl>(2)  B<PR_SET_SECCOMP> operation (which does not support I<flags>)."
14802 msgstr ""
14803
14804 #. type: SS
14805 #: build/C/man2/seccomp.2:453
14806 #, no-wrap
14807 msgid "Seccomp-specific BPF details"
14808 msgstr ""
14809
14810 #. type: Plain text
14811 #: build/C/man2/seccomp.2:455
14812 msgid "Note the following BPF details specific to seccomp filters:"
14813 msgstr ""
14814
14815 #. type: Plain text
14816 #: build/C/man2/seccomp.2:463
14817 msgid ""
14818 "The B<BPF_H> and B<BPF_B> size modifiers are not supported: all operations "
14819 "must load and store (4-byte) words (B<BPF_W>)."
14820 msgstr ""
14821
14822 #. type: Plain text
14823 #: build/C/man2/seccomp.2:469
14824 msgid ""
14825 "To access the contents of the I<seccomp_data> buffer, use the B<BPF_ABS> "
14826 "addressing mode modifier."
14827 msgstr ""
14828
14829 #. type: Plain text
14830 #: build/C/man2/seccomp.2:476
14831 msgid ""
14832 "The B<BPF_LEN> addressing mode modifier yields an immediate mode operand "
14833 "whose value is the size of the I<seccomp_data> buffer."
14834 msgstr ""
14835
14836 #. type: Plain text
14837 #: build/C/man2/seccomp.2:482
14838 msgid ""
14839 "The program below accepts four or more arguments.  The first three arguments "
14840 "are a system call number, a numeric architecture identifier, and an error "
14841 "number.  The program uses these values to construct a BPF filter that is "
14842 "used at run time to perform the following checks:"
14843 msgstr ""
14844
14845 #. type: IP
14846 #: build/C/man2/seccomp.2:482
14847 #, no-wrap
14848 msgid "[1]"
14849 msgstr ""
14850
14851 #. type: Plain text
14852 #: build/C/man2/seccomp.2:486
14853 msgid ""
14854 "If the program is not running on the specified architecture, the BPF filter "
14855 "causes system calls to fail with the error B<ENOSYS>."
14856 msgstr ""
14857
14858 #. type: IP
14859 #: build/C/man2/seccomp.2:486
14860 #, no-wrap
14861 msgid "[2]"
14862 msgstr ""
14863
14864 #. type: Plain text
14865 #: build/C/man2/seccomp.2:491
14866 msgid ""
14867 "If the program attempts to execute the system call with the specified "
14868 "number, the BPF filter causes the system call to fail, with I<errno> being "
14869 "set to the specified error number."
14870 msgstr ""
14871
14872 #. type: Plain text
14873 #: build/C/man2/seccomp.2:500
14874 msgid ""
14875 "The remaining command-line arguments specify the pathname and additional "
14876 "arguments of a program that the example program should attempt to execute "
14877 "using B<execve>(3)  (a library function that employs the B<execve>(2)  "
14878 "system call).  Some example runs of the program are shown below."
14879 msgstr ""
14880
14881 #. type: Plain text
14882 #: build/C/man2/seccomp.2:504
14883 msgid ""
14884 "First, we display the architecture that we are running on (x86-64)  and then "
14885 "construct a shell function that looks up system call numbers on this "
14886 "architecture:"
14887 msgstr ""
14888
14889 #. type: Plain text
14890 #: build/C/man2/seccomp.2:513
14891 #, no-wrap
14892 msgid ""
14893 "$ B<uname -m>\n"
14894 "x86_64\n"
14895 "$ B<syscall_nr() {\n"
14896 "    cat /usr/src/linux/arch/x86/syscalls/syscall_64.tbl | \\e\n"
14897 "    awk '$2 != \"x32\" && $3 == \"'$1'\" { print $1 }'\n"
14898 "}>\n"
14899 msgstr ""
14900
14901 #. type: Plain text
14902 #: build/C/man2/seccomp.2:520
14903 msgid ""
14904 "When the BPF filter rejects a system call (case [2] above), it causes the "
14905 "system call to fail with the error number specified on the command line.  In "
14906 "the experiments shown here, we'll use error number 99:"
14907 msgstr ""
14908
14909 #. type: Plain text
14910 #: build/C/man2/seccomp.2:525
14911 #, no-wrap
14912 msgid ""
14913 "$ B<errno 99>\n"
14914 "EADDRNOTAVAIL 99 Cannot assign requested address\n"
14915 msgstr ""
14916
14917 #. type: Plain text
14918 #: build/C/man2/seccomp.2:533
14919 msgid ""
14920 "In the following example, we attempt to run the command B<whoami>(1), but "
14921 "the BPF filter rejects the B<execve>(2)  system call, so that the command is "
14922 "not even executed:"
14923 msgstr ""
14924
14925 #. type: Plain text
14926 #: build/C/man2/seccomp.2:544
14927 #, no-wrap
14928 msgid ""
14929 "$ B<syscall_nr execve>\n"
14930 "59\n"
14931 "$ B<./a.out>\n"
14932 "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"
14933 "Hint for E<lt>archE<gt>: AUDIT_ARCH_I386: 0x40000003\n"
14934 "                 AUDIT_ARCH_X86_64: 0xC000003E\n"
14935 "$ B<./a.out 59 0xC000003E 99 /bin/whoami>\n"
14936 "execv: Cannot assign requested address\n"
14937 msgstr ""
14938
14939 #. type: Plain text
14940 #: build/C/man2/seccomp.2:552
14941 msgid ""
14942 "In the next example, the BPF filter rejects the B<write>(2)  system call, so "
14943 "that, although it is successfully started, the B<whoami>(1)  command is not "
14944 "able to write output:"
14945 msgstr ""
14946
14947 #. type: Plain text
14948 #: build/C/man2/seccomp.2:558
14949 #, no-wrap
14950 msgid ""
14951 "$ B<syscall_nr write>\n"
14952 "1\n"
14953 "$ B<./a.out 1 0xC000003E 99 /bin/whoami>\n"
14954 msgstr ""
14955
14956 #. type: Plain text
14957 #: build/C/man2/seccomp.2:565
14958 msgid ""
14959 "In the final example, the BPF filter rejects a system call that is not used "
14960 "by the B<whoami>(1)  command, so it is able to successfully execute and "
14961 "produce output:"
14962 msgstr ""
14963
14964 #. type: Plain text
14965 #: build/C/man2/seccomp.2:572
14966 #, no-wrap
14967 msgid ""
14968 "$ B<syscall_nr preadv>\n"
14969 "295\n"
14970 "$ B<./a.out 295 0xC000003E 99 /bin/whoami>\n"
14971 "cecilia\n"
14972 msgstr ""
14973
14974 #. type: Plain text
14975 #: build/C/man2/seccomp.2:586
14976 #, no-wrap
14977 msgid ""
14978 "#include E<lt>errno.hE<gt>\n"
14979 "#include E<lt>stddef.hE<gt>\n"
14980 "#include E<lt>stdio.hE<gt>\n"
14981 "#include E<lt>stdlib.hE<gt>\n"
14982 "#include E<lt>unistd.hE<gt>\n"
14983 "#include E<lt>linux/audit.hE<gt>\n"
14984 "#include E<lt>linux/filter.hE<gt>\n"
14985 "#include E<lt>linux/seccomp.hE<gt>\n"
14986 "#include E<lt>sys/prctl.hE<gt>\n"
14987 msgstr ""
14988 "#include E<lt>errno.hE<gt>\n"
14989 "#include E<lt>stddef.hE<gt>\n"
14990 "#include E<lt>stdio.hE<gt>\n"
14991 "#include E<lt>stdlib.hE<gt>\n"
14992 "#include E<lt>unistd.hE<gt>\n"
14993 "#include E<lt>linux/audit.hE<gt>\n"
14994 "#include E<lt>linux/filter.hE<gt>\n"
14995 "#include E<lt>linux/seccomp.hE<gt>\n"
14996 "#include E<lt>sys/prctl.hE<gt>\n"
14997
14998 #. type: Plain text
14999 #: build/C/man2/seccomp.2:595
15000 #, no-wrap
15001 msgid ""
15002 "static int\n"
15003 "install_filter(int syscall_nr, int t_arch, int f_errno)\n"
15004 "{\n"
15005 "    struct sock_filter filter[] = {\n"
15006 "        /* [0] Load architecture from 'seccomp_data' buffer into\n"
15007 "               accumulator */\n"
15008 "        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,\n"
15009 "                 (offsetof(struct seccomp_data, arch))),\n"
15010 msgstr ""
15011
15012 #. type: Plain text
15013 #: build/C/man2/seccomp.2:599
15014 #, no-wrap
15015 msgid ""
15016 "        /* [1] Jump forward 4 instructions if architecture does not\n"
15017 "               match 't_arch' */\n"
15018 "        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, t_arch, 0, 4),\n"
15019 msgstr ""
15020
15021 #. type: Plain text
15022 #: build/C/man2/seccomp.2:604
15023 #, no-wrap
15024 msgid ""
15025 "        /* [2] Load system call number from 'seccomp_data' buffer into\n"
15026 "               accumulator */\n"
15027 "        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,\n"
15028 "                 (offsetof(struct seccomp_data, nr))),\n"
15029 msgstr ""
15030
15031 #. type: Plain text
15032 #: build/C/man2/seccomp.2:608
15033 #, no-wrap
15034 msgid ""
15035 "        /* [3] Jump forward 1 instruction if system call number\n"
15036 "               does not match 'syscall_nr' */\n"
15037 "        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, syscall_nr, 0, 1),\n"
15038 msgstr ""
15039
15040 #. type: Plain text
15041 #: build/C/man2/seccomp.2:613
15042 #, no-wrap
15043 msgid ""
15044 "        /* [4] Matching architecture and system call: don't execute\n"
15045 "\t       the system call, and return 'f_errno' in 'errno' */\n"
15046 "        BPF_STMT(BPF_RET | BPF_K,\n"
15047 "                 SECCOMP_RET_ERRNO | (f_errno & SECCOMP_RET_DATA)),\n"
15048 msgstr ""
15049
15050 #. type: Plain text
15051 #: build/C/man2/seccomp.2:617
15052 #, no-wrap
15053 msgid ""
15054 "        /* [5] Destination of system call number mismatch: allow other\n"
15055 "               system calls */\n"
15056 "        BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),\n"
15057 msgstr ""
15058
15059 #. type: Plain text
15060 #: build/C/man2/seccomp.2:621
15061 #, no-wrap
15062 msgid ""
15063 "        /* [6] Destination of architecture mismatch: kill process */\n"
15064 "        BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_KILL),\n"
15065 "    };\n"
15066 msgstr ""
15067
15068 #. type: Plain text
15069 #: build/C/man2/seccomp.2:626
15070 #, no-wrap
15071 msgid ""
15072 "    struct sock_fprog prog = {\n"
15073 "        .len = (unsigned short) (sizeof(filter) / sizeof(filter[0])),\n"
15074 "        .filter = filter,\n"
15075 "    };\n"
15076 msgstr ""
15077
15078 #. type: Plain text
15079 #: build/C/man2/seccomp.2:631
15080 #, no-wrap
15081 msgid ""
15082 "    if (seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog)) {\n"
15083 "        perror(\"seccomp\");\n"
15084 "        return 1;\n"
15085 "    }\n"
15086 msgstr ""
15087
15088 #. type: Plain text
15089 #: build/C/man2/seccomp.2:634
15090 #, no-wrap
15091 msgid ""
15092 "    return 0;\n"
15093 "}\n"
15094 msgstr ""
15095
15096 #. type: Plain text
15097 #: build/C/man2/seccomp.2:646
15098 #, no-wrap
15099 msgid ""
15100 "int\n"
15101 "main(int argc, char **argv)\n"
15102 "{\n"
15103 "    if (argc E<lt> 5) {\n"
15104 "        fprintf(stderr, \"Usage: \"\n"
15105 "                \"%s E<lt>syscall_nrE<gt> E<lt>archE<gt> E<lt>errnoE<gt> E<lt>progE<gt> [E<lt>argsE<gt>]\\en\"\n"
15106 "                \"Hint for E<lt>archE<gt>: AUDIT_ARCH_I386: 0x%X\\en\"\n"
15107 "                \"                 AUDIT_ARCH_X86_64: 0x%X\\en\"\n"
15108 "                \"\\en\", argv[0], AUDIT_ARCH_I386, AUDIT_ARCH_X86_64);\n"
15109 "        exit(EXIT_FAILURE);\n"
15110 "    }\n"
15111 msgstr ""
15112
15113 #. type: Plain text
15114 #: build/C/man2/seccomp.2:651
15115 #, no-wrap
15116 msgid ""
15117 "    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {\n"
15118 "        perror(\"prctl\");\n"
15119 "        exit(EXIT_FAILURE);\n"
15120 "    }\n"
15121 msgstr ""
15122
15123 #. type: Plain text
15124 #: build/C/man2/seccomp.2:656
15125 #, no-wrap
15126 msgid ""
15127 "    if (install_filter(strtol(argv[1], NULL, 0),\n"
15128 "                       strtol(argv[2], NULL, 0),\n"
15129 "                       strtol(argv[3], NULL, 0)))\n"
15130 "        exit(EXIT_FAILURE);\n"
15131 msgstr ""
15132
15133 #. type: Plain text
15134 #: build/C/man2/seccomp.2:661
15135 #, no-wrap
15136 msgid ""
15137 "    execv(argv[4], &argv[4]);\n"
15138 "    perror(\"execv\");\n"
15139 "    exit(EXIT_FAILURE);\n"
15140 "}\n"
15141 msgstr ""
15142
15143 #. type: Plain text
15144 #: build/C/man2/seccomp.2:667
15145 msgid "B<prctl>(2), B<ptrace>(2), B<signal>(7), B<socket>(7)"
15146 msgstr "B<prctl>(2), B<ptrace>(2), B<signal>(7), B<socket>(7)"
15147
15148 #. type: Plain text
15149 #: build/C/man2/seccomp.2:672
15150 msgid ""
15151 "The kernel source files I<Documentation/networking/filter.txt> and "
15152 "I<Documentation/prctl/seccomp_filter.txt>."
15153 msgstr "カーネルのソースファイル I<Documentation/networking/filter.txt> と I<Documentation/prctl/seccomp_filter.txt>"
15154
15155 #. type: Plain text
15156 #: build/C/man2/seccomp.2:678
15157 msgid ""
15158 "McCanne, S. and Jacobson, V. (1992)  I<The BSD Packet Filter: A New "
15159 "Architecture for User-level Packet Capture>, Proceedings of the USENIX "
15160 "Winter 1993 Conference E<.UR http://www.tcpdump.org/papers/bpf-usenix93.pdf> "
15161 "E<.UE>"
15162 msgstr ""
15163
15164 #~ msgid ""
15165 #~ "A process group leader is a process with process group ID equal to its "
15166 #~ "PID.  In order to be sure that B<setsid>()  will succeed, B<fork>(2)  and "
15167 #~ "B<_exit>(2), and have the child do B<setsid>()."
15168 #~ msgstr ""
15169 #~ "プロセスグループ・リーダーとは、そのプロセスのプロセスグループ ID が その "
15170 #~ "PID に等しいプロセスである。 B<setsid>()  を確実に成功させるためには、 "
15171 #~ "B<fork>(2)  して B<exit>(2)  し、子プロセスで B<setsid>()  を行なえば良"
15172 #~ "い。"
15173
15174 #~ msgid ""
15175 #~ "I<uid> does not match the current UID and this call would bring that user "
15176 #~ "ID over its B<RLIMIT_NPROC> resource limit."
15177 #~ msgstr ""
15178 #~ "I<uid> が現在のユーザー ID と違う値で、 この呼び出しにより ユーザー ID が "
15179 #~ "リソース上限 B<RLIMIT_NPROC> を超えてしまう。"