Sambaの設定とiPad連携

環境構築
Linux
Author

Ryo Nakagami

Published

2025-09-05

Modified

2025-09-05

Sambaでできること

Definition 1 Samba

  • LinuxホストをMicrosoftネットワークに参加できるようにするソフトウェア

Sambaを使うことで,次のような機能が実現できます.

カテゴリ 機能 説明
ファイル共有 ディレクトリ共有 Windows から Linux/Unix のディレクトリにアクセス可能.読み取り専用/書き込み可の権限設定が可能・
ファイルアクセス制御 ユーザー・グループごとのアクセス権を設定可能。
プリンタ共有 プリンタ共有 Linux/Unix に接続されたプリンタを Windows から利用可能.
複数ユーザー対応 複数ユーザーでの共有プリンタ環境を構築可能.
プリンタドライバーの配布 Samba サーバに Windows 用プリンタドライバーを置いておくと,クライアント側で共有プリンタに接続するだけで自動インストールできる
ADメンバーサーバー ドメイン参加 Active Directoryを構成するメンバーサーバーになることが可能
ドメインコントローラ Samba を AD 互換ドメインコントローラとして利用可能.ユーザー認証・グループ管理・ポリシー管理が可能.
Kerberos 認証対応 シングルサインオン(SSO)で共有アクセスが可能
バックアップ・サーバ ファイルサーバ機能 ネットワーク経由でバックアップやファイル共有が可能.
自動バックアップ rsync や cron と組み合わせて自動バックアップが可能.
ホームディレクトリ提供 ユーザーごとのホームディレクトリ Windows ユーザーごとに自動マウント可能.
アクセスログ・監査 ログ取得 どのユーザーがいつアクセスしたかのログを取得可能。監査やセキュリティ対策に活用可能。

Sambaのインストール

apt経由で samba パッケージをインストールします

# install
% sudo apt install -y samba

# version check
% samba --version
Version 4.19.5-Ubuntu

samba は,ファイルサーバー,プリントサーバー,ユーザー管理を担うsmbdデーモン,名前解決を担うnmbdデーモンから構成されます. ファイヤーウォールを使っている場合は,Sambaを利用できるように次のような設定をします

% sudo ufw allow samba
Rule added
Rule added (v6)

tailscaleを導入している場合は,tailscaleについてのファイヤーウォールを実施するだけでOKです.

% sudo ufw allow in on tailscale0
Samba運用上の注意
  • Samba サーバーは基本的に LAN 内での運用を前提(=企業や家庭内ネットワークなど,閉じたネットワークでの利用が基本)
  • インターネットサーバー上での動作は推奨されない
  • ADが使えるとはいえ,Windows Serverで実現できるすべての機能が実装されているわけではない

各デーモンに対応する systemctl サービス

構成要素 担当機能 systemctl サービス名
smbd ファイル共有・プリント共有・ユーザー認証 smbd
nmbd 名前解決 nmbd

Sambaの制御

サービス / デーモン 役割 コマンド
smbd ファイル共有・プリンタ共有・ユーザー認証 起動: sudo systemctl start smbd
停止: sudo systemctl stop smbd
再起動: sudo systemctl restart smbd
自動起動有効: sudo systemctl enable smbd
自動起動無効: sudo systemctl disable smbd
状態確認: sudo systemctl status smbd
nmbd 名前解決 起動: sudo systemctl start nmbd
停止: sudo systemctl stop nmbd
再起動: sudo systemctl restart nmbd
自動起動有効: sudo systemctl enable nmbd
自動起動無効: sudo systemctl disable nmbd
状態確認: sudo systemctl status nmbd
samba Samba AD DC サービス(AD ドメインコントローラ運用時) 起動: sudo systemctl start samba
停止: sudo systemctl stop samba
再起動: sudo systemctl restart samba
自動起動有効: sudo systemctl enable samba
自動起動無効: sudo systemctl disable samba
状態確認: sudo systemctl status samba

Sambaの設定

Samba設定の基本
  • Sambaの主な設定は /etc/samba/smb.conf に記述する
  • smb.conf は大きく分けて [Global Settings][Share Definitions] の2つから構成される
  • [Global Settings]: Sambaサーバーの全般的な設定をする部分.この部分を変更した場合はSambaサーバーの再起動が必要
  • [Share Definitions]: ファイル共有やプリンター共有を設定する部分

/etc/samba/smb.conf を編集するときは sudo cp -a smb.conf smb.conf.default なり .bak 拡張子を用いてバックアップをしておくと安全です.

smb.conf Syntax

parameter = value
# commentout line begins with # or ;

globalの設定項目

