こんにちは、InfraAcademyを運営しているryuです。
今回は、Sambaを使ってLinuxとWindowsの間でファイルを共有する方法を初心者向けに解説します。
Linuxサーバーで作ったファイルをWindowsから開きたいとき、毎回SCPでコピーしたり、USBメモリへ移したりするのは少し面倒です。そんなときに使えるのがSambaです。
Sambaを使うと、Linux上のディレクトリをWindowsの共有フォルダーのように公開できます。Windowsのエクスプローラーから \\サーバーのIPアドレス\共有名 と入力すれば、普段のファイルサーバーに近い感覚でアクセスできます。
元の記事では、共有ディレクトリを chmod 777 にし、ゲストアクセスを許可する構成を紹介していました。ただ、学習用であっても最初から誰でも書き込める共有を作る必要はありません。
今回はUbuntuを例に、Sambaユーザーで認証してアクセスする、もう少し安全で実用的な構成を作っていきます。
Sambaとは?¶
Sambaは、LinuxやUnix系OSからWindowsで使われているSMBプロトコルを利用できるようにするソフトウェアです。
代表的な使い方はファイル共有です。LinuxサーバーにSambaを入れると、WindowsからLinux上の共有ディレクトリへアクセスできるようになります。
SambaにはActive Directoryのドメインコントローラーとして動作する機能などもありますが、この記事ではファイル共有に絞って解説します。
今回作る環境¶
今回は、Linux側に /srv/samba/share という共有ディレクトリを作ります。Windowsからは share という名前でアクセスできるようにします。
利用するSambaユーザーは testuser とします。
大きな流れは次のとおりです。
- Sambaをインストールする
- Linuxユーザーと共有用グループを作る
- 共有ディレクトリを作る
- Sambaユーザーを登録する
smb.confに共有設定を書く- 設定を確認してSambaを再起動する
- Windowsから接続する
一つずつ進めていきましょう。
Sambaをインストールする¶
Ubuntuでは、samba パッケージをインストールします。
まずパッケージ情報を更新します。
sudo apt update
続いてSambaをインストールします。
sudo apt install samba
元記事では apt-get を使っていましたが、現在のUbuntuで手動操作する場合は apt を使って問題ありません。

インストール後は、バージョンを確認してみましょう。
samba --version

バージョン情報が表示されれば、Sambaを利用する準備ができています。
Linuxユーザーと共有用グループを作る¶
Sambaでユーザー認証を行う場合、まずLinux側にユーザーが必要です。
今回は testuser を作成します。
sudo adduser testuser
続いて、共有ディレクトリへアクセスするユーザーをまとめるために sambashare グループを作ります。
sudo groupadd sambashare
作成した testuser を sambashare グループへ追加します。
sudo usermod -aG sambashare testuser
すでに同名のユーザーやグループが存在する場合は、新しく作り直す必要はありません。既存の環境に合わせて読み替えてください。
共有ディレクトリを作る¶
Sambaで公開するディレクトリを作成します。
今回は /srv/samba/share を利用します。
sudo mkdir -p /srv/samba/share
/srv は、サーバーが提供するデータを配置するときに使われるディレクトリの一つです。ホームディレクトリ配下でも共有できますが、今回はファイルサーバー用の領域として分かりやすい場所に作ります。
続いて、共有ディレクトリのグループを sambashare にします。
sudo chown root:sambashare /srv/samba/share
グループのメンバーが読み書きできるように、権限を設定します。
sudo chmod 2770 /srv/samba/share
ここで 777 にしていないことがポイントです。
777 にすると、所有者・グループ・その他のユーザー全員へ読み取り、書き込み、実行権限を与えます。とりあえず動かすために広すぎる権限を設定するのではなく、必要なユーザーだけに権限を与える方が安全です。
先頭の 2 はSGIDを表します。共有ディレクトリ内で新しく作成したファイルやディレクトリに、共有用グループを引き継ぎやすくするために設定しています。
Linuxの権限がまだ分からない場合は、こちらの記事も参考にしてください。
Linuxのファイル権限とは?chmodの数字・rwxを初心者向けに解説
Sambaユーザーを登録する¶
Linuxユーザーを作っただけでは、そのままSambaの認証に使えるわけではありません。Samba側の認証データベースにもユーザーを登録します。
testuser を追加する場合は、次のコマンドを実行します。
sudo smbpasswd -a testuser
Sambaで利用するパスワードの入力を求められるので、画面に従って設定してください。

