Name

mount.cifs — Common Internet File System (CIFS) を使用したマウント

Synopsis

mount.cifs {service} {mount-point} [-o options]

説明

このツールは samba(7) システムの一部である。

mount.cifs は Linux の CIFS ファイルシステムをマウントする。 これは通常、"-t cifs" オプションが指定された場合に mount(8) によって間接的に呼び出される。 このコマンドは Linux 上でしか動作せず、カーネルが CIFS ファイルシステムをサポートしていなければいけない。CIFS プロトコルは SMB プロトコルの後継プロトコルであり、Samba の他にもほとんどの Windows サーバーや他の商用サーバー、ネットワーク・ストレージ機器などで サポートされている。

mount.cifs ユーティリティは、service として指定 された UNC 名 (公開されたネットワークリソース)にローカルディレクトリの mount-point を割り当てる。 service は //server/share という書式で指定する。 ここで "server" はサーバーの名前もしくは IP アドレス、 "share" は 共有の名前である。

mount.cifs のオプションはカンマ「,」 で区切られた key=value の組み合わせで指定される。 ここで列挙されているオプション以外でも、CIFS ファイルシステムのカーネルモジュール (cifs.ko) がサポートしているオプションを指定することもできる。 認識されないcifs マウントオプションは、そのままcifs vfsカーネルモジュールに 渡され、カーネルのログに記録される。

mount.cifs はcifsdという名のスレッドをを起動するcifs vfs を引き起こす。マウント後は、 マウントしたリソースが (通常 umount ユーティリティで)アンマウントされるまで実行されたままになる。

mount.cifs -Vコマンドはcifsマウントヘルパのバージョンを表示する。

modinfo cifsコマンドはcifsモジュールのバージョンを表示する。

オプション

user=arg

接続する際に用いるユーザー名を指定する。 指定されていないときは、環境変数 USER が使用される。このオプションは、"user%password" や "workgroup/user" もしくは "workgroup/user%password" という形で、ユーザー名の一部としてパスワードやワークグループを 指定することも可能である。

Note

cifs VFS モジュールは、user= というパラメーターの他に、 smbfs に慣れたユーザーのために username= という長い形式のパラメーターも受け付ける。 同様に、pass=dom=cred= といった短い cifs のパラメーターの同義語として、smbfs 形式の長いパラメーター名も受け付けられる。

password=arg

CIFS のパスワードを指定する。 指定されていないときは、環境変数 PASSWD が使用される。パスワードが取得できなければ、guest オプションが指定されていない限り、mount.cifs はパスワードを求めるプロンプトを表示する。

コマンドラインでは、(カンマ','のような) 引数の区切り文字を含む パスワードは、正しく認識できないことに注意すること。ただし、 PASSWD 環境変数やパスワードを格納したファイル (以下「資格情報ファイル」と呼ぶ。詳しくは後述)もしくはパスワードプロンプトからの入力においては、 そのようなパスワードも正しく認識できる。

credentials=filename

ユーザー名やパスワード、およびオプションでワークグループ名を 含む資格情報ファイルを指定する。 ファイルのフォーマットは以下のとおり:

		username=value
		password=value
		domain=value

資格情報ファイルを利用することは、 /etc/fstab のような 共有されている ファイル中に平文でパスワードを記述するより好ましい。 このファイルは適切に保護するように注意すること。

uid=arg

サーバーが所有者の情報を提供しない時に、マウントされた ファイルシステム上の、すべてのファイルとディレクトリを所有する uidを設定する。これは、ユーザー名か数値によるuidのどちらかで指定できる。 指定されない場合は、既定値としてuid 0 が使われる。mount.cifsヘルパは、 非数値形式のuidを指定することをサポートするため、バージョン1.10以上で なければならない。詳細については、以下の、「ファイルとディレクトリの 所有権とアクセス許可」の節を参照。

prefixpath=arg

共有のサブディレクトリをマウントすることが出来る。これを行う ために推奨される方法は、マウントする時にUNCへのパスを追加する ことである。しかしながら、このオプションを設定し、そこに パス名を指定しても同じことが可能である。

cifsacl

このオプションは、CIFS/NTFSのACLと、Linuxパーミッションビットとの間で のマップ、SIDとUIDあるいはGIDとのマップ、セキュリティ記述子の取得と 設定を行うのに使われる。

