EC2でSambaを構築してファイル共有を確認する

# はじめに
AWS初心者が、練習目的でEC2を使ってSambaを勉強・構築した際の情報・手順をまとめた物です。
SambaでWindows用ファイルサーバとして構築し、Windowsのクライアントからファイル共有をしてみます。
同じような情報は既にあるので、解説を細かくしすぎず、かつ少し余談を交えた記事にしています。

### 目的
- Sambaを構築して、構築・ファイル共有の流れと感覚を掴む。
- さらっとやってみる。
- WindowsServerをリモートで操作してみる。

# 構成図
![練習用samba構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/3e5af24d-9c16-328a-9997-dccd1f8592a3.jpeg)

- EC2　OS：AmazonLinux2　　（ファイルサーバー用） ポート：22（SSH）・445（TCP）
※ファイル共有用に445だけ開けていますが、その他の機能を使う場合は対応した他のポートも開ける必要があります。

- EC2　OS：WindowsServer2019　（クライアント用）　ポート：3389（RDP）

同一パブリックサブネット内にAmazonLinux2とWindowsServerのEC2を用意していて下さい。

**EBSの無料枠の30GBを超えるはずなので、課金が発生しますが数時間で消す予定なので「超」低額だと思います。
その辺りが気になる方は公式でお調べ下さい。**
**終わったらささっと消しましょう。**

パブリックにファイル共有サーバを置くのは実運用としては駄目でしょうが、練習・検証用ですので続行します。

# 全体の流れ
1. Sambaとは
2. Sambaをインストール、Samba用ユーザーの作成
3. クライアントからSambaにアクセス、共有ファイルの作成
4. Samba側から共有ファイルを確認

# 1. Sambaとは
今回使っている「Samba」はLinuxをWindowsのファイルサーバにするだけの物ではありません。

Windowsで使われているネットワークプロトコル（SMB・CIFS）を使うことで、LinuxでWindowsのネットワークシステムに参加する事が出来るようにするフリーソフトウェアです。
ファイル共有・プリンタ共有・ドメインコントローラー等のWindowsネットワークの諸機能を有しています。
よって、LinuxからWindowsのネットワークにアクセスできるようにさせるクライアント機能もある訳です。

そんな認識の上で、今回は単にファイル共有サーバの機能を利用させて頂きます。

# 2.Sambaをインストール、Samba用ユーザーの作成
### Sambaのインストール
LinuxのEC2にSSHして、rootに切り替えます。

```
sudo su -
```
そしてSambaをインストールします。

```
yum -y install samba
```

### Samba用ユーザーの作成
Sambaを利用するためにLinuxユーザーを作成します。

```
useradd samba-test
passwd samba-test

Changing password for user samba-test.
New password:　
Retype new password:
passwd: all authentication tokens updated successfully.
```

### Sambaにユーザーを登録
先程のユーザーをSambaに登録し、Windowsと接続できるようにします。
Samba上にWindows形式のユーザー情報を登録するイメージです。

```
pdbedit -a samba-test
new password:
retype new password:
```
追加された事を確認してみましょう。

```
pdbedit -L
samba-test:1001:
```

#### コマンドについて余談
今回はpdbeditコマンドを使っていますが、smbpasswdというコマンドも使えます

「smbpasswd」はSamba2.2系で使われた旧来のユーザ管理コマンドです。
これは、rootでなくても使えますが先程の「ユーザーの一覧」を表示する機能は持っていません。
またデータベース形式が固定です。

「pdbedit」はSamba3.0以降で使われている新しいユーザ管理コマンドで、root権限がないと使えませんが、
先程の「ユーザーの一覧」や別の種類のデータベースを使用する事が出来るため、出来ることが多く汎用的なようです。

情報によって使っている管理コマンドが違いますが、今回の用途だとどちらを使っても問題ないと思います。
ただ、私は利用されることが多いだろう新しい方のコマンドを使うことにしました。

### 設定について
「/etc/samba/smb.conf 」にて、ワークグループやプリンタ共有の有無・パスワードの暗号化等々の設定。
そして共有ファイルの場所・名前の指定も行えますが、今回はサクっと作るため特に設定しません。
よって、ファイルの共有先は登録したLinuxユーザーのホームディレクトリになります。

#### 余談
Sambaの設定に関することはLPICレベル２の参考書（記事下部に記載）がとても参考になりました。
ただ、manに詳しく書いてあるのでそれを読むほうが速いです。（ただし当然ながら英語です）

### Sambaの起動、自動起動設定
設定は終わったので、Sambaを起動して自動起動もするようにします。

```
systemctl start smb
systemctl enable smb
```


# 3.クライアントからSambaにアクセス、共有ファイルの作成

### WindowsのクライアントからSambaに接続する
エクスプローラーのアドレスバーに「\\（sambaのIPアドレス：今回だと10.0.2.115）」と入力すると、
下記のようにユーザーとパスワードを求められるので、Sambaに登録した物を入力。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/01f96bc1-f8b4-891f-f65d-9695b92190a8.jpeg">

「samba-test」に接続します。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/e3d79ee5-8316-59b7-6e5e-c2cf4b86c1f4.jpeg">

### 共有ファイルの作成
何でも良いのですが、簡単にテキストファイルを作ります。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/4468a23a-059b-a950-01aa-88dc58ba24b8.jpeg">




# 4.Samba側から共有ファイルを確認

最後に共有先である「Samba-test」のディレクトリに先程作成したテキストがあるか確認します。

```
cd /home/samba-test
ls -l

-rwxr--r-- 1 samba-test samba-test 0 11月 28 06:37 New Text Document.txt
```
テキストが無事反映されているので、ファイル共有が出来ていることが確認出来ました。

※今回の筆者の環境では言語設定を日本語化していました。

# 参考URL
- [EC2にSambaを構築してWindowsからファイル共有してみた](https://recipe.kc-cloud.jp/archives/10873)
- [Sambaの基本を知っておこう](https://www.atmarkit.co.jp/ait/articles/1612/01/news183.html)
- [オープンソースのドキュメント管理／Sambaとは](https://www.ossnews.jp/oss_info/Samba)
- [Amazon Linux 2でSambaを構築する](https://dev.classmethod.jp/articles/amazonlinux2-samba/)

# 参考文献
- Linux教科書 LPICレベル2 Version4.5対応