mount.cifs — Common Internet File System (CIFS) を使用したマウント
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 のモードを setuid root にすることで、root 以外のユーザも書き込み権限のある共有をディレクトリにマウントすることが 可能である。
mount.cifs のオプションはカンマ「,」 で区切られた key=value の組み合わせで指定される。 ここで列挙されているオプション以外でも、CIFS ファイルシステムのカーネルモジュール (cifs.ko) がサポートしているオプションを指定することもできる。 認識されないcifs マウントオプションは、そのままcifs vfsカーネルモジュールに 渡され、カーネルのログに記録される。
mount.cifs はcifsdという名のスレッドをを起動するcifs vfs を引き起こす。マウント後は、 マウントしたリソースが (通常 umount ユーティリティで)アンマウントされるまで実行されたままになる。
mount.cifs -Vコマンドはcifsマウントヘルパのバージョンを表示する。
modinfo cifsコマンドはcifsモジュールのバージョンを表示する。
arg
接続する際に用いるユーザ名を指定する。
指定されていないときは、環境変数 USER
が使用される。このオプションは、"user%password" や
"workgroup/user" もしくは "workgroup/user%password"
という形で、ユーザ名の一部としてパスワードやワークグループを
指定することも可能である。
cifs VFS モジュールは、user=
というパラメータの他に、
smbfs に慣れたユーザのために username=
という長い形式のパラメータも受け付ける。
同様に、pass=
、dom=
、cred=
といった短い cifs のパラメータの同義語として、smbfs 形式の長いパラメータ名も受け付けられる。
arg
CIFS のパスワードを指定する。 指定されていないときは、環境変数 PASSWD が使用される。パスワードが取得できなければ、guest オプションが指定されていない限り、mount.cifs はパスワードを求めるプロンプトを表示する。
コマンドラインでは、(カンマ','のような) 引数の区切り文字を含む パスワードは、正しく認識できないことに注意すること。ただし、 PASSWD 環境変数やパスワードを格納したファイル (以下「資格情報ファイル」と呼ぶ。詳しくは後述)もしくはパスワードプロンプトからの入力においては、 そのようなパスワードも正しく認識できる。
filename
ユーザ名やパスワード、およびオプションでワークグループ名を 含む資格情報ファイルを指定する。 ファイルのフォーマットは以下のとおり:
username=value
password=value
domain=value
資格情報ファイルを利用することは、
/etc/fstab
のような 共有されている
ファイル中に平文でパスワードを記述するより好ましい。
このファイルは適切に保護するように注意すること。
arg
マウント先のファイルの所有者として用いる uid を設定する。 これはユーザ名でも数値の uid でも指定できる。 対象となるサーバが、適切に設定されたSambaサーバのように、CIFS Unix extensions を サポートする場合、サーバはuid,gidとモードを提供するので、このパラメータはサーバと クライアントのuidとgid番号づけが異なるまで、このパラメータは指定されるべきでない。 もしもサーバとクライアントが同じドメイン(すなわち、winbindまたはnss_ldapが実行中)で、 サーバがUnix Extensionをサポートする場合、uidとgidはサーバ(とuidとgid)から検索されるのでマウント時に指定してはいけない。 CIFS Unix extensionsをサポートしないサーバのために、存在するファイルを検索した時に 返る既定値のuid(とgid)マウントオプションは、"uid="(またはgid)マウントオプションが 指定されるまで、(ユーザのマウント時にsetuidが構成されている場合を除きroot) マウントを実行する、uid(gid)である。新しく作成されたファイルとディレクトリのuid(gid)の ため、すなわち、サーバ共有の最後のマウント後に作成されたファイルは、クライアントのメモリ に中に残っているinodeと同じだけ、期待されたuid(gid)はキャッシュされる。(Windowsのように) uid/gid 所有者をレポートしないサーバのために、クライアントでパーミッションもチェック出来、 自然な形でクライアント上でfile_modeとdir_modeを指定することでクライアントサイドでパーミッション チェックを有効にする。mount.cifs ヘルパは、非数値形式でuid(またはgid)を指定するときは、 バージョン1.10またはそれ以降のバージョンが必要であることに注意。
arg
マウント先のファイルの所有者として用いる gid を設定する。 これはグループ名でも数値の gid でも指定できる。 その他の注意事項は上記uidと同じである。
arg
CIFS サポートの手続きを行うためのサーバの ポート番号を指定する。もしサーバが指定されたポート番号を 開いていない場合や、この値が指定されなかった場合には、 デフォルトである 445 が試され、それでもレスポンスがなかった 場合は 139 が試される。
arg
サーバへのセッションのセットアップを試みる時に使う、サーバのnetbios 名(RFC1001名)を指定する。新しいサーバをマウントするためにもまれに必要で、 このオプションは、ほとんどの新しいサーバと違って、ポート139越えで既定値の サーバ名をサポートしない古いサーバ(例えばOS/2やWindows 98 と Windows ME) をマウントする時に必要となる。サーバ名は最大15文字までで、通常大文字である。
arg
ポート 139 でサーバにマウントされる場合、 RFC1001 の NetBIOS セッション初期化中に クライアントの NetBIOS コンピュータ名として用いられるRFC1001 netbios マシン名を指定する。
arg
サーバが CIFS Unix extensions をサポートしていない場合、 これは既定値のファイルモードを上書きする。
arg
サーバが CIFS Unix extensions をサポートしていない場合、 これは既定値のディレクトリモードを上書きする。
arg
対象IP アドレスを指定する。このオプションは、もしも、要求された UNC名のサーバ名部分が解決できる時に自動的に設定されるので、ユーザによって指定することはまれである。
arg
ユーザの所属するドメイン名 (ワークグループ名) を指定する。
パスワードプロンプトを表示しない。
Unicode と変換するローカルパス名の文字コードを設定する。 Unicode は、サーバがサポートしている限り、ネットワークパス名のデフォルトの文字コードとして用いられる。 iocharset が指定されておらず、nls_default がクライアントのカーネルビルド時に指定されている場合は、それが用いられる。 サーバが Unicode をサポートしていない場合、このパラメータは用いられない。
read-only でマウントする。
read-write でマウントする。
CIFS Unix extension がサーバとの間で有効化された場合、 クライアントは新規に作成するファイル、ディレクトリ、デバイス (create / mkdir / mknod) に対して、ローカルプロセスの実効 uid および gid を設定しようとする。 CIFS Unix Extension が無効な場合、新規に作成されるファイルやディレクトリには、 マウント時に指定されたデフォルトの uid と gid を設定する代わりに、 新規ファイルの uid と gid をローカルにキャッシュする。これは、inode がリロードされる度に (つまりユーザが共有を再マウントする度に) ファイルの uid が変更されることを意味する。
クライアントは、新規に作成するファイル、ディレクトリ、デバイス (create / mkdir / mknod) に対して、uid や gid を設定しようとしない。 これは、サーバが uid や gid をデフォルトの値 (通常共有をマウントしたユーザのもの) に設定することを意味する。 デフォルトでは、(クライアントではなく) サーバが uid や gid を設定する。 CIFS Unix Extension が無効の場合、新規ファイルの uid (gid) はマウントしたユーザ、もしくはマウント時にパラメータで指定した uid (gid) となる。
クライアントはパーミッションの検査を行わない(ファイルに対するuid/gidへのモードと 希望する操作のvfs_permission チェック)。サーバソフトウェアによって行われる ターゲットマシンの通常のACL検査も追加されることに注意。クライアントのパーミッション 検査は既定値で有効である。
クライアントはパーミッション検査を行わない。これは、ローカル クライアントシステム上の他のユーザによりアクセスするためにこのマウント上でファイルを さらすことが出来る。これは、サーバがCIFS Unix Extensionsをサポートしているが、 クライアントとサーバシステム上のUID/GIDがユーザのマウント操作によってアクセス するために密接になっているのに一致していない時にのみ通常必要である。 サーバソフトウェア(マウント時に提供されるユーザ名に対するACL)によってターゲット マシンで通常のACL検査を行うことへの影響はないことに注意。
マウント中にオープンされたファイルの inode 情報をキャッシュしない。 これは、マウント中に mmap されたファイルも preclude する。 高速なネットワーク環境で、キャッシュをほとんど、もしくは全く行なわないことによりクライアントにメリットがある場合 (例えば、アプリケーションがページサイズを越えるような大量のシーケンシャルな読み込みを行なっており、かつ読み込んだデータの再読み込みは行なっていないような状況) 、 oplock が取得され、維持されている限りローカルな Linux クライアントのページキャッシュ経由で読み取り(先読み/readahead)や書き込み(writebehind)をキャッシュするデフォルトの挙動と比較してパフォーマンスの向上をもたらす場合がある。 このパラメータを有効にすることで、ページサイズを越える書き込み処理は、直接サーバに送られるようになる。 カーネルによっては、cifs.ko モジュールが CIFS_EXPERIMENTAL という configure オプションを有効にしてビルドされている必要がある。
予約されている 7 文字の内 6 文字 (バックスラッシュ以外の、コロン、疑問符、パイプ、アスタリスク、>、<記号) を、remap range (0xF000 以上) に割り当てる。 これにより、 CIFS クライアントは Windows の POSIX エミュレーション環境下で作成されたこれらの文字を含むファイル名を認識することが可能となる。 このオプションは、 (これら 7 文字を含むファイル名の作成やオープンを禁止している) ほとんどのバージョンの Samba の共有をマウントする際にも有用である。 サーバがネットワーク上で Unicode をサポートしていない場合、このオプションは無効となる。
これら 7 文字の割り当てを行なわない(デフォルト)。
現在実装されていない
(デフォルト) 現在実装されていない
CIFS でマウントされたファイルシステムにアクセスしているプログラムは、サーバがクラッシュすると、ハングアップする。
(デフォルト) CIFS でマウントされたファイルシステムにアクセスしているプログラムは、サーバがクラッシュしてもハングアップせず、ユーザアプリケーションにはエラーが返却される。
サーバがサポートしていた場合でも、POSIX ACL 機能を無効にする。
CIFS クライアントは、バージョン3.0.10 以降の Samba サーバに対して POSIX ACL の取得や設定 (getfacl や setfacl) を行なうことができる。 POSIX ACL の設定を行なうには、XATTR (拡張属性)のサポートに加え、CIFS モジュールのビルドの際、CIFS 設定オプション中の POSIX サポートを有効にしていることが必要である。 POSIX ACL サポートはマウントの際に「noacl」を指定することでマウントごとに無効化することが可能である。
大文字小文字を区別しないパス名のマッチング処理を行なう (デフォルトでは、サーバがサポートしていれば、大文字小文字を区別した処理が行なわれる)。
セキュリティモード。以下の値を設定できる:
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 以降で利用可能となる予定である。
サーバにバイト範囲ロックの要求を送信しない。 これは、CIFS 形式の強制的なバイト範囲ロックを無視する幾つかのアプリケーションにとって必要である (大半の CIFS サーバはアドバイザリなバイト範囲ロックをサポートしていない)。
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かそれ以降が必要である。]
inode 番号 (一意で永続的なファイル識別子) として、クライアント側で一時的に自動生成された inode 番号ではなく、サーバ側から返却された番号を用いる。 サーバ側の inode 番号を用いることで、ハードリンクされたファイル (同じ inode 番号を持っている) の処理が簡素化される他、inode 番号を永続的にすることが可能となる (ソフトウェアによっては有用である)。 もしも、1つの共有配下で複数のサーバサイドのマウントがエクスポートされるときに、 inode番号の一意性をサーバは認めない(サーバ上のinode番号は、もしもファイルシステムが、 より上位のディレクトリで同じ共有下でマウントされていた場合、一意にならないため) CIFS Unix Extension をサポートしている全てのサーバがサーバ側の inode 番号を返却するとは限らない。 Windows 2000 以降のサーバは、これをサポートしている (ただしローカルサーバのファイルシステムではこれを必要としていない)。 サーバ側で inode 番号の返却がサポートされていない場合、このパラメータは意味を持たない。
inode 番号をクライアント側で生成する (サーバ側の inode 番号を用いない)。これがデフォルト値である。
(デフォルト値) サーバ側でサポートされていた場合でも、getfattr/setfattr を用いた拡張属性の参照、設定を許可しない。
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のどちらか小さい方)で設定可能である。
arg
ネットワークへの書き込みサイズのデフォルト値(既定値では57334)。 現在CIFSが認めている最大wsizeは57344(4096バイトページの14倍)である。
マウントの際に、デバッグ用の付加情報を出力する。 このパラメータは -o の前に指定する必要があることに注意。以下に例を示す:
mount -t cifs //server/share /mnt --verbose -o user=username
サービス名中で通常のスラッシュ(/)をデリミタとして使うことは一般的である。Windowsのパスの構成の中に埋め込むことが認められないため、これは"汎用デリミタ"と考えることが出来、クライアントは無条件にバックスラッシュ(\)に変換する。逆にいえば、バックスラッシュ文字は、POSIXによって、パス要素として認められていて、同じ方法で自動的に変換されない。
mount.cifs は、それが可能であれば、バックスラッシュを通常のスラッシュに変換しようとするが、共有名のあとの任意のパス要素には行えない。
USER 環境変数にはサーバに対して認証を行うときに使う利用者の ユーザ名が含まれる。 この変数にはユーザ名とパスワードの両方を username%password のフォーマットで設定することができる。
PASSWD 環境変数にはクライアントで使用される パスワードが含まれる。
PASSWD_FILE 環境変数にはパスワードが読み込まれる ファイルのパス名が含まれる。 1行目が読み取られ、パスワードとして使用される。
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 の内容)) と接続しようとしているサーバの形式を含めること。
Steve French
構文やマニュアルページは smbmount のものをベースにしている。 これは Jelmer Vernooij によって Docbook/XML 形式に変換された。
現在の Linux cifs vfs とユーザスペースのツールの mount.cifs のメンテナーは Steve French である。 これらのプログラムについて質問するには、 Linux CIFS Mailing list が望ましい。