forceuid

ファイルとディレクトリのためにサーバーによって提供された任意のuidを 無視し、常時uid=オプションでの値に、所有者を割り当てるように、 クライアントに指示する。詳細については、以下の、「ファイルとディレクトリの 所有権とアクセス許可」の節を参照。

gid=arg

サーバーが所有者の情報を提供しない時に、マウントされた ファイルシステム上の、すべてのファイルとディレクトリを所有する gidを設定する。これは、グループ名か数値によるgidのどちらかで指定できる。 指定されない場合は、既定値としてgid 0 が使われる。mount.cifsヘルパは、 非数値形式のuidを指定することをサポートするため、バージョン1.10以上で なければならない。詳細については、以下の、「ファイルとディレクトリの 所有権とアクセス許可」の節を参照。

forcegid

ファイルとディレクトリのためにサーバーによって提供された任意のgidを 無視し、常時gid=オプションでの値に、所有者を割り当てるように、 クライアントに指示する。詳細については、以下の、「ファイルとディレクトリの 所有権とアクセス許可」の節を参照。

port=arg

CIFS サポートの手続きを行うためのサーバーの ポート番号を指定する。もしサーバーが指定されたポート番号を 開いていない場合や、この値が指定されなかった場合には、 デフォルトである 445 が試され、それでもレスポンスがなかった 場合は 139 が試される。

servernetbiosname=arg

サーバーへのセッションのセットアップを試みる時に使う、サーバーのnetbios 名(RFC1001名)を指定する。新しいサーバーをマウントするためにもまれに必要で、 このオプションは、ほとんどの新しいサーバーと違って、ポート139越えで既定値の サーバー名をサポートしない古いサーバー(例えばOS/2やWindows 98 と Windows ME) をマウントする時に必要となる。サーバー名は最大15文字までで、通常大文字である。

servern=arg

servernetbiosname=のシノニムである。

netbiosname=arg

ポート 139 でサーバーにマウントされる場合、 RFC1001 の NetBIOS セッション初期化中に クライアントの NetBIOS コンピュータ名として用いられるRFC1001 netbios マシン名を指定する。

file_mode=arg

サーバーが CIFS Unix extensions をサポートしていない場合、 これは既定値のファイルモードを上書きする。

dir_mode=arg

サーバーが CIFS Unix extensions をサポートしていない場合、 これは既定値のディレクトリモードを上書きする。

ip=arg

対象IP アドレスを指定する。このオプションは、もしも、要求された UNC名のサーバー名部分が解決できる時に自動的に設定されるので、ユーザーによって指定することはまれである。

domain=arg

ユーザーの所属するドメイン名 (ワークグループ名) を指定する。

guest

パスワードプロンプトを表示しない。

iocharset

Unicode と変換するローカルパス名の文字コードを設定する。 Unicode は、サーバーがサポートしている限り、ネットワークパス名のデフォルトの文字コードとして用いられる。 iocharset が指定されておらず、nls_default がクライアントのカーネルビルド時に指定されている場合は、それが用いられる。 サーバーが Unicode をサポートしていない場合、このパラメーターは用いられない。

ro

read-only でマウントする。

rw

read-write でマウントする。

setuids

CIFS Unix extension がサーバーとの間で有効化された場合、 クライアントは新規に作成するファイル、ディレクトリ、デバイス (create / mkdir / mknod) に対して、ローカルプロセスの実効 uid および gid を設定しようとする。 CIFS Unix Extension が無効な場合、新規に作成されるファイルやディレクトリには、 マウント時に指定されたデフォルトの uid と gid を設定する代わりに、 新規ファイルの uid と gid をローカルにキャッシュする。これは、inode がリロードされる度に (つまりユーザーが共有を再マウントする度に) ファイルの uid が変更されることを意味する。

nosetuids

クライアントは、新規に作成するファイル、ディレクトリ、デバイス (create / mkdir / mknod) に対して、uid や gid を設定しようとしない。 これは、サーバーが uid や gid をデフォルトの値 (通常共有をマウントしたユーザーのもの) に設定することを意味する。 デフォルトでは、(クライアントではなく) サーバーが uid や gid を設定する。 CIFS Unix Extension が無効の場合、新規ファイルの uid (gid) はマウントしたユーザー、もしくはマウント時にパラメーターで指定した uid (gid) となる。

