こんにちは。エンジニアの藤井です。
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でも同じような環境を構築できるのかも、調査したいと思います。
少し長いブログになってしまいましたが、ありがとうございました!
- 【React】フロントエンドのテストコードを書いてみよう【Vitest】 - 2024-04-30
- Simple AWS DeepRacer Reward Function Using Waypoints - 2023-12-19
- Restrict S3 Bucket Access from Specified Resource - 2023-12-16
- Expand Amazon EBS Volume on EC2 Instance without Downtime - 2023-09-28
- Monitor OpenSearch Status On EC2 with CloudWatch Alarm - 2023-07-02