※本記事にはプロモーション(広告)を含みます。

Sambaでファイルサーバーを構築する際は、まずワークグループ名とパーミッション設計を先に固めてから smb.conf を編集してください。設定項目を後から変更すると共有フォルダのアクセス権限が二重管理になり、Windowsクライアントから見えるフォルダと実際のLinux側の権限がずれるトラブルが起こりやすくなります。この記事では、パッケージ導入からユーザー管理、セキュリティ強化、動作確認までを実際の設定例とともに順を追って説明します。

Sambaの基本構成を理解する

Sambaは、Linux上でWindowsのSMB/CIFSプロトコルを実装し、Windows端末やmacOSからファイル共有やプリンタ共有を可能にするソフトウェアです。異なるOS同士でファイルをやり取りする場面が多い社内環境や自宅の複数端末環境で、専用のNASを購入せずにLinuxサーバーをファイルサーバー化できる点が導入メリットです。

SMBプロトコルの役割

SMB(Server Message Block)は、ネットワーク越しにファイルやプリンタを共有するための通信規約です。Windowsは標準でこのプロトコルを使ってファイル共有を行うため、Linux側にSambaを導入すれば、Windows端末は特別なクライアントソフトを入れずにエクスプローラーから直接アクセスできます。バージョンにはSMB1・SMB2・SMB3があり、SMB3は暗号化通信に対応しているため、社内ネットワークで運用する場合はSMB3以上を使う設定にしておくと安全性が高まります。

smbdとnmbdの機能分担

Sambaはひとつのデーモンではなく、複数のプロセスで役割を分担しています。ファイル共有やプリンタ共有の実処理を担うのが smbd、NetBIOS名前解決やブラウジング機能を担うのが nmbd です。近年の環境ではNetBIOSに依存しない構成も増えていますが、旧来のWindowsネットワーク近隣機能を使う場合は nmbd の起動も必要になります。加えてActive Directoryと連携する場合は winbind というサービスも関わってきます。この三者の役割を把握しておくと、トラブル時にどのログを確認すべきか判断しやすくなります。

インストールと初期設定手順

SambaはUbuntu・Debian・Rocky Linux・AlmaLinuxなど主要ディストリビューションの公式リポジトリに含まれています。まずはパッケージマネージャーからインストールし、設定ファイルの基本構造を押さえます。

パッケージ導入の手順

Debian系とRHEL系ではコマンド体系が異なるため、環境に合わせて実行します。

ディストリビューションインストールコマンド主な設定ファイルの場所
Ubuntu / Debiansudo apt update && sudo apt install samba/etc/samba/smb.conf
Rocky Linux / AlmaLinuxsudo dnf install samba samba-client/etc/samba/smb.conf
openSUSEsudo zypper install samba/etc/samba/smb.conf

インストール後は smbd --version でバージョンを確認してください。設定項目やオプションはバージョンによって挙動が変わることがあるため、細かい仕様は導入したバージョンに対応する公式ドキュメント(Samba Wiki)を参照しながら進める必要があります。

smb.confの基本項目

設定ファイル /etc/samba/smb.conf は [global] セクションと共有フォルダごとのセクションに分かれています。編集前には必ずバックアップを取ってください。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf

[global] セクションでは、workgroup(Windowsのワークグループ名と一致させる項目)、server string(サーバーの説明文)、log file、max log size などを設定します。ワークグループ名がクライアント側と一致していないと、ネットワーク上に表示されない場合があるため、Windows側の設定(システムのプロパティ画面)で事前に確認しておくと手戻りが少なくなります。

共有フォルダと権限設定

ファイルサーバーの本質は「誰が」「どのフォルダに」「どこまでの権限でアクセスできるか」の設計です。Linux側のパーミッションとSamba側の設定は別レイヤーであるため、両方を意識して構築します。

共有ディレクトリの作成

まず共有用のディレクトリを作成し、所有者とグループを設定します。