perm

クライアントはパーミッションの検査を行わない(ファイルに対するuid/gidへのモードと 希望する操作のvfs_permission チェック)。サーバーソフトウェアによって行われる ターゲットマシンの通常のACL検査も追加されることに注意。クライアントのパーミッション 検査は既定値で有効である。

noperm

クライアントはパーミッション検査を行わない。これは、ローカル クライアントシステム上の他のユーザーによりアクセスするためにこのマウント上でファイルを さらすことが出来る。これは、サーバーがCIFS Unix Extensionsをサポートしているが、 クライアントとサーバーシステム上のUID/GIDがユーザーのマウント操作によってアクセス するために密接になっているのに一致していない時にのみ通常必要である。 サーバーソフトウェア(マウント時に提供されるユーザー名に対するACL)によってターゲット マシンで通常のACL検査を行うことへの影響はないことに注意。

dynperm

サーバーに保存できないメモリ中で、所有権とアクセス許可を 管理することをサーバーに指示する。この情報は、(inodeがキャッシュから フラッシュされた時はいつでも)任意の時点で消滅できる。そのため、これが いくつかのアプリケーションを動かすための手助けとなるかもしれない時、 その動作は、若干信頼性に欠ける。詳細については、以下の、「ファイルと ディレクトリの所有権とアクセス許可」の節を参照。

directio

マウント中にオープンされたファイルの inode 情報をキャッシュしない。 これは、マウント中に mmap されたファイルも preclude する。 高速なネットワーク環境で、キャッシュをほとんど、もしくは全く行なわないことによりクライアントにメリットがある場合 (例えば、アプリケーションがページサイズを越えるような大量のシーケンシャルな読み込みを行なっており、かつ読み込んだデータの再読み込みは行なっていないような状況) 、 oplock が取得され、維持されている限りローカルな Linux クライアントのページキャッシュ経由で読み取り(先読み/readahead)や書き込み(writebehind)をキャッシュするデフォルトの挙動と比較してパフォーマンスの向上をもたらす場合がある。 このパラメーターを有効にすることで、ページサイズを越える書き込み処理は、直接サーバーに送られるようになる。 カーネルによっては、cifs.ko モジュールが CIFS_EXPERIMENTAL という configure オプションを有効にしてビルドされている必要がある。

mapchars

予約されている7文字の内6文字(バックスラッシュ以外の、コロン、疑問符、 パイプ、アスタリスク、>、<記号)を、remap range(0xF000以上)に割り当てる。 これにより、CIFSクライアントはWindowsのPOSIX エミュレーション環境下で 作成されたこれらの文字を含むファイル名を認識することが可能となる。 このオプションは、(これら 7 文字を含むファイル名の作成やオープンを 禁止している)ほとんどのバージョンのSambaの共有をマウントする際にも 有用である。サーバーがネットワーク上で Unicode をサポートしていない場合、 このオプションは無効となる。mapcharsマウントオプションを指定して 作成されたファイルは、共有が、このオプションなしでマウントされた 場合、アクセス出来ないかもしれないと言うことに注意。

nomapchars

これら7文字の割り当てを行なわない(既定値)。

intr

現在実装されていない

nointr

(既定値)現在実装されていない

hard

CIFS でマウントされたファイルシステムにアクセスしているプログラムは、サーバーがクラッシュすると、ハングアップする。

soft

(既定値)CIFS でマウントされたファイルシステムにアクセスしているプログラムは、サーバーがクラッシュしてもハングアップせず、ユーザーアプリケーションにはエラーが返却される。

noacl

サーバーがサポートしていた場合でも、POSIX ACL 機能を無効にする。

CIFS クライアントは、バージョン3.0.10 以降の Samba サーバーに対して POSIX ACL の取得や設定 (getfacl や setfacl) を行なうことができる。 POSIX ACL の設定を行なうには、XATTR (拡張属性)のサポートに加え、CIFS モジュールのビルドの際、CIFS 設定オプション中の POSIX サポートを有効にしていることが必要である。 POSIX ACL サポートはマウントの際に「noacl」を指定することでマウントごとに無効化することが可能である。

nocase

