Samba サーバのインストールと設定(Ubuntu 上)

Ubuntu 24.04 LTSでのSambaファイルサーバ構築はsmb.confとsmbpasswdコマンドで行う。GUIツールsystem-config-sambaは非推奨。セキュリティのため,ユーザー認証が推奨される。Sambaユーザー管理とファイアウォール設定も重要。

Samba とは Windows 互換のファイルサーバ/プリントサーバのソフトウェアである。Ubuntu 24.04 LTSにはバージョン4.19.5が標準で搭載され、Windows 11などとのファイル共有においてSMBプロトコルバージョン3.1.1まで対応しており、互換性を保っている。

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する。

Ubuntu のインストールは別ページ »で説明する。

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now

Sambaサーバのインストール

Ubuntu 24.04 LTS では、Sambaサーバ本体である samba パッケージをインストールする。インストール後、samba --version コマンドでバージョンを確認できる。

sudo apt -y install samba

Sambaサーバの設定

Sambaの設定は、設定ファイル /etc/samba/smb.conf を編集して行うのが一般的である。GUIツール system-config-samba はUbuntu 24.04 LTSの標準リポジトリには含まれておらず非推奨のため、ここでは設定ファイルを直接編集する方法を説明する。

/etc/samba/smb.conf の編集

root権限でテキストエディタを用いて /etc/samba/smb.conf を開く。

sudo nano /etc/samba/smb.conf

全体設定 ([global] セクション)

ファイルの冒頭にある [global] セクションで、Sambaサーバ全体の動作に関する設定を行う。以下の設定は基本的な例である。

[global]
   workgroup = WORKGROUP  ; Windowsクライアントと同じワークグループ名に設定する
   security = user        ; ユーザー認証を使用する (推奨)
   # security = share     ; 非推奨のため使用しない

   log file = /var/log/samba/log.%m  ; ログファイル (%mはクライアントマシン名に置換)
   max log size = 1000
   log level = 1          ; 通常運用に推奨されるログレベル。問題調査時は3に上げる。

   # 文字コード関連の設定は、新しいSambaバージョンでは多くの場合不要または自動設定される
   # unix charset = UTF-8  ; 日本語ファイル名の互換性向上に役立つ場合がある
   # dos charset = CP932
   # display charset = UTF-8

workgroup の値は、接続するWindowsクライアントのワークグループ名に合わせる必要がある。security = user は、Samba独自のユーザー認証を行う設定であり、現在のSambaでの推奨設定である。非推奨となった security = share は使用しない。unix charset = UTF-8 は日本語ファイル名の互換性向上に役立つ場合がある。

共有設定 (共有するディレクトリごとにセクションを作成)

ファイル共有を行うディレクトリごとに新しいセクションを作成する。セクション名は共有名となる。例えば、ユーザーのホームディレクトリを共有する場合や、特定のディレクトリを共有する場合の設定例を以下に示す。

[homes]
   comment = Home Directories
   browseable = no        ; 共有一覧に表示しない
   writable = yes         ; 書き込みを許可
   valid users = %S       ; 接続ユーザーのシステムユーザー名と一致する場合のみアクセス許可

[shared_folder]
   comment = Shared Folder
   path = /path/to/your/shared/folder ; 共有する実際のディレクトリパスを指定
   browseable = yes       ; 共有一覧に表示する
   writable = yes         ; 書き込みを許可
   guest ok = no          ; ゲストからのアクセスを許可しない (セキュリティ向上のため推奨)
   valid users = user1 user2 @groupname ; アクセスを許可するユーザーまたはグループを指定することでセキュリティが強化される
   # force create mode = 0644 ; 新規作成されるファイルのパーミッションを統一
   # force directory mode = 0755 ; 新規作成されるディレクトリのパーミッションを統一

設定後は、設定ファイルに構文エラーがないか testparm コマンドで確認することを強く推奨する。

testparm

エラーがなければ、Sambaサービスを再起動して設定を反映させる。smbdnmbd 両方のサービスを再起動する必要がある。

sudo systemctl restart smbd nmbd

Sambaユーザーの作成と管理

security = user 設定を使用する場合、Sambaで認証するためのユーザーアカウントを作成し、パスワードを設定する必要がある。Sambaユーザーは、システム上のユーザーアカウントとして存在している必要がある。

新しいSambaユーザーを追加しパスワードを設定するには smbpasswd コマンドを使用する。

sudo smbpasswd -a username

ここで username は既存のシステムユーザー名である。このコマンドを実行すると、そのSambaユーザー用のパスワードを設定するよう求められる。

Sambaユーザーを有効化するには smbpasswd -e username 、無効化するには smbpasswd -d username 、削除するには smbpasswd -x username コマンドを使用する。システムパスワード変更時にSambaパスワードも自動的に更新したい場合は、smb.conf[global] セクションに pam password change = yes を設定する。

ファイアウォール設定

Sambaが正しく機能するためには、ファイアウォール(例: UFW)で必要なポート(TCP 445, 139, UDP 137, 138など)を開放する必要がある。UFWを使用している場合、sudo ufw allow Samba コマンドでSamba関連のすべてのポートを一度に開放できる。環境に応じてファイアウォール設定を確認するべきである。