LinuxサーバーとWindowsパソコンの間でファイルを共有したいとき、どうしますか?
実は、Samba(サンバ)というソフトウェアを使えば、簡単にファイル共有ができるんです。
そして、そのSambaの設定を管理しているのがsmb.confというファイルです。
「設定ファイル?難しそう…」と思うかもしれませんが、基本的な書き方を覚えれば、誰でもファイル共有サーバーを構築できますよ!
今回は、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 = yesとread 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: 以下を確認してください:
testparmでエラーがないか- Sambaサービスを再起動したか
- ファイアウォールは開いているか
- 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つの共有フォルダを作ることから始めてみましょう!
それでは、快適なファイル共有ライフを!

コメント