大文字小文字を区別しないパス名のマッチング処理を行なう (デフォルトでは、サーバーがサポートしていれば、大文字小文字を区別した処理が行なわれる)。

ignorecase

nocaseのシノニムである。

sec=

セキュリティモード。以下の値を設定できる:

  • none 空のユーザー名(名前なし)で接続を行なう。

  • krb5 Kerberos 5 認証を用いる。

  • krb5i Kerberos 認証とパケット署名(訳注: SMB署名?)を用いる。

  • ntlm NTLM パスワードハッシュを用いる (デフォルト) 。

  • ntlmi NTLM パスワードハッシュと署名を用いる (もしも /proc/fs/cifs/PacketSigningEnabled がonか、もしも、サーバーが書名を 要求する異が既定値ならば)

  • ntlmv2 NTLMv2 パスワードハッシュを用いる。

  • ntlmv2i NTLMv2 パスワードハッシュとパケット署名を用いる。

NB: この sec パラメーターは開発中であり、cifs カーネルモジュール 1.40 以降で利用可能となる予定である。

nobrl

サーバーにバイト範囲ロックの要求を送信しない。 これは、CIFS 形式の強制的なバイト範囲ロックを無視する幾つかのアプリケーションにとって必要である (大半の CIFS サーバーはアドバイザリなバイト範囲ロックをサポートしていない)。

sfu

CIFS Unix Extension が無効となっている場合に、デバイスファイルと fifo ファイルを Services for Unix (SFU) と互換性のある形式で作成する。 さらに追加で(SFUが行うように)、SETFILEBITS拡張属性経由のビット10-12 を検索する。 将来は、modeモードの下9ビットもセキュリティデスクリプタ(ACL)の問い合わせとして エミュレートする予定である。[NB: CIFS VFSのバージョン1.39か素励行が必要である。SFU互換形式でシンボリックリンクの認識と作成を行うためには、CIFS VFSカーネルモジュールのバージョン1.40かそれ以降が必要である。]

serverino

inode 番号 (一意で永続的なファイル識別子) として、クライアント側で一時的に自動生成された inode 番号ではなく、サーバー側から返却された番号を用いる。 サーバー側の inode 番号を用いることで、ハードリンクされたファイル (同じ inode 番号を持っている) の処理が簡素化される他、inode 番号を永続的にすることが可能となる (ソフトウェアによっては有用である)。 もしも、1つの共有配下で複数のサーバーサイドのマウントがエクスポートされるときに、 inode番号の一意性をサーバーは認めない(サーバー上のinode番号は、もしもファイルシステムが、 より上位のディレクトリで同じ共有下でマウントされていた場合、一意にならないため) CIFS Unix Extension をサポートしている全てのサーバーがサーバー側の inode 番号を返却するとは限らない。 Windows 2000 以降のサーバーは、これをサポートしている (ただしローカルサーバーのファイルシステムではこれを必要としていない)。 サーバー側で inode 番号の返却がサポートされていない場合、このパラメーターは意味を持たない。

noserverino

inode番号をクライアント側で生成する(サーバー側のinode番号を用いない)。 これが既定値である。

より詳細は、INODE番号節を参照。

nounix

このマウント操作に対して、CIFS Unix拡張を無効にする。これは、同時に 複数の設定を無効にするのに便利である。これには、POSIX acl、POSIXロック、 シンボリックリンクのサポートとサーバーからのuid/gid/modeの検索を含む。 これはまた、Unix拡張をサポートするサーバー中のバグに対応するのにも 便利である。

より詳細は、INODE番号節を参照。

nouser_xattr

(既定値)サーバー側でサポートされていた場合でも、getfattr/setfattr を用いた拡張属性の参照、設定を許可しない。

rsize=arg

ネットワークからの読み取りサイズのデフォルト値(通常16K)。クライアント は現在CIFSMaxBufSize以上のrsizeを使えない。CIFSMaxBufSizeの既定値は16Kで、 cifs.koモジュールをインストールする時に(kerenelによって最大kmallocサイズの 変更が許される時)変更可能である。CIFSMaxValueをとても大きな値に設定すると、 いくつかの場合において、メモリはたくさんつかうが、パフォーマンスを減少させられる。 127K(オリジナルのCIFSプロトコルの最大値)より大きなrsizeをつかうためには、サーバーが 新しいUnix Capability フラグ(特大の読み込み用)をサポートしている必要がある。 それは、たとえば新しいサーバー(Samba 3.0.26以降)である。rsizeは最低2048から 最大130048(127KまたはCIFSMaxBufSizeのどちらか小さい方)で設定可能である。

