smb.confとは?Sambaサーバー設定ファイルの完全ガイド

LinuxサーバーとWindowsパソコンの間でファイルを共有したいとき、どうしますか?

実は、Samba(サンバ)というソフトウェアを使えば、簡単にファイル共有ができるんです。

そして、そのSambaの設定を管理しているのがsmb.confというファイルです。

「設定ファイル?難しそう…」と思うかもしれませんが、基本的な書き方を覚えれば、誰でもファイル共有サーバーを構築できますよ!

今回は、smb.confの基本から、実践的な設定例、トラブルシューティングまで、初心者の方にも分かりやすく徹底解説していきますね。

スポンサーリンク
  1. smb.confとSambaの基礎知識
    1. Sambaとは何か
    2. smb.confとは
    3. smb.confの場所
    4. 身近な例で理解しよう
  2. smb.confの基本構造
    1. セクションの概念
    2. グローバルセクション[global]
    3. 共有セクション
    4. コメントの書き方
    5. 設定の書き方ルール
  3. 基本的なsmb.confの設定例
    1. シンプルな共有設定
    2. パブリック共有(誰でもアクセス可能)
    3. 読み取り専用共有
    4. 特定ユーザーのみアクセス可能な共有
  4. 重要な設定パラメータ解説
    1. グローバル設定
    2. 共有設定
    3. アクセス制御
    4. パフォーマンス設定
  5. 実践的な設定例
    1. 小規模オフィス向け設定
    2. ホームディレクトリ共有
    3. ごみ箱機能付き共有
    4. タイムマシン(Time Machine)バックアップ
  6. smb.confの設定を反映させる方法
    1. 設定ファイルの文法チェック
    2. Sambaサービスの再起動
    3. サービスの起動確認
    4. 設定の確認
  7. Sambaユーザーの管理
    1. Linuxユーザーの作成
    2. Sambaユーザーの追加
    3. Sambaユーザーの有効化/無効化
    4. パスワード変更
    5. ユーザーの削除
    6. ユーザー一覧の確認
  8. トラブルシューティング
    1. 問題1: 共有フォルダが見えない
    2. 問題2: アクセス権限エラー
    3. 問題3: ユーザー認証に失敗する
    4. 問題4: 日本語ファイル名が文字化けする
    5. 問題5: パフォーマンスが遅い
  9. セキュリティのベストプラクティス
    1. 原則1: 最小権限の原則
    2. 原則2: ネットワーク制限
    3. 原則3: 強力なパスワード
    4. 原則4: 暗号化の有効化
    5. 原則5: 監査ログの有効化
    6. 原則6: 定期的なアップデート
  10. よくある質問と回答
    1. Q1: smb.confの文法が難しい
    2. Q2: 設定を変えてもWindowsから見えない
    3. Q3: ゲストアクセスが動かない
    4. Q4: パフォーマンスが出ない
    5. Q5: macOSから接続できない
    6. Q6: Windowsドメインに参加できる?
    7. Q7: 複数のsmb.confを使い分けられる?
    8. Q8: 設定ファイルのバックアップは必要?
  11. まとめ: smb.confでファイル共有をマスターしよう

smb.confとSambaの基礎知識

Sambaとは何か

Samba(サンバ)は、Linux上でWindowsのファイル共有プロトコルを実装するソフトウェアです。

もっと簡単に言うと:

LinuxをWindowsのファイルサーバーのように使えるようにするプログラム

Sambaを使えば:

  • Windowsから、まるで共有フォルダのようにLinuxのフォルダにアクセスできる
  • LinuxからWindowsの共有フォルダにアクセスできる
  • Windowsドメインコントローラーの機能も提供できる

家庭用NAS(ネットワークストレージ)の多くも、内部でSambaを使っているんですよ。

smb.confとは

smb.confは、Sambaのメイン設定ファイルです。

このファイルに、以下のような情報を記述します:

  • どのフォルダを共有するか
  • 誰がアクセスできるか
  • 読み取り専用か、書き込み可能か
  • ワークグループ名
  • セキュリティ設定

