「LinuxサーバーにWindowsからアクセスしたい…」
「家庭内LANでファイルを共有する方法が知りたい」
そんな要望を実現してくれるのが、Sambaです。
この記事では、Linux環境でSambaを使ったファイル共有の方法を、基礎から実践まで分かりやすく解説していきますね。
Sambaの基本を理解しよう

Sambaって何?
Sambaは、Linux上でWindowsのファイル共有機能を実現するオープンソースソフトウェアです。
SMB/CIFSというプロトコル(通信規約)を使って、異なるOS間でのファイル共有を可能にします。
Windows、Mac、Linuxなど、様々なOSから同じファイルにアクセスできるんですね。
なぜSambaが必要なの?
企業や家庭で、複数のOSが混在する環境は珍しくありません。
混在環境での利便性
LinuxサーバーをWindowsから普通のネットワークドライブとして使えます。
コスト削減
高価なWindows Serverの代わりに、無料のLinuxとSambaで同等の機能を実現できますね。
互換性
既存のWindowsネットワークにシームレスに統合できます。
柔軟性
細かい権限設定や、高度なカスタマイズが可能なんです。
SMB/CIFSプロトコルとは
SMB(Server Message Block)は、Windowsのファイル共有で使われる標準プロトコルです。
CIFS(Common Internet File System)は、SMBの拡張版として開発されました。
現在では、SMB 2.0、SMB 3.0と進化を続けており、Sambaもこれらに対応していますよ。
Sambaのインストール方法
Ubuntu/Debianでのインストール
パッケージマネージャーを使って簡単にインストールできます。
ステップ1:パッケージ情報の更新
sudo apt update
最新のパッケージ情報を取得します。
ステップ2:Sambaのインストール
sudo apt install samba samba-common-bin
必要なパッケージが自動的にインストールされますね。
ステップ3:インストールの確認
samba --version
バージョン情報が表示されれば、インストール成功です。
CentOS/RHELでのインストール
Red Hat系のディストリビューションでも同様に簡単です。
sudo yum install samba samba-client samba-common
または、CentOS 8以降では:
sudo dnf install samba samba-client samba-common
サービスの起動と自動起動設定
インストール後、Sambaサービスを起動しましょう。
sudo systemctl start smbd
sudo systemctl enable smbd
enableコマンドで、システム起動時に自動的にSambaが起動するようになります。
状態確認は以下のコマンドです:
sudo systemctl status smbd
「active (running)」と表示されていればOKですね。
設定ファイルの基本構造
smb.confの場所
Sambaの設定ファイルは、通常以下の場所にあります:
/etc/samba/smb.conf
このファイルを編集することで、共有設定をカスタマイズできるんです。
設定ファイルの構造
smb.confは、セクションとパラメータで構成されています。
グローバルセクション
[global]
workgroup = WORKGROUP
server string = Samba Server
security = user
サーバー全体に適用される設定を記述します。
共有セクション
[share_name]
path = /path/to/directory
browseable = yes
read only = no
各共有フォルダの設定を記述しますね。
設定ファイルのバックアップ
編集前に必ずバックアップを取りましょう。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
何か問題が起きても、元に戻せるようにしておくのが安全です。
グローバル設定の詳細
ワークグループの設定
Windowsネットワークのワークグループ名を指定します。
[global]
workgroup = WORKGROUP
Windows側と同じ名前にすることで、ネットワーク上で発見しやすくなりますね。
サーバー識別情報
ネットワーク上でどのように表示されるかを設定します。
server string = File Server %v
netbios name = FILESERVER
%vはSambaのバージョンを表示する変数です。
セキュリティレベル
認証方式を指定する重要な設定です。
security = user
主な設定値:
user:ユーザー名とパスワードで認証(推奨)share:共有単位で認証(非推奨)
現代では、userレベルが標準的ですよ。
ログ設定
トラブルシューティングに役立つログの設定です。
log file = /var/log/samba/log.%m
max log size = 1000
log level = 1
%mは接続元のマシン名を表します。
ログレベルを上げると、詳細な情報が記録されますね。
ユーザー管理の基本