wsize=arg

ネットワークへの書き込みサイズのデフォルト値(既定値では57334)。 現在CIFSが認めている最大のwsizeは57344(4096バイトページの14倍)である。

noposixpaths

もしも、unixエクステンションが共有上で有効な場合、クライアントは通常 パス名の中に'/'以外の任意の文字を含むことが出来、通常のスラッシュは パス名の区切りとして使われる。このオプションは、サーバに対して posix形式のパス名の使用を調停しようとすることを防止する。

posixpaths

noposixpathsの反意オプションである。

--verbose

マウントの際に、デバッグ用の付加情報を出力する。 このパラメーターは -o の前に指定する必要があることに注意。以下に例を示す:

mount -t cifs //server/share /mnt --verbose -o user=username

サービスの形式とデリミタ

サービス名中で通常のスラッシュ(/)をデリミタとして使うことは一般的である。Windowsのパスの構成の中に埋め込むことが認められないため、これは"汎用デリミタ"と考えることが出来、クライアントは無条件にバックスラッシュ(\)に変換する。逆にいえば、バックスラッシュ文字は、POSIXによって、パス要素として認められていて、同じ方法で自動的に変換されない。

mount.cifs は、それが可能であれば、バックスラッシュを通常のスラッシュに変換しようとするが、共有名のあとの任意のパス要素には行えない。

INODE番号

UNIX拡張が有効になっている時、POSIX呼び出しの応答中で、サーバーによって 提供された実際のinode番号を、inode番号として使う。

UNIX拡張が無効で、"serverinfo"マウントオプションが有効な時、サーバーの inode番号を知るすべはない。クライアントは通常inode番号に、サーバーが割り当てた "固有のID"をマップする。

固有のIDはサーバーのinode番号とは異なることに注意。固有のIDの値は、 サーバー全体の範囲を超えて個別であり、しばしば2の32乗よりも大きい。 この値はしばしばLFS(Large File Support)なしでコンパイルされたプログラムに、 対象の構造体のフィールド中に適合しないために、glibcのEOVERFLOWエラーを 引き起こすトリガとなる。この問題を防止するために、使用するプログラムを LFS付きで(すなわち、-D_FILE_OFFSET_BITS=64を指定して)コンパイルすることを 強く推奨する。また、クライアント上で2の32乗よりも小さいinodeの値を生成する "noserverino"マウントオプションを使う事も出来る。しかし、適切にハードリンクを 検出できないかもしれない。

ファイルとディレクトリの所有権とアクセス許可

基本のCIFSプロトコルはUNIXの所有権情報あるいはファイルとディレクトリの モードを提供しない。このため、ファイルとディレクトリは一般的に、uid=か gid=オプションで設定された値によって所有されるように見え、また、 パーミッションは、マウント時のfile_modeとdir_modeの既定値に設定される。 chmod/chownによってこれらの値を変更しようとすると、一見成功したように 見えるが、実際には変更されない。

クライアントとサーバーがUNIX拡張をネゴシエートするとき、ファイルと ディレクトリはサーバーによって提供されるuid,gidとモードが割り当てられる。 CIFSマウントは一般的にシングルユーザーで、どのようなユーザーがマウントした ものにアクセスするかにかかわらず、同じ認証情報が使われるという理由で、 新しく作成されたファイルとディレクトリは一般的に、共有に対してマウント するときに使われた、どのような認証情報に対しても、その所有者情報が 与えられる。

もしも、使用されるuidとgidがクライアントとサーバー上で一致しないならば、 forceuidとfrocegidオプションが便利であろう。注意:しかしながら、modeを 上書きすることに関連するオプションは存在しない。forceuidかforcegid使用時に ファイルに対して割り当てられるパーミッションは、実際のパーミッションを 反映しないかもしれない。

