OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man2 / mount.2
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" Copyright (C) 1993 Rickard E. Faith <faith@cs.unc.edu>
4 .\" and Copyright (C) 1994 Andries E. Brouwer <aeb@cwi.nl>
5 .\" and Copyright (C) 2002, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
6 .\"
7 .\" Permission is granted to make and distribute verbatim copies of this
8 .\" manual provided the copyright notice and this permission notice are
9 .\" preserved on all copies.
10 .\"
11 .\" Permission is granted to copy and distribute modified versions of this
12 .\" manual under the conditions for verbatim copying, provided that the
13 .\" entire resulting derived work is distributed under the terms of a
14 .\" permission notice identical to this one.
15 .\"
16 .\" Since the Linux kernel and libraries are constantly changing, this
17 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
18 .\" responsibility for errors or omissions, or for damages resulting from
19 .\" the use of the information contained herein.  The author(s) may not
20 .\" have taken the same level of care in the production of this manual,
21 .\" which is licensed free of charge, as they might when working
22 .\" professionally.
23 .\"
24 .\" Formatted or processed versions of this manual, if unaccompanied by
25 .\" the source, must acknowledge the copyright and authors of this work.
26 .\"
27 .\" Modified 1996-11-04 by Eric S. Raymond <esr@thyrsus.com>
28 .\" Modified 2001-10-13 by Michael Kerrisk <mtk.manpages@gmail.com>
29 .\"     Added note on historical behavior of MS_NOSUID
30 .\" Modified 2002-05-16 by Michael Kerrisk <mtk.manpages@gmail.com>
31 .\"     Extensive changes and additions
32 .\" Modified 2002-05-27 by aeb
33 .\" Modified 2002-06-11 by Michael Kerrisk <mtk.manpages@gmail.com>
34 .\"     Enhanced descriptions of MS_MOVE, MS_BIND, and MS_REMOUNT
35 .\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
36 .\" 2005-05-18, mtk, Added MNT_EXPIRE, plus a few other tidy-ups.
37 .\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
38 .\" 2008-10-06, mtk: Add discussion of namespaces.
39 .\"
40 .\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki
41 .\"         all rights reserved.
42 .\" Translated 1997-06-26,SUTO, Mitsuaki <suto@av.crl.sony.co.jp>
43 .\" Updated 2001-05-20, Kentaro Shirakata <argrath@ub32.org>
44 .\" Updated 2001-06-25, Kentaro Shirakata
45 .\" Updated 2001-10-15, Kentaro Shirakata
46 .\" Updated 2002-01-01, Kentaro Shirakata
47 .\" Updated 2002-11-24, Kentaro Shirakata
48 .\" Updated 2003-01-27, Kentaro Shirakata
49 .\" Updated 2005-02-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
50 .\" Updated 2005-09-06, Akihiro MOTOKI
51 .\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36
52 .\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43
53 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46
54 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
55 .\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.11
56 .\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24
57 .\"
58 .\"WORD:        lazy umount             遅延アンマウント
59 .\"WORD:        Linux-specific          Linux 特有
60 .\"
61 .\" motoki 2005-02-28:
62 .\" - subtree をどう訳すか。部分木、部分ツリー、サブツリー。。。何かないか。
63 .\"
64 .TH MOUNT 2 2010-09-10 "Linux" "Linux Programmer's Manual"
65 .SH 名前
66 mount \- ファイルシステムをマウント/アンマウントする
67 .SH 書式
68 .nf
69 .B "#include <sys/mount.h>"
70 .sp
71 .BI "int mount(const char *" source ", const char *" target ,
72 .BI "          const char *" filesystemtype ", unsigned long " mountflags ,
73 .BI "          const void *" data );
74 .fi
75 .SH 説明
76 .BR mount ()
77
78 .I source
79 で指定されたファイルシステム (デバイス名であることが多いが、
80 ディレクトリ名やダミーの場合もある) を
81 .I target
82 で指定されたディレクトリに結びつける。
83
84 ファイルシステムのマウントを行うには、
85 適切な権限 (Linux では
86 .B CAP_SYS_ADMIN
87 ケーパビリティ) が必要である。
88
89 Linux 2.4 以降、ひとつのファイルシステムを複数のマウントポイントに
90 結びつけることができ、同じマウントポイントに複数のマウントをスタック
91 させることもできる。
92 .\" Multiple mounts on same mount point: since 2.3.99pre7.
93
94 引き数
95 .I filesystemtype
96 としてカーネルが対応している値は、
97 .I /proc/filesystems
98 で参照できる (例えば "minix", "ext2", "ext3", "jfs", "xfs", "reiserfs",
99 "msdos", "proc", "nfs", "iso9660" 等)。
100 適切なモジュールが読み込まれると、さらに別の値が利用可能になるかもしれない。
101
102 引き数
103 .I mountflags
104 は、先頭 16 ビットはマジックナンバー 0xC0ED (\fBMS_MGC_VAL\fP) で、
105 残りの 16 ビットがマウントフラグである。
106 マジックナンバーは、カーネルバージョン 2.4 より前では必須であったが、
107 現在は必要なく、指定されても無視される。
108 マウントフラグは libc4 と libc5 では \fI<linux/fs.h>\fP 、
109 glibc2 では \fI<sys/mount.h>\fP で定義されており、以下の通りである:
110 .\" FIXME 2.6.15 added flags for "shared subtree" functionality:
111 .\" MS_UNBINDABLE, MS_PRIVATE, MS_SHARED, MS_SLAVE
112 .\" These need to be documented on this page.
113 .\" See:
114 .\" Documentation/filesystems/sharedsubtree.txt
115 .\"
116 .\" http://lwn.net/Articles/159077/
117 .\"
118 .\" http://myweb.sudhaa.com:2022/~ram/sharedsubtree/paper/sharedsubtree.1.pdf
119 .\" Shared-Subtree Concept, Implementation, and Applications in Linux
120 .\" Al Viro viro@ftp.linux.org.uk
121 .\" Ram Pai linuxram@us.ibm.com
122 .\"
123 .\" http://foss.in/2005/slides/sharedsubtree1.pdf
124 .\" Shared Subtree Concept and Implementation in the Linux Kernel
125 .\" Ram Pai
126 .\"
127 .\" 2.6.25 Added MS_I_VERSION, which needs to be documented.
128 .\"
129 .TP
130 .BR MS_BIND " (Linux 2.4 以降)"
131 .\" 正確には 2.4.0-test9 以降
132 バインドマウントを行う。これはファイルやディレクトリの部分木を
133 ファイルシステム内部の別の場所で見えるようにするものである。
134 バインドマウントを使うと、ファイルシステムをまたいで
135 .BR chroot (2)
136 jail を構成することが可能になる。
137 引き数
138 .I filesystemtype
139
140 .I data
141 は無視される。
142 Linux 2.6.26 より前では
143 .I mountflags
144 も無視されていた
145 .\" with the exception of the "hidden" MS_REC mountflags bit
146 (バインドマウントでは、マウントポイントとなるファイルシステムと
147 同じマウントオプションが使用される)。
148 Linux 2.6.26 以降では、バインドマウントを行う際に
149 .B MS_RDONLY
150 フラグは無視されない。
151 .TP
152 .BR MS_DIRSYNC " (Linux 2.5.19 以降)"
153 このファイルシステムへのディレクトリ変更を同期的に行う。
154 (この特性は個々のディレクトリ、または
155 .BR chattr (1)
156 を使った部分木毎に設定できる。)
157 .TP
158 .B MS_MANDLOCK
159 このファイルシステムのファイルに対して強制ロックを認める。
160 (強制ロックを有効にするには、
161 .BR fcntl (2)
162 で述べられている方法でファイル単位で許可をしなければならない)
163 .\" FIXME Say more about MS_MOVE
164 .TP
165 .B MS_MOVE
166 部分木を移動する。
167 .I source
168 にはすでに存在するマウントポイントを指定し、
169 .I target
170 には新しい場所を指定する。
171 移動はアトミックである。
172 操作の実行中、部分ツリーがアンマウントされることはない。
173 .IR filesystemtype ", " mountflags ", " data
174 引き数は無視される。
175 .TP
176 .B MS_NOATIME
177 このファイルシステムの (全ての種類の) ファイルのアクセス時刻を更新しない。
178 .TP
179 .B MS_NODEV
180 このファイルシステムのデバイス (スペシャルファイル) へのアクセスを許可しない。
181 .TP
182 .B MS_NODIRATIME
183 このファイルシステムのディレクトリのアクセス時刻を更新しない。
184 このフラグは
185 .B MS_NOATIME
186 で提供される機能のサブセットを提供する。つまり、
187 .B MS_NOATIME
188 では
189 .B MS_NODIRATIME
190 が暗黙のうち設定される。
191 .TP
192 .B MS_NOEXEC
193 このファイルシステムにあるプログラムの実行を許可しない。
194 .\" (Possibly useful for a file system that contains non-Linux executables.
195 .\" Often used as a security feature, e.g., to make sure that restricted
196 .\" users cannot execute files uploaded using ftp or so.)
197 .TP
198 .B MS_NOSUID
199 このファイルシステムのプログラムを実行するときに、
200 set-user-ID ビットと set-group-ID ビットを無視する。
201 .\" (This is a security feature to prevent users executing set-UID and
202 .\" set-GID programs from removable disk devices.)
203 .TP
204 .B MS_RDONLY
205 ファイルシステムを読み込み専用でマウントする。
206 .\"
207 .\" FIXME Document MS_REC, available since 2.4.11.
208 .\" This flag has meaning in conjunction with MS_BIND and
209 .\" also with the shared subtree flags.
210 .TP
211 .BR MS_RELATIME " (Linux 2.6.20 以降)"
212 このファイルシステム上のファイルがアクセスされた際、
213 そのファイルの最終アクセス時刻 (atime) の現在値が
214 最終修正時刻 (mtime) や最終状態変更時刻 (ctime) と
215 等しいか小さい場合にのみ、atime を更新する。
216 このオプションは、
217 .BR mutt (1)
218 のように、最後の内容修正以降にファイルがいつ読み出されたかを知る
219 必要があるプログラムで有用である。
220 Linux 2.6.30 以降では、
221 .B MS_NOATIME
222 が指定されていない場合には、このフラグの動作が
223 カーネルのデフォルト動作となっており、
224 Linux 2.6.30 より前の動作をさせるためには
225 .B MS_STRICTATIME
226 フラグを指定する必要がある。
227 これに加えて、Linux 2.6.30 以降では、
228 ファイルの最終アクセス時刻が 1 日以上前の場合、
229 ファイルの最終アクセス時刻は常に更新される。
230 .\" Matthew Garrett notes in the patch that added this behavior
231 .\" that this lets utilities such as tmpreaper (which deletes
232 .\" files based on last acces time) work correctly.
233 .TP
234 .B MS_REMOUNT
235 すでに存在するマウントを再マウントする。
236 これにより、すでに存在するマウントの
237 .I mountflags
238
239 .I data
240 を、一度アンマウントしてから再マウントするという作業をせずに
241 変更できる。
242 .I source
243
244 .I target
245 は最初の
246 .BR mount ()
247 呼び出しと同じ値を指定する必要がある。
248 .I filesystemtype
249 は無視される。
250
251 .I mountflags
252 のうち
253 .BR MS_RDONLY ,
254 .BR MS_SYNCHRONOUS ,
255 .B MS_MANDLOCK
256 は変更可能である。
257 カーネル 2.6.16 より前では、
258 .BR MS_NOATIME ,
259 .B MS_NODIRATIME
260 も変更可能であった。
261 カーネル 2.4.10 より前では、上記に加えて、
262 .BR MS_NOSUID ,
263 .BR MS_NODEV ,
264 .B MS_NOEXEC
265 も変更可能であった。
266 .TP
267 .BR MS_SILENT " (Linux 2.6.17 以降)"
268 カーネルのログ内のある種の
269 .RI ( printk ())
270 警告メッセージの表示を抑制する。
271 このフラグは、名前が不適切で廃止された
272 .B MS_VERBOSE
273 フラグ (Linux 2.4.12 以降で利用可能) を置き換えるもので、同じ意味を持つ。
274 .TP
275 .BR MS_STRICTATIME " (Linux 2.6.30 以降)"
276 このファイルシステムがアクセスされた際に最終アクセス時刻 (atime)
277 を常に更新する (Linux 2.6.30 より前では、これがデフォルトの動作
278 であった)。
279 このフラグを指定することで、
280 .B MS_NOATIME
281
282 .B MS_RELATIME
283 の両フラグを設定した際の影響を上書きすることができる。
284 .TP
285 .B MS_SYNCHRONOUS
286 ファイルシステムに対して同期的に書き込みを行う。
287 (このファイルシステムの全てのオープンされたファイルに対して、
288 .BR open (2)
289 のフラグに
290 .B O_SYNC
291 を指定したような動作となる)
292 .PP
293 Linux 2.4 以降では、
294 .BR MS_NODEV ", " MS_NOEXEC ", " MS_NOSUID
295 はマウントポイント単位で指定できる。
296 カーネル 2.6.16 以降では、
297 .B MS_NOATIME
298
299 .B MS_NODIRATIME
300 もマウントポイント単位で指定できる。
301 また、
302 .B MS_RELATIME
303 フラグもマウントポイント単位で設定できる。
304 .PP
305 引き数
306 .I data
307 がどのように解釈されるかは、ファイルシステムによって異なる。
308 たいていは、指定されたファイルシステムで利用可能なオプションが
309 コンマ区切りで並べられた文字列である。
310 各ファイルシステムに対して指定可能なオプションの詳細については
311 .BR mount (8)
312 を参照のこと。
313 .SH 返り値
314 成功した場合 0 が返る。失敗した場合 \-1 が返り、
315 .I errno
316 がエラーの内容に従って設定される。
317 .SH エラー
318 以下に示すエラーは、ファイルシステムに依存しないものである。
319 それぞれのファイルシステムタイプには固有のエラーが存在する場合があり、
320 独自の動作をすることもある。詳しくはカーネルのソースを見て欲しい。
321 .TP
322 .B EACCES
323 パスに含まれるディレクトリに検索 (実行) 許可がない
324 .RB ( path_resolution (7)
325 も参照)。
326 または、
327 .B MS_RONLY
328 フラグを指定せずに読み込み専用のファイルシステムを
329 マウントしようとした。
330 または、ブロックデバイス
331 .I source
332
333 .B MS_NODEV
334 オプションでマウントされたファイルシステム上にある。
335 .\" mtk: Probably: write permission is required for MS_BIND, with
336 .\" the error EPERM if not present; CAP_DAC_OVERRIDE is required.
337 .TP
338 .B EBUSY
339 .I source
340 は既にマウントされている。
341 または、書き込み用にオープンされたファイルがあり、
342 読み込み専用で再マウントすることができない。
343 または、
344 .I target
345 が使用中 (busy) のため、
346 .I target
347 にマウントできない。
348 .I target
349 が使用中の例としては、あるスレッドの動作ディレクトリ (working
350 directory) であるとか、別のデバイスのマウントポイントであるとか、
351 オープンされたファイルが存在する、などがある。
352 .TP
353 .B EFAULT
354 場所を示す引き数のひとつがユーザーのアドレス空間の外を指している。
355 .TP
356 .B EINVAL
357 .I source
358 に不正なスーパーブロックがある。
359 または、
360 .I source
361
362 .I target
363 にマウントされていないのに、再マウント
364 .RB ( MS_REMOUNT )
365 が要求された。
366 または、
367 .I source
368 がマウントポイントではないか、\(aq/\(aq なのに、移動
369 .RB ( MS_MOVE )
370 が要求された。
371 .TP
372 .B ELOOP
373 パス名の解決中に登場したリンクが多すぎた。
374 または、
375 .I target
376
377 .I source
378 の子孫なのに移動が要求された。
379 .TP
380 .B EMFILE
381 .\" motoki: どう訳すのがいいだろうか?
382 (ブロックデバイスが必要でない場合)
383 ダミーデバイスのテーブルが一杯になった。
384 .TP
385 .B ENAMETOOLONG
386 パス名の長さが
387 .B MAXPATHLEN
388 を越えた。
389 .TP
390 .B ENODEV
391 .I filesystemtype
392 がカーネル中で定義 (config) されていない。
393 .TP
394 .B ENOENT
395 パス名が空である。もしくは指定されたパスが存在しない。
396 .TP
397 .B ENOMEM
398 カーネルがファイル名やデータをコピーするための空きページを確保できない。
399 .TP
400 .B ENOTBLK
401 (ブロックデバイスが必要だが)
402 .I source
403 がブロックデバイスではない。
404 .TP
405 .B ENOTDIR
406 .I target
407 か、
408 .I source
409 のプレフィックスがディレクトリではない。
410 .TP
411 .B ENXIO
412 ブロックデバイス
413 .I source
414 のメジャー番号が範囲外である。
415 .TP
416 .B EPERM
417 呼び出し元に必要な権限がない。
418 .SH バージョン
419 .BR MS_DIRSYNC ,
420 .BR MS_MOVE ,
421 .BR MS_REC ,
422 .BR MS_RELATIME ,
423 .B MS_STRICTATIME
424 の定義が glibc のヘッダに追加されたのは
425 バージョン 2.12 においてのみである。
426 .\" FIXME: Definitions of the so-far-undocumented MS_UNBINDABLE, MS_PRIVATE,
427 .\"  MS_SHARED, and MS_SLAVE were (also) only added to glibc headers in 2.12.
428 .SH 準拠
429 この関数は Linux 固有の関数であり、移植を考慮したプログラムでは
430 使用すべきでない。
431 元の
432 .B MS_SYNC
433 フラグは、別の
434 .B MS_SYNC
435 が \fI<mman.h>\fP に追加されたので
436 1.1.69 から
437 .B MS_SYNCHRONOUS
438 に名前が変わった。
439 .LP
440 Linux 2.4 より前のバージョンでは、
441 .B MS_NOSUID
442 オプション付きでマウントされたファイルシステム上の
443 set-UID や set-GID のプログラムを実行しようとすると、
444 .B EPERM
445 エラーとなった。
446 Linux 2.4 以降では、このような場合は set-UID ビットや set-GID ビットが
447 無視されるだけである。
448 .\" この変更は patch-2.4.0-prerelease に含まれている。
449 .SS プロセス単位の名前空間
450 カーネル 2.4.19 以降の Linux では、プロセス単位のマウント名前空間
451 (mount namespace) が提供されている。マウント名前空間とは、
452 あるプロセスに見えているファイルシステムのマウントの集合である。
453 マウントポイントの名前空間は複数のプロセスで共有することができ、
454 普通は共有されている。
455 一つのプロセスによる名前空間の変更 (すなわち、マウントやアンマウント) は
456 同じ名前空間を共有する他の全てのプロセスにも見える。
457 (2.4.19 より前の Linux は、一つの名前空間がシステム上の全プロセスで
458 共有される状況とみなすことができる。)
459
460 .BR fork (2)
461 経由で作成された子プロセスは親プロセスのマウント名前空間を共有する。
462 .BR execve (2)
463 の前後でマウント名前空間は保持される。
464
465 プロセスは自分用 (private) のマウント名前空間を持つことができる。
466 自分用の名前空間を持つことができるのは、
467 そのプロセスが
468 .BR clone (2)
469 .B CLONE_NEWNS
470 フラグを使って作成された場合と、
471 そのプロセスが
472 .B CLONE_NEWNS
473 フラグ付きで
474 .BR unshare (2)
475 を呼び出した場合である。
476 前者の場合、作成されたプロセスの新しい名前空間は
477 .BR clone (2)
478 を呼び出したプロセスの名前空間の「コピー」で初期化される。
479 後者の場合、
480 .BR unshare (2)
481 を呼び出すと、呼び出し元のプロセスのマウント名前空間が、
482 それまでは他のプロセスと共有していた名前空間の自分用のコピーとなる。
483 これにより、呼び出し元のプロセスがこれ以後に行うマウント/アンマウントは
484 他のプロセスから見えなくなる
485 (ただし、呼び出し元のプロセスが
486 .BR unshare (2)
487 の呼び出し以降に作成した子プロセスには見える)。
488 また、その逆の、他のプロセスが行ったマウント/アンマウントも呼び出し元のプロセスには
489 見えなくなる。
490
491 Linux 独自のファイル
492 .I /proc/PID/mounts
493 では、指定された ID を持つプロセスのマウント名前空間における
494 マウントポイントのリストが公開されている。詳細は
495 .BR proc (5)
496 を参照のこと。
497 .SH 関連項目
498 .BR umount (2),
499 .BR path_resolution (7),
500 .BR mount (8),
501 .BR umount (8)