FreeBSD の AppJail を使用して、簡易設定の Samba 4 サーバーを jail 環境で構築・実行するプロジェクトです。
このプロジェクトは、FreeBSD 上で AppJail を利用して Samba 4 ファイルサーバーを安全に実行するための自動化ツールです。jail 環境により、ホストシステムから隔離された安全な SMB 共有を提供します。
- AppJail による隔離: jail 環境でSambaを実行し、セキュリティを強化
- 自動構築:
build.shスクリプトにより、jail の作成から設定まで自動化 - カスタマイズ可能: 環境変数ファイルによる柔軟な設定
- シンプルなネットワーク設定: VNET/VIMAGE や alias を使用せず、ホストのIPアドレスをそのまま使用する従来型の jail 構成
- Samba 4.20: 最新の Samba バージョンを使用
- SMB3.11 以上: 古いプロトコルを無効化し、セキュリティを向上
- nullfs マウント: ホストのディレクトリを jail にマウント
- FreeBSD (ZFS推奨)
- AppJail がインストール済み、かつ appjail fetch で基本イメージが取得済みであること。
- root権限
Samba ユーザーのパスワードを含むファイルを作成します:
sudo mkdir -p /root
echo "your_secure_password" | sudo tee /root/smbjail-passwd
sudo chmod 600 /root/smbjail-passwdデフォルト設定を変更したい場合は、.build.env ファイルを作成し、編集します:
cat > .build.env <<EOF
JAIL_NAME=smbjail
USERNAME=smbuser
PASSWORD_FILE=/root/smbjail-passwd
SHARE_SRC=/ztank/smbshare
SHARE_NAME=share
PKGCACHE=/home/appjail-pkgcache
JAIL_IPADDR=192.168.1.16
SMB_HOSTS_ALLOW=192.168.1.99
EOF共有するディレクトリを作成します。.build.env で設定した SHARE_SRC, USERNAME に合わせてください:
sudo mkdir -p /ztank/smbshare
sudo chown smbuser:smbuser /ztank/smbsharesudo sh build.sh| 項目 | デフォルト値 | 説明 |
|---|---|---|
JAIL_NAME |
smbjail |
jail の名前 |
USERNAME |
smbuser |
Samba ユーザー名 |
PASSWORD_FILE |
/root/smbjail-passwd |
パスワードファイルのパス |
SHARE_SRC |
/ztank/smbshare |
共有するホストのディレクトリ |
SHARE_NAME |
share |
Samba 共有名 |
PKGCACHE |
/home/appjail-pkgcache |
パッケージキャッシュディレクトリ |
JAIL_IPADDR |
192.168.1.16 |
jail の IP アドレス(サーバーマシンのLAN上でのIPアドレスを指定する) |
SMB_HOSTS_ALLOW |
192.168.1.99 |
接続を許可するホスト |
- 認証モード: USER (ユーザー認証必須)
- 最小プロトコル: SMB3.11
- NetBIOS: 無効 (SMB over TCP/IPのみ)
- ポート: 445 のみ
- アクセス制限:
hosts allowで指定したホストのみ
- 共有名:
share(デフォルト、SHARE_NAMEで変更可能) - パス:
/srv/samba(jail 内) - 権限: 読み書き可能
- ゲストアクセス: 無効
- ファイルマスク:
0600(所有者のみ読み書き) - ディレクトリマスク:
0700(所有者のみアクセス)
sudo appjail status smbjailsudo appjail start smbjailsudo appjail stop smbjailsudo appjail login smbjailsudo appjail service jail smbjail samba_server restart
sudo jexec smbjail service samba_server restartsudo jexec smbjail tail -f /var/log/samba4/log.smbd-
jail が起動しているか確認:
sudo appjail status smbjail
-
ファイアウォールで 445 ポートが開いているか確認
-
SMB_HOSTS_ALLOWに接続元 IP が含まれているか確認 -
Samba ログを確認:
sudo jexec smbjail cat /var/log/samba4/log.smbd
パスワードを再設定:
echo "new_password" | sudo tee /root/smbjail-passwd
sudo sh ./build.shMakejail のログを確認:
sudo appjail logs read jails/smbjail/console/2026-01-02.log-
エクスプローラーのアドレスバーに入力:
\\192.168.1.16\share※
shareの部分はSHARE_NAMEで設定した共有名に置き換えてください -
ユーザー名とパスワードを入力:
- ユーザー名:
smbuser(またはカスタマイズした値) - パスワード: パスワードファイルに設定した値
- ユーザー名:
jail を削除するには:
sudo appjail stop smbjail
sudo appjail jail destroy smbjailMIT License - 詳細は LICENSE ファイルを参照してください。
このソフトウェアは「現状のまま」で提供され、いかなる保証もありません。
- 本プロジェクトは個人的な学習・実験目的で作成された小規模なツールです
- 作者は、このソフトウェアの使用によって生じたいかなる損害についても責任を負いません
- セキュリティの脆弱性、データ損失、システム障害などのリスクを理解した上でご使用ください
- 本番環境での使用は推奨しません。使用する場合は必ず自己責任で十分なテストを行ってください
- このプロジェクトは積極的にメンテナンスされない可能性があります
- 必要に応じて fork して独自に改造・メンテナンスすることを想定しています
- サポートやバグ修正の保証はありません
使用前に必ず LICENSE ファイルの全文をお読みください。
- このプロジェクトは root 権限で実行する必要があります
- パスワードファイルは必ず安全な場所に保管してください
- 本番環境で使用する場合は、適切なバックアップ体制を構築してください
- ファイアウォールとアクセス制御の設定を適切に行ってください