ここで設定するSambaパスワードは、Linuxへログインするときのパスワードと同じである必要はありません。
つまり、ユーザー名は同じでも、Linuxの認証とSambaの認証は別に管理されます。初心者には少し分かりにくい部分ですが、Sambaのユーザーを追加するときは、先に同じ名前のLinuxユーザーが必要だと覚えておきましょう。
smb.confに共有設定を追加する¶
Sambaの主な設定ファイルは /etc/samba/smb.conf です。
設定を変更する前に、念のためバックアップを作っておきます。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
続いて設定ファイルを開きます。初心者なら nano を使うと編集しやすいです。
sudo nano /etc/samba/smb.conf
ファイルの一番下に、次の設定を追加します。
[share]
comment = Samba Share
path = /srv/samba/share
browsable = yes
read only = no
guest ok = no
valid users = @sambashare
force group = sambashare
create mask = 0660
directory mask = 2770
それぞれの意味を確認してみましょう。
| 設定 | 意味 |
|---|---|
[share] |
Windowsから見える共有名 |
path |
Linux上で共有するディレクトリ |
browsable |
ネットワーク上で共有を表示できるようにする |
read only = no |
書き込みを許可する |
guest ok = no |
ゲストによる匿名アクセスを許可しない |
valid users |
接続を許可するユーザー・グループ |
force group |
作成ファイルのグループをそろえる |
create mask |
新規ファイルの権限 |
directory mask |
新規ディレクトリの権限 |
今回は @sambashare としているため、sambashare グループのメンバーだけが共有へアクセスできます。
設定ミスがないかtestparmで確認する¶
Sambaを再起動する前に、設定ファイルの文法を確認しましょう。
Sambaには testparm という設定確認コマンドがあります。
testparm
設定ファイルに大きな問題がなければ、設定内容が読み込まれます。
設定を書き換えるたびにサービスを再起動するより、先に testparm で確認する習慣を付けておくとトラブルを減らせます。
Sambaを再起動する¶
設定が問題なければ、Sambaのファイル共有サービスを再起動します。
sudo systemctl restart smbd
正常に起動しているか確認する場合は、次のコマンドを使います。
sudo systemctl status smbd
active (running) と表示されていれば、Sambaのサービスは動いています。
環境によっては名前解決などで nmbd も利用しますが、IPアドレスを直接指定して接続するだけなら、まず smbd の動作を確認すれば十分です。
UFWを使っている場合はSamba通信を許可する¶
UbuntuでUFWを有効にしている場合、ファイアウォールでSamba通信が遮断されている可能性があります。
Samba用のルールを許可する場合は、次のコマンドを利用できます。
sudo ufw allow samba
現在の状態は次のコマンドで確認できます。
sudo ufw status
ファイアウォールを使っていない場合は、この設定を行う必要はありません。
ただし、Sambaの共有をインターネットへ直接公開する構成は避けてください。基本的には社内LANや自宅の検証ネットワークなど、必要な範囲だけで利用します。
WindowsからLinuxの共有フォルダーへアクセスする¶
Linux側の設定が終わったら、Windowsから接続してみましょう。
まずLinuxサーバーのIPアドレスを確認します。
ip addr
例えばLinuxサーバーのIPアドレスが 192.168.1.100 なら、Windowsのエクスプローラーのアドレス欄へ次のように入力します。
\\192.168.1.100\share

認証画面が表示されたら、先ほどSambaへ登録した testuser とSambaパスワードを入力します。
共有フォルダーが表示されたら、Windows側からテスト用のファイルを1つ作成してみましょう。そのファイルがLinux側の /srv/samba/share に作成されていれば、ファイル共有は成功です。
Windowsから接続できないときの確認ポイント¶
Sambaは、設定ファイル、Linuxの権限、Sambaユーザー、ネットワークのどこか一つでも合っていないと接続できません。
接続できない場合は、順番に確認すると原因を切り分けやすくなります。
まずSambaサービスが動いているか確認します。
sudo systemctl status smbd
続いて設定ファイルを確認します。
testparm
共有ディレクトリの権限も確認します。
ls -ld /srv/samba/share
Sambaユーザーが登録されているか確認する場合は、次のコマンドを利用できます。
sudo pdbedit -L
最後に、WindowsからLinuxのIPアドレスへ通信できるか、ファイアウォールで遮断されていないかを確認します。
一度に設定を全部変更するのではなく、サービス、設定、権限、ネットワークの順番で見ていくと原因を見つけやすくなります。
SMB1を有効にする必要はある?¶
古いNASや非常に古いWindowsとの接続方法を調べると、SMB1を有効にする手順が見つかることがあります。
現在のSambaでは、通常はSMB2以降を利用できるため、新しい環境でSMB1をわざわざ有効にする必要はありません。SMB1は古いプロトコルなので、互換性だけを理由に安易に戻さない方がよいでしょう。
接続できないときは、まずWindowsとSambaのバージョン、認証設定、ファイアウォールなどを確認してください。
Sambaの仕組みを理解するとLinuxの勉強にもなる¶
Sambaを構築すると、ファイル共有だけでなくLinuxのさまざまな基礎が登場します。
今回だけでも、ユーザー、グループ、パーミッション、サービス、IPアドレス、ファイアウォールを使いました。
Linuxコマンドを一つずつ暗記するよりも、実際にファイルサーバーを作りながら学ぶと、なぜそのコマンドが必要なのか分かりやすくなります。
InfraAcademyでは、Linuxやネットワーク、サーバー構築を、ブラウザ上で操作しながら段階的に学習できます。
LinuxとWindowsでファイル共有する方法まとめ¶
今回は、Sambaを使ってLinuxとWindowsの間でファイル共有する方法を解説しました。
基本的な流れは、Sambaをインストールし、LinuxユーザーとSambaユーザーを用意して、/etc/samba/smb.conf に共有設定を追加します。その後、testparm で設定を確認し、smbd を再起動すればWindowsから接続できます。
元記事では chmod 777 とゲスト共有を使っていましたが、初心者向けの学習でも必要なユーザーだけにアクセスを許可する構成から覚える方がおすすめです。
Sambaを構築すると、Linuxの権限管理やネットワークの仕組みも一緒に学べます。コマンドを実際に入力しながら、Windowsからファイルが見えるところまで試してみてください。