Sambaユーザーの作成
Sambaは独自のユーザーデータベースを持っています。
ステップ1:Linuxユーザーの作成
sudo useradd -M -s /sbin/nologin sambauser
-Mはホームディレクトリを作成しない、-s /sbin/nologinはログインシェルを無効にするオプションです。
ステップ2:Sambaパスワードの設定
sudo smbpasswd -a sambauser
パスワードを2回入力すると、Sambaユーザーとして登録されます。
ユーザーの有効化と無効化
一時的にアクセスを制限したい場合に便利です。
無効化:
sudo smbpasswd -d sambauser
有効化:
sudo smbpasswd -e sambauser
アカウントを削除せずに、アクセス制御ができますね。
ユーザーの削除
不要になったユーザーを削除します。
sudo smbpasswd -x sambauser
Linuxユーザーも削除する場合は:
sudo userdel sambauser
ユーザー一覧の確認
登録されているSambaユーザーを確認できます。
sudo pdbedit -L
ユーザー名とUID(ユーザーID)が表示されますよ。
共有フォルダの設定
基本的な共有設定
シンプルな共有フォルダを作成してみましょう。
ステップ1:共有ディレクトリの作成
sudo mkdir -p /srv/samba/shared
sudo chmod 2775 /srv/samba/shared
sudo chown root:sambashare /srv/samba/shared
適切な権限設定が重要です。
ステップ2:smb.confへの追加
[Shared]
path = /srv/samba/shared
browseable = yes
read only = no
guest ok = no
valid users = @sambashare
create mask = 0660
directory mask = 0770
この設定により、sambaShareグループのメンバーだけがアクセスできますね。
パラメータの意味
各パラメータの役割を理解しましょう。
path
共有するディレクトリのパスを指定します。
browseable
ネットワーク上で共有が見えるかどうかを設定しますね。
yesで一覧に表示、noで非表示になります。
read only
読み取り専用かどうかを指定します。
noにすると、書き込みも可能です。
valid users
アクセスを許可するユーザーやグループを指定できます。
@を付けるとグループ指定になりますよ。
create mask / directory mask
新規作成されるファイルやディレクトリの権限を設定します。
読み取り専用共有の設定
パブリック読み取り専用共有
誰でもアクセスできるが、変更はできない共有です。
[Public]
path = /srv/samba/public
browseable = yes
read only = yes
guest ok = yes
ゲストアクセスを許可しているため、認証なしでアクセスできますね。
特定ユーザーのみ書き込み可能
基本は読み取り専用だが、一部のユーザーは書き込めるようにする設定です。
[Documents]
path = /srv/samba/documents
browseable = yes
read only = yes
write list = admin, @editors
write listで指定したユーザーやグループは、書き込みができます。
プライベート共有の設定
個人専用フォルダ
各ユーザーが自分専用のフォルダを持つ設定です。
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
[homes]は特別なセクション名で、ユーザーごとのホームディレクトリを自動的に共有します。
%Sは接続中のユーザー名に置き換わる変数ですね。
特定ユーザー専用共有
特定のユーザーのみがアクセスできる共有です。
[Private]
path = /srv/samba/private
browseable = no
read only = no
valid users = john
browseable = noにすることで、ネットワーク上で共有が見えなくなります。
直接パスを指定すればアクセスできますよ。
設定の適用とテスト
設定ファイルの構文チェック
設定を反映する前に、構文エラーがないか確認しましょう。
testparm
エラーがあれば、該当行が表示されます。
警告が表示される場合もありますが、多くは問題ありません。
Sambaサービスの再起動
設定を反映させるには、サービスの再起動が必要です。
sudo systemctl restart smbd
設定ファイルを読み込み直して、新しい設定が有効になりますね。
ローカルでの接続テスト
Linuxマシン自体から接続テストできます。
smbclient -L localhost -U sambauser
共有リストが表示されれば、設定は正しく動作しています。
特定の共有に接続するには:
smbclient //localhost/Shared -U sambauser
コマンドラインでファイル操作が可能ですよ。
Windowsからの接続方法
エクスプローラーからの接続
Windowsの標準機能で簡単に接続できます。
ステップ1:ネットワークの表示
エクスプローラーを開いて、アドレスバーに以下を入力します:
\\192.168.1.100
IPアドレスは、Sambaサーバーのアドレスに置き換えてください。
ステップ2:認証
ユーザー名とパスワードを入力するダイアログが表示されます。
Sambaで設定したユーザー名とパスワードを入力しましょう。
ステップ3:共有フォルダへのアクセス
認証が成功すると、共有フォルダの一覧が表示されますね。
ダブルクリックでフォルダを開いて、通常のファイル操作ができます。
ネットワークドライブの割り当て
頻繁にアクセスする共有は、ドライブとして登録すると便利です。
手順:
エクスプローラーで「PC」を右クリックし、「ネットワークドライブの割り当て」を選択します。
ドライブ文字(例:Z:)を選び、フォルダーに以下を入力してください:
\\192.168.1.100\Shared
「ログオン時に再接続する」にチェックを入れると、再起動後も自動的に接続されます。
「別の資格情報を使用して接続する」にチェックを入れて、認証情報を入力しましょう。
Macからの接続方法