sudo mkdir -p /srv/samba/share
sudo chown -R nobody:nogroup /srv/samba/share
sudo chmod -R 0775 /srv/samba/share

その上で smb.conf に共有セクションを追記します。

[share]
   path = /srv/samba/share
   browseable = yes
   writable = yes
   guest ok = no
   valid users = @sambashare

writable を yes にすると書き込みを許可し、guest ok を no にすることで認証されたユーザーのみアクセス可能な状態にします。社外に公開する用途ではないファイルサーバーの場合、guest ok は yes にしないことが望ましい設定です。

Sambaユーザーの作成と管理

SambaはLinuxのシステムユーザーとは別に、Samba専用のパスワードデータベースを持ちます。Linuxユーザーを作成したうえで、Samba用のパスワードを別途登録する流れになります。

sudo useradd -M -s /usr/sbin/nologin taro
sudo smbpasswd -a taro
sudo groupadd sambashare
sudo usermod -aG sambashare taro

-M オプションでホームディレクトリの作成を省略し、-s /usr/sbin/nologin でSSHログインを禁止しています。ファイル共有専用のアカウントであれば、システムへの直接ログイン権限は持たせない設計が安全です。

ACLでの細かい権限制御

複数のグループでフォルダを使い分けたい場合、通常のパーミッションだけでは不足するケースがあります。その場合はACL(アクセス制御リスト)を併用します。

sudo apt install acl
sudo setfacl -R -m g:sambashare:rwx /srv/samba/share
sudo setfacl -R -d -m g:sambashare:rwx /srv/samba/share

-d オプションは「デフォルトACL」を意味し、フォルダ内に新規作成されたファイルやサブフォルダにも同じ権限を自動継承させます。これを設定しておかないと、新しく作成したファイルだけ権限が異なるという状況が発生します。

認証方式とセキュリティ強化

ファイルサーバーは社内の重要データを扱う機器になりやすいため、公開範囲とアクセス制御を明確に設計する必要があります。設定は必ず自己の環境・責任のもとで検証してから本番運用に移行してください。

ワークグループとADドメイン参加

小規模環境ではワークグループモードで十分ですが、Active Directory環境が既に存在する場合は、Sambaをドメインメンバーとして参加させる構成も選べます。ドメイン参加には realm join コマンドや winbind の設定が必要で、Kerberos認証の設定も絡んでくるため、単体構成より作業工程が増えます。既存のADドメインがない小規模オフィスや個人利用であれば、まずはワークグループモードで運用し、必要に応じて後から移行を検討する進め方が現実的です。

ファイアウォールとSELinuxの調整

Sambaが正しく設定されていても、ファイアウォールでポートが閉じていればクライアントから接続できません。Sambaは主にTCP445番とTCP139番、UDP137・138番を使用します。

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

RHEL系ディストリビューションではSELinuxが有効になっている場合が多く、共有ディレクトリのコンテキストが合っていないとパーミッション上は問題なくてもアクセス拒否されることがあります。

sudo semanage fcontext -a -t samba_share_t "/srv/samba/share(/.*)?"
sudo restorecon -Rv /srv/samba/share

SELinuxを無効化して回避する方法も見かけますが、サーバー全体のセキュリティレベルを下げることになるため、コンテキスト設定で解決する方法を優先することをおすすめします。

暗号化通信とSMB1の無効化

SMB1は既知の脆弱性が複数報告されている古いプロトコルです。smb.confの[global]セクションに以下を追記し、SMB1を無効化したうえでSMB2以降のみを許可する設定にしておくと、リスクを下げられます。

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

この設定はSambaのバージョンによってパラメータ名や既定値が異なる場合があるため、導入したバージョンの公式ドキュメントで対応状況を確認したうえで反映してください。

動作確認とトラブル対処

設定を反映したら、サービスを再起動してクライアント側から接続テストを行います。

サービスの再起動と設定チェック