UNIX拡張がネゴシエートされない時は、"dynperm"マウントオプションを 使うことでサーバー上でローカルにそれらをエミュレートすることも可能である。 このマウントオプションが有効であるとき、新しく作成されたファイルと ディレクトリは、適切なパーミッションになるように見えるように設定される だろう。これらのパーミッションはサーバー上にはどんな形でも格納されず、 最終的にどこかで消える(kernelが気まぐれにinodeキャッシュをフラッシュする ことに依存する)。一般的に、このマウントオプションには落胆させられる。

nopermオプション経由でクライアント全部をチェックすることで、 パーミッションを上書きすることも可能である。サーバーサイドのパーミッション チェックでは上書きできない。サーバーによるパーミッションのチェックの完了は 常時共有に対してマウントしたときの認証情報に対応するので、サーバーにアクセスする ユーザーに対しては必要でない。

環境変数

USER 環境変数にはサーバーに対して認証を行うときに使う利用者の ユーザー名が含まれる。 この変数にはユーザー名とパスワードの両方を username%password のフォーマットで設定することができる。

PASSWD 環境変数にはクライアントで使用される パスワードが含まれる。

PASSWD_FILE 環境変数にはパスワードが読み込まれる ファイルのパス名が含まれる。 1行目が読み取られ、パスワードとして使用される。

注意

setuid が設定されていない限り、このコマンドは root のみ使用できる。 setuid が設定されている場合、noexec および nosuid のマウントフラグが 有効化される。setuidプログラムとしてインストールされた場合、ユーザーのマウント用 のマウントプログラムと同等の慣習に従う。

smbclient(8)のような、いくつかのSambaクライアントツールは、smb.conf中に存在する クライアントサイドの設定パラメーターを信頼する。それらのクライアントツールと 違って、mount.cifsはsmb.confを完全に無視する。

設定

CIFS VFS の設定の変更やデバッグ情報を取得する機能は Linux の /proc ファイルシステムを利用して行われている。 /proc/fs/cifs ディレクトリには、さまざまな設定ファイルや デバッグ情報を表示する仮想ファイルがある。 カーネルの CIFS vfs (cifs.ko モジュール) がロードされている時のみ設定される、 最大バッファーサイズとバッファー数というオプションが存在する。 これらは、cifs.ko ファイルに対して、modinfo ユーティリティを実行することで確認できる。 このユーティリティにより、モジュールのインストール時(デバイスドライバーのロード時)に CIFS モジュールに渡されるオプションが表示される。 より詳細な情報はカーネルに含まれる fs/cifs/README ファイルを 参照のこと。

バグ

マウントの際に CIFS URL で指定する形式は、現在サポートされていない。

資格情報ファイルではスペースで始まるユーザー名やパスワードを 扱うことができない。

バグ報告に対してまず行われる返答は、とりあえず最新のバージョンで 試してみるような提案である。まず最初にそのこと (最新バージョンへの更新) を試したうえで、バグを報告するときは関連するソフトウェアのバージョン情報 (最低限でも mount.cifs (mount.cifs -V の結果)、カーネル (/proc/version の内容)) と接続しようとしているサーバーの形式を含めること。

バージョン

このマニュアルページは CIFS vfs ファイルシステム 1.52 (おおよそ Linux カーネル 2.6.24) 用である。

関連項目

Linux カーネルソースツリーの Documentation/filesystems/cifs.txt と fs/cifs/README には追加のオプションや情報がある。

umount.cifs(8)

著者

Steve French

構文やマニュアルページは smbmount のものをベースにしている。 これは Jelmer Vernooij によって Docbook/XML 形式に変換された。

現在の Linux cifs vfs とユーザースペースのツールの mount.cifs のメンテナーは Steve French である。 これらのプログラムについて質問するには、 Linux CIFS Mailing list が望ましい。

日本語訳

このマニュアルページは Samba 3.5.18 - 3.5.20 対応のものである。

このドキュメントの Samba 3.0.0 対応の翻訳は、山田 史朗 (shiro@miraclelinux.com)によって行なわれた。

Samba 3.0.23 - Samba 3.0.24 対応の翻訳は、たかはしもとのぶ (monyo@samba.gr.jp) によって行なわれた。

Samba 3.2.4 - 3.5.20 対応の翻訳は、

  • 太田俊哉(ribbon@samba.gr.jp)

  • 堀田 倫英(hotta@net-newbie.com)

によって行なわれた。