Linux Sambaとは?ファイル共有を徹底解説

Linux

「LinuxサーバーにWindowsからアクセスしたい…」

「家庭内LANでファイルを共有する方法が知りたい」

そんな要望を実現してくれるのが、Sambaです。

この記事では、Linux環境でSambaを使ったファイル共有の方法を、基礎から実践まで分かりやすく解説していきますね。


スポンサーリンク
  1. Sambaの基本を理解しよう
    1. Sambaって何?
    2. なぜSambaが必要なの?
    3. SMB/CIFSプロトコルとは
  2. Sambaのインストール方法
    1. Ubuntu/Debianでのインストール
    2. CentOS/RHELでのインストール
    3. サービスの起動と自動起動設定
  3. 設定ファイルの基本構造
    1. smb.confの場所
    2. 設定ファイルの構造
    3. 設定ファイルのバックアップ
  4. グローバル設定の詳細
    1. ワークグループの設定
    2. サーバー識別情報
    3. セキュリティレベル
    4. ログ設定
  5. ユーザー管理の基本
    1. Sambaユーザーの作成
    2. ユーザーの有効化と無効化
    3. ユーザーの削除
    4. ユーザー一覧の確認
  6. 共有フォルダの設定
    1. 基本的な共有設定
    2. パラメータの意味
  7. 読み取り専用共有の設定
    1. パブリック読み取り専用共有
    2. 特定ユーザーのみ書き込み可能
  8. プライベート共有の設定
    1. 個人専用フォルダ
    2. 特定ユーザー専用共有
  9. 設定の適用とテスト
    1. 設定ファイルの構文チェック
    2. Sambaサービスの再起動
    3. ローカルでの接続テスト
  10. Windowsからの接続方法
    1. エクスプローラーからの接続
    2. ネットワークドライブの割り当て
  11. Macからの接続方法
    1. Finderからの接続
  12. ファイアウォールの設定
    1. 必要なポート
    2. ufwでの設定(Ubuntu/Debian)
    3. firewalldでの設定(CentOS/RHEL)
  13. アクセス権限の詳細設定
    1. Linuxファイル権限との関係
    2. グループベースの権限管理
    3. force user / force group
  14. パフォーマンス最適化
    1. ソケットオプション
    2. 読み書きサイズの調整
    3. ディスクキャッシュの活用
  15. セキュリティ強化
    1. アクセス制限
    2. 暗号化の有効化
    3. 監査ログの設定
  16. トラブルシューティング
    1. 接続できない場合
    2. 認証エラーの解決
    3. ログの確認方法
  17. まとめ: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の理解が深まっていきますよ。

コメント

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