.\" Copyright (C) 1993 Rickard E. Faith .\" and Copyright (C) 1994 Andries E. Brouwer .\" and Copyright (C) 2002, 2005 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified 1996-11-04 by Eric S. Raymond .\" Modified 2001-10-13 by Michael Kerrisk .\" Added note on historical behavior of MS_NOSUID .\" Modified 2002-05-16 by Michael Kerrisk .\" Extensive changes and additions .\" Modified 2002-05-27 by aeb .\" Modified 2002-06-11 by Michael Kerrisk .\" Enhanced descriptions of MS_MOVE, MS_BIND, and MS_REMOUNT .\" Modified 2004-06-17 by Michael Kerrisk .\" 2005-05-18, mtk, Added MNT_EXPIRE, plus a few other tidy-ups. .\" 2008-10-06, mtk: move umount*() material into separate umount.2 page. .\" 2008-10-06, mtk: Add discussion of namespaces. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki .\" all rights reserved. .\" Translated 1997-06-26,SUTO, Mitsuaki .\" Updated 2001-05-20, Kentaro Shirakata .\" Updated 2001-06-25, Kentaro Shirakata .\" Updated 2001-10-15, Kentaro Shirakata .\" Updated 2002-01-01, Kentaro Shirakata .\" Updated 2002-11-24, Kentaro Shirakata .\" Updated 2003-01-27, Kentaro Shirakata .\" Updated 2005-02-28, Akihiro MOTOKI .\" Updated 2005-09-06, Akihiro MOTOKI .\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36 .\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 .\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.11 .\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24 .\" Updated 2012-04-30, Akihiro MOTOKI .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-03-25, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" .TH MOUNT 2 2014\-09\-21 Linux "Linux Programmer's Manual" .SH 名前 mount \- ファイルシステムをマウント/アンマウントする .SH 書式 .nf \fB#include \fP .sp \fBint mount(const char *\fP\fIsource\fP\fB, const char *\fP\fItarget\fP\fB,\fP \fB const char *\fP\fIfilesystemtype\fP\fB, unsigned long \fP\fImountflags\fP\fB,\fP \fB const void *\fP\fIdata\fP\fB);\fP .fi .SH 説明 \fBmount\fP() は \fIsource\fP で指定されたファイルシステム (デバイス名であることが多いが、 ディレクトリ名やダミーの場合もある) を \fItarget\fP で指定されたディレクトリに結びつける。 ファイルシステムのマウントを行うには、 適切な権限 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) が必要である。 .\" Multiple mounts on same mount point: since 2.3.99pre7. Linux 2.4 以降、ひとつのファイルシステムを複数のマウントポイントに 結びつけることができ、同じマウントポイントに複数のマウントをスタック させることもできる。 引き数 \fIfilesystemtype\fP としてカーネルが対応している値は、 \fI/proc/filesystems\fP で参照できる (例えば "minix", "ext2", "ext3", "jfs", "xfs", "reiserfs", "msdos", "proc", "nfs", "iso9660" 等)。 適切なモジュールが読み込まれると、さらに別の値が利用可能になるかもしれない。 .\" (as defined in \fI\fP for libc4 and libc5 .\" and in \fI\fP for glibc2) .\" FIXME 2.6.15 added flags for "shared subtree" functionality: .\" MS_UNBINDABLE, MS_PRIVATE, MS_SHARED, MS_SLAVE .\" .\" MS_PRIVATE. .\" All mounts are private by default. Previously shared mounts .\" can be remarked PRIVATE. .\" MS_SHARED .\" Mount points that are marked SHARED propagate mount events .\" to one another after bing cloned. .\" MS_SLAVE .\" A previously shared mount point can be marked SALVE, meaning .\" it receives propagated events, but does not propagate events. .\" MS_UNBINDABLE .\" mounts cannot be bound into other places, and will not be .\" propagated into new subtrees .\" mount --make-rshared ==> MS_SHARED | MS_REC .\" .\" These settings are visible in proc/mountinfo .\" .\" These need to be documented on this page. .\" See: .\" Documentation/filesystems/sharedsubtree.txt .\" .\" http://lwn.net/Articles/159077/ .\" .\" http://myweb.sudhaa.com:2022/~ram/sharedsubtree/paper/sharedsubtree.1.pdf .\" Shared-Subtree Concept, Implementation, and Applications in Linux .\" Al Viro viro@ftp.linux.org.uk .\" Ram Pai linuxram@us.ibm.com .\" .\" http://foss.in/2005/slides/sharedsubtree1.pdf .\" Shared Subtree Concept and Implementation in the Linux Kernel .\" Ram Pai .\" .\" http://www.ibm.com/developerworks/linux/library/l-mount-namespaces/index.html .\" Applying mount namespaces .\" .\" Uncover practical applications for advanced Linux mounts features .\" Serge E. Hallyn (sergeh@us.ibm.com), Software Engineer, IBM .\" Ram Pai (linuxram@us.ibm.com), Software Engineer, IBM .\" Date: 17 Sep 2007 .\" .\" FIXME 2.6.25 Added MS_I_VERSION, which needs to be documented. .\" 引き数 \fImountflags\fP の上位 16 ビットには、マジックナンバー 0xC0ED (\fBMS_MGC_VAL\fP) を指定することができる (マジックナンバーは、 カーネルバージョン 2.4 より前では必須であったが、 現在は必要なく、指定されても無視される)。 \fImountflags\fP の下位 16 ビットにマウントフラグを指定する。 .TP \fBMS_BIND\fP (Linux 2.4 以降) .\" since 2.4.0-test9 .\" with the exception of the "hidden" MS_REC mountflags bit バインドマウントを行う。これはファイルやディレクトリの部分木を ファイルシス テム内部の別の場所で見えるようにするものである。 バインドマウントを使うと、 ファイルシステムをまたいで \fBchroot\fP(2) jail を構成することが可能になる。 引き数 \fIfilesystemtype\fP と \fIdata\fP は無視される。 Linux 2.6.26 より前では \fImountflags\fP も無視されていた (バインドマウントでは、マウントポイントとなる ファイルシステムと同じマウントオプションが使用される)。 .TP \fBMS_DIRSYNC\fP (Linux 2.5.19 以降) このファイルシステムへのディレクトリ変更を同期的に行う。 (この特性は個々のディレクトリ、または \fBchattr\fP(1) を使った部分木毎に設定できる。) .TP \fBMS_MANDLOCK\fP .\" FIXME Describe the MS_MOVE flag in more detail このファイルシステムのファイルに対して強制ロックを認める。 (強制ロックを有効にするには、 \fBfcntl\fP(2) で述べられている方法でファイル単位で許可をしなければならない) .TP \fBMS_MOVE\fP 部分木を移動する。 \fIsource\fP にはすでに存在するマウントポイントを指定し、 \fItarget\fP には新しい場所を指定する。 移動はアトミックである。 操作の実行中、部分ツリーがアンマウントされることはない。 \fIfilesystemtype\fP, \fImountflags\fP, \fIdata\fP 引き数は無視される。 .TP \fBMS_NOATIME\fP このファイルシステムの (全ての種類の) ファイルのアクセス時刻を更新しない。 .TP \fBMS_NODEV\fP このファイルシステムのデバイス (スペシャルファイル) へのアクセスを許可しない。 .TP \fBMS_NODIRATIME\fP このファイルシステムのディレクトリのアクセス時刻を更新しない。 このフラグは \fBMS_NOATIME\fP で提供される機能のサブセットを提供する。つまり、 \fBMS_NOATIME\fP では \fBMS_NODIRATIME\fP が暗黙のうち設定される。 .TP \fBMS_NOEXEC\fP .\" (Possibly useful for a filesystem that contains non-Linux executables. .\" Often used as a security feature, e.g., to make sure that restricted .\" users cannot execute files uploaded using ftp or so.) このファイルシステムにあるプログラムの実行を許可しない。 .TP \fBMS_NOSUID\fP .\" (This is a security feature to prevent users executing set-user-ID and .\" set-group-ID programs from removable disk devices.) このファイルシステムのプログラムを実行するときに、 set\-user\-ID ビットと set\-group\-ID ビットを無視する。 .TP \fBMS_RDONLY\fP .\" .\" FIXME Document MS_REC, available since 2.4.11. .\" This flag has meaning in conjunction with MS_BIND and .\" also with the shared subtree flags. ファイルシステムを読み込み専用でマウントする。 .TP \fBMS_RELATIME\fP (Linux 2.6.20 以降) .\" Matthew Garrett notes in the patch that added this behavior .\" that this lets utilities such as tmpreaper (which deletes .\" files based on last access time) work correctly. このファイルシステム上のファイルがアクセスされた際、 そのファイルの最終アクセス時刻 (atime) の現在値が 最終修正時刻 (mtime) や最終状態変更時刻 (ctime) と 等しいか小さい場合にのみ、atime を更新する。 このオプションは、 \fBmutt\fP(1) のように、最後の内容修正以降にファイルがいつ読み出されたかを知る 必要があるプログラムで有用である。 Linux 2.6.30 以降では、 \fBMS_NOATIME\fP が指定されていない場合には、このフラグの動作が カーネルのデフォルト動作となっており、 Linux 2.6.30 より前の動作をさせるためには \fBMS_STRICTATIME\fP フラグを指定する必要がある。 これに加えて、Linux 2.6.30 以降では、 ファイルの最終アクセス時刻が 1 日以上前の場合、 ファイルの最終アクセス時刻は常に更新される。 .TP \fBMS_REMOUNT\fP すでに存在するマウントを再マウントする。これにより、すでに存在するマウントの \fImountflags\fP と \fIdata\fP を、一度アンマウントしてから再マウントするという作業をせずに 変更できる。 \fItarget\fP は最初の \fBmount\fP() 呼び出しと同じ値を指定する必要がある。 \fIsource\fP と \fIfilesystemtype\fP は無視される。 引き数 \fImountflags\fP と \fIdata\fP は、意図的に変更するもの以外は、 元の \fBmount\fP() の呼び出しで使用した値と一致するようにすべきである。 \fImountflags\fP のうち \fBMS_RDONLY\fP, \fBMS_SYNCHRONOUS\fP, \fBMS_MANDLOCK\fP は変更可能である。 カーネル 2.6.16 より前では、 \fBMS_NOATIME\fP, \fBMS_NODIRATIME\fP も変更可能であった。 カーネル 2.4.10 より前では、上記に加えて、 \fBMS_NOSUID\fP, \fBMS_NODEV\fP, \fBMS_NOEXEC\fP も変更可能であった。 .TP \fBMS_SILENT\fP (Linux 2.6.17 以降) カーネルのログ内のある種の (\fIprintk\fP()) 警告メッセージの表示を抑制する。 このフラグは、名前が不適切で廃止された \fBMS_VERBOSE\fP フラグ (Linux 2.4.12 以降で利用可能) を置き換えるもので、同じ意味を持つ。 .TP \fBMS_STRICTATIME\fP (Linux 2.6.30 以降) このファイルシステムがアクセスされた際に最終アクセス時刻 (atime) を常に更新する (Linux 2.6.30 より前では、これがデフォルトの動作 であった)。 このフラグを指定することで、 \fBMS_NOATIME\fP と \fBMS_RELATIME\fP の両フラグを設定した際の影響を上書きすることができる。 .TP \fBMS_SYNCHRONOUS\fP ファイルシステムに対して同期的に書き込みを行う。 (このファイルシステムの全てのオープンされたファイルに対して、 \fBopen\fP(2) のフラグに \fBO_SYNC\fP を指定したような動作となる) .PP Linux 2.4 以降では、 \fBMS_NODEV\fP, \fBMS_NOEXEC\fP, \fBMS_NOSUID\fP はマウントポイント単位で指定できる。 カーネル 2.6.16 以降では、 \fBMS_NOATIME\fP と \fBMS_NODIRATIME\fP もマウントポイント単位で指定できる。 また、 \fBMS_RELATIME\fP フラグもマウントポイント単位で設定できる。 .PP 引き数 \fIdata\fP がどのように解釈されるかは、ファイルシステムによって異なる。 たいていは、指定されたファイルシステムで利用可能なオプションが コンマ区切りで並べられた文字列である。 各ファイルシステムに対して指定可能なオプションの詳細については \fBmount\fP(8) を参照のこと。 .SH 返り値 成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 .SH エラー 以下に示すエラーは、ファイルシステムに依存しないものである。 それぞれのファイルシステムタイプには固有のエラーが存在する場合があり、 独自の動作をすることもある。詳しくは Linux カーネルのソースを見て欲しい。 .TP \fBEACCES\fP .\" mtk: Probably: write permission is required for MS_BIND, with .\" the error EPERM if not present; CAP_DAC_OVERRIDE is required. パスに含まれるディレクトリに検索 (実行) 許可がない (\fBpath_resolution\fP(7) も参照)。 または、 \fBMS_RONLY\fP フラグを指定せずに読み込み専用のファイルシステムを マウントしようとした。 または、ブロックデバイス \fIsource\fP が \fBMS_NODEV\fP オプションでマウントされたファイルシステム上にある。 .TP \fBEBUSY\fP \fIsource\fP は既にマウントされている。 または、書き込み用にオープンされたファイルがあり、 読み込み専用で再マウントすることができない。 または、 \fItarget\fP が使用中 (busy) のため、 \fItarget\fP にマウントできない。 \fItarget\fP が使用中の例としては、あるスレッドの動作ディレクトリ (working directory) であるとか、別のデバイスのマウントポイントであるとか、 オープンされたファイルが存在する、などがある。 .TP \fBEFAULT\fP 場所を示す引き数のひとつがユーザーのアドレス空間の外を指している。 .TP \fBEINVAL\fP \fIsource\fP に不正なスーパーブロックがある。 または、 \fIsource\fP が \fItarget\fP にマウントされていないのに、再マウント (\fBMS_REMOUNT\fP) が要求された。 または、 \fIsource\fP がマウントポイントではないか、\(aq/\(aq なのに、移動 (\fBMS_MOVE\fP) が要求された。 .TP \fBELOOP\fP パス名の解決中に登場したリンクが多すぎた。 または、 \fItarget\fP が \fIsource\fP の子孫なのに移動が要求された。 .TP \fBEMFILE\fP (ブロックデバイスが必要でない場合) ダミーデバイスのテーブルが一杯になった。 .TP \fBENAMETOOLONG\fP パス名の長さが \fBMAXPATHLEN\fP より長かった。 .TP \fBENODEV\fP \fIfilesystemtype\fP がカーネル中で定義 (config) されていない。 .TP \fBENOENT\fP パス名が空である。もしくは指定されたパスが存在しない。 .TP \fBENOMEM\fP カーネルがファイル名やデータをコピーするための空きページを確保できなかった。 .TP \fBENOTBLK\fP (ブロックデバイスが必要だが) \fIsource\fP がブロックデバイスではない。 .TP \fBENOTDIR\fP \fItarget\fP か、 \fIsource\fP のプレフィックスがディレクトリではない。 .TP \fBENXIO\fP ブロックデバイス \fIsource\fP のメジャー番号が範囲外である。 .TP \fBEPERM\fP 呼び出し元が必要な権限を持っていない。 .SH バージョン .\" FIXME . Definitions of the so-far-undocumented MS_UNBINDABLE, MS_PRIVATE, .\" MS_SHARED, and MS_SLAVE were (also) only added to glibc headers in 2.12. \fBMS_DIRSYNC\fP, \fBMS_MOVE\fP, \fBMS_REC\fP, \fBMS_RELATIME\fP, \fBMS_STRICTATIME\fP の定義が glibc のヘッダーに追加されたのは バージョン 2.12 においてである。 .SH 準拠 この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。 .SH 注意 元の \fBMS_SYNC\fP フラグは、別の \fBMS_SYNC\fP が \fI\fP に追加されたので 1.1.69 から \fBMS_SYNCHRONOUS\fP に名前が変わった。 .LP .\" The change is in patch-2.4.0-prerelease. Linux 2.4 より前のバージョンでは、 \fBMS_NOSUID\fP オプション付きでマウントされたファイルシステム上の set\-UID や set\-GID のプログラムを実行しようとすると、 \fBEPERM\fP エラーとなった。 Linux 2.4 以降では、このような場合は set\-UID ビットや set\-GID ビットが 無視されるだけである。 .SS プロセス単位の名前空間 カーネル 2.4.19 以降の Linux では、プロセス単位のマウント名前空間 (mount namespace) が提供されている。マウント名前空間とは、 あるプロセスに見えているファイルシステムのマウントの集合である。 マウントポイントの名前空間は複数のプロセスで共有することができ、 普通は共有されている。 一つのプロセスによる名前空間の変更 (すなわち、マウントやアンマウント) は 同じ名前空間を共有する他の全てのプロセスにも見える。 (2.4.19 より前の Linux は、一つの名前空間がシステム上の全プロセスで 共有される状況とみなすことができる。) \fBfork\fP(2) 経由で作成された子プロセスは親プロセスのマウント名前空間を共有する。 \fBexecve\fP(2) の前後でマウント名前空間は保持される。 プロセスは自分用 (private) のマウント名前空間を持つことができる。 自分用の名前空間を持つことができるのは、 そのプロセスが \fBclone\fP(2) \fBCLONE_NEWNS\fP フラグを使って作成された場合と、 そのプロセスが \fBCLONE_NEWNS\fP フラグ付きで \fBunshare\fP(2) を呼び出した場合である。 前者の場合、作成されたプロセスの新しい名前空間は \fBclone\fP(2) を呼び出したプロセスの名前空間の「コピー」で初期化される。 後者の場合、 \fBunshare\fP(2) を呼び出すと、呼び出し元のプロセスのマウント名前空間が、 それまでは他のプロセスと共有していた名前空間の自分用のコピーとなる。 これにより、呼び出し元のプロセスがこれ以後に行うマウント/アンマウントは 他のプロセスから見えなくなる (ただし、呼び出し元のプロセスが \fBunshare\fP(2) の呼び出し以降に作成した子プロセスには見える)。 また、その逆の、他のプロセスが行ったマウント/アンマウントも呼び出し元のプロセスには 見えなくなる。 Linux 独自のファイル \fI/proc/PID/mounts\fP では、指定された ID を持つプロセスのマウント名前空間における マウントポイントのリストが公開されている。詳細は \fBproc\fP(5) を参照のこと。 .SH 関連項目 \fBumount\fP(2), \fBnamespaces\fP(7), \fBpath_resolution\fP(7), \fBlsblk\fP(8), \fBmount\fP(8), \fBumount\fP(8) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。