Edited at

mount.cifsに付けるオプション

More than 1 year has passed since last update.


背景

WindowsやNASの共有ドライブをLinuxからmountするために使う/usr/sbin/mount.cifsにどういうオプションを与えると自分が設定している環境でベターなのかよくわからない。その理由は

mount コマンドの -o オプションに与えるオプションの決め方について良いと思われるものを以下で書く。/etc/fstab に与えるオプションにも当てはまる。Linuxカーネルのプロトコル対応状況はここに詳しい


プロトコルバージョンの決め方

古いプロトコルバージョンは安全性に問題がある上に遅いので、なるべく新しいプロトコルバージョンで接続することが望ましい。したがって mount.cifs が理解するバージョンを大きい順にmount.cifs -o vers=番号 という形式で試して一番高いバージョンを用いる。


3.1.1

このプロトコルバージョンはLinux 4.17以降でしか対応していない

3.02

3.0

3.0以上のプロトコルバージョンとLinuxカーネルバージョン4.4以上ならより信頼性が高い`persistenthandles` (`mount.cifs` のオプション)に対応している。またより高速なアクセスが出来るSMB Direct (RDMA)にプロトコルが対応しているから`rdma`を`mount.cifs`に与えて動作するか試してみる。

2.1

このバージョンを使える場合および前述の`persistenthandles`が使えない場合、信頼性を高めるため `resilienthandles` を`mount.cifs` に与えてみる。

2.0

プロトコルバージョン2.0以上で動かないと遅い

1.0

プロトコルバージョン1.0しか使えないならこれを使うしかない


その他のCIFSオプション


guest

パスワードを聞かれなくなる(ゲストログインする)

credentials=ファイル名

起動時に自動マウントする場合などにコマンドオプションにパスワードを書くことも対話的にパスワードを与えることも出来ないので「ファイル名」にmanページに指定された形式でパスワードなどを書いておく

iocharset=utf8

手元のLinuxの漢字ファイルネームを保存している漢字コードを指定する

sfu,mfsymlinks

シンボリックリンクの扱いがよくなる

cifsacl,idsfromsid

これらのオプションを指定すると動作がよりunixっぽくなる


NFSなどとも共通のmountオプション


hardまたはsoft

hardなら操作がタイムアウトしたときに成功するまで再試行するのでアプリケーションがハングアップすることがあるが、softならエラーをアプリケーションプログラムに返す

intrまたはnointr

intrだとシグナルによるシステムコールの中断を認めるがnointrなら認めない

noexec, nosuid, nodev

リモートファイルシステム上のファイルの実行を認めるか、SUIDビットを認識するか、デバイス特殊ファイルを元認めるかのオプション。よくわからなければセキュリティ上は全部指定しておくほうがよい


/etc/fstab にだけ指定するオプション(CIFS以外と共通)と注意事項


x-systemd.automount

そのディレクトリをアクセスしたときにsystemdが自動的にマウントしてくれる

x-systemd.idle-timeout=10m

そのディレクトリを10分間アクセスしなかったときにsystemdが自動的にアンマウントしてくれる

_netdev

起動時にネットワークの設定が終わったあとにマウントされるべきことを示すオプション。CIFSやNFSなどに必ず指定するべき

user

これをfstabに書いておけば一般ユーザーがマウント出来る

noauto

起動時にはマウントしない

nofail

systemdが理解するオプションでマウント失敗しても起動を続ける

x-systemd.mount-timeout=何秒

起動時のmountコマンド終了まで待つ秒数