今回は初心に帰って、簡単な構築を2025年の最新AWS環境で行います。恐らく中小企業で一番需要があるであろうファイルサーバの構築をEC2(AmazonLinux2023)とsambaというパッケージを使って行います。
今回のゴール
WindowsOSのPCから下記のような感じでEC2に設定した共有フォルダにアクセスできる環境を構築する。
前提状況
・利用するEC2 OSはAmazon Linux2023です。ちなみにAMIは「al2023-ami-2023.7.20250609.0-kernel-6.1-x86_64」です。
・EC2にグローバルIPを付与し、グローバルIP宛にPCからアクセスさせます。
・AWS上のEC2へPCからアクセス可能なNW環境が必要になります。※SecurityGroup設定など
・EC2からインターネットアクセス可能となるようにVPCの設定が必要になります。
・AWSのリソース利用に料金がかかります。(使い終わったらお片付けしましょう)
・今回共有フォルダには誰でもアクセスOKな状態にします。本番環境ではちゃんとセキュリティ設定しましょう。
実際にやってみた
EC2のデプロイについて他に素晴らしい記事がありますので、本記事では割愛します。とりあえず、インターネットアクセスができる環境(グローバルIPのアタッチ、Internet-GWのあるVPCにデプロイ)に設定してください。
デプロイまで完了した想定でOSの環境設定を初期状態から変更していきます。
環境設定
#アップデート
dnf -y upodate
#selinux設定確認
getenforce
disabldeになっていなければdisabledに変更
vim /etc/selinux/config
[SELINUX]の値をdisabledに修正
#ホスト名をわかりやすいものに変更(今回はtest-al2023に変更)
hostnamectl set-hostname test-al2023
#今の言語設定を確認
echo $LANG
#日本語に設定変更(日本語になっていなければ変更)
localectl set-locale LANG=ja_JP.UTF-8
#今のシステムクロック(時間設定)を確認
date
#タイムゾーンを日本時間に変更(日本時間になっていなければ変更)
timedatectl set-timezone Asia/Tokyo
#各設定変更反映のため再起動
reboot
ここまででOSの環境設定は完了したので、samba機能をインストールしていきます。
samba機能インストールと設定
sambaインストール
dnf -y install samba
#sambaサービス起動確認 ※smbとnmbの2つ
systemctl status smb nmb
#sambaサービス自動起動設定
systemctl enable smb nmb
#共有フォルダにする予定のフォルダを作成
mkdir /home/share
#フォルダ権限変更
chmod -R 777 /home/share
#samba設定ファイル(samba.conf)を修正
vim /etc/samba/smb.conf
修正内容は下記
・[global]セクションにmap to guest = bad user を追記
・[share]セクションを追加し、各パラメータは下記を記載
force create mode = 0777
force directory mode = 0777
guest ok = Yes
guest only = Yes
path = /home/share
read only = No
記載内容の完成形はこんな感じ
ーーーー
#Global parameters
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
# Install samba-usershares package for support
include = /etc/samba/usershares.conf
#認証に失敗したユーザー (bad user) をゲストアカウント (guest) として扱う
map to guest = bad user
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[share]
# 共有フォルダーパスを指定
path = /home/share
# 書き込みを許可する
writable = yes
browseable = yes
# ゲストユーザー (nobody) を許可する
guest ok = yes
# 全てゲストユーザーとして扱う
guest only = yes
# ファイル作成時のパーミッションを [777] とする
force create mode = 777
# フォルダー作成時のパーミッションを [777] とする
force directory mode = 777
ーーーー
#共有フォルダーの所有者とグループをnobaody に変更
chown -R nobody:nobody share
#アクセス権が変更されているかを確認
ll
動作確認
PCのエクスプローラーで[¥¥{EC2のグローバルIP}]を検索します。設定が上手く行っていれば下記のように共有設定したshareフォルダが表示されます。
トラブルシューティング
上手くいかない場合、下記を参考に切り分けしていきましょう。
① EC2のグローバルIPにPCからPingは到達しない
→できない場合、途中のNW機器かEC2のセキュリティグループでブロックされている可能性がある
② Pingは到達できるがエクスプローラーから共有フォルダが見れない
→途中のNW機器かEC2のセキュリティグループでブロックされている
→EC2側でsambaのステータス確認(systemctl status smb nmb)を行い、Activeかを確認
→Activeでない場合はActive化する(systemctl start smb nmb)
→Active化できない場合はコンフィグファイル(samba.conf)の確認(文法はtestparmで確認可)
→testparmでエラーなしの場合、[share]セクションの値を確認
おわりに
以前に自分の書いた記事ですが、見直しするとポンコツですね...日々精進します!