AWS EC2(Amazon Linux2023)でファイルサーバを構築する

今回は初心に帰って、簡単な構築を2025年の最新AWS環境で行います。恐らく中小企業で一番需要があるであろうファイルサーバの構築をEC2(AmazonLinux2023)とsambaというパッケージを使って行います。

# 今回のゴール
WindowsOSのPCから下記のような感じでEC2に設定した共有フォルダにアクセスできる環境を構築する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/46ce9160-1017-4631-a37c-e89d23f2794e.png)

# 前提状況
・利用するEC2 OSはAmazon Linux2023です。ちなみにAMIは「al2023-ami-2023.7.20250609.0-kernel-6.1-x86_64」です。
・EC2にグローバルIPを付与し、グローバルIP宛にPCからアクセスさせます。
・AWS上のEC2へPCからアクセス可能なＮＷ環境が必要になります。※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の２つ
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フォルダが表示されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/46ce9160-1017-4631-a37c-e89d23f2794e.png)


 
 ## トラブルシューティング
上手くいかない場合、下記を参考に切り分けしていきましょう。
 ① 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]セクションの値を確認
					 
					 
# おわりに
以前に自分の書いた記事ですが、見直しするとポンコツですね...日々精進します！