設定ファイルといっても、テキストファイルなので、普通のエディタで編集できます。

smb.confの場所

smb.confは通常、以下の場所にあります:

Linux系OS:

/etc/samba/smb.conf

これが最も一般的な場所です。

別の場所を確認する方法:

smbd -b | grep "CONFIGFILE"

このコマンドで、実際に使われている設定ファイルの場所が分かります。

身近な例で理解しよう

図書館の利用規則を想像してみてください。

図書館の規則(smb.conf)には:

  • どの書架が一般公開されているか(共有フォルダ)
  • 誰が入館できるか(アクセス権限)
  • 貸出可能かどうか(書き込み権限)
  • 開館時間(サービス設定)

これらの規則が書かれています。

Sambaも同じように、smb.confという「規則書」に従ってファイル共有を管理しているんです。

smb.confの基本構造

ファイルの構造を理解しましょう。

セクションの概念

smb.confは、セクションという単位で設定が分かれています。

セクションは角括弧[]で囲まれた名前で始まります。

基本的なセクション:

[global]
# グローバル設定(全体に適用される設定)

# ユーザーのホームディレクトリ共有

# プリンタ共有

# カスタム共有フォルダ1

# カスタム共有フォルダ2

グローバルセクション[global]

[global]セクションは特別で、Samba全体の設定を記述します。

ここに書いた設定は、すべての共有フォルダに適用されます。

代表的な設定項目:

  • workgroup: ワークグループ名
  • security: セキュリティモード
  • server string: サーバーの説明文
  • log file: ログファイルの場所
  • max log size: ログファイルの最大サイズ

共有セクション

[global]以外のセクションは、それぞれが1つの共有フォルダを表します。

セクション名が、Windowsから見える共有名になります。

例えば:

[documents]
    path = /srv/samba/documents
    browseable = yes
    read only = no

この設定は、\\サーバー名\documentsという共有フォルダを作ります。

コメントの書き方

設定ファイルにコメント(説明文)を書くことができます。

2つの方法:

# これはコメントです(#で始まる行)
; これもコメントです(;で始まる行)

# このセクションは書類用です path = /data/docs

コメントを活用すると、後で設定を見直すときに便利ですよ。

設定の書き方ルール

基本的な書式:

パラメータ名 = 値

または

パラメータ名: 値

どちらでもOKです。=を使うのが一般的ですね。

インデント(字下げ):

セクション内の設定は、読みやすくするために字下げすることが多いです。

[share]
    path = /data
    writable = yes

ただし、インデントは必須ではありません。

値の種類:

  • 文字列: server string = File Server
  • 真偽値: yes/no, true/false, 1/0
  • 数値: max log size = 50
  • リスト: hosts allow = 192.168.1.0/24 10.0.0.0/8

基本的なsmb.confの設定例

実際に動く設定ファイルを見てみましょう。

シンプルな共有設定

最小限の設定で、1つのフォルダを共有する例です。

[global]
    # ワークグループ名
    workgroup = WORKGROUP

    # サーバーの説明
    server string = Samba Server

    # セキュリティモード
    security = user

    # ログ設定
    log file = /var/log/samba/%m.log
    max log size = 50

# 共有するフォルダのパス path = /srv/samba/share # 一覧に表示する browseable = yes # 書き込み可能 writable = yes # ゲストアクセス禁止 guest ok = no

この設定の意味:

  • ワークグループ「WORKGROUP」に参加
  • /srv/samba/shareフォルダをshareという名前で共有
  • 認証されたユーザーのみアクセス可能
  • 読み書き両方できる

パブリック共有(誰でもアクセス可能)

認証なしでアクセスできる共有です。

[global]
    workgroup = WORKGROUP
    security = user
    map to guest = bad user

path = /srv/samba/public browseable = yes writable = yes guest ok = yes guest only = yes create mask = 0777 directory mask = 0777

ポイント:

  • guest ok = yes: ゲストアクセスを許可
  • guest only = yes: 全員をゲストとして扱う
  • map to guest = bad user: 認証失敗をゲストに変換

