%%{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
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 サーバーは基本的に 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の主な設定は
/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をつないでいるならば自動的に名前解決してくれます.手順は以下です.
- Tailscale管理画面から共有設定したサーバーの名前を調べる(例:
dsserver
) ファイル
から右上の3点マークの設定を開く- 「サーバーへ接続」を開き以下の書式で入力する
smb://dsserver/
その後,Sambaユーザー名とSambaパスワード等が要求されますが,それは smb.conf
の設定に合わせて入力してください.
Appendix: Microsoftネットワーク
Microsoftネットワークは「ワークグループ」という基本単位でネットワークに参加するPCを論理的にまとめて管理しています. Windowsコンピューターでは,所属するワークグループ名を設定するだけで,そのワークグループへ参加することができます.
ワークグループの管理方式
ワークグループ自体は分散型管理が基本で,ユーザーアカウントやパスワードをそれぞれのコンピューターで管理します.もう一つの方法として, ドメインネットワークを利用したドメインコントローラーというサーバーによる集中管理する方法もあります.
項目 | ワークグループ(分散型) | ドメイン(中央管理) |
---|---|---|
管理方式 | 分散型 | 集中管理型 |
ユーザー管理 | 各PCごと | ドメインコントローラー(DC)で一元管理 |
規模 | 小規模 | 中~大規模 |
必要設備 | PCのみ | DCサーバー必要 |
ドメインネットワークを利用する場合は以下の手順で認証が行われます
- ユーザーのPCがシステム起動するとき「ドメインログイン」を行い,その認証情報がDCに送られる
- DCがユーザー名とパスワードを照合し,認証を行う
- DCによる認証をパスすると,ドメインネットワークへのアクセスが許可される
ドメインネットワークでは,一度認証をパスすれば,ドメイン内のサーバーへアクセスする際,個々に認証をする必要はありません.そのため,大規模なネットワークを運用する場合に便利な機能です.
アクティブディレクトリ(Active Directory, AD)
Definition 2 アクティブディレクトリ
- ユーザーやグループなどのリソースを一元管理するディレクトリサービス
- ディレクトリアクセスプロトコルとしてLDAPを利用
- ホスト名の名前解決にDNSを利用
- 認証システムにKerberosを利用