#はじめに
今やっている案件でFTPを使用してファイルをGETするスクリプトが必要となり
検証環境でFTPサーバを立てる必要があったのでつくりました。
備忘のためもあるので、お手軽にFTPサーバ作りたいという人の参考になればと思います。
#環境
今回は以下環境で作成します。
OS:CentOS7
#構築
##FTP接続用ユーザ作成
まずはFTPで接続するためのユーザを作成する。
# useradd ftp-user
# passwd ftp-user # パスワード設定
##FTP用のディレクトリ作成
FTPでは通常chrootといって、上位のディレクトリに接続できないような設定を入れることが通常です。
なので、まずはFTPで接続したときにデフォルトでたどり着くディレクトリを作成しておきます。(今回は/var/www/ftp_dirとします。)
作成したら権限変更もしておきましょう。
# mkdir -p /var/www/ftp_dir
# chown ftp-user /var/www/ftp_dir
# chmod 755 /var/www/ftp_dir
##FTPのインストール
# yum -y install vsftpd
##FTPの設定
/etc/vsftpd/vsftpd.conf
# 以下を追記します。
~
# userlist_fileで指定指定したユーザを有効にする(接続できる)
userlist_enable=YES
# アクセスファイル(/etc/hosts.allow, /etc/hosts.deny)をアクセス制御に利用しない
tcp_wrappers=NO
# パッシブモードの接続を許可する
pasv_enable=YES
# FTPサーバのIPアドレスを指定(パッシブモードで接続時)
pasv_address=[FTPサーバーのIP]
※上記のIPは固定となります。
# ポート指定
pasv_min_port=60001
pasv_max_port=60010
※ポートはハイポートであれば特に指定はありません
# ドットから始まるファイルを含めた一覧を返す
force_dot_files=YES
# ファイル(またはディレクトリ)のタイムスタンプの表示をローカルタイムで表示する
use_localtime=YES
#ユーザー毎の設定ファイルの場所を指定する。
user_config_dir=/etc/vsftpd/user_conf
/etc/vsftpd/vsftpd.conf
# 以下のコメントを外します。
chroot_local_user=NO
#chrootを有効化する。
chroot_list_enable=YES
#chroot対象のユーザーリストファイルの場所を指定する。
chroot_list_file=/etc/vsftpd/chroot_list
##FTP接続用ユーザの登録
/etc/vsftpd/chroot_list
ftp-user
# mkdir /etc/vsftpd/user_conf
# vi /etc/vsftpd/user_conf/ftp-user
以下を設定することでftp-userで接続したときのchrootは「/var/www/ftp_dir」となる。
/etc/vsftpd/user_conf/ftp-user
local_root=/var/www/ftp_dir
##サービス起動
# systemctl start vsftpd
#接続確認
Windowsの端末からコマンドプロンプトを起動し、接続確認を行います。
>ftp [FTPサーバーのIPアドレス]
[FTPサーバーのIPアドレス]に接続しました。
220 (vsFTPd x.0.x)
200 Always in UTF8 mode.
ユーザー ([FTPサーバーのIPアドレス]:(none)): ←FTP接続ユーザ名
331 Please specify the password. ←パスワードを入力
パスワード:
230 Login successful. ←これがでていれば接続OK
試しにdirを打ってみると、chrootに設定したフォルダ配下のファイルが確認できる。