注意: セキュリティリスクがあるので、信頼できるネットワーク内でのみ使用してください。

読み取り専用共有

書き込みを禁止する設定です。

[documents]
    path = /srv/samba/documents
    browseable = yes
    read only = yes
    guest ok = no
    valid users = @staff

ポイント:

  • read only = yes: 読み取り専用(またはwritable = no
  • valid users = @staff: staffグループのメンバーのみアクセス可能

特定ユーザーのみアクセス可能な共有

アクセス制限をかける例です。

[private]
    path = /srv/samba/private
    browseable = no
    writable = yes
    valid users = alice bob
    create mask = 0660
    directory mask = 0770

ポイント:

  • browseable = no: 一覧に表示されない(隠し共有)
  • valid users = alice bob: aliceとbobのみアクセス可能
  • create mask: 新しいファイルのパーミッション
  • directory mask: 新しいディレクトリのパーミッション

重要な設定パラメータ解説

主要な設定項目を詳しく見ていきましょう。

グローバル設定

workgroup(ワークグループ名):

workgroup = WORKGROUP

Windowsのワークグループ名を指定します。Windowsと同じ名前にしてください。

server string(サーバー説明):

server string = Samba File Server %v

%vはSambaのバージョン番号に置き換わります。

security(セキュリティモード):

security = user
  • user: ユーザー認証(最も一般的)
  • share: 共有ごとに認証(古い方式)
  • domain: ドメインコントローラーに認証を委任

通常はuserを使います。

log file(ログファイル):

log file = /var/log/samba/%m.log

%mはクライアントのホスト名に置き換わります。クライアントごとに別々のログが作られます。

interfaces(待ち受けインターフェース):

interfaces = 127.0.0.0/8 eth0
bind interfaces only = yes

特定のネットワークインターフェースだけで待ち受けます。セキュリティ向上に有効です。

共有設定

path(共有パス):

path = /srv/samba/share

共有するディレクトリの実際のパスです。必須項目!

browseable(一覧表示):

browseable = yes
  • yes: ネットワーク上でこの共有が見える
  • no: 隠し共有(名前を知っている人だけアクセス可能)

writable / read only(書き込み権限):

writable = yes

または

read only = no

どちらも同じ意味です。writable = yesread only = noは同じことを表します。

guest ok(ゲストアクセス):

guest ok = yes

認証なしでのアクセスを許可するかどうか。別名public = yes

valid users(有効ユーザー):

valid users = user1 user2 @group1

アクセスを許可するユーザーまたはグループ。@でグループを指定します。

invalid users(無効ユーザー):

invalid users = baduser @badgroup

アクセスを拒否するユーザーまたはグループ。

write list(書き込み許可リスト):

read only = yes
write list = alice @editors

読み取り専用共有で、特定のユーザーだけ書き込みを許可できます。

create mask / directory mask(作成時のパーミッション):

create mask = 0664
directory mask = 0775

新しく作成されるファイルやディレクトリの権限を指定します。

アクセス制御

hosts allow / hosts deny(ホスト制限):

hosts allow = 192.168.1.0/24 10.0.0.0/8
hosts deny = 192.168.1.50

IPアドレスやネットワークでアクセスを制限できます。

例:

# 192.168.1.xからのみアクセス許可
hosts allow = 192.168.1.
hosts deny = all

パフォーマンス設定

socket options(ソケットオプション):

socket options = TCP_NODELAY IPTOS_LOWDELAY

ネットワークパフォーマンスを最適化します。

max connections(最大接続数):

max connections = 50

この共有への同時接続数の上限です。

vfs objects(仮想ファイルシステムオブジェクト):

vfs objects = recycle

ごみ箱機能など、追加機能を有効にします。

実践的な設定例

実際のシナリオに基づいた設定を見てみましょう。

小規模オフィス向け設定

部署ごとの共有と、全員がアクセスできるパブリック共有を持つ構成です。

[global]
    workgroup = OFFICE
    server string = Office File Server
    security = user

    # ログ設定
    log file = /var/log/samba/%m.log
    max log size = 1000

    # パフォーマンス
    socket options = TCP_NODELAY

    # ネットワーク制限
    hosts allow = 192.168.1.0/24
    interfaces = 192.168.1.0/24
    bind interfaces only = yes

# 全員がアクセスできる共有

comment = 公開フォルダ path = /srv/samba/public browseable = yes writable = yes guest ok = no create mask = 0664 directory mask = 0775 # 営業部用

comment = 営業部フォルダ path = /srv/samba/sales browseable = yes writable = yes valid users = @sales create mask = 0660 directory mask = 0770 # 経理部用(読み取り専用、一部のユーザーは書き込み可)

comment = 経理部フォルダ path = /srv/samba/accounting browseable = yes read only = yes write list = @accountants valid users = @accounting @managers create mask = 0660 directory mask = 0770 # 管理者専用

comment = 管理者専用 path = /srv/samba/admin browseable = no writable = yes valid users = admin create mask = 0600 directory mask = 0700

ホームディレクトリ共有

各ユーザーの個人フォルダを自動的に共有する設定です。

[global]
    workgroup = WORKGROUP
    security = user

comment = Home Directories browseable = no writable = yes create mask = 0700 directory mask = 0700 valid users = %S

特徴:

  • [homes]は特殊なセクション名
  • ユーザーがアクセスすると、自動的に自分のホームディレクトリが共有される
  • %Sは接続したユーザー名に置き換わる
  • 他のユーザーからは見えない

ごみ箱機能付き共有

削除したファイルをごみ箱に移動する設定です。

[documents]
    path = /srv/samba/documents
    browseable = yes
    writable = yes

    # ごみ箱機能
    vfs objects = recycle
    recycle:repository = .recycle
    recycle:keeptree = yes
    recycle:versions = yes
    recycle:touch = yes
    recycle:exclude = *.tmp, *.temp
    recycle:exclude_dir = /tmp, /cache

動作:

  • 削除されたファイルは.recycleフォルダに移動
  • ディレクトリ構造を保持
  • 同名ファイルがある場合はバージョン番号付き
  • 一時ファイルは除外

タイムマシン(Time Machine)バックアップ

macOSのバックアップ先として使う設定です。

[timemachine]
    comment = Time Machine Backup
    path = /srv/samba/timemachine
    browseable = yes
    writable = yes
    guest ok = no
    valid users = macuser

    # Time Machine用設定
    vfs objects = catia fruit streams_xattr
    fruit:time machine = yes
    fruit:time machine max size = 500G

ポイント:

  • fruitモジュールでmacOS互換性を向上
  • time machine = yesでバックアップ先として認識
  • 最大サイズを制限可能

smb.confの設定を反映させる方法

設定ファイルを編集したら、Sambaサービスに反映させる必要があります。

設定ファイルの文法チェック

まず、設定ファイルに間違いがないかチェックします。

testparm

このコマンドで、smb.confの文法をチェックできます。

出力例:

Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[public]"
Loaded services file OK.

エラーがあれば、行番号とエラー内容が表示されます。

特定のセクションだけ表示:

testparm -s --section-name=public

Sambaサービスの再起動

設定を反映させるには、サービスを再起動します。

systemd を使うシステム(Ubuntu、CentOS 7以降など):

sudo systemctl restart smbd
sudo systemctl restart nmbd
  • smbd: ファイル共有サービス
  • nmbd: NetBIOS名前解決サービス

設定のリロード(再起動なし):

sudo systemctl reload smbd

接続中のユーザーを切断せずに、設定を反映できます。

SysVinit を使う古いシステム:

sudo service smbd restart
sudo service nmbd restart

サービスの起動確認

サービスが正常に動いているか確認します。

sudo systemctl status smbd

正常な場合:

● smbd.service - Samba SMB Daemon
   Loaded: loaded
   Active: active (running)

設定の確認

実際に有効な設定を確認できます。

testparm -s

デフォルト値も含めて、すべての設定が表示されます。

Sambaユーザーの管理

Sambaは独自のユーザーデータベースを持っています。

Linuxユーザーの作成

まず、Linuxシステムにユーザーを作成します。

sudo useradd -M -s /sbin/nologin sambauser
  • -M: ホームディレクトリを作らない
  • -s /sbin/nologin: ログイン不可(Samba専用)

Sambaユーザーの追加

次に、そのユーザーをSambaに登録します。

sudo smbpasswd -a sambauser

パスワードを2回入力すると、Sambaユーザーが作成されます。

Sambaユーザーの有効化/無効化

# 無効化
sudo smbpasswd -d sambauser

# 有効化
sudo smbpasswd -e sambauser

パスワード変更

sudo smbpasswd sambauser

新しいパスワードを入力します。

ユーザーの削除

sudo smbpasswd -x sambauser

Sambaデータベースからユーザーを削除します。

ユーザー一覧の確認

sudo pdbedit -L

または詳細情報付き:

sudo pdbedit -L -v

トラブルシューティング

よくある問題と解決方法です。

問題1: 共有フォルダが見えない

症状:

Windowsのネットワークから、Sambaサーバーや共有フォルダが見えない。

確認項目:

1. Sambaサービスが動いているか

sudo systemctl status smbd nmbd

両方ともactive (running)になっているか確認。

2. ファイアウォールの設定

sudo firewall-cmd --list-services

sambaが含まれているか確認。含まれていない場合:

sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

3. SELinuxの設定(CentOS/RHEL)

sudo getsebool -a | grep samba

必要に応じて:

sudo setsebool -P samba_enable_home_dirs on
sudo setsebool -P samba_export_all_rw on

4. browseable設定

smb.confでbrowseable = yesになっているか確認。

問題2: アクセス権限エラー

症状:

「アクセスが拒否されました」「権限がありません」というエラー。

確認項目:

1. Linuxのファイルパーミッション

ls -ld /srv/samba/share

Sambaユーザーが読み書きできる権限になっているか確認。

2. 所有者の変更

sudo chown -R nobody:nogroup /srv/samba/share

または特定のユーザー:

sudo chown -R sambauser:sambauser /srv/samba/share

3. パーミッションの変更

sudo chmod -R 0775 /srv/samba/share

4. smb.confの設定

  • valid usersに自分が含まれているか
  • writable = yesになっているか(書き込みしたい場合)

問題3: ユーザー認証に失敗する

症状:

正しいパスワードを入力しても認証エラーになる。

解決方法:

1. Sambaユーザーの存在確認

sudo pdbedit -L | grep ユーザー名

存在しない場合は作成:

sudo smbpasswd -a ユーザー名

2. ユーザーが有効か確認

sudo pdbedit -L -v ユーザー名

Account Flags[U](有効)になっているか確認。

無効なら有効化:

sudo smbpasswd -e ユーザー名

3. Linuxユーザーの存在確認

id ユーザー名

存在しない場合は作成が必要。

問題4: 日本語ファイル名が文字化けする

症状:

日本語のファイル名が正しく表示されない。

解決方法:

smb.confに以下を追加:

[global]
    unix charset = UTF-8
    dos charset = CP932
  • unix charset: Linux側の文字コード(UTF-8が標準)
  • dos charset: Windows側の文字コード(日本語Windowsは CP932)

設定後、Sambaを再起動。

問題5: パフォーマンスが遅い

症状:

ファイル転送が異常に遅い。

改善方法:

1. ソケットオプションの調整

[global]
    socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072

2. 読み書きサイズの調整

[global]
    read raw = yes
    write raw = yes
    max xmit = 65535

3. SMB2/SMB3の有効化

[global]
    min protocol = SMB2
    max protocol = SMB3

新しいプロトコルの方が高速です。

セキュリティのベストプラクティス

安全な設定のポイントです。

原則1: 最小権限の原則

必要最低限の権限だけを与えましょう。

良い例:

[share]
    valid users = @team1
    read only = yes
    write list = @editors

悪い例:

[share]
    guest ok = yes
    writable = yes

原則2: ネットワーク制限

信頼できるネットワークからのみアクセスを許可します。

[global]
    hosts allow = 192.168.1.0/24
    hosts deny = all
    interfaces = 192.168.1.0/24
    bind interfaces only = yes

原則3: 強力なパスワード

Sambaユーザーには複雑なパスワードを設定します。

# パスワードポリシーを設定
sudo pdbedit -P "min password length" -C 12

原則4: 暗号化の有効化

SMB3で通信を暗号化できます。

[global]
    server min protocol = SMB3
    smb encrypt = required

ただし、古いクライアントは接続できなくなります。

原則5: 監査ログの有効化

アクセスログを記録します。

[global]
    log level = 3
    max log size = 5000

vfs objects = full_audit full_audit:prefix = %u|%I|%S full_audit:success = open opendir write unlink rename mkdir rmdir full_audit:failure = all

原則6: 定期的なアップデート

Sambaのセキュリティアップデートを定期的に適用しましょう。

sudo apt update && sudo apt upgrade samba

または

sudo yum update samba

よくある質問と回答

Q1: smb.confの文法が難しい

A: 基本はパラメータ = 値だけです。

既存の設定例をコピーして、必要な部分だけ変更するのが簡単ですよ。

Q2: 設定を変えてもWindowsから見えない

A: 以下を確認してください:

  1. testparmでエラーがないか
  2. Sambaサービスを再起動したか
  3. ファイアウォールは開いているか
  4. Windowsで「ネットワーク探索」が有効か

Q3: ゲストアクセスが動かない

A: 最近のWindowsでは、セキュリティポリシーでゲストアクセスが無効化されています。

グループポリシーで「非セキュアなゲストログオンを有効にする」設定が必要な場合があります。

Q4: パフォーマンスが出ない

A: 以下を試してください:

  • SMB2/SMB3プロトコルを使う
  • ジャンボフレーム有効化(ネットワーク設定)
  • ソケットバッファサイズを増やす
  • ディスクI/Oをチェック(hdparm、iotop)

Q5: macOSから接続できない

A: macOS用の設定を追加してください:

[global]
    vfs objects = catia fruit streams_xattr
    fruit:metadata = stream
    fruit:model = MacSamba
    fruit:posix_rename = yes
    fruit:veto_appledouble = no
    fruit:nfs_aces = no
    fruit:wipe_intentionally_left_blank_rfork = yes
    fruit:delete_empty_adfiles = yes

Q6: Windowsドメインに参加できる?

A: はい、できます。

[global]
    workgroup = DOMAIN
    security = ads
    realm = DOMAIN.LOCAL

さらに、Kerberosの設定とドメイン参加コマンドが必要です。

Q7: 複数のsmb.confを使い分けられる?

A: はい、起動時にオプションで指定できます。

smbd -s /etc/samba/smb-alternative.conf

ただし、通常は1つの設定ファイルで管理するのが一般的です。

Q8: 設定ファイルのバックアップは必要?

A: 絶対に必要です!

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

設定を変更する前に、必ずバックアップを取りましょう。

まとめ: smb.confでファイル共有をマスターしよう

smb.confについて解説してきました。最後にポイントをまとめます。

重要ポイント:

  • smb.confはSambaの設定ファイルで、通常は/etc/samba/smb.confにある
  • [global]セクションで全体設定、他のセクションで個別の共有を定義
  • 設定変更後はtestparmでチェックしてからサービス再起動
  • 最小権限の原則でセキュリティを確保
  • ネットワーク制限ユーザー認証を適切に設定

Sambaを使えば、LinuxサーバーをWindowsから簡単にアクセスできるファイルサーバーにできます。

最初は設定ファイルが難しく感じるかもしれませんが、基本的なパターンを覚えれば、あとは応用するだけです。

シンプルな設定から始めて、徐々に機能を追加していくのがおすすめですよ。まずは1つの共有フォルダを作ることから始めてみましょう!

それでは、快適なファイル共有ライフを!

コメント

タイトルとURLをコピーしました