【備忘録】FTPサーバーをAWSで立てる


今回の目的

AWSでサーバーを作成し、HTMLファイルとかFTPで置けるようにしたい。
本来であれば、ftpuserというFTPを実施する専用のユーザーを作成して、きちんと権限与えてFTPを行うものだが、今回はそれが面倒でまた個人開発用としてFTPを使いたいだけなので、rootユーザーでできるように設定する。

EC2でポートのルールを設定する。

セキュリティグループで以下のポートを追加する。
※2つ追加する理由は、
「ポート21」はFTP通信でFTPサーバーに繋ぐ用のポートで、
「ポート60001-60010」はファイルを置く時に使用するポート。
分けている理由は、多くのファイルを置く時に重たくなるため、負荷を分散しているそうです。


「sudo su」で root ユーザーになっておく

sudo su

vsftpをインストールする

※AWSにインストールするのであれば、ec2-userでログインしておく。
「サーバーという箱にApacheを入れるとWEBサーバーになる」と同じ考え方で、
「サーバーという箱にvsftpを入れるとFTPサーバーになる」というイメージです。

yum install vsftpd

vsftpd.confのバックアップをとっておく

編集する前に、オリジナルのものをコピーして別名で保存し残しておきましょう。
※.orgはオリジナルの略称で、「このファイルはオリジナルのものですよ」と表すために付けています。
※cpコマンドの「-a」は元ファイルの属性とディレクトリの構成を保持してコピーするために使うオプション。

cd /etc/vsftpd/
cp -a vsftpd.conf  vsftpd.conf.org

vsftpd.confを編集する

以下のコマンドで編集画面に入る。
※「i」を入力するとINSERTモードになり、編集できる。
※「o」を入力するとINSERTモードになり、且つ改行してくれる。(これ結構使うらしい。)
※Shift + G で一番したの行に移動できる。

vi vsftpd.conf

以下の内容をvsftpd.confの一番下に追記する。

vsftpd.conf
pasv_address=XX.XXX.XXX.XXX <!-- AWSのグローバルアドレスを入力 -->
pasv_enable=YES
pasv_addr_resolve=YES
pasv_min_port=60001 <!--60001~60010の中からランダムでこのPort番号を利用するという意味-->
pasv_max_port=60010

escキーでINSERTモードから戻れて、「:wq + enter」で保存する。

vsftpを再起動する

基本的に、configファイルを編集すると、再起動する。
編集したconfigファイルを読み込んでもらうため。

service vsftpd restart

「ftpuser」と「user_list」ファイルを編集する

vsftpd配下に「ftpuser」と「user_list」があるので編集する。

コマンドはそれぞれ
vi ftpusers
vi user_list

「root」と記載されている箇所があるので「#」でコメントアウトする。
root → #root

■管理ファイル「user_list」について
/etc/vsftpd/user_list の挙動は、userlist_deny の値によって変わります。
userlist_deny=YES もしくは記述が無い場合には、user_list は接続禁止リストとして機能します。つまり、「このリストに記述されているユーザーは FTP 接続ができない」ということになります。
→今回はrootユーザーでFTPを使いたいので、「root」をリストからコメントアウトする。

■管理ファイル「ftpusers」について
/etc/vsftpd/ftpusersもあります。
こちらはとにかくアクセスを禁止するためのリスト。
user_listよりも優先順位が高いので、user_listで許可されているユーザーであっても、このリストにユーザー名を書かれてしまうとアクセスできなくなります。

rootユーザーにパスワードを設定しておく

rootにパスワードが設定されていない場合、FTPでアクセスした時に拒否されるので、設定する。

passwd root

もしFTPユーザーを作成し、アクセスしたい場合

以下のコマンドでFTPでアクセスする専用のユーザー「ftpuser」を作成し、パスワードを設定する。

useradd ftpuser
passwd ftpuser

もしWebサーバーの「/var/www/html」にアクセスしたい場合、フォルダの所有者がApacheになっていると思われるので、Apacheユーザーと同じ所有者グループをftpuserに設定してあげないと、「/var/www/html」にアクセスできない。

Filezilaで確認する

ホストにはAWSのグローバルアドレスを入力する。

ファイルがアップロードできれば完了!!