CTS-KB

SMB / CIFS

エスエムビー / シフス

Server Message Block Common Internet File System Samba
#ファイル共有 #ネットワーク #Windows #NAS

Server Message Block の略。IBM が原型を作り、Microsoft が中心に発展させたネットワークファイル共有プロトコル。Windows のファイル共有・ネットワークドライブ・プリンタ共有の標準であり、QNAP / Synology などの NAS が Windows と共有するときの第一選択

CIFS(Common Internet File System)は SMB v1 時代の別名で、現在は SMB v2 / v3 が主流。

バージョンと特徴

バージョンリリース特徴推奨度
SMB v1(CIFS)1980 年代WannaCry 等で悪用された無効化必須
SMB v22006(Vista)パフォーマンス改善
SMB v32012(Windows 8)暗号化・マルチチャネル・RDMA◎ 業務利用
SMB v3.1.12015(Windows 10)整合性チェック強化

⚠️ SMB v1 は無効化が必須。WannaCry / NotPetya などのランサムウェアが SMB v1 経由で拡散した経緯から、現代の NAS / Windows はデフォルトで無効化している。SMB1 disabled の表示は警告ではなく正しい状態

NFS との比較

項目SMB(CIFS)NFS
Windows との共有◎ ネイティブ× (要 NFS クライアント有効化)
Linux との共有△(Samba 経由)
認証ユーザー / パスワードUID/GID(v3)、Kerberos(v4)
速度(GbE)100〜200 MB/s200〜300 MB/s

Linux からのマウント例

/etc/fstab

//192.168.1.10/Projects  /home/<user>/NAS/Projects  cifs  credentials=/root/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,nofail,x-systemd.automount,_netdev,vers=3.0  0  0
オプション意味
cifsファイルシステムタイプ
credentials=...認証情報ファイル(username= password= を root 600 で保存)
uid=1000 / gid=1000クライアント側のユーザー所有として見せる
iocharset=utf8日本語ファイル名対応
vers=3.0SMB v3.0 を明示(重要)
nofailNAS 不在でもブートを止めない

よくあるハマり

NT_STATUS_ACCESS_DENIED(QNAP 等で)

QNAP の 「匿名ユーザーを SMB 共有フォルダーにアクセスすることを制限する → 厳格」 が原因のことが多い。Linux Samba クライアントが内部で試みる匿名アクセスフェーズで弾かれる現象。Windows クライアントは別経路で認証情報を渡すため通ってしまい、「Windows では繋がるのに Linux だと繋がらない」という切り分けにくい症状になる。QNAP 側で「無効」に変更で解決。

バージョン未指定でのプロトコル衝突

vers= を指定しないと、クライアント / サーバー間でネゴシエーションが走り、SMB v1 にフォールバックして失敗するケースがある。vers=3.0 を明示するのが安全。

関連記事

関連用語

  • NFS — Linux 専用の共有なら NFS が高速
  • Linux