sudo testparm
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd

testparm コマンドはsmb.confの構文エラーを事前に検出してくれるため、再起動前に必ず実行してください。エラーがあれば行番号とともに表示されるので、該当箇所を修正します。

クライアントからの接続確認

Windows端末からは、エクスプローラーのアドレスバーに \\サーバーのIPアドレス\share と入力してアクセスします。Linux端末からはsmbclientコマンドで接続テストが可能です。

smbclient -L //サーバーのIPアドレス -U taro

共有一覧が表示されれば、Samba側の設定は正常に機能しています。表示されない場合は、ファイアウォールの設定漏れかワークグループ名の不一致が原因になっているケースが多く見られます。

よくあるエラーへの対処

「アクセスが拒否されました」と表示される場合、原因の切り分けは次の順で進めると効率的です。

  • smbpasswdでSamba用パスワードが登録されているか確認する
  • Linux側のディレクトリ権限とグループ所属を確認する
  • SELinuxのコンテキストが samba_share_t になっているか確認する
  • ファイアウォールで445番ポートが開放されているか確認する
  • /var/log/samba/配下のログでエラーメッセージの詳細を確認する

ログには接続元IPアドレスや拒否理由が記録されるため、原因特定の手がかりになります。

よくある質問

Q1. SambaとNFSはどちらを選ぶべきですか

接続元にWindows端末が含まれる場合はSambaが適しています。Linux/Unix端末同士のみで完結する環境であれば、NFSの方が設定項目がシンプルになる場合があります。

Q2. 匿名アクセス(ゲスト共有)は設定できますか

smb.confで guest ok = yes と設定すれば匿名アクセスを許可できます。ただし社内データを扱うファイルサーバーでは、認証なしのアクセスを許可すると情報漏えいのリスクが高まるため、用途を限定したうえで慎重に検討してください。

Q3. 既存のフォルダをそのまま共有できますか

既存ディレクトリのパスをsmb.confのpath項目に指定すれば共有可能です。ただし所有者・グループ・パーミッションが想定と異なる場合、アクセス権限のトラブルにつながるため、共有前に権限を見直しておく必要があります。

Q4. パスワードを忘れた場合はどうすればよいですか

smbpasswdコマンドで再設定できます。

sudo smbpasswd taro

Linux側のログインパスワードとは別管理のため、片方だけ変更しても他方には反映されません。

Q5. Sambaのバージョンアップ時に注意点はありますか

メジャーバージョンが変わる際は、設定項目の名称変更や非推奨化が行われる場合があります。アップデート前に必ず変更履歴(リリースノート)を確認し、テスト環境で動作確認してから本番環境へ反映する手順を踏んでください。

Q6. Windows 11から接続できない場合の対処法は

Windows 11は既定でSMB1が無効化されているため、Samba側もSMB2以降で応答する設定になっているか確認します。前述の server min protocol の設定に加え、client min protocol の設定が古いままになっていないかも合わせて確認してください。

関連記事

まとめ

Sambaによるファイルサーバー構築は、パッケージ導入自体はコマンド1つで完了しますが、実運用に耐える構成にするにはユーザー管理・パーミッション設計・ファイアウォールとSELinuxの調整まで一通り押さえる必要があります。特にLinux側の権限とSamba側の設定は別レイヤーであるため、両方を突き合わせながら設定を進める点がポイントです。設定変更後はtestparmでの構文チェックとsmbclientでの接続確認をセットで行い、想定外のトラブルを早期に発見できる運用にしておくと、日々の管理負担を抑えられます。バージョン依存の項目や新しいセキュリティ推奨設定は、導入したSambaのバージョンに対応する公式ドキュメントで随時確認してください。

【編集・制作ポリシー】
本記事はInfra Academy編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。 編集ポリシーはこちら
ABOUT ME
たから
フリーランスIT講師/エンジニア。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900//サーティファイC言語/情報処理技術者 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営