こんにちは。エンジニアの藤井です。
AWSで共有フォルダ用サーバーを構築するにはいくつか方法がありそうですが、
今回はSambaを使ってEC2でLinuxインスタンスを作成し、また、容量制限をしたいのでストレージはEBSにて作成をしてみようと思います。
では始めて行きましょう
容量制限付き、共有フォルダ用サーバー作成
目次
1.まずはEC2にてLinuxインスタンスを作成します。
①AWSコンソールから、EC2に進み、インスタンス作成をクリックします。

②今回はCentOS7でインスタンス作成を進めます。
インスタンス作成の詳細は省きます。テスト用なのでt2.micro 、EBSは8GBで作成してみましたが。

※後ほど共有用のEBSを作成してアタッチします。
③EC2インスタンスのセキュリティグループ設定を行います。
今回は純粋にファイル共有するのみですので、22ポート(SSH)、445ポート(SAMBA)、10000ポート(WEBMIN)を各接続元IPアドレスを設定して開けておきます。
2.SSHにて接続し、各種設定をしていきます。
初期設定
①アップデート
| 
					 1  | 
						yum update  | 
					
②タイムゾーン変更
| 
					 1  | 
						timedatectl set-timezone Asia/Tokyo  | 
					
→確認します
| 
					 1  | 
						timedatectl status  | 
					
③日本語ロケール追加
| 
					 1 2  | 
						localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" localectl set-keymap jp106  | 
					
→確認します
| 
					 1  | 
						localectl status  | 
					
④setenforce 0 だと一時的な変更になるので、設定ファイルの値を変更します。
| 
					 1  | 
						vi /etc/selinux/config  | 
					
SETLINUX=disabled
⑤rebootで再起動して設定を反映させます。
→再起動後に再度SSH接続して、確認します。
| 
					 1  | 
						getenforce  | 
					
問題なかったでしょうか?
では引き続き、各種インストール設定を続けます。
SAMBAのインストールと設定
①インストール
yumのリストにあるかの確認、infoで情報も確認できます。
| 
					 1 2 3  | 
						yum list available | grep samba yum info samba samba-common yum install samba samba-common  | 
					
witchでプログラムの場所を確認できます。
| 
					 1  | 
						which smbd nmbd  | 
					
②起動と再起動設定
| 
					 1 2 3  | 
						systemctl start smb nmb systemctl enable smb nmb systemctl status smb nmb  | 
					
③sambaのディレクトリにある、smb.confのバックアップを作成しておきます。
| 
					 1 2  | 
						cp /etc/samba/smb.conf /etc/samba/smb.conf.bkup ll /etc/samba/  | 
					
ユーザー作成
①samba用にまずはLinuxユーザー作成します
| 
					 1  | 
						useradd smbusr  | 
					
②Linuxユーザー確認
| 
					 1  | 
						cat /etc/passwd  | 
					
③sambaユーザーを作成してパスワード設定
| 
					 1  | 
						pdbedit -a -u smbusr -f "smbusr"  | 
					
パスワードを聞かれるので入力します。メモも忘れずに。
④sambaユーザー確認
| 
					 1  | 
						pdbedit -L  | 
					
共有したいディレクトリを作成
| 
					 1 2 3  | 
						mkdir /home/share chmod 0770 /home/share/ chown root:root /home/share/  | 
					

3.EBS追加
共有フォルダ用のEBSを作成します。
今回は10GBのEBSを作成し、前の手順で作成していたEC2インスタンスにアタッチします。
①AWSコンソールから、EBSに進み、ボリュームの作成をクリックします。

②今回はボリュームサイズを10GBにして作成してみます。

③しばらくするとボリュームが作成されますので、
対象のボリュームを選択し、アクションメニューからボリュームのアタッチを選択します。

④アタッチする対象のEC2を選びます。

⑤EBSの「アタッチ済情報」欄に、対象のEC2のIDが表示されます。
EC2からも確認できますね。
対象のEC2を選択し、画面下側の「ストレージ」タブをクリックして確認します。

⑥SSHで接続し、
| 
					 1  | 
						lsblk  | 
					
でも確認できます↓

アタッチできましたね。
EBSのマウント、初期化
lsblkコマンドで、アタッチを確認しましたが、デバイスにはファイルシステムが存在しているかを確認します。
| 
					 1  | 
						file -s /dev/xvdf  | 
					
デバイスに関する情報を表示すると、出力に data だけが表示されています。この場合は、デバイスにはファイルシステムが存在していないため、ファイルシステムを作成する必要があります。
こちらのコマンドで、マウントして使用する前に、ボリュームにファイルシステムを作成します。
| 
					 1  | 
						mkfs -t xfs /dev/xvdf  | 
					
(※コマンドが使えなければインストールしましょう→ https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-using-volumes.html )
→確認しておきましょう
| 
					 1  | 
						file -s /dev/xvdf  | 
					

作成したディレクトリにボリュームをマウントします。
| 
					 1  | 
						mount /dev/xvdf /home/share  | 
					
4.QUOTA
QUOTAのインストールと設定
①quotaがインストールされているか確認します。
| 
					 1  | 
						yum list installed | grep quota  | 
					
インストールされていたので、そのまま進みます。
②起動時にユーザークオータ設定込みでマウントするためにUUIDを表示させます
| 
					 1  | 
						blkid  | 
					
③起動時に読み込みたいのでfstabに記載
| 
					 1  | 
						vi /etc/fstab  | 
					
