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

【概要】Ubuntu 24.04 LTS で Samba によるファイルサーバを構築する手順を説明する。設定ファイル /etc/samba/smb.conf の編集と、smbpasswd コマンドによる Samba ユーザーの管理、testparm による設定確認、UFW でのポート開放までを扱う。

【目次】

  1. 前準備
  2. Sambaサーバのインストール
  3. Sambaサーバの設定

Samba は、Windows と互換性のあるファイル共有・プリンタ共有を行うソフトウェアである。Ubuntu 24.04 LTS の標準リポジトリには Samba 4.19 系が収録されており、SMB 3.1.1 までのプロトコルに対応する。Windows 10 や Windows 11 のクライアントから共有ディレクトリを利用できる。

前準備

Ubuntu のシステム更新

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

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

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

Sambaサーバのインストール

Ubuntu 24.04 LTS では、Samba サーバ本体である samba パッケージをインストールする。

sudo apt -y install samba

インストールしたバージョンは、次のコマンドで確認できる。

smbd --version

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

smb.conf は行単位のファイルである。コメントは行頭の # または ; で始める。設定を書いた行の後ろにコメントを付けると、その部分も設定値の一部として扱われるため、コメントは独立した行に書く。

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

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

[global]
   # Windowsクライアントと同じワークグループ名を指定する
   workgroup = WORKGROUP

   # ユーザー名とパスワードによる認証を行う
   security = user

   # ログファイル (%m はクライアントのマシン名に置き換わる)
   log file = /var/log/samba/log.%m
   # ログファイルの上限サイズ (KB)
   max log size = 1000
   # ログの詳細度。値を大きくすると出力が詳しくなる
   log level = 1

workgroup の値は、接続する Windows クライアントのワークグループ名に合わせる。security = user は、ユーザー名とパスワードによる認証を行う設定である。かつて存在した security = share は Samba 4.0 で削除されており、指定できない。

文字コードに関する設定は、既定値が unix charset = UTF-8 であり、Windows クライアントとの通信では UTF-16 が用いられるため、日本語のファイル名を扱う場合も通常は追加の設定を必要としない。

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

ファイル共有を行うディレクトリごとにセクションを作成する。セクション名がクライアントから見える共有名になる。ユーザーのホームディレクトリを共有する場合と、特定のディレクトリを共有する場合の設定例を以下に示す。

[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
   # 新規作成されるファイルのパーミッション
   create mask = 0644
   # 新規作成されるディレクトリのパーミッション
   directory mask = 0755

path に指定するディレクトリは、あらかじめ作成し、アクセスを許可するユーザーまたはグループが読み書きできるパーミッションを設定しておく。valid users を指定すると、そこに挙げたユーザーとグループだけがアクセスできる。

設定を書き終えたら、testparm コマンドで構文エラーの有無を確認する。

testparm

エラーが表示されなければ、Samba のサービスを再起動して設定を反映させる。ファイル共有を行う smbd と、NetBIOS 名前解決を行う nmbd の両方を再起動する。

sudo systemctl restart smbd nmbd

Sambaユーザーの作成と管理

security = user の設定では、Samba 用のパスワードを設定したユーザーだけが接続できる。Samba ユーザーは、システム上の既存のユーザーアカウントに対応している必要がある。

Samba ユーザーを追加してパスワードを設定するには、smbpasswd コマンドを使用する。username は既存のシステムユーザー名である。実行すると、Samba 用のパスワードの入力を求められる。

sudo smbpasswd -a username

Samba ユーザーを有効化するには sudo smbpasswd -e username、無効化するには sudo smbpasswd -d username、削除するには sudo smbpasswd -x username を実行する。システムのパスワード変更時に Samba のパスワードも合わせて更新するには、smb.conf[global] セクションに pam password change = yes を記述する。

ファイアウォール設定

外部のクライアントから接続するには、ファイアウォールで Samba が使用するポートを開放する。Samba は TCP 445TCP 139UDP 137UDP 138 を使用する。UFW を使用している場合は、次のコマンドでこれらのポートをまとめて開放できる。

sudo ufw allow Samba

設定後の状態は、次のコマンドで確認できる。

sudo ufw status