はじめに
ESXiホスト上に乗せたCentOS7.3にてFTPサーバを構築してみました。
その手順をこの記事を見ているあなたに向けてアウトプットします。
そもそもFTPサーバとは?
FTPを使用してファイルの送受信を行うサーバのこと。
※詳細は下記リンクを参照
【入門】FTPとは?通信・ソフトについて分かりやすく解説します
環境
項目 | 説明 |
---|---|
Hypervisor | ESXi6.7 |
OS | CentOS7.3 |
- OS
[root@tspweb01 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@tspweb01 ~]#
※最小限のインストール&下記設定を実施済み
【Linux】CentOS7.3のOSインストール後の基本設定
構築手順
FTP接続用ユーザー作成
まずはFTPで接続するためのユーザーを作成する。
[root@tspweb01 ~]# useradd ftp-user
[root@tspweb01 ~]# passwd ftp-user
ユーザー ftp-user のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@tspweb01 ~]#
FTP用のディレクトリ作成
①FTP用ディレクトリ作成
[root@tspweb01 ~]# mkdir -p /var/www/ftp_dir
②FTP用ディレクトリの所有者変更
※ftp-user
をディレクトリのオーナーにする。
[root@tspweb01 ~]# chown ftp-user /var/www/ftp_dir
③FTP用ディレクトリの権限変更
[root@tspweb01 ~]# chmod 755 /var/www/ftp_dir
④FTP用ディレクトリの確認
[root@tspweb01 ~]# ls -la /var/www | grep ftp
drwxr-xr-x. 2 ftp-user root 6 6月 19 21:47 ftp_dir
[root@tspweb01 ~]#
FTPのインストール
-
vsftpd
インストール
yum -y install vsftpd
-
vsftpd
インストール確認
[root@tspweb01 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.2-27.el7.x86_64
[root@tspweb01 ~]#
FTPの設定
- FTP設定ファイルバックアップ
[root@tspweb01 ~]# cp -p /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_`date +'%Y%m%d'`
[root@tspweb01 ~]#
[root@tspweb01 ~]# ls -la /etc/vsftpd/
合計 40
drwxr-xr-x. 2 root root 116 6月 19 22:05 .
drwxr-xr-x. 77 root root 8192 6月 19 22:01 ..
-rw-------. 1 root root 125 4月 1 13:55 ftpusers
-rw-------. 1 root root 361 4月 1 13:55 user_list
-rw-------. 1 root root 5116 4月 1 13:55 vsftpd.conf
-rw-------. 1 root root 5116 4月 1 13:55 vsftpd.conf_20200619
-rwxr--r--. 1 root root 338 4月 1 13:55 vsftpd_conf_migrate.sh
[root@tspweb01 ~]#
- FTP設定
/etc/vsftpd/vsftpd.conf
# 以下の記載があることを確認
~
## userlist_fileで指定指定したユーザを有効にする(接続できる)
userlist_enable=YES
## アクセスファイル(/etc/hosts.allow, /etc/hosts.deny)をアクセス制御に利用しない
tcp_wrappers=NO
# 以下のコメントを外します。
## 設定したlocal_rootより上層ディレクトリへの移動を禁止
chroot_local_user=NO
##chrootを有効化する。
chroot_list_enable=YES
##chroot対象のユーザーリストファイルの場所を指定する。
chroot_list_file=/etc/vsftpd/chroot_list
/etc/vsftpd/vsftpd.conf
# 以下を追記
## パッシブモードの接続を許可する
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
FTP接続用ユーザの登録
/etc/vsftpd/chroot_list
ftp-user
FTPユーザーログイン時のディレクトリ設定
ftp-userで接続したときのchrootが「/var/www/ftp_dir」になるように設定
mkdir /etc/vsftpd/user_conf
vi /etc/vsftpd/user_conf/ftp-user
/etc/vsftpd/user_conf/ftp-user
local_root=/var/www/ftp_dir
サービス起動
systemctl start vsftpd
確認
Windowsの端末からコマンドプロンプトを起動し、接続確認を行う。
下記のようにFTPサーバーにログインできれば問題なし。
C:\Users\owner>ftp 192.168.0.41
192.168.0.41 に接続しました。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
ユーザー (192.168.0.41:(none)): ftp-user ← ユーザー名入力
331 Please specify the password.
パスワード: ← パスワード入力
230 Login successful.
ftp>
※接続できない場合は、firewalld
サービスが停止しているか確認。
ちなみに、ルートディレクトリの場所は以下となっている。
ftp> pwd
257 "/var/www/ftp_dir"
ftp>