項目 説明
workgroup Windows ネットワーク上のワークグループ名を指定 WORKGROUP
server string サーバーの説明文(ネットワークブラウザに表示される) Samba Server
log file ログファイルの出力場所 /var/log/samba/log.%m
max log size ログファイルの最大サイズ (KB) 1000
server role サーバーの役割.ファイルサーバーとして使う場合はstandalone server standalone server / member server / active directory domain controller
passdb backend ユーザー認証DBの指定 tdbsam / ldapsam
unix password sync Sambaユーザーアカウントのpassword変更をLinuxユーザーアカウントのpasswordにも反映 yes / no
passwd program Samba がパスワード変更要求を受けた際に,実行するコマンドを指定する /usr/bin/passwd %u
passwd chat passwd program とやり取りする際の「対話プロンプトと応答パターン」を定義する *New*password* %n\n *Retype*new*password* %n\n *password*updated*successfully*
pam password change 有効にすると,password変更にpasswd program に指定したコマンドではなくPAMを利用する yes / no

Share Deinitionの設定項目

項目 説明
path 実際に公開するディレクトリの絶対パス /srv/samba/public
comment ネットワークブラウザに表示される説明文 Public Share
browseable ネットワークブラウザに表示するか yes / no
read only 読み取り専用にするか yes / no
writable read only の逆指定(同義語) yes
guest ok 認証なしでアクセスできるか yes / no
valid users アクセスを許可するユーザー/グループ %S とすればhome directoryのユーザーのみが自身のhome directoryにアクセスできる
invalid users アクセスを拒否するユーザー/グループ @nogroup user2
create mask 新規ファイル作成時のパーミッションマスク 0644
directory mask 新規ディレクトリ作成時のパーミッションマスク 0755
public guest ok の別名 yes / no
locking ファイルロックの使用有無 yes
printable プリンタ共有として扱うか no(通常のフォルダ共有なら)

構文チェック

testparm コマンドを用いることでconfigファイルの構文チェックをすることができます

% testparm -s
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
...
オプション 説明 例 / 補足
-s 短い形式で表示(冗長な情報を省略し、主要な設定のみを出力) testparm -s
-v 詳細表示(全設定、コメントやデフォルト値も含む) testparm -v

共有の作成

iPadからtailscale経由でアクセス可能な共有ディレクトリを指定したいと思います.

[server-hdd]
comment = 2TB sized hdd
path = /media/kirby/DATA/
browsable = yes
writable = yes
guest ok = no
printable = no
valid users = dedede kirby

と指定すると server-hdd を共有名として path を公開することができます.設定が完了したら

% sudo systemctl restart smbd

を実施します.

iPadからのアクセス設定

Tailscaleをつないでいるならば自動的に名前解決してくれます.手順は以下です.

  1. Tailscale管理画面から共有設定したサーバーの名前を調べる(例: dsserver)
  2. ファイル から右上の3点マークの設定を開く
  3. 「サーバーへ接続」を開き以下の書式で入力する
smb://dsserver/

その後,Sambaユーザー名とSambaパスワード等が要求されますが,それは smb.conf の設定に合わせて入力してください.

Appendix: Microsoftネットワーク

Microsoftネットワークは「ワークグループ」という基本単位でネットワークに参加するPCを論理的にまとめて管理しています. Windowsコンピューターでは,所属するワークグループ名を設定するだけで,そのワークグループへ参加することができます.

ワークグループの管理方式

ワークグループ自体は分散型管理が基本で,ユーザーアカウントやパスワードをそれぞれのコンピューターで管理します.もう一つの方法として, ドメインネットワークを利用したドメインコントローラーというサーバーによる集中管理する方法もあります.

項目 ワークグループ(分散型) ドメイン(中央管理)
管理方式 分散型 集中管理型
ユーザー管理 各PCごと ドメインコントローラー(DC)で一元管理
規模 小規模 中~大規模
必要設備 PCのみ DCサーバー必要

ドメインネットワークを利用する場合は以下の手順で認証が行われます

  1. ユーザーのPCがシステム起動するとき「ドメインログイン」を行い,その認証情報がDCに送られる
  2. DCがユーザー名とパスワードを照合し,認証を行う
  3. DCによる認証をパスすると,ドメインネットワークへのアクセスが許可される

ドメインネットワークでは,一度認証をパスすれば,ドメイン内のサーバーへアクセスする際,個々に認証をする必要はありません.そのため,大規模なネットワークを運用する場合に便利な機能です.

%%{init: {"theme":"default"}}%%
architecture-beta
    group wg(cloud)[Workgroup]

    service pc1(server)[PC1] in wg
    service pc2(server)[PC2] in wg
    service pc3(server)[PC3] in wg
    service pc4(server)[PC4] in wg

    pc1:B -- T:pc2
    pc2:L -- R:pc3
    pc1:R -- L:pc3
    pc3:T -- B:pc4
    pc4:R -- L:pc1
    pc4:B -- T:pc2

    group domain(cloud)[Domain]

    service dc(database)[Domain Controller] in domain
    service dpc1(server)[PC5] in domain
    service dpc2(server)[PC6] in domain
    service dpc3(server)[PC7] in domain

    dpc1:B -- T:dc
    dpc2:L -- R:dc
    dpc3:T -- B:dc

アクティブディレクトリ(Active Directory, AD)

Definition 2 アクティブディレクトリ

  • ユーザーやグループなどのリソースを一元管理するディレクトリサービス
  • ディレクトリアクセスプロトコルとしてLDAPを利用
  • ホスト名の名前解決にDNSを利用
  • 認証システムにKerberosを利用