追記する→ UUID=9bxxxxxxxxxxxxxxxxxx /home/share xfs defaults,usrquota
このような感じです↓

④ディスクの使用状況などを保存するために、quotaのデータベースファイルを作成
| 
					 1 2 3 4  | 
						cd /home/share touch quota.user chmod 600 quota.user ls -l quota.user  | 
					
⑤smb.confへの追記
| 
					 1  | 
						vi /etc/samba/smb.conf  | 
					
以下の記述を追加します。↓
[share]
comment = share
path = /home/share
※このように追記しておくことで、Windowsから接続するときに、\\サーバーIP\home\share\user1と記述しなくても、\\サーバーIP\user1で接続が可能です。
また、共有プリンタを使用しないので、[global]のpirinting等をコメントアウトする、ログファイルに記述する設定など必要に応じて修正します。
設定完了したら再起動しておきます。
| 
					 1  | 
						reboot  | 
					
ユーザー追加
共有フォルダを使用するユーザを追加します。
| 
					 1  | 
						useradd user1 -p user -d /home/share/user1 -s /bin/false  | 
					
こちらはlinuxアクセスしない、Sambaだけのユーザーとなります。
| 
					 1  | 
						pdbedit -a -u user1 -f "user1"  | 
					
パスワードを入力。メモも忘れずに。
ディレクトリ権限は0700、所有者・グループが作成したuser1になっていることを確認。
なっていなければ、↓こちらのコマンドで設定しておきます。
| 
					 1 2  | 
						chmod 700 /home/share/user1/ chown -R user1:user1 /home/share/user1/  | 
					
ユーザーごとの容量制限
ユーザー毎のquota設定をします。10MBで設定してみます。
| 
					 1 2  | 
						xfs_quota -x -c 'limit bsoft=10m bhard=10m user1' /home/share xfs_quota -x -c "report -h -u" /home/share  | 
					
5.Windowsから共有フォルダにアクセス!
では、Windowsサーバーから、共有フォルダにアクセスしてみます。
ネットワークドライブの割り当て
①エクスプローラーからCドライブを右クリックして、「ネットワークドライブの割り当て」を選択します。

②サーバーのIPアドレスに作成したディレクトリをつけてアクセスします。
例:\\123.123.123.123\user1

③ネットワーク資格情報の入力で、設定ユーザー名:user1、設定したパスワードを入力します

アクセスできました!

④容量制限がうまく効いているか確認します。
フォルダに10MBに満たないファイルを入れておいた状態で、10MBを超えるようになるサイズのファイルをコピーしようとすると、
容量が足りないという情報ウィンドウが表示されました。問題なさそうですね。

※ユーザーを追加する際には、④⑤を行ってユーザーを増やしてください。
これで完了でもいいのですが、Webminで管理できるよう、Webminインストールも行っておきます。
6.Webmin
Webminのインストール
①Perlモジュールのインストール
| 
					 1  | 
						yum install perl-Net-SSLeay  | 
					
②Webminのインストール
このページのリストから最新版を確認する。→ http://download.webmin.com/download/yum/
| 
					 1  | 
						yum install http://download.webmin.com/download/yum/webmin-1.974-1.noarch.rpm  | 
					
※これで、Windows側のブラウザでhttps://IPアドレス:10000 からログイン画面にアクセスできるようになります。
Webminのログインと言語設定
では、ログインするためにパスワードを設定しておく必要がありますので、まずはrootのパスワードを設定します。
①rootのパスワードを設定
SSHで接続したコンソールで、
| 
					 1  | 
						passwd root  | 
					
パスワードを入力します。メモも忘れずに。
②ブラウザでhttps://IPアドレス:10000にアクセスします。

〇プライバシーが保護されません。と出ていますが「詳細設定」をクリックします。

一番下に表示された「IPアドレスにアクセスできません。」のリンクをクリックします。
③Webminログイン画面が表示されたら、root、先ほど設定したパスワードを入力してログインします。
Webminの言語設定 Webminメニュー→Change Language and Theme
(Webmin UI Languageと、Webmin UI Loceleを日本語に変更)
こちらで日本語設定になりました。
(「システム」→「ユーザーとグループ」メニューで、ユーザーの確認や追加が行えます。)
webminで管理できるのは使い勝手がよいのではないでしょうか。
以上、容量制限付き共有ファイル用サーバー、構築完了です。
AWSでの共有フォルダ用サーバー構築について
AWS上で共有フォルダ用サーバーを構築するには、他にも方法があります。
今回のようにEBSを使用すると、ユーザー毎に容量制限が行える。
ただし、EBSを使用すると、未使用領域があっても料金がかかってしまいます。
たとえばEC2と合わせてS3を使用して構築した場合、容量制限ができないですがS3料金は使用容量等のみとなります。
どのような構築方法が適しているのか、接続ユーザー数や、予算に合わせて検討が必要ですね。
また、Amazon FSxでも同じような環境を構築できるのかも、調査したいと思います。
少し長いブログになってしまいましたが、ありがとうございました!
- 中級figma教室 - 2024-12-24
 - おすすめガジェット紹介!2024年12月編 - 2024-12-21
 - Amazon ConnectでNGワードをリアルタイムに検知してSlackに通知する - 2024-12-16
 - AWS Amplify AI KitでAIチャットアプリを爆速で作ってみる - 2024-12-14
 - AWS LambdaをC#で実装する(ついでにラムダ式を書く) - 2024-12-09
 
【採用情報】一緒に働く仲間を募集しています
                                    
																											
								




