Amazon EC2(Amazon linux)のファイルサーバ構築

#Amazon EC2(Amazon linux)のファイルサーバ構築

初めての投稿になります。仕事でAWSの提案、構築をすることがあるので自分用の備忘録およびこれからAWSを利用していく皆さんのお役に立てればと思い、投稿します。
##要件（実現したいこと）

######&nbsp;1.Amazon EC2（Amazon Linux)を使って、ファイルサーバを構築したい<br>
######&nbsp;2.ファイルサーバ構築にはSambaを利用する
######&nbsp;3.別クライアント端末（今回はAWS上のWindows Server OSのEC2）のネットワークドライブにマウントして、ファイル共有できるようにする<br>
######&nbsp;4.無料の範囲もしくは必要最低限のコストでできるお試し構築を作る


##イメージ図
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/9d08e76d-b8ee-be8f-51a2-a5bdaf60c61b.png)


##手順
&nbsp;1.AWSのNW環境を構築<br>
&nbsp;&nbsp;&nbsp;&nbsp;1-1&nbsp;&nbsp;VPCをサブネット作成し、その中にパブリックサブネットを作成する<br>
&nbsp;&nbsp;&nbsp;&nbsp;1-2&nbsp;&nbsp;VPCにセキュリティグループを設定し、インバウンドに自分の作業PC（自分のPCがいるNW）からSSHやRDPの透過許可を設定する<br>

&nbsp;2.Amazon EC2(Amazon Linux)にSambaの設定<br>
&nbsp;&nbsp;&nbsp;&nbsp;2-1&nbsp;&nbsp;Amazon EC2にSambaをインストール<br>
&nbsp;&nbsp;&nbsp;&nbsp;2-2&nbsp;&nbsp;Sambaを利用するユーザの作成、設定<br>


&nbsp;3.クライアント端末側のネットワークドライブにマウント<br>




##実際にやってみる
&nbsp;まず「1.AWSのNW環境を構築」ですが色々と各所で紹介されておりますので割愛致します。<br>

&nbsp;とりあえず「パブリックサブネットにEC2をデプロイすること」、「セキュリティグループでインスタンスへのSSH/RDPが許可されていること」が満たせればOKです。<br>

次に「Amazon EC2(Amazon Linux)にSambaの設定」ですが、ファイルサーバとなるインスタンスにSSHで接続する必要があります。今回、ターミナルエミュレーターはお馴染みのTeratermを利用します。

Teratermを利用したAmazon LinuxへのSSHの方法は下図のようになります。<br>
![スライド2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/04a73778-513d-5757-509c-09641b66d3e0.png)

ホスト（T）のところにインスタンスのグローバルIPを入れてください
![スライド3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/6112d51f-c245-f559-0143-2368670e4bc3.png)

ユーザ名は「ec2-user」
パスフレーズは空欄にして、「RSA/DSA/ECDSA/ED25519 鍵を使う」を選択し
インスタンスを作成するときに、一緒に作成した秘密鍵のファイルパスを入力してください。

ログインに成功すると以下のような画面が表示されます。
![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/98d3793f-0fd5-6375-4ff2-353bd337b026.png)


SSHでログイン後、以下の手順でSambaをインストールしていきます。<br>

```vb
＃rootへ切替
　　sudo su root
＃インスタンス情報を最新版にアップデート
　　yum -y update
＃Sambaのインストール
　　yum -y install samba
＃Samba がどこにインストールされたか確認する
＃Sambaのプログラムはsmbdとnmbdの２つから成り立っているので、その２つを探す
　　which smbd nmbd
＃whichコマンドの結果「/sbin/smbd」,「/sbin/nmbd」と表示されていればOK
```
ここまででSambaのインストールはOKです。続いてSambaの設定を行っていきます。<br>
まずはSambaを起動します。<br>

```vb
＃サービス起動
　　systemctl start smb nmb
＃次にsmbd とnmbdが起動したか確認
　　systemctl status smb nmb
```
以下のように表示されていればOK
![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/f51df3b7-b8e7-0004-61d9-156919e25b2f.png)


ついでにサーバが起動したら同時にSambaもサービス起動するようにします。

```vb
＃サービス自動起動
　　systemctl enable smb nmb
```




<br>
次にSambaのコンフィグを設定していきます。
Sambaの設定コンフィグは「/etc/samba/smb.conf」のため、このファイルを編集していきます。

```vb
＃vi でファイル編集します
　　vi /etc/samba/smb.conf
＃「i」 を押してINSERTモードにする
```
ファイルを開くと以下項目が記載された画面になると思います。<br>

[global]・・・Samba全体の設定で、全ユーザの環境に影響
[homes]・・・ユーザ単位の共有設定
[printers]・・・Sambaでプリンターを利用する設定

今回はプリンター関係は設定しないため、[global]内のpinting,print cap nameの行の先頭に「＃」をつけて、以下のようにコメントアウトさせます。

![Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/d3600da9-3fa3-4c3f-4093-d2b5154692e4.png)


