Windows専用Samba共有サーバーの構築手順を解説。ディレクトリ設計、ユーザー権限管理、smb.conf設定、トラブルシューティングまで実運用で必要な知識を網羅。
今回は家庭用のファイル共有サーバーSambaを構築する手順を解説します。 Sambaサーバ構築に必要な最低限の設定をしていきます。
以下の環境を想定しています。
本記事では以下の方針で構築します。
| 項目 | 方針 | 理由 |
|---|---|---|
| データ配置 | /homeに置かない | ユーザー領域と完全分離し、バックアップ・移行を容易にする |
| Sambaユーザー | ログイン不可に設定 | セキュリティリスクを減らす |
| SMBプロトコル | Windows基準で固定 | 互換性問題を回避 |
| 名前解決 | IP or DNS前提 | NetBIOS依存を排除 |
共有ディレクトリ/srv/sambaを作成します。
/srv/samba を使うのか/srv ディレクトリは、サービス提供用のデータを配置するための標準的な場所です。 Samba の共有データをここに配置することで、一般的な運用例に沿った、分かりやすいディレクトリ構成になります。
sudo mkdir -p /srv/samba/shared
sharedは共有用フォルダー名です。用途に応じて任意の名前に変更してください。もちろん既存ユーザをそのまま利用するでも大丈夫です(個人サーバーの場合)。
しかし、管理、権限分離を考慮すると専用ユーザーを作成した方がいいと思います。
Sambaユーザーの作成の前に
Samba専用ユーザーは以下のように設定することをお勧めします。
sudo adduser samba-share のような作り方は避けてください。
不要なログイン可能ユーザーを増やしてしまいます。
sudo adduser \
--system \
--no-create-home \
--group \
--shell /usr/sbin/nologin \
samba-share
--system: システムユーザーとして作成--no-create-home: ホームディレクトリを作成しない--group: 同名のグループも作成--shell /usr/sbin/nologin: ログインシェルを無効化sudo chown -R samba-share:samba-share /srv/samba/shared
sudo chmod 2770 /srv/samba/shared
#`770`: 所有者とグループは読み書き実行可、その他は権限なし
setgid (先頭の2) を設定することで、Windows経由で作成されたファイルも自動的に samba-share グループに所属します。これにより 所有権の不整合を防止 できます。
sudo apt update
sudo apt install samba -y
smbd --version
Version 4.19.5-Ubuntu
smbpasswdコマンドで、Samba用のパスワードを設定します。
# Sambaユーザーとして登録(パスワード設定を求められます)
sudo smbpasswd -a samba-share
# ユーザーを有効化
sudo smbpasswd -e samba-share
コマンドの意味:
-a: 新規ユーザーを追加-e: ユーザーを有効化 (enable)ユーザ名は作成したsamba-shareを指定しています。 このパスワードは、Windowsクライアントから接続する際に使用するパスワードです。
sudo nano /etc/samba/smb.conf
以下の内容を /etc/samba/smb.conf に記述します。
[global]
# SMB(SMB2以上を強制)
server min protocol = SMB2
# UNIX拡張機能を無効化(Windows互換性優先)
unix extensions = no
# ゲストアクセスを完全に無効化
map to guest = Never
# ログ設定
log file = /var/log/samba/%m.log
log level = 1
[shared]
# 共有パス
path = /srv/samba/shared
# アクセス許可ユーザー
valid users = samba-share
# 書き込み許可
read only = no
# ネットワーク参照で表示
browsable = yes
# ファイル作成時の所有者を強制
force user = samba-share
force group = samba-share
# ファイル/ディレクトリ作成時のパーミッション
create mask = 0660
directory mask = 2770
| 設定項目 | 効果 | セキュリティ上の意義 |
|---|---|---|
server min protocol = SMB2 | SMB1を無効化 | WannaCryなどの脆弱性攻撃を防ぐ |
unix extensions = no | UNIX拡張を無効化 | Windows互換性を優先 |
map to guest = Never | ゲストアクセス禁止 | 認証なしアクセスを完全に遮断 |
force user/group | 所有者を固定 | 権限の不整合を防止 |
valid users | アクセス制限 | 指定ユーザーのみ許可 |
smb.conf設定が正常か検証します。
testparm
sudo systemctl restart smbd
sudo systemctl enable smbd
sudo systemctl status smbd
active (running) と表示されていればOKです。
sudo ufw allow Samba
sudo ufw status
To Action From
-- ------ ----
Samba ALLOW Anywhere
Sambaのポート (139/tcp, 445/tcp) が許可されていることを確認してください。
\\192.168.1.10\shared
注意: 192.168.1.10 は実際のUbuntuサーバーのIPアドレスに置き換えてください。
samba-share
Windows側に古い資格情報が残っている場合、接続できないことがあります。
クリア手順:
Win + R → control /name Microsoft.CredentialManager を実行
以下のような設定は避けてください。
[shared]
guest ok = yes
writable = yes
Windows環境では認証を必須にしましょう。
確認すべきポイント:
# Sambaサービスの状態確認
sudo systemctl status smbd
# ファイアウォールの状態確認
sudo ufw status
# ポートが開いているか確認
sudo ss -tlnp | grep -E ':(139|445)'
対処法:
smbd が起動していない → sudo systemctl start smbdsudo ufw allow Sambaping でサーバーに到達可能か確認原因:
valid users の指定漏れ対処法:
資格情報のクリアを参照ください。
以下の内容を /etc/samba/smb.confを確認ください。
[shared]
valid users = samba-share , otheruser1
# Sambaユーザーの状態確認
sudo pdbedit -L -v
# ユーザーの有効化
sudo smbpasswd -e samba-share
原因:
read only = yes になっている対処法:
# 権限の確認
ls -ld /srv/samba/shared
# 権限の再設定
sudo chmod 2770 /srv/samba/shared
sudo chown -R samba-share:samba-share /srv/samba/shared
特定のIPアドレスからのみアクセスを許可する場合:
[shared]
hosts allow = 192.168.1.0/24
hosts deny = ALL
sambaでファイル共有サーバーを作成しました。ローカル環境にファイルサーバーが 1 台あるだけで、複数の端末間でのファイル共有や管理が格段に便利になります。また、ユーザー管理やパーミッションを単純化することで、日常的な運用トラブルが減ります。
ポイント
/srv 配下に役割を分離