Finderからの接続
Macでも簡単にSamba共有に接続できます。
ステップ1:サーバーへ接続
Finderを開いて、メニューバーから「移動」→「サーバへ接続」を選択します。
または、Command + K のショートカットキーを使えますね。
ステップ2:サーバーアドレスの入力
以下の形式でアドレスを入力してください:
smb://192.168.1.100
「接続」ボタンをクリックします。
ステップ3:認証と共有選択
ユーザー名とパスワードを入力します。
接続可能な共有の一覧が表示されるので、目的の共有を選択しましょう。
Finderのサイドバーに共有が追加され、通常のフォルダと同じように使えますよ。
ファイアウォールの設定
必要なポート
Sambaは、以下のポートを使用します。
- TCP 139:NetBIOS セッションサービス
- TCP 445:Microsoft-DS(SMB over TCP)
- UDP 137:NetBIOS ネームサービス
- UDP 138:NetBIOS データグラムサービス
これらのポートを開放する必要がありますね。
ufwでの設定(Ubuntu/Debian)
sudo ufw allow samba
このコマンドで、Sambaに必要なすべてのポートが開放されます。
個別に指定する場合は:
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
sudo ufw allow 137/udp
sudo ufw allow 138/udp
firewalldでの設定(CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
--permanentオプションで、再起動後も設定が維持されます。
確認は以下のコマンドです:
sudo firewall-cmd --list-services
「samba」が表示されていればOKですね。
アクセス権限の詳細設定
Linuxファイル権限との関係
Sambaは、Linux本来のファイル権限も尊重します。
両方の権限が適切に設定されている必要があるんです。
例:
Sambaで書き込み許可があっても、Linuxファイル権限が読み取り専用なら書き込めません。
逆も同様で、両方が許可している場合のみ、実際に書き込みが可能になりますね。
グループベースの権限管理
効率的な権限管理には、グループの活用が効果的です。
Linuxグループの作成
sudo groupadd sambashare
ユーザーをグループに追加
sudo usermod -aG sambashare sambauser
ディレクトリのグループ所有権を変更
sudo chgrp sambashare /srv/samba/shared
これで、グループ単位での権限管理が可能になります。
force user / force group
すべてのファイル操作を特定のユーザー/グループとして実行させる設定です。
[Shared]
path = /srv/samba/shared
force user = smbuser
force group = sambashare
create mask = 0664
directory mask = 0775
権限管理がシンプルになる反面、セキュリティには注意が必要ですね。
パフォーマンス最適化
ソケットオプション
ネットワークパフォーマンスを向上させる設定です。
[global]
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
これにより、通信の遅延が減少し、スループットが向上します。
読み書きサイズの調整
一度に転送するデータサイズを最適化できます。
[global]
read raw = yes
write raw = yes
max xmit = 65535
大きなファイルの転送速度が改善されますね。
ディスクキャッシュの活用
ディスクI/Oを効率化する設定です。
[Shared]
strict allocate = yes
read raw = yes
write cache size = 262144
特に連続した読み書きで効果を発揮しますよ。
セキュリティ強化
アクセス制限
特定のIPアドレスやネットワークからのみアクセスを許可できます。
[global]
hosts allow = 192.168.1. 127.
hosts deny = ALL
この設定で、192.168.1.x からのアクセスのみ許可されます。
暗号化の有効化
SMB 3.0以降では、通信の暗号化がサポートされています。
[global]
server min protocol = SMB3
server signing = mandatory
smb encrypt = required
機密性の高いデータを扱う場合は、必ず暗号化を有効にしましょう。
監査ログの設定
ファイルアクセスを詳細に記録できます。
[Shared]
vfs objects = full_audit
full_audit:prefix = %u|%I|%S
full_audit:success = open opendir write unlink rename
full_audit:failure = all
誰がいつ何にアクセスしたか、詳細なログが残りますね。
トラブルシューティング

接続できない場合
まず基本的な確認から始めましょう。
サービスの状態確認
sudo systemctl status smbd
サービスが起動していない場合は起動してください。
ファイアウォールの確認
sudo ufw status
必要なポートが開放されているか確認しましょう。
接続テスト
ping 192.168.1.100
ネットワーク接続自体に問題がないか確認します。
認証エラーの解決
ユーザー名やパスワードが正しいか再確認してください。
Sambaユーザーの確認
sudo pdbedit -L
ユーザーが登録されているか確認できますね。
パスワードの再設定
sudo smbpasswd sambauser
パスワードを再設定してみましょう。
ログの確認方法
詳細なエラー情報は、ログファイルで確認できます。
sudo tail -f /var/log/samba/log.smbd
リアルタイムでログを監視できます。
特定のクライアントのログを見る場合:
sudo less /var/log/samba/log.192.168.1.50
IPアドレスごとにログファイルが作成されますよ。
まとめ:Sambaで快適なファイル共有を
Linux上でSambaを使えば、異なるOS間で簡単にファイル共有ができます。
適切な設定とセキュリティ対策で、安全で便利な共有環境を構築できますね。
この記事の重要ポイント:
- SambaはLinuxでWindowsファイル共有を実現するソフトウェア
- smb.confで詳細な設定をカスタマイズできる
- ユーザー管理とアクセス権限の設定が重要
- Windows、Macから簡単に接続可能
- ファイアウォールで必要なポートを開放する
- パフォーマンス最適化で転送速度を向上
- セキュリティ設定で安全性を確保
- ログ確認でトラブルシューティングが可能
まずは基本的な共有設定から始めて、徐々に高度な機能を追加していきましょう。
実際に使いながら学ぶことで、Sambaの理解が深まっていきますよ。

コメント