今の設定だとユーザ間で共有できるフォルダがない状態のため、共有フォルダ[share]を設定していきます。

[homes]の下あたりに手動で以下を追記します。

```vb
[Share]
comment = Share Folder for All Users
path = /home/share/
browsable = yes
read only = no
```
上記は読み書き可で、エクスプローラに表示される[share]というフォルダを「/home/share/」に作るという設定になってます。

修正後のsmb.confはこんな感じになります。
![Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/b34e4d95-9ceb-36b7-1e83-0d1403a77604.png)


```vb
＃追記が完了したら以下で変更内容を保存
　　:w
＃以下でファイルを閉じる
　　:q!
```

続いて先ほど設定した[share]フォルダですがパスを設定した場所に実際のディレクトリがないとアクセスできないため、ディレクトリを作成します。

```vb
＃/etc /home に移動
　　cd /etc 
　　cd /home
＃/share を作成 
　　mkdir /share
```

実際に以下コマンドで確認するとユーザフォルダと同じように「share」というフォルダが出来ていると思います

```vb
cd /etc 
cd /home
ls
```


次に作成した[share]のアクセス権設定を行います。

```vb
＃全ユーザに読み書き実行を許可
　　chmod -R 777 share
＃所有者とグループをnobaody に変更
　　chown -R nobody:nobody /share
＃アクセス権が変更されているかを確認
　　ll
＃「drwxrwxrwx 3 nobody nobody 20 6月 16 10:25 share」みたいな表示だったらOK
```

全体を通じてちゃんと設定できているかを以下コマンドで確認し、エラーが出てなければOKです。

```vb
testparm
```

実際には今回はお試し環境をセッティングするという目的のため、他の設定はしませんが
ご利用環境に合わせて、設定を変えてください。<br>


これでSambaの設定もOKです。続いてSambaを利用するユーザの作成、設定をしていきます。
今回は「test01」というユーザを追加、設定していきます。

```vb
＃ユーザを作成する
　　useradd test01
＃パスワードを設定する
　　passwd test01
Changing passwd for user test01
New passwd:*******
(任意のパスワード)
```

これでAmazon Linux 内のSambaユーザは出来ましたが、あくまでLinuxのユーザです。
そのため作成したtest01 にWindows の属性を付与し、Windows OSのクライアントからtest01のアカウントを使ってアクセスできるようにする必要があります。

```vb
＃Windows の属性を付与
　　pdbedit -a -u test01 -f "test01"
　　new password:ユーザ作成時に設定したものと同じパスワードを入力
　　retype new password:確認用にパスワードを再入力

# 以下のように表示されます
new password:
retype new password:
Unix username:        test01
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1620394922-3155829712-2416127206-1000
Primary Group SID:    S-1-5-21-1620394922-3155829712-2416127206-513
Full Name:            test01
Home Directory:       \\ip-10-0-0-70\test01
HomeDir Drive:
Logon Script:
Profile Path:         \\ip-10-0-0-70\test01\profile
Domain:               IP-10-0-0-70
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 15:06:39 UTC
Kickoff time:         Wed, 06 Feb 2036 15:06:39 UTC
Password last set:    Thu, 30 Jul 2020 14:20:05 UTC
Password can change:  Thu, 30 Jul 2020 14:20:05 UTC
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
＃付与できたか確認
　　pdbedit -L
＃「test01:1001:test01」と出ればOK
```

最後にSambaをサービス再起動させます

```vb
＃smbとnmbを再起動
　　systemctl restart smb nmb
```

これでSambaの設定は完了です。

それではWidows OS のクライアントのネットワークドライブにマウントしてみましょう。

Windows インスタンスにRDPでアクセスし、「NWドライブにマウント」
![スライド8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/26bc307d-fa0e-114f-2303-b3722a349100.png)
10.0.2.53はインスタンスのプライベートIPです。
IPアドレスを入力し、「参照」

![スライド10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/ee3e7f73-8976-fec6-5f71-32bd56f7cb11.png)


Samba側の[share]フォルダーとアクセスしているtest01 のユーザフォルダが見えることが確認でき、
[share]へアクセスできることが確認できました。

[share]フォルダ内に試しにテキストファイルを置いてみます。
![スライド11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/5afe5691-c518-7cd9-6abd-fd9e08f6c56a.png)


Samba側から確認すると以下のようにテキストファイルが確認できます。
![スライド12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/ee2ee85a-0c81-c25c-e1f4-da0402a9c693.png)




ファイルが共有されていることが確認できましたので、これですべて完了です。

# 最後に
必要最低限のシステムであれば、激安で構築できるのはいいですね。d(`・ω・’)
AWSでシステム構築の練習にはベストなお題だと思います。<br>
P.S
私がLinux コマンドに不慣れなこともあり、ツッコミどころはあると思いますが何とぞご容赦を。<br>

参考にさせて頂いたサイトです。大変分かりやすく、自分もこういう記事が書けるようになりたいです...<br>
【参考】
[CentOS 7のSamba4でライセンス不要 Windows向けファイルサーバーを構築](https://www.rem-system